JIT now works on OS X!

Had to fix the case where the jump table was
allocated in a >4GB address.
pull/13171/head
Joshua Haberman 14 years ago
parent 91a7da602d
commit 813bc74be6
  1. 7
      src/upb_decoder_x86.dasc

@ -184,7 +184,12 @@ void upb_reg_jit_gdb(void *addr, size_t size) {
| and edx, 0x7 | and edx, 0x7
| cmp ecx, m->max_field_number // Bounds-check the field. | cmp ecx, m->max_field_number // Bounds-check the field.
| ja ->exit_jit // In the future; could be unknown label | ja ->exit_jit // In the future; could be unknown label
| mov rax, qword [rcx*8 + m->tablearray] // TODO: support hybrid array/hash tables. || if ((uintptr_t)m->tablearray < 0xffffffff) {
| mov rax, qword [rcx*8 + m->tablearray] // TODO: support hybrid array/hash tables.
|| } else {
| mov64 rax, (uintptr_t)m->tablearray
| mov rax, qword [rax + rcx*8]
|| }
| jmp rax // Dispatch: unpredictable jump. | jmp rax // Dispatch: unpredictable jump.
|.endmacro |.endmacro
| |

Loading…
Cancel
Save