@@ -2261,6 +2261,8 @@ static int zend_jit_handler(dasm_State **Dst, const zend_op *opline, int may_thr
22612261 switch (opline->opcode) {
22622262 case ZEND_ASSIGN_DIM:
22632263 case ZEND_ASSIGN_OBJ:
2264+ case ZEND_ASSIGN_STATIC_PROP:
2265+ case ZEND_ASSIGN_OBJ_REF:
22642266 last_valid_opline++;
22652267 break;
22662268 case ZEND_ASSIGN_ADD:
@@ -4745,7 +4747,7 @@ static int zend_jit_assign_op(dasm_State **Dst, const zend_op *opline, zend_op_a
47454747
47464748 if (opline->extended_value == ZEND_ASSIGN_DIM) {
47474749 return zend_jit_assign_dim_op(Dst, opline, op_array, ssa);
4748- } else if (opline->extended_value == ZEND_ASSIGN_OBJ) {
4750+ } else if (opline->extended_value == ZEND_ASSIGN_OBJ || opline->extended_value == ZEND_ASSIGN_STATIC_PROP ) {
47494751 goto fallback;
47504752 }
47514753
@@ -7433,7 +7435,8 @@ static int zend_jit_send_ref(dasm_State **Dst, const zend_op *opline, zend_op_ar
74337435 | SET_ZVAL_PTR arg_addr, r0
74347436 | SET_ZVAL_TYPE_INFO arg_addr, IS_REFERENCE_EX
74357437 | mov dword [r0], 1
7436- | mov dword [r0 + 4], IS_REFERENCE;
7438+ | mov dword [r0 + offsetof(zend_reference, gc.u.type_info)], IS_REFERENCE
7439+ | mov aword [r0 + offsetof(zend_reference, sources.ptr)], 0
74377440 ref_addr = ZEND_ADDR_MEM_ZVAL(ZREG_R0, 8);
74387441 | // ZVAL_NULL(Z_REFVAL_P(arg));
74397442 | SET_ZVAL_TYPE_INFO ref_addr, IS_NULL
@@ -7483,7 +7486,8 @@ static int zend_jit_send_ref(dasm_State **Dst, const zend_op *opline, zend_op_ar
74837486 }
74847487 | EMALLOC sizeof(zend_reference), op_array, opline
74857488 | mov dword [r0], 2
7486- | mov dword [r0 + 4], IS_REFERENCE;
7489+ | mov dword [r0 + offsetof(zend_reference, gc.u.type_info)], IS_REFERENCE
7490+ | mov aword [r0 + offsetof(zend_reference, sources.ptr)], 0
74877491 ref_addr = ZEND_ADDR_MEM_ZVAL(ZREG_R0, 8);
74887492 if (opline->op1_type == IS_VAR) {
74897493 zend_jit_addr val_addr = ZEND_ADDR_MEM_ZVAL(ZREG_R1, 0);
@@ -8841,14 +8845,14 @@ static int zend_jit_recv(dasm_State **Dst, const zend_op *opline, zend_op_array
88418845 if (!ZEND_TYPE_IS_CLASS(type)) {
88428846 unsigned char code = ZEND_TYPE_CODE(type);
88438847
8844- if (type == _IS_BOOL) {
8848+ if (code == _IS_BOOL) {
88458849 | cmp byte [r0 + 8], IS_FALSE
88468850 | je >1
88478851 | cmp byte [r0 + 8], IS_TRUE
88488852 | jne >8
88498853 |1:
88508854 } else {
8851- | cmp byte [r0 + 8], code
8855+ | cmp byte [r0 + 8], code
88528856 | jne >8
88538857 }
88548858 } else {
0 commit comments