1
0
mirror of https://github.com/php/php-src.git synced 2026-04-20 06:21:12 +02:00

MFH: small CSE optimizations

This commit is contained in:
Dmitry Stogov
2008-05-16 14:34:31 +00:00
parent 23eb063f7a
commit a6ec1850e0
2 changed files with 255 additions and 238 deletions

View File

@@ -146,11 +146,12 @@ ZEND_VM_HANDLER(16, ZEND_IS_NOT_IDENTICAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
{
zend_op *opline = EX(opline);
zend_free_op free_op1, free_op2;
zval *result = &EX_T(opline->result.u.var).tmp_var;
is_identical_function(&EX_T(opline->result.u.var).tmp_var,
is_identical_function(result,
GET_OP1_ZVAL_PTR(BP_VAR_R),
GET_OP2_ZVAL_PTR(BP_VAR_R) TSRMLS_CC);
Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !Z_LVAL(EX_T(opline->result.u.var).tmp_var);
Z_LVAL_P(result) = !Z_LVAL_P(result);
FREE_OP1();
FREE_OP2();
ZEND_VM_NEXT_OPCODE();
@@ -160,12 +161,12 @@ ZEND_VM_HANDLER(17, ZEND_IS_EQUAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
{
zend_op *opline = EX(opline);
zend_free_op free_op1, free_op2;
zval *result = &EX_T(opline->result.u.var).tmp_var;
compare_function(&EX_T(opline->result.u.var).tmp_var,
compare_function(result,
GET_OP1_ZVAL_PTR(BP_VAR_R),
GET_OP2_ZVAL_PTR(BP_VAR_R) TSRMLS_CC);
ZVAL_BOOL(&EX_T(opline->result.u.var).tmp_var,
(Z_LVAL(EX_T(opline->result.u.var).tmp_var) == 0));
ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
FREE_OP1();
FREE_OP2();
ZEND_VM_NEXT_OPCODE();
@@ -175,12 +176,12 @@ ZEND_VM_HANDLER(18, ZEND_IS_NOT_EQUAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
{
zend_op *opline = EX(opline);
zend_free_op free_op1, free_op2;
zval *result = &EX_T(opline->result.u.var).tmp_var;
compare_function(&EX_T(opline->result.u.var).tmp_var,
compare_function(result,
GET_OP1_ZVAL_PTR(BP_VAR_R),
GET_OP2_ZVAL_PTR(BP_VAR_R) TSRMLS_CC);
ZVAL_BOOL(&EX_T(opline->result.u.var).tmp_var,
(Z_LVAL(EX_T(opline->result.u.var).tmp_var) != 0));
ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
FREE_OP1();
FREE_OP2();
ZEND_VM_NEXT_OPCODE();
@@ -190,12 +191,12 @@ ZEND_VM_HANDLER(19, ZEND_IS_SMALLER, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
{
zend_op *opline = EX(opline);
zend_free_op free_op1, free_op2;
zval *result = &EX_T(opline->result.u.var).tmp_var;
compare_function(&EX_T(opline->result.u.var).tmp_var,
compare_function(result,
GET_OP1_ZVAL_PTR(BP_VAR_R),
GET_OP2_ZVAL_PTR(BP_VAR_R) TSRMLS_CC);
ZVAL_BOOL(&EX_T(opline->result.u.var).tmp_var,
(Z_LVAL(EX_T(opline->result.u.var).tmp_var) < 0));
ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
FREE_OP1();
FREE_OP2();
ZEND_VM_NEXT_OPCODE();
@@ -205,12 +206,12 @@ ZEND_VM_HANDLER(20, ZEND_IS_SMALLER_OR_EQUAL, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV
{
zend_op *opline = EX(opline);
zend_free_op free_op1, free_op2;
zval *result = &EX_T(opline->result.u.var).tmp_var;
compare_function(&EX_T(opline->result.u.var).tmp_var,
compare_function(result,
GET_OP1_ZVAL_PTR(BP_VAR_R),
GET_OP2_ZVAL_PTR(BP_VAR_R) TSRMLS_CC);
ZVAL_BOOL(&EX_T(opline->result.u.var).tmp_var,
(Z_LVAL(EX_T(opline->result.u.var).tmp_var) <= 0));
ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
FREE_OP1();
FREE_OP2();
ZEND_VM_NEXT_OPCODE();

File diff suppressed because it is too large Load Diff