diff --git a/rtl/x86_jit.pas b/rtl/x86_jit.pas index 48cd0d2b..fd0eb5f3 100644 --- a/rtl/x86_jit.pas +++ b/rtl/x86_jit.pas @@ -349,7 +349,7 @@ type Procedure Free; Function _new_chunk(start:QWORD):p_jit_code_chunk; procedure _end_chunk(__end:QWORD); - procedure _add(const ji:t_jit_instruction); + procedure _add(const ji:t_jit_instruction;min_isize:Byte=0); Function get_curr_label:t_jit_i_link; Function _add_data(P:Pointer):p_jit_data; Function _add_plt:Integer; @@ -1416,9 +1416,10 @@ begin end; end; -procedure t_jit_builder._add(const ji:t_jit_instruction); +procedure t_jit_builder._add(const ji:t_jit_instruction;min_isize:Byte=0); var node:p_jit_instruction; + i_size:Byte; begin if (ACodeChunkCurr=nil) then begin @@ -1426,8 +1427,17 @@ begin Assert(ACodeChunkCurr<>nil) end; - node:=Alloc(SizeOf(t_jit_instruction)); - node^:=ji; + i_size:=ji.AInstructionSize; + + if (i_size