diff --git a/src/upb_decoder_x86.dasc b/src/upb_decoder_x86.dasc index d3507197a0..fac0dcfcd0 100644 --- a/src/upb_decoder_x86.dasc +++ b/src/upb_decoder_x86.dasc @@ -184,7 +184,12 @@ void upb_reg_jit_gdb(void *addr, size_t size) { | and edx, 0x7 | cmp ecx, m->max_field_number // Bounds-check the field. | 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. |.endmacro |