mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
Merge branch 'PHP-8.1'
* PHP-8.1: JIT: Fixed call chain construction
This commit is contained in:
@@ -292,7 +292,7 @@ static int zend_jit_is_constant_cmp_long_long(const zend_op *opline,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int zend_jit_needs_call_chain(zend_call_info *call_info, uint32_t b, const zend_op_array *op_array, zend_ssa *ssa, const zend_ssa_op *ssa_op, const zend_op *opline, zend_jit_trace_rec *trace)
|
||||
static int zend_jit_needs_call_chain(zend_call_info *call_info, uint32_t b, const zend_op_array *op_array, zend_ssa *ssa, const zend_ssa_op *ssa_op, const zend_op *opline, int call_level, zend_jit_trace_rec *trace)
|
||||
{
|
||||
int skip;
|
||||
|
||||
@@ -368,7 +368,7 @@ static int zend_jit_needs_call_chain(zend_call_info *call_info, uint32_t b, cons
|
||||
|
||||
opline++;
|
||||
ssa_op++;
|
||||
skip = 1;
|
||||
skip = (call_level == 1);
|
||||
while (opline != end) {
|
||||
if (!skip) {
|
||||
if (zend_may_throw(opline, ssa_op, op_array, ssa)) {
|
||||
@@ -443,7 +443,7 @@ static int zend_jit_needs_call_chain(zend_call_info *call_info, uint32_t b, cons
|
||||
|
||||
opline++;
|
||||
ssa_op++;
|
||||
skip = 1;
|
||||
skip = (call_level == 1);
|
||||
while (opline != end) {
|
||||
if (skip) {
|
||||
switch (opline->opcode) {
|
||||
|
||||
@@ -8532,7 +8532,7 @@ static int zend_jit_init_fcall(dasm_State **Dst, const zend_op *opline, uint32_t
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, trace)) {
|
||||
if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
|
||||
if (!zend_jit_save_call_chain(Dst, call_level)) {
|
||||
return 0;
|
||||
}
|
||||
@@ -8752,7 +8752,7 @@ static int zend_jit_init_method_call(dasm_State **Dst,
|
||||
}
|
||||
zend_jit_start_reuse_ip();
|
||||
|
||||
if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, trace)) {
|
||||
if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
|
||||
if (!zend_jit_save_call_chain(Dst, call_level)) {
|
||||
return 0;
|
||||
}
|
||||
@@ -8831,7 +8831,7 @@ static int zend_jit_init_closure_call(dasm_State **Dst,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (zend_jit_needs_call_chain(NULL, b, op_array, ssa, ssa_op, opline, trace)) {
|
||||
if (zend_jit_needs_call_chain(NULL, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
|
||||
if (!zend_jit_save_call_chain(Dst, call_level)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -9123,7 +9123,7 @@ static int zend_jit_init_fcall(dasm_State **Dst, const zend_op *opline, uint32_t
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, trace)) {
|
||||
if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
|
||||
if (!zend_jit_save_call_chain(Dst, call_level)) {
|
||||
return 0;
|
||||
}
|
||||
@@ -9374,7 +9374,7 @@ static int zend_jit_init_method_call(dasm_State **Dst,
|
||||
}
|
||||
zend_jit_start_reuse_ip();
|
||||
|
||||
if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, trace)) {
|
||||
if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
|
||||
if (!zend_jit_save_call_chain(Dst, call_level)) {
|
||||
return 0;
|
||||
}
|
||||
@@ -9467,7 +9467,7 @@ static int zend_jit_init_closure_call(dasm_State **Dst,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (zend_jit_needs_call_chain(NULL, b, op_array, ssa, ssa_op, opline, trace)) {
|
||||
if (zend_jit_needs_call_chain(NULL, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
|
||||
if (!zend_jit_save_call_chain(Dst, call_level)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user