Skip to content

Commit b807d6f

Browse files
committed
Update zend_jit_copy_extra_args_helper_ex
1 parent 833511c commit b807d6f

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

ext/opcache/jit/zend_jit_internal.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,8 @@ ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_profile_helper(ZEND_OPCODE_HANDLE
245245
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_func_counter_helper(ZEND_OPCODE_HANDLER_ARGS);
246246
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_loop_counter_helper(ZEND_OPCODE_HANDLER_ARGS);
247247

248-
void ZEND_FASTCALL zend_jit_copy_extra_args_helper(EXECUTE_DATA_D);
249-
void ZEND_FASTCALL zend_jit_copy_extra_args_helper_no_skip_recv(EXECUTE_DATA_D);
248+
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_copy_extra_args_helper(ZEND_OPCODE_HANDLER_ARGS);
249+
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_copy_extra_args_helper_no_skip_recv(ZEND_OPCODE_HANDLER_ARGS);
250250
bool ZEND_FASTCALL zend_jit_deprecated_helper(OPLINE_D);
251251
void ZEND_FASTCALL zend_jit_undefined_long_key(EXECUTE_DATA_D);
252252
void ZEND_FASTCALL zend_jit_undefined_long_key_ex(zend_long key EXECUTE_DATA_DC);

ext/opcache/jit/zend_jit_ir.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10291,7 +10291,8 @@ static int zend_jit_do_fcall(zend_jit_ctx *jit, const zend_op *opline, const zen
1029110291
if (GCC_GLOBAL_REGS) {
1029210292
ir_CALL(IR_VOID, helper);
1029310293
} else {
10294-
ir_CALL_1(IR_VOID, helper, jit_FP(jit));
10294+
ir_ref ref = ir_CALL_2(IR_ADDR, helper, jit_FP(jit), jit_IP(jit));
10295+
jit_STORE_IP(jit, ref);
1029510296
}
1029610297
}
1029710298
} else {
@@ -10327,7 +10328,8 @@ static int zend_jit_do_fcall(zend_jit_ctx *jit, const zend_op *opline, const zen
1032710328
if (GCC_GLOBAL_REGS) {
1032810329
ir_CALL(IR_VOID, ir_CONST_FC_FUNC(zend_jit_copy_extra_args_helper));
1032910330
} else {
10330-
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_jit_copy_extra_args_helper), jit_FP(jit));
10331+
ir_ref ref = ir_CALL_2(IR_ADDR, ir_CONST_FC_FUNC(zend_jit_copy_extra_args_helper), jit_FP(jit), jit_IP(jit));
10332+
jit_STORE_IP(jit, ref);
1033110333
}
1033210334
ir_END_list(merge_inputs);
1033310335
ir_IF_FALSE(if_extra_args);

ext/opcache/jit/zend_jit_vm_helpers.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_leave_func_helper(ZEND_OPCODE_HAN
120120
}
121121
}
122122

123-
static void ZEND_FASTCALL zend_jit_copy_extra_args_helper_ex(bool skip_recv EXECUTE_DATA_DC)
123+
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_copy_extra_args_helper_ex(ZEND_OPCODE_HANDLER_ARGS_EX bool skip_recv)
124124
{
125125
zend_op_array *op_array = &EX(func)->op_array;
126126

@@ -132,11 +132,7 @@ static void ZEND_FASTCALL zend_jit_copy_extra_args_helper_ex(bool skip_recv EXEC
132132

133133
if (skip_recv && EXPECTED((op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS) == 0)) {
134134
/* Skip useless ZEND_RECV and ZEND_RECV_INIT opcodes */
135-
#ifdef HAVE_GCC_GLOBAL_REGS
136135
opline += first_extra_arg;
137-
#else
138-
EX(opline) += first_extra_arg;
139-
#endif
140136
}
141137

142138
/* move extra args into separate array after all CV and TMP vars */
@@ -164,16 +160,20 @@ static void ZEND_FASTCALL zend_jit_copy_extra_args_helper_ex(bool skip_recv EXEC
164160
} while (src != end);
165161
}
166162
}
163+
164+
#ifndef HAVE_GCC_GLOBAL_REGS
165+
return opline;
166+
#endif
167167
}
168168

169-
void ZEND_FASTCALL zend_jit_copy_extra_args_helper(EXECUTE_DATA_D)
169+
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_copy_extra_args_helper(ZEND_OPCODE_HANDLER_ARGS)
170170
{
171-
zend_jit_copy_extra_args_helper_ex(true EXECUTE_DATA_CC);
171+
return zend_jit_copy_extra_args_helper_ex(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX true);
172172
}
173173

174-
void ZEND_FASTCALL zend_jit_copy_extra_args_helper_no_skip_recv(EXECUTE_DATA_D)
174+
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_copy_extra_args_helper_no_skip_recv(ZEND_OPCODE_HANDLER_ARGS)
175175
{
176-
zend_jit_copy_extra_args_helper_ex(false EXECUTE_DATA_CC);
176+
return zend_jit_copy_extra_args_helper_ex(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_EX false);
177177
}
178178

179179
bool ZEND_FASTCALL zend_jit_deprecated_helper(OPLINE_D)

0 commit comments

Comments
 (0)