Skip to content

Commit 36f6b15

Browse files
committed
Update zend_jit_copy_extra_args_helper_ex
1 parent 520bb05 commit 36f6b15

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
bool ZEND_FASTCALL zend_jit_nodiscard_helper(OPLINE_D);
252252
bool ZEND_FASTCALL zend_jit_deprecated_nodiscard_helper(OPLINE_D);

ext/opcache/jit/zend_jit_ir.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10307,7 +10307,8 @@ static int zend_jit_do_fcall(zend_jit_ctx *jit, const zend_op *opline, const zen
1030710307
if (GCC_GLOBAL_REGS) {
1030810308
ir_CALL(IR_VOID, helper);
1030910309
} else {
10310-
ir_CALL_1(IR_VOID, helper, jit_FP(jit));
10310+
ir_ref ref = ir_CALL_2(IR_ADDR, helper, jit_FP(jit), jit_IP(jit));
10311+
jit_STORE_IP(jit, ref);
1031110312
}
1031210313
}
1031310314
} else {
@@ -10343,7 +10344,8 @@ static int zend_jit_do_fcall(zend_jit_ctx *jit, const zend_op *opline, const zen
1034310344
if (GCC_GLOBAL_REGS) {
1034410345
ir_CALL(IR_VOID, ir_CONST_FC_FUNC(zend_jit_copy_extra_args_helper));
1034510346
} else {
10346-
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(zend_jit_copy_extra_args_helper), jit_FP(jit));
10347+
ir_ref ref = ir_CALL_2(IR_ADDR, ir_CONST_FC_FUNC(zend_jit_copy_extra_args_helper), jit_FP(jit), jit_IP(jit));
10348+
jit_STORE_IP(jit, ref);
1034710349
}
1034810350
ir_END_list(merge_inputs);
1034910351
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)