expr = GET_OP1_ZVAL_PTR(BP_VAR_R);
switch (opline->extended_value) {
- case IS_NULL:
- ZVAL_NULL(result);
- break;
- case _IS_BOOL:
- ZVAL_BOOL(result, zend_is_true(expr));
- break;
case IS_LONG:
ZVAL_LONG(result, zval_get_long(expr));
break;
ZVAL_STR(result, zval_get_string(expr));
break;
default:
+ ZEND_ASSERT(opline->extended_value != _IS_BOOL && "Must use ZEND_BOOL instead");
if (OP1_TYPE & (IS_VAR|IS_CV)) {
ZVAL_DEREF(expr);
}
}
}
} else {
+ ZEND_ASSERT(opline->extended_value == IS_OBJECT);
ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
if (Z_TYPE_P(expr) == IS_ARRAY) {
ht = zend_symtable_to_proptable(Z_ARR_P(expr));
expr = RT_CONSTANT(opline, opline->op1);
switch (opline->extended_value) {
- case IS_NULL:
- ZVAL_NULL(result);
- break;
- case _IS_BOOL:
- ZVAL_BOOL(result, zend_is_true(expr));
- break;
case IS_LONG:
ZVAL_LONG(result, zval_get_long(expr));
break;
ZVAL_STR(result, zval_get_string(expr));
break;
default:
+ ZEND_ASSERT(opline->extended_value != _IS_BOOL && "Must use ZEND_BOOL instead");
if (IS_CONST & (IS_VAR|IS_CV)) {
ZVAL_DEREF(expr);
}
}
}
} else {
+ ZEND_ASSERT(opline->extended_value == IS_OBJECT);
ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
if (Z_TYPE_P(expr) == IS_ARRAY) {
ht = zend_symtable_to_proptable(Z_ARR_P(expr));
expr = _get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC);
switch (opline->extended_value) {
- case IS_NULL:
- ZVAL_NULL(result);
- break;
- case _IS_BOOL:
- ZVAL_BOOL(result, zend_is_true(expr));
- break;
case IS_LONG:
ZVAL_LONG(result, zval_get_long(expr));
break;
ZVAL_STR(result, zval_get_string(expr));
break;
default:
+ ZEND_ASSERT(opline->extended_value != _IS_BOOL && "Must use ZEND_BOOL instead");
if (IS_TMP_VAR & (IS_VAR|IS_CV)) {
ZVAL_DEREF(expr);
}
}
}
} else {
+ ZEND_ASSERT(opline->extended_value == IS_OBJECT);
ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
if (Z_TYPE_P(expr) == IS_ARRAY) {
ht = zend_symtable_to_proptable(Z_ARR_P(expr));
expr = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
switch (opline->extended_value) {
- case IS_NULL:
- ZVAL_NULL(result);
- break;
- case _IS_BOOL:
- ZVAL_BOOL(result, zend_is_true(expr));
- break;
case IS_LONG:
ZVAL_LONG(result, zval_get_long(expr));
break;
ZVAL_STR(result, zval_get_string(expr));
break;
default:
+ ZEND_ASSERT(opline->extended_value != _IS_BOOL && "Must use ZEND_BOOL instead");
if (IS_VAR & (IS_VAR|IS_CV)) {
ZVAL_DEREF(expr);
}
}
}
} else {
+ ZEND_ASSERT(opline->extended_value == IS_OBJECT);
ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
if (Z_TYPE_P(expr) == IS_ARRAY) {
ht = zend_symtable_to_proptable(Z_ARR_P(expr));
expr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
switch (opline->extended_value) {
- case IS_NULL:
- ZVAL_NULL(result);
- break;
- case _IS_BOOL:
- ZVAL_BOOL(result, zend_is_true(expr));
- break;
case IS_LONG:
ZVAL_LONG(result, zval_get_long(expr));
break;
ZVAL_STR(result, zval_get_string(expr));
break;
default:
+ ZEND_ASSERT(opline->extended_value != _IS_BOOL && "Must use ZEND_BOOL instead");
if (IS_CV & (IS_VAR|IS_CV)) {
ZVAL_DEREF(expr);
}
}
}
} else {
+ ZEND_ASSERT(opline->extended_value == IS_OBJECT);
ZVAL_OBJ(result, zend_objects_new(zend_standard_class_def));
if (Z_TYPE_P(expr) == IS_ARRAY) {
ht = zend_symtable_to_proptable(Z_ARR_P(expr));
}
}
} else if (ssa->ops[line].result_def == var) {
- if (opline->extended_value == IS_NULL) {
- tmp->min = 0;
- tmp->max = 0;
- return 1;
- } else if (opline->extended_value == _IS_BOOL) {
- if (OP1_HAS_RANGE()) {
- op1_min = OP1_MIN_RANGE();
- op1_max = OP1_MAX_RANGE();
- tmp->min = (op1_min > 0 || op1_max < 0);
- tmp->max = (op1_min != 0 || op1_max != 0);
- return 1;
- } else {
- tmp->min = 0;
- tmp->max = 1;
- return 1;
- }
- } else if (opline->extended_value == IS_LONG) {
+ if (opline->extended_value == IS_LONG) {
if (OP1_HAS_RANGE()) {
tmp->min = OP1_MIN_RANGE();
tmp->max = OP1_MAX_RANGE();
UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def);
}
- tmp = 0;
- if (opline->extended_value == _IS_BOOL) {
- tmp |= MAY_BE_TRUE|MAY_BE_FALSE;
- } else {
- tmp |= 1 << opline->extended_value;
- if (tmp & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)) {
- if ((tmp & MAY_BE_ANY) == (t1 & MAY_BE_ANY)) {
- tmp |= (t1 & MAY_BE_RC1) | MAY_BE_RCN;
- } else if ((opline->extended_value == IS_ARRAY ||
- opline->extended_value == IS_OBJECT) &&
- (t1 & (MAY_BE_ARRAY|MAY_BE_OBJECT))) {
- tmp |= MAY_BE_RC1 | MAY_BE_RCN;
- } else if (opline->extended_value == IS_STRING &&
- (t1 & (MAY_BE_STRING|MAY_BE_OBJECT))) {
+ tmp = 1 << opline->extended_value;
+ if (tmp & (MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE)) {
+ if ((tmp & MAY_BE_ANY) == (t1 & MAY_BE_ANY)) {
+ tmp |= (t1 & MAY_BE_RC1) | MAY_BE_RCN;
+ } else if ((opline->extended_value == IS_ARRAY ||
+ opline->extended_value == IS_OBJECT) &&
+ (t1 & (MAY_BE_ARRAY|MAY_BE_OBJECT))) {
tmp |= MAY_BE_RC1 | MAY_BE_RCN;
- } else {
- tmp |= MAY_BE_RC1;
- }
+ } else if (opline->extended_value == IS_STRING &&
+ (t1 & (MAY_BE_STRING|MAY_BE_OBJECT))) {
+ tmp |= MAY_BE_RC1 | MAY_BE_RCN;
+ } else {
+ tmp |= MAY_BE_RC1;
}
}
if (opline->extended_value == IS_ARRAY) {
return (t1 & MAY_BE_OBJECT) || (t2 & (MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE));
case ZEND_CAST:
switch (opline->extended_value) {
- case IS_NULL:
- return 0;
- case _IS_BOOL:
- return (t1 & MAY_BE_OBJECT);
case IS_LONG:
case IS_DOUBLE:
return (t1 & MAY_BE_OBJECT);
case IS_ARRAY:
return (t1 & MAY_BE_OBJECT);
case IS_OBJECT:
- return (t1 & MAY_BE_ARRAY);
- default:
- return 1;
+ return 0;
+ EMPTY_SWITCH_DEFAULT_CASE()
}
case ZEND_ARRAY_KEY_EXISTS:
if ((t2 & MAY_BE_ANY) != MAY_BE_ARRAY) {