Skip to content

Commit a997a23

Browse files
committed
Merge branch 'PHP-7.4'
* PHP-7.4: Added specialization for comparison instructions and QM_ASSIGN
2 parents cf19796 + 918f09f commit a997a23

File tree

3 files changed

+4706
-1701
lines changed

3 files changed

+4706
-1701
lines changed

Zend/zend_vm_def.h

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ ZEND_VM_HELPER(zend_is_equal_helper, ANY, ANY, zval *op_1, zval *op_2)
519519
}
520520
}
521521

522-
ZEND_VM_COLD_CONSTCONST_HANDLER(18, ZEND_IS_EQUAL, CONST|TMPVAR|CV, CONST|TMPVAR|CV, SPEC(COMMUTATIVE))
522+
ZEND_VM_COLD_CONSTCONST_HANDLER(18, ZEND_IS_EQUAL, CONST|TMPVAR|CV, CONST|TMPVAR|CV, SPEC(SMART_BRANCH,COMMUTATIVE))
523523
{
524524
USE_OPLINE
525525
zend_free_op free_op1, free_op2;
@@ -614,7 +614,7 @@ ZEND_VM_HELPER(zend_is_not_equal_helper, ANY, ANY, zval *op_1, zval *op_2)
614614
}
615615
}
616616

617-
ZEND_VM_COLD_CONSTCONST_HANDLER(19, ZEND_IS_NOT_EQUAL, CONST|TMPVAR|CV, CONST|TMPVAR|CV, SPEC(COMMUTATIVE))
617+
ZEND_VM_COLD_CONSTCONST_HANDLER(19, ZEND_IS_NOT_EQUAL, CONST|TMPVAR|CV, CONST|TMPVAR|CV, SPEC(SMART_BRANCH,COMMUTATIVE))
618618
{
619619
USE_OPLINE
620620
zend_free_op free_op1, free_op2;
@@ -709,7 +709,7 @@ ZEND_VM_HELPER(zend_is_smaller_helper, ANY, ANY, zval *op_1, zval *op_2)
709709
}
710710
}
711711

712-
ZEND_VM_COLD_CONSTCONST_HANDLER(20, ZEND_IS_SMALLER, CONST|TMPVARCV, CONST|TMPVARCV)
712+
ZEND_VM_HOT_NOCONSTCONST_HANDLER(20, ZEND_IS_SMALLER, CONST|TMPVARCV, CONST|TMPVARCV, SPEC(SMART_BRANCH))
713713
{
714714
USE_OPLINE
715715
zend_free_op free_op1, free_op2;
@@ -789,7 +789,7 @@ ZEND_VM_HELPER(zend_is_smaller_or_equal_helper, ANY, ANY, zval *op_1, zval *op_2
789789
}
790790
}
791791

792-
ZEND_VM_COLD_CONSTCONST_HANDLER(21, ZEND_IS_SMALLER_OR_EQUAL, CONST|TMPVARCV, CONST|TMPVARCV)
792+
ZEND_VM_HOT_NOCONSTCONST_HANDLER(21, ZEND_IS_SMALLER_OR_EQUAL, CONST|TMPVARCV, CONST|TMPVARCV, SPEC(SMART_BRANCH))
793793
{
794794
USE_OPLINE
795795
zend_free_op free_op1, free_op2;
@@ -9200,6 +9200,17 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_POST_DEC, (op1_info == MAY_BE_LONG), ZEND_POS
92009200
ZEND_VM_NEXT_OPCODE();
92019201
}
92029202

9203+
ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_QM_ASSIGN, (op1_info == MAY_BE_LONG), ZEND_QM_ASSIGN_LONG, CONST|TMPVARCV, ANY)
9204+
{
9205+
USE_OPLINE
9206+
zend_free_op free_op1;
9207+
zval *value;
9208+
9209+
value = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_R);
9210+
ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(value));
9211+
ZEND_VM_NEXT_OPCODE();
9212+
}
9213+
92039214
ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_QM_ASSIGN, (op1_info == MAY_BE_DOUBLE), ZEND_QM_ASSIGN_DOUBLE, CONST|TMPVARCV, ANY)
92049215
{
92059216
USE_OPLINE

0 commit comments

Comments
 (0)