Skip to content

Commit 9c2b87c

Browse files
committed
JIT: avoid $this check in closures called from methods
1 parent fc56de1 commit 9c2b87c

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

ext/opcache/jit/zend_jit_trace.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6010,6 +6010,15 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
60106010
p++;
60116011
break;
60126012
}
6013+
if (p->op_array->fn_flags & ZEND_ACC_CLOSURE && !(p->op_array->fn_flags & ZEND_ACC_STATIC)) {
6014+
if (op_array->fn_flags & ZEND_ACC_CLOSURE) {
6015+
if (TRACE_FRAME_IS_THIS_CHECKED(frame)) {
6016+
TRACE_FRAME_SET_THIS_CHECKED(call);
6017+
}
6018+
} else if (op_array->scope && !(op_array->fn_flags & ZEND_ACC_STATIC)) {
6019+
TRACE_FRAME_SET_THIS_CHECKED(call);
6020+
}
6021+
}
60136022
op_array = (zend_op_array*)p->op_array;
60146023
jit_extension =
60156024
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);

0 commit comments

Comments
 (0)