{
USE_OPLINE
zval *value;
+ int result;
SAVE_OPLINE();
case IS_DOUBLE:
case IS_STRING:
case IS_ARRAY:
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_TYPE_P(value) == opline->extended_value);
+ result = (Z_TYPE_P(value) == opline->extended_value);
break;
case _IS_BOOL:
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE);
+ result = (Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE);
break;
case IS_OBJECT:
if (Z_TYPE_P(value) == opline->extended_value) {
zend_class_entry *ce = Z_OBJCE_P(value);
if (ce->name->len == sizeof("__PHP_Incomplete_Class") - 1
&& !memcmp(ce->name->val, "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
} else {
- ZVAL_TRUE(EX_VAR(opline->result.var));
+ result = 1;
}
} else {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
}
break;
case IS_RESOURCE:
if (Z_TYPE_P(value) == opline->extended_value) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
- ZVAL_BOOL(EX_VAR(opline->result.var), type_name != NULL);
+ result = (type_name != NULL);
} else {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
}
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zend_constant *c;
+ int result;
if (CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
+ result = 1;
} else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op1), 0)) == NULL) {
+ result = 0;
ZVAL_FALSE(EX_VAR(opline->result.var));
} else {
CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), c);
- ZVAL_TRUE(EX_VAR(opline->result.var));
+ result = 1;
}
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
ZEND_VM_NEXT_OPCODE();
}
EX_CONSTANT(opline->op2));
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
EX_CONSTANT(opline->op2));
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = EX_CONSTANT(opline->op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
-
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if (IS_CONST == IS_CV &&
IS_CONST == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
- zval tmp, *varname = EX_CONSTANT(opline->op1);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = EX_CONSTANT(opline->op1);
ZVAL_UNDEF(&tmp);
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
result = ((opline->extended_value & ZEND_ISSET) == 0);
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if (IS_CONST == IS_CV &&
IS_VAR == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
- zval tmp, *varname = EX_CONSTANT(opline->op1);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = EX_CONSTANT(opline->op1);
ZVAL_UNDEF(&tmp);
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if (IS_CONST == IS_CV &&
IS_UNUSED == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
- zval tmp, *varname = EX_CONSTANT(opline->op1);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = EX_CONSTANT(opline->op1);
ZVAL_UNDEF(&tmp);
if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var));
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var));
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
-
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
result = ((opline->extended_value & ZEND_ISSET) == 0);
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ do {
+ int result;
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
+ do {
+ int result;
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
-
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = EX_CONSTANT(opline->op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
}
zval_ptr_dtor_nogc(free_op2);
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
zval_ptr_dtor_nogc(free_op2);
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
zend_free_op free_op1;
SAVE_OPLINE();
case IS_DOUBLE:
case IS_STRING:
case IS_ARRAY:
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_TYPE_P(value) == opline->extended_value);
+ result = (Z_TYPE_P(value) == opline->extended_value);
break;
case _IS_BOOL:
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE);
+ result = (Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE);
break;
case IS_OBJECT:
if (Z_TYPE_P(value) == opline->extended_value) {
zend_class_entry *ce = Z_OBJCE_P(value);
if (ce->name->len == sizeof("__PHP_Incomplete_Class") - 1
&& !memcmp(ce->name->val, "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
} else {
- ZVAL_TRUE(EX_VAR(opline->result.var));
+ result = 1;
}
} else {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
}
break;
case IS_RESOURCE:
if (Z_TYPE_P(value) == opline->extended_value) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
- ZVAL_BOOL(EX_VAR(opline->result.var), type_name != NULL);
+ result = (type_name != NULL);
} else {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
}
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
EX_CONSTANT(opline->op2));
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
EX_CONSTANT(opline->op2));
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var));
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var));
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
zend_free_op free_op1;
SAVE_OPLINE();
case IS_DOUBLE:
case IS_STRING:
case IS_ARRAY:
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_TYPE_P(value) == opline->extended_value);
+ result = (Z_TYPE_P(value) == opline->extended_value);
break;
case _IS_BOOL:
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE);
+ result = (Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE);
break;
case IS_OBJECT:
if (Z_TYPE_P(value) == opline->extended_value) {
zend_class_entry *ce = Z_OBJCE_P(value);
if (ce->name->len == sizeof("__PHP_Incomplete_Class") - 1
&& !memcmp(ce->name->val, "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
} else {
- ZVAL_TRUE(EX_VAR(opline->result.var));
+ result = 1;
}
} else {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
}
break;
case IS_RESOURCE:
if (Z_TYPE_P(value) == opline->extended_value) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
- ZVAL_BOOL(EX_VAR(opline->result.var), type_name != NULL);
+ result = (type_name != NULL);
} else {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
}
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
EX_CONSTANT(opline->op2));
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
EX_CONSTANT(opline->op2));
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var));
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var));
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
result = ((opline->extended_value & ZEND_ISSET) == 0);
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
result = ((opline->extended_value & ZEND_ISSET) == 0);
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
zval_ptr_dtor_nogc(free_op2);
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
zval_ptr_dtor_nogc(free_op2);
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
SAVE_OPLINE();
case IS_DOUBLE:
case IS_STRING:
case IS_ARRAY:
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_TYPE_P(value) == opline->extended_value);
+ result = (Z_TYPE_P(value) == opline->extended_value);
break;
case _IS_BOOL:
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE);
+ result = (Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE);
break;
case IS_OBJECT:
if (Z_TYPE_P(value) == opline->extended_value) {
zend_class_entry *ce = Z_OBJCE_P(value);
if (ce->name->len == sizeof("__PHP_Incomplete_Class") - 1
&& !memcmp(ce->name->val, "__PHP_Incomplete_Class", sizeof("__PHP_Incomplete_Class") - 1)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
} else {
- ZVAL_TRUE(EX_VAR(opline->result.var));
+ result = 1;
}
} else {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
}
break;
case IS_RESOURCE:
if (Z_TYPE_P(value) == opline->extended_value) {
const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
- ZVAL_BOOL(EX_VAR(opline->result.var), type_name != NULL);
+ result = (type_name != NULL);
} else {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ result = 0;
}
break;
EMPTY_SWITCH_DEFAULT_CASE()
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
EX_CONSTANT(opline->op2));
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
EX_CONSTANT(opline->op2));
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
-
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if (IS_CV == IS_CV &&
IS_CONST == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
- zval tmp, *varname = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var);
ZVAL_UNDEF(&tmp);
if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
result = ((opline->extended_value & ZEND_ISSET) == 0);
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2));
zval_ptr_dtor_nogc(free_op2);
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if (IS_CV == IS_CV &&
IS_VAR == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
- zval tmp, *varname = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var);
ZVAL_UNDEF(&tmp);
if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if (IS_CV == IS_CV &&
IS_UNUSED == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
- zval tmp, *varname = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = _get_zval_ptr_cv_BP_VAR_IS(execute_data, opline->op1.var);
ZVAL_UNDEF(&tmp);
if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var));
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
_get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var));
+ ZEND_VM_SMART_BRANCH(Z_TYPE_INFO_P(EX_VAR(opline->result.var)) == IS_TRUE, 1);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
-
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
result = ((opline->extended_value & ZEND_ISSET) == 0);
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ do {
+ int result;
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
-
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
+ do {
+ int result;
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
-
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_cv_undef(execute_data, opline->op1.var);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
}
zval_ptr_dtor_nogc(free_op2);
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
zval_ptr_dtor_nogc(free_op2);
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
- zval_ptr_dtor_nogc(free_op1);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
zval_ptr_dtor_nogc(free_op1);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
- zval_ptr_dtor_nogc(free_op1);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
zval_ptr_dtor_nogc(free_op1);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = EX_CONSTANT(opline->op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV &&
IS_CONST == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
zend_free_op free_op1;
- zval tmp, *varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
ZVAL_UNDEF(&tmp);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
result = ((opline->extended_value & ZEND_ISSET) == 0);
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV &&
IS_VAR == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
zend_free_op free_op1;
- zval tmp, *varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
ZVAL_UNDEF(&tmp);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
{
USE_OPLINE
zval *value;
+ int result;
- SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV &&
IS_UNUSED == IS_UNUSED &&
(opline->extended_value & ZEND_QUICK_SET)) {
value = EX_VAR(opline->op1.var);
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
+ result =
Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !i_zend_is_true(value));
- CHECK_EXCEPTION();
+ SAVE_OPLINE();
+ result = !i_zend_is_true(value);
+ if (UNEXPECTED(EG(exception))) {
+ HANDLE_EXCEPTION();
+ }
}
- ZEND_VM_NEXT_OPCODE();
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_SET_NEXT_OPCODE(opline + 1);
+ ZEND_VM_CONTINUE();
} else {
zend_free_op free_op1;
- zval tmp, *varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
+ zval tmp, *varname;
+ SAVE_OPLINE();
+ varname = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
ZVAL_UNDEF(&tmp);
if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
ZVAL_STR(&tmp, zval_get_string(varname));
is_var_return:
if (opline->extended_value & ZEND_ISSET) {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- value && Z_TYPE_P(value) > IS_NULL &&
- (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL));
+ result = value && Z_TYPE_P(value) > IS_NULL &&
+ (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
- ZVAL_BOOL(EX_VAR(opline->result.var),
- !value || !i_zend_is_true(value));
+ result = !value || !i_zend_is_true(value);
}
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
- zval_ptr_dtor_nogc(free_op1);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
zval_ptr_dtor_nogc(free_op1);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
- zval_ptr_dtor_nogc(free_op1);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
zval_ptr_dtor_nogc(free_op1);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_cv_undef(execute_data, opline->op2.var);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
-
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
+ do {
+ int result;
- ZEND_VM_NEXT_OPCODE();
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
-
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
result = ((opline->extended_value & ZEND_ISSET) == 0);
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
}
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
- zval_ptr_dtor_nogc(free_op1);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) != Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op1);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 0;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 1;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
- zval_ptr_dtor_nogc(free_op1);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) != 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) != 0);
zval_ptr_dtor_nogc(free_op1);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) < Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) <= Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
op1 = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1);
op2 = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
- if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_LVAL_P(op1) == Z_LVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), (double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
- if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == Z_DVAL_P(op2));
- ZEND_VM_NEXT_OPCODE();
- } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
- ZVAL_BOOL(EX_VAR(opline->result.var), Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
- ZEND_VM_NEXT_OPCODE();
- }
- } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
- if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
- if (Z_STR_P(op1) == Z_STR_P(op2)) {
- ZVAL_TRUE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
- } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
- if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
- ZVAL_FALSE(EX_VAR(opline->result.var));
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ do {
+ int result;
+
+ if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
+ if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
+ result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
+ } else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
+ result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
+ } else {
+ break;
+ }
+ } else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
+ if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
+ if (Z_STR_P(op1) == Z_STR_P(op2)) {
+ result = 1;
+ } else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
+ if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
+ result = 0;
+ } else {
+ result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
+ }
} else {
- ZVAL_BOOL(EX_VAR(opline->result.var), memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
- zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ result = (zendi_smart_strcmp(op1, op2) == 0);
}
- } else {
- ZVAL_BOOL(EX_VAR(opline->result.var), zendi_smart_strcmp(op1, op2) == 0);
zval_ptr_dtor_nogc(free_op2);
- ZEND_VM_NEXT_OPCODE();
+ } else {
+ break;
}
+ } else {
+ break;
}
- }
+ ZEND_VM_SMART_BRANCH(result, 0);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ ZEND_VM_NEXT_OPCODE();
+ } while (0);
SAVE_OPLINE();
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
}
zval_ptr_dtor_nogc(free_op2);
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}
}
zval_ptr_dtor_nogc(free_op2);
- ZVAL_BOOL(EX_VAR(opline->result.var), result);
zval_ptr_dtor_nogc(free_op1);
+ ZEND_VM_SMART_BRANCH(result, 1);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
CHECK_EXCEPTION();
ZEND_VM_NEXT_OPCODE();
}