Mercurial > repos > blastem
comparison z80_to_x86.c @ 282:7b8a49220e3b
Remove deferred address entries from abandoned translations inside z80_retrans_inst
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 04 May 2013 14:36:50 -0700 |
parents | 6be6056735a9 |
children | 61f5d88ea01a |
comparison
equal
deleted
inserted
replaced
281:44f0bbf57b4f | 282:7b8a49220e3b |
---|---|
1565 size_t size = 1024*1024; | 1565 size_t size = 1024*1024; |
1566 dst = alloc_code(&size); | 1566 dst = alloc_code(&size); |
1567 opts->code_end = dst_end = dst + size; | 1567 opts->code_end = dst_end = dst + size; |
1568 opts->cur_code = dst; | 1568 opts->cur_code = dst; |
1569 } | 1569 } |
1570 deferred_addr * orig_deferred = opts->deferred; | |
1570 uint8_t * native_end = translate_z80inst(&instbuf, dst, context, address); | 1571 uint8_t * native_end = translate_z80inst(&instbuf, dst, context, address); |
1571 if ((native_end - dst) <= orig_size) { | 1572 if ((native_end - dst) <= orig_size) { |
1572 uint8_t * native_next = z80_get_native_address(context, address + after-inst); | 1573 uint8_t * native_next = z80_get_native_address(context, address + after-inst); |
1573 if (native_next && ((native_next == orig_start + orig_size) || (orig_size - (native_end - dst)) > 5)) { | 1574 if (native_next && ((native_next == orig_start + orig_size) || (orig_size - (native_end - dst)) > 5)) { |
1575 remove_deferred_until(&opts->deferred, orig_deferred); | |
1574 native_end = translate_z80inst(&instbuf, orig_start, context, address); | 1576 native_end = translate_z80inst(&instbuf, orig_start, context, address); |
1575 if (native_next == orig_start + orig_size && (native_next-native_end) < 2) { | 1577 if (native_next == orig_start + orig_size && (native_next-native_end) < 2) { |
1576 while (native_end < orig_start + orig_size) { | 1578 while (native_end < orig_start + orig_size) { |
1577 *(native_end++) = 0x90; //NOP | 1579 *(native_end++) = 0x90; //NOP |
1578 } | 1580 } |