Skip to content

Commit 918f09f

Browse files
committed
Added specialization for comparison instructions and QM_ASSIGN
1 parent e7fcc45 commit 918f09f

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;
@@ -9096,6 +9096,17 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_POST_DEC, (op1_info == MAY_BE_LONG), ZEND_POS
90969096
ZEND_VM_NEXT_OPCODE();
90979097
}
90989098

9099+
ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_QM_ASSIGN, (op1_info == MAY_BE_LONG), ZEND_QM_ASSIGN_LONG, CONST|TMPVARCV, ANY)
9100+
{
9101+
USE_OPLINE
9102+
zend_free_op free_op1;
9103+
zval *value;
9104+
9105+
value = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_R);
9106+
ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(value));
9107+
ZEND_VM_NEXT_OPCODE();
9108+
}
9109+
90999110
ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_QM_ASSIGN, (op1_info == MAY_BE_DOUBLE), ZEND_QM_ASSIGN_DOUBLE, CONST|TMPVARCV, ANY)
91009111
{
91019112
USE_OPLINE

0 commit comments

Comments
 (0)