goto jit_failure;
}
for (j = 0 ; j < op_array->last_var; j++) {
+ if (opline->op1_type == IS_CV
+ && EX_VAR_TO_NUM(opline->op1.var) == j
+ && !(op1_info & MAY_BE_REF)
+ && JIT_G(current_frame)
+ && TRACE_FRAME_IS_RETURN_VALUE_USED(JIT_G(current_frame))) {
+ continue;
+ }
// TODO: get info from trace ???
uint32_t info = zend_ssa_cv_info(opline, op_array, op_array_ssa, j);
zend_uchar type = STACK_TYPE(stack, j);
op1_addr = ZEND_ADDR_MEM_ZVAL(ZREG_R0, 0);
}
| ZVAL_COPY_VALUE ret_addr, MAY_BE_ANY, op1_addr, op1_info, ZREG_R0, ZREG_R2
- | // TODO: JIT: if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) ZVAL_NULL(retval_ptr); ???
- | TRY_ADDREF op1_info, ah, r2
+ if (JIT_G(trigger) != ZEND_JIT_ON_HOT_TRACE || (op1_info & MAY_BE_REF) || (return_value_used != 1)) {
+ | // TODO: JIT: if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) ZVAL_NULL(retval_ptr); ???
+ | TRY_ADDREF op1_info, ah, r2
+ }
} else {
if (op1_info & MAY_BE_REF) {
zend_jit_addr ref_addr = ZEND_ADDR_MEM_ZVAL(ZREG_R0, offsetof(zend_reference, val));