]> granicus.if.org Git - php/commitdiff
Fixed register allocation
authorDmitry Stogov <dmitry@zend.com>
Mon, 26 Oct 2020 18:48:47 +0000 (21:48 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 26 Oct 2020 18:48:47 +0000 (21:48 +0300)
ext/opcache/jit/zend_jit_x86.dasc

index c0f4ce3e30027f4e085362f7a06448bcd67758bb..3d25ada5f1ac41ddd6c387dfac2c107ac1888dc4 100644 (file)
@@ -15044,7 +15044,7 @@ static zend_bool zend_jit_opline_supports_reg(const zend_op_array *op_array, zen
                case ZEND_MUL:
                        op1_info = OP1_INFO();
                        op2_info = OP2_INFO();
-                       return !((op1_info | op2_info) & (MAY_BE_ANY - (MAY_BE_LONG|MAY_BE_DOUBLE)));
+                       return !((op1_info | op2_info) & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - (MAY_BE_LONG|MAY_BE_DOUBLE)));
                case ZEND_BW_OR:
                case ZEND_BW_AND:
                case ZEND_BW_XOR:
@@ -15053,13 +15053,13 @@ static zend_bool zend_jit_opline_supports_reg(const zend_op_array *op_array, zen
                case ZEND_MOD:
                        op1_info = OP1_INFO();
                        op2_info = OP2_INFO();
-                       return !((op1_info | op2_info) & (MAY_BE_ANY - MAY_BE_LONG));
+                       return !((op1_info | op2_info) & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - MAY_BE_LONG));
                case ZEND_PRE_INC:
                case ZEND_PRE_DEC:
                case ZEND_POST_INC:
                case ZEND_POST_DEC:
                        op1_info = OP1_INFO();
-                       return opline->op1_type == IS_CV && !(op1_info & (MAY_BE_ANY - MAY_BE_LONG));
+                       return opline->op1_type == IS_CV && !(op1_info & ((MAY_BE_ANY|MAY_BE_REF|MAY_BE_UNDEF) - MAY_BE_LONG));
                case ZEND_BOOL:
                case ZEND_BOOL_NOT:
                case ZEND_JMPZ: