Skip to content

Commit 3e4e6d0

Browse files
committed
Improve type inference for ZEND_FETCH_OBJ/DIM_FUNC_ARG
1 parent 52dab23 commit 3e4e6d0

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

ext/opcache/jit/zend_jit_trace.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2064,7 +2064,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
20642064
case ZEND_FETCH_DIM_FUNC_ARG:
20652065
if (!frame
20662066
|| !frame->call
2067-
|| !frame->call->func
2067+
//??? || !frame->call->func
20682068
|| !TRACE_FRAME_IS_LAST_SEND_BY_VAL(frame->call)) {
20692069
break;
20702070
}
@@ -2259,8 +2259,17 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
22592259
break;
22602260
case ZEND_CHECK_FUNC_ARG:
22612261
if (!frame
2262-
|| !frame->call
2263-
|| !frame->call->func) {
2262+
|| !frame->call) {
2263+
break;
2264+
}
2265+
#ifdef HAVE_FFI
2266+
if (TRACE_FRAME_FFI(frame->call)) {
2267+
/* FFI arguments alwyas sent by value ??? */
2268+
TRACE_FRAME_SET_LAST_SEND_BY_VAL(frame->call);
2269+
break;
2270+
}
2271+
#endif
2272+
if (!frame->call->func) {
22642273
break;
22652274
}
22662275
if (opline->op2_type == IS_CONST
@@ -2278,7 +2287,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
22782287
case ZEND_FETCH_OBJ_FUNC_ARG:
22792288
if (!frame
22802289
|| !frame->call
2281-
|| !frame->call->func
2290+
//??? || !frame->call->func
22822291
|| !TRACE_FRAME_IS_LAST_SEND_BY_VAL(frame->call)) {
22832292
break;
22842293
}

0 commit comments

Comments
 (0)