ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC);
+
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_CONST_CONST(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
return zend_fetch_property_address_read_helper_SPEC_CONST_CONST(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
}
+static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = opline->op2.zv;
+
+ if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
+ UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ } else {
+ zval *retval;
+
+ /* here we are sure we are dealing with an object */
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1), EX_VAR(opline->result.var) TSRMLS_CC);
+
+ if (retval != EX_VAR(opline->result.var)) {
+ ZVAL_COPY(EX_VAR(opline->result.var), retval);
+ }
+ }
+
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_FETCH_DIM_TMP_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+ int result;
+ ulong hval;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = opline->op2.zv;
+
+ if (Z_TYPE_P(container) == IS_ARRAY) {
+ HashTable *ht = Z_ARRVAL_P(container);
+ zval *value = NULL;
+ zend_string *str;
+
+isset_again:
+ switch (Z_TYPE_P(offset)) {
+ case IS_DOUBLE:
+ hval = zend_dval_to_lval(Z_DVAL_P(offset));
+ goto num_index_prop;
+ case IS_LONG:
+ hval = Z_LVAL_P(offset);
+num_index_prop:
+ value = zend_hash_index_find(ht, hval);
+ break;
+ case IS_STRING:
+ str = Z_STR_P(offset);
+ if (IS_CONST != IS_CONST) {
+ ZEND_HANDLE_NUMERIC_EX(str->val, str->len+1, hval, goto num_index_prop);
+ }
+str_index_prop:
+ value = zend_hash_find_ind(ht, str);
+ break;
+ case IS_NULL:
+ str = STR_EMPTY_ALLOC();
+ goto str_index_prop;
+ break;
+ case IS_FALSE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_TRUE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_RESOURCE:
+ hval = Z_RES_HANDLE_P(offset);
+ goto num_index_prop;
+ case IS_REFERENCE:
+ offset = Z_REFVAL_P(offset);
+ goto isset_again;
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type in isset or empty");
+ break;
+ }
+
+ if (opline->extended_value & ZEND_ISSET) {
+ /* > IS_NULL means not IS_UNDEF and not IS_NULL */
+ result = (value != NULL && Z_TYPE_P(value) > IS_NULL);
+ } else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
+ result = (value == NULL || !i_zend_is_true(value TSRMLS_CC));
+ }
+ } else if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_dimension) {
+ result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0 TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check element of non-array");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else if (Z_TYPE_P(container) == IS_STRING) { /* string offsets */
+ zval tmp;
+
+ result = 0;
+ if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) {
+ if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
+ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
+ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
+ ZVAL_DUP(&tmp, offset);
+ convert_to_long(&tmp);
+ offset = &tmp;
+ }
+ }
+ if (Z_TYPE_P(offset) == IS_LONG) {
+ if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) {
+ if ((opline->extended_value & ZEND_ISSET) ||
+ Z_STRVAL_P(container)[offset->value.lval] != '0') {
+ result = 1;
+ }
+ }
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+ int result;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = opline->op2.zv;
+
+ if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_property) {
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1) TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check property of non-object");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2;
+ zval *container;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR TSRMLS_CC);
+ zval_dtor(free_op2.var);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_CONST_TMP(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
return zend_fetch_property_address_read_helper_SPEC_CONST_TMP(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
}
+static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+ zend_free_op free_op2;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
+ UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ } else {
+ zval *retval;
+
+ /* here we are sure we are dealing with an object */
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1), EX_VAR(opline->result.var) TSRMLS_CC);
+
+ if (retval != EX_VAR(opline->result.var)) {
+ ZVAL_COPY(EX_VAR(opline->result.var), retval);
+ }
+ }
+
+ zval_dtor(free_op2.var);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
}
}
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2;
+ zval *container;
+ int result;
+ ulong hval;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_ARRAY) {
+ HashTable *ht = Z_ARRVAL_P(container);
+ zval *value = NULL;
+ zend_string *str;
+
+isset_again:
+ switch (Z_TYPE_P(offset)) {
+ case IS_DOUBLE:
+ hval = zend_dval_to_lval(Z_DVAL_P(offset));
+ goto num_index_prop;
+ case IS_LONG:
+ hval = Z_LVAL_P(offset);
+num_index_prop:
+ value = zend_hash_index_find(ht, hval);
+ break;
+ case IS_STRING:
+ str = Z_STR_P(offset);
+ if (IS_TMP_VAR != IS_CONST) {
+ ZEND_HANDLE_NUMERIC_EX(str->val, str->len+1, hval, goto num_index_prop);
+ }
+str_index_prop:
+ value = zend_hash_find_ind(ht, str);
+ break;
+ case IS_NULL:
+ str = STR_EMPTY_ALLOC();
+ goto str_index_prop;
+ break;
+ case IS_FALSE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_TRUE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_RESOURCE:
+ hval = Z_RES_HANDLE_P(offset);
+ goto num_index_prop;
+ case IS_REFERENCE:
+ offset = Z_REFVAL_P(offset);
+ goto isset_again;
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type in isset or empty");
+ break;
+ }
+
+ if (opline->extended_value & ZEND_ISSET) {
+ /* > IS_NULL means not IS_UNDEF and not IS_NULL */
+ result = (value != NULL && Z_TYPE_P(value) > IS_NULL);
+ } else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
+ result = (value == NULL || !i_zend_is_true(value TSRMLS_CC));
+ }
+ } else if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_dimension) {
+ result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0 TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check element of non-array");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else if (Z_TYPE_P(container) == IS_STRING) { /* string offsets */
+ zval tmp;
+
+ result = 0;
+ if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) {
+ if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
+ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
+ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
+ ZVAL_DUP(&tmp, offset);
+ convert_to_long(&tmp);
+ offset = &tmp;
+ }
+ }
+ if (Z_TYPE_P(offset) == IS_LONG) {
+ if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) {
+ if ((opline->extended_value & ZEND_ISSET) ||
+ Z_STRVAL_P(container)[offset->value.lval] != '0') {
+ result = 1;
+ }
+ }
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ zval_dtor(free_op2.var);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2;
+ zval *container;
+ int result;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_property) {
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1) TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check property of non-object");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ zval_dtor(free_op2.var);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2;
+ zval *container;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR TSRMLS_CC);
+ zval_ptr_dtor_nogc(free_op2.var);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_CONST_VAR(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
return zend_fetch_property_address_read_helper_SPEC_CONST_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
}
+static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+ zend_free_op free_op2;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
+ UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ } else {
+ zval *retval;
+
+ /* here we are sure we are dealing with an object */
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1), EX_VAR(opline->result.var) TSRMLS_CC);
+
+ if (retval != EX_VAR(opline->result.var)) {
+ ZVAL_COPY(EX_VAR(opline->result.var), retval);
+ }
+ }
+
+ zval_ptr_dtor_nogc(free_op2.var);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2;
+ zval *container;
+ int result;
+ ulong hval;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_ARRAY) {
+ HashTable *ht = Z_ARRVAL_P(container);
+ zval *value = NULL;
+ zend_string *str;
+
+isset_again:
+ switch (Z_TYPE_P(offset)) {
+ case IS_DOUBLE:
+ hval = zend_dval_to_lval(Z_DVAL_P(offset));
+ goto num_index_prop;
+ case IS_LONG:
+ hval = Z_LVAL_P(offset);
+num_index_prop:
+ value = zend_hash_index_find(ht, hval);
+ break;
+ case IS_STRING:
+ str = Z_STR_P(offset);
+ if (IS_VAR != IS_CONST) {
+ ZEND_HANDLE_NUMERIC_EX(str->val, str->len+1, hval, goto num_index_prop);
+ }
+str_index_prop:
+ value = zend_hash_find_ind(ht, str);
+ break;
+ case IS_NULL:
+ str = STR_EMPTY_ALLOC();
+ goto str_index_prop;
+ break;
+ case IS_FALSE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_TRUE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_RESOURCE:
+ hval = Z_RES_HANDLE_P(offset);
+ goto num_index_prop;
+ case IS_REFERENCE:
+ offset = Z_REFVAL_P(offset);
+ goto isset_again;
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type in isset or empty");
+ break;
+ }
+
+ if (opline->extended_value & ZEND_ISSET) {
+ /* > IS_NULL means not IS_UNDEF and not IS_NULL */
+ result = (value != NULL && Z_TYPE_P(value) > IS_NULL);
+ } else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
+ result = (value == NULL || !i_zend_is_true(value TSRMLS_CC));
+ }
+ } else if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_dimension) {
+ result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0 TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check element of non-array");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else if (Z_TYPE_P(container) == IS_STRING) { /* string offsets */
+ zval tmp;
+
+ result = 0;
+ if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) {
+ if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
+ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
+ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
+ ZVAL_DUP(&tmp, offset);
+ convert_to_long(&tmp);
+ offset = &tmp;
+ }
+ }
+ if (Z_TYPE_P(offset) == IS_LONG) {
+ if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) {
+ if ((opline->extended_value & ZEND_ISSET) ||
+ Z_STRVAL_P(container)[offset->value.lval] != '0') {
+ result = 1;
+ }
+ }
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ zval_ptr_dtor_nogc(free_op2.var);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op2;
+ zval *container;
+ int result;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_property) {
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1) TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check property of non-object");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ zval_ptr_dtor_nogc(free_op2.var);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV TSRMLS_CC);
+
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_CONST_CV(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
return zend_fetch_property_address_read_helper_SPEC_CONST_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
}
+static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
+
+ if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
+ UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ } else {
+ zval *retval;
+
+ /* here we are sure we are dealing with an object */
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1), EX_VAR(opline->result.var) TSRMLS_CC);
+
+ if (retval != EX_VAR(opline->result.var)) {
+ ZVAL_COPY(EX_VAR(opline->result.var), retval);
+ }
+ }
+
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
}
}
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+ int result;
+ ulong hval;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_ARRAY) {
+ HashTable *ht = Z_ARRVAL_P(container);
+ zval *value = NULL;
+ zend_string *str;
+
+isset_again:
+ switch (Z_TYPE_P(offset)) {
+ case IS_DOUBLE:
+ hval = zend_dval_to_lval(Z_DVAL_P(offset));
+ goto num_index_prop;
+ case IS_LONG:
+ hval = Z_LVAL_P(offset);
+num_index_prop:
+ value = zend_hash_index_find(ht, hval);
+ break;
+ case IS_STRING:
+ str = Z_STR_P(offset);
+ if (IS_CV != IS_CONST) {
+ ZEND_HANDLE_NUMERIC_EX(str->val, str->len+1, hval, goto num_index_prop);
+ }
+str_index_prop:
+ value = zend_hash_find_ind(ht, str);
+ break;
+ case IS_NULL:
+ str = STR_EMPTY_ALLOC();
+ goto str_index_prop;
+ break;
+ case IS_FALSE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_TRUE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_RESOURCE:
+ hval = Z_RES_HANDLE_P(offset);
+ goto num_index_prop;
+ case IS_REFERENCE:
+ offset = Z_REFVAL_P(offset);
+ goto isset_again;
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type in isset or empty");
+ break;
+ }
+
+ if (opline->extended_value & ZEND_ISSET) {
+ /* > IS_NULL means not IS_UNDEF and not IS_NULL */
+ result = (value != NULL && Z_TYPE_P(value) > IS_NULL);
+ } else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
+ result = (value == NULL || !i_zend_is_true(value TSRMLS_CC));
+ }
+ } else if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_dimension) {
+ result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0 TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check element of non-array");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else if (Z_TYPE_P(container) == IS_STRING) { /* string offsets */
+ zval tmp;
+
+ result = 0;
+ if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) {
+ if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
+ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
+ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
+ ZVAL_DUP(&tmp, offset);
+ convert_to_long(&tmp);
+ offset = &tmp;
+ }
+ }
+ if (Z_TYPE_P(offset) == IS_LONG) {
+ if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) {
+ if ((opline->extended_value & ZEND_ISSET) ||
+ Z_STRVAL_P(container)[offset->value.lval] != '0') {
+ result = 1;
+ }
+ }
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+
+ zval *container;
+ int result;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = opline->op1.zv;
+ offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_property) {
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1) TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check property of non-object");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, opline->op2.zv, IS_CONST TSRMLS_CC);
+
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_TMP_CONST(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
return zend_fetch_property_address_read_helper_SPEC_TMP_CONST(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
}
+static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = opline->op2.zv;
+
+ if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
+ UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ } else {
+ zval *retval;
+
+ /* here we are sure we are dealing with an object */
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1), EX_VAR(opline->result.var) TSRMLS_CC);
+
+ if (retval != EX_VAR(opline->result.var)) {
+ ZVAL_COPY(EX_VAR(opline->result.var), retval);
+ }
+ }
+
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_FETCH_DIM_TMP_VAR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+ int result;
+ ulong hval;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = opline->op2.zv;
+
+ if (Z_TYPE_P(container) == IS_ARRAY) {
+ HashTable *ht = Z_ARRVAL_P(container);
+ zval *value = NULL;
+ zend_string *str;
+
+isset_again:
+ switch (Z_TYPE_P(offset)) {
+ case IS_DOUBLE:
+ hval = zend_dval_to_lval(Z_DVAL_P(offset));
+ goto num_index_prop;
+ case IS_LONG:
+ hval = Z_LVAL_P(offset);
+num_index_prop:
+ value = zend_hash_index_find(ht, hval);
+ break;
+ case IS_STRING:
+ str = Z_STR_P(offset);
+ if (IS_CONST != IS_CONST) {
+ ZEND_HANDLE_NUMERIC_EX(str->val, str->len+1, hval, goto num_index_prop);
+ }
+str_index_prop:
+ value = zend_hash_find_ind(ht, str);
+ break;
+ case IS_NULL:
+ str = STR_EMPTY_ALLOC();
+ goto str_index_prop;
+ break;
+ case IS_FALSE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_TRUE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_RESOURCE:
+ hval = Z_RES_HANDLE_P(offset);
+ goto num_index_prop;
+ case IS_REFERENCE:
+ offset = Z_REFVAL_P(offset);
+ goto isset_again;
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type in isset or empty");
+ break;
+ }
+
+ if (opline->extended_value & ZEND_ISSET) {
+ /* > IS_NULL means not IS_UNDEF and not IS_NULL */
+ result = (value != NULL && Z_TYPE_P(value) > IS_NULL);
+ } else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
+ result = (value == NULL || !i_zend_is_true(value TSRMLS_CC));
+ }
+ } else if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_dimension) {
+ result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0 TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check element of non-array");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else if (Z_TYPE_P(container) == IS_STRING) { /* string offsets */
+ zval tmp;
+
+ result = 0;
+ if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) {
+ if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
+ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
+ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
+ ZVAL_DUP(&tmp, offset);
+ convert_to_long(&tmp);
+ offset = &tmp;
+ }
+ }
+ if (Z_TYPE_P(offset) == IS_LONG) {
+ if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) {
+ if ((opline->extended_value & ZEND_ISSET) ||
+ Z_STRVAL_P(container)[offset->value.lval] != '0') {
+ result = 1;
+ }
+ }
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+ int result;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = opline->op2.zv;
+
+ if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_property) {
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1) TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check property of non-object");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2;
+ zval *container;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_TMP_VAR TSRMLS_CC);
+ zval_dtor(free_op2.var);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_TMP_TMP(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
return zend_fetch_property_address_read_helper_SPEC_TMP_TMP(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
}
+static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+ zend_free_op free_op2;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
+ UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ } else {
+ zval *retval;
+
+ /* here we are sure we are dealing with an object */
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1), EX_VAR(opline->result.var) TSRMLS_CC);
+
+ if (retval != EX_VAR(opline->result.var)) {
+ ZVAL_COPY(EX_VAR(opline->result.var), retval);
+ }
+ }
+
+ zval_dtor(free_op2.var);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
}
}
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2;
+ zval *container;
+ int result;
+ ulong hval;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_ARRAY) {
+ HashTable *ht = Z_ARRVAL_P(container);
+ zval *value = NULL;
+ zend_string *str;
+
+isset_again:
+ switch (Z_TYPE_P(offset)) {
+ case IS_DOUBLE:
+ hval = zend_dval_to_lval(Z_DVAL_P(offset));
+ goto num_index_prop;
+ case IS_LONG:
+ hval = Z_LVAL_P(offset);
+num_index_prop:
+ value = zend_hash_index_find(ht, hval);
+ break;
+ case IS_STRING:
+ str = Z_STR_P(offset);
+ if (IS_TMP_VAR != IS_CONST) {
+ ZEND_HANDLE_NUMERIC_EX(str->val, str->len+1, hval, goto num_index_prop);
+ }
+str_index_prop:
+ value = zend_hash_find_ind(ht, str);
+ break;
+ case IS_NULL:
+ str = STR_EMPTY_ALLOC();
+ goto str_index_prop;
+ break;
+ case IS_FALSE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_TRUE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_RESOURCE:
+ hval = Z_RES_HANDLE_P(offset);
+ goto num_index_prop;
+ case IS_REFERENCE:
+ offset = Z_REFVAL_P(offset);
+ goto isset_again;
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type in isset or empty");
+ break;
+ }
+
+ if (opline->extended_value & ZEND_ISSET) {
+ /* > IS_NULL means not IS_UNDEF and not IS_NULL */
+ result = (value != NULL && Z_TYPE_P(value) > IS_NULL);
+ } else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
+ result = (value == NULL || !i_zend_is_true(value TSRMLS_CC));
+ }
+ } else if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_dimension) {
+ result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0 TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check element of non-array");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else if (Z_TYPE_P(container) == IS_STRING) { /* string offsets */
+ zval tmp;
+
+ result = 0;
+ if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) {
+ if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
+ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
+ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
+ ZVAL_DUP(&tmp, offset);
+ convert_to_long(&tmp);
+ offset = &tmp;
+ }
+ }
+ if (Z_TYPE_P(offset) == IS_LONG) {
+ if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) {
+ if ((opline->extended_value & ZEND_ISSET) ||
+ Z_STRVAL_P(container)[offset->value.lval] != '0') {
+ result = 1;
+ }
+ }
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ zval_dtor(free_op2.var);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2;
+ zval *container;
+ int result;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_property) {
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_TMP_VAR == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1) TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check property of non-object");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ zval_dtor(free_op2.var);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2;
+ zval *container;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC), IS_VAR TSRMLS_CC);
+ zval_ptr_dtor_nogc(free_op2.var);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_TMP_VAR(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
return zend_fetch_property_address_read_helper_SPEC_TMP_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
}
+static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+ zend_free_op free_op2;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
+ UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ } else {
+ zval *retval;
+
+ /* here we are sure we are dealing with an object */
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1), EX_VAR(opline->result.var) TSRMLS_CC);
+
+ if (retval != EX_VAR(opline->result.var)) {
+ ZVAL_COPY(EX_VAR(opline->result.var), retval);
+ }
+ }
+
+ zval_ptr_dtor_nogc(free_op2.var);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2;
+ zval *container;
+ int result;
+ ulong hval;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_ARRAY) {
+ HashTable *ht = Z_ARRVAL_P(container);
+ zval *value = NULL;
+ zend_string *str;
+
+isset_again:
+ switch (Z_TYPE_P(offset)) {
+ case IS_DOUBLE:
+ hval = zend_dval_to_lval(Z_DVAL_P(offset));
+ goto num_index_prop;
+ case IS_LONG:
+ hval = Z_LVAL_P(offset);
+num_index_prop:
+ value = zend_hash_index_find(ht, hval);
+ break;
+ case IS_STRING:
+ str = Z_STR_P(offset);
+ if (IS_VAR != IS_CONST) {
+ ZEND_HANDLE_NUMERIC_EX(str->val, str->len+1, hval, goto num_index_prop);
+ }
+str_index_prop:
+ value = zend_hash_find_ind(ht, str);
+ break;
+ case IS_NULL:
+ str = STR_EMPTY_ALLOC();
+ goto str_index_prop;
+ break;
+ case IS_FALSE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_TRUE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_RESOURCE:
+ hval = Z_RES_HANDLE_P(offset);
+ goto num_index_prop;
+ case IS_REFERENCE:
+ offset = Z_REFVAL_P(offset);
+ goto isset_again;
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type in isset or empty");
+ break;
+ }
+
+ if (opline->extended_value & ZEND_ISSET) {
+ /* > IS_NULL means not IS_UNDEF and not IS_NULL */
+ result = (value != NULL && Z_TYPE_P(value) > IS_NULL);
+ } else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
+ result = (value == NULL || !i_zend_is_true(value TSRMLS_CC));
+ }
+ } else if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_dimension) {
+ result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0 TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check element of non-array");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else if (Z_TYPE_P(container) == IS_STRING) { /* string offsets */
+ zval tmp;
+
+ result = 0;
+ if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) {
+ if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
+ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
+ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
+ ZVAL_DUP(&tmp, offset);
+ convert_to_long(&tmp);
+ offset = &tmp;
+ }
+ }
+ if (Z_TYPE_P(offset) == IS_LONG) {
+ if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) {
+ if ((opline->extended_value & ZEND_ISSET) ||
+ Z_STRVAL_P(container)[offset->value.lval] != '0') {
+ result = 1;
+ }
+ }
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ zval_ptr_dtor_nogc(free_op2.var);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1, free_op2;
+ zval *container;
+ int result;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_property) {
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_VAR == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1) TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check property of non-object");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ zval_ptr_dtor_nogc(free_op2.var);
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_VM_NEXT_OPCODE();
}
+static int ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC), IS_CV TSRMLS_CC);
+
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_TMP_CV(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
return zend_fetch_property_address_read_helper_SPEC_TMP_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
}
+static int ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
+
+ if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT) ||
+ UNEXPECTED(Z_OBJ_HT_P(container)->read_property == NULL)) {
+ ZVAL_NULL(EX_VAR(opline->result.var));
+ } else {
+ zval *retval;
+
+ /* here we are sure we are dealing with an object */
+ retval = Z_OBJ_HT_P(container)->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1), EX_VAR(opline->result.var) TSRMLS_CC);
+
+ if (retval != EX_VAR(opline->result.var)) {
+ ZVAL_COPY(EX_VAR(opline->result.var), retval);
+ }
+ }
+
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
}
}
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+ int result;
+ ulong hval;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_ARRAY) {
+ HashTable *ht = Z_ARRVAL_P(container);
+ zval *value = NULL;
+ zend_string *str;
+
+isset_again:
+ switch (Z_TYPE_P(offset)) {
+ case IS_DOUBLE:
+ hval = zend_dval_to_lval(Z_DVAL_P(offset));
+ goto num_index_prop;
+ case IS_LONG:
+ hval = Z_LVAL_P(offset);
+num_index_prop:
+ value = zend_hash_index_find(ht, hval);
+ break;
+ case IS_STRING:
+ str = Z_STR_P(offset);
+ if (IS_CV != IS_CONST) {
+ ZEND_HANDLE_NUMERIC_EX(str->val, str->len+1, hval, goto num_index_prop);
+ }
+str_index_prop:
+ value = zend_hash_find_ind(ht, str);
+ break;
+ case IS_NULL:
+ str = STR_EMPTY_ALLOC();
+ goto str_index_prop;
+ break;
+ case IS_FALSE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_TRUE:
+ hval = 0;
+ goto num_index_prop;
+ case IS_RESOURCE:
+ hval = Z_RES_HANDLE_P(offset);
+ goto num_index_prop;
+ case IS_REFERENCE:
+ offset = Z_REFVAL_P(offset);
+ goto isset_again;
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type in isset or empty");
+ break;
+ }
+
+ if (opline->extended_value & ZEND_ISSET) {
+ /* > IS_NULL means not IS_UNDEF and not IS_NULL */
+ result = (value != NULL && Z_TYPE_P(value) > IS_NULL);
+ } else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
+ result = (value == NULL || !i_zend_is_true(value TSRMLS_CC));
+ }
+ } else if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_dimension) {
+ result = Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0 TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check element of non-array");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else if (Z_TYPE_P(container) == IS_STRING) { /* string offsets */
+ zval tmp;
+
+ result = 0;
+ if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) {
+ if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
+ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
+ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
+ ZVAL_DUP(&tmp, offset);
+ convert_to_long(&tmp);
+ offset = &tmp;
+ }
+ }
+ if (Z_TYPE_P(offset) == IS_LONG) {
+ if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_P(container)) {
+ if ((opline->extended_value & ZEND_ISSET) ||
+ Z_STRVAL_P(container)[offset->value.lval] != '0') {
+ result = 1;
+ }
+ }
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
+static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+ USE_OPLINE
+ zend_free_op free_op1;
+ zval *container;
+ int result;
+ zval *offset;
+
+ SAVE_OPLINE();
+ container = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+ offset = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
+
+ if (Z_TYPE_P(container) == IS_OBJECT) {
+ if (Z_OBJ_HT_P(container)->has_property) {
+ result = Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? Z_CACHE_SLOT_P(offset) : -1) TSRMLS_CC);
+ } else {
+ zend_error(E_NOTICE, "Trying to check property of non-object");
+ result = 0;
+ }
+ if ((opline->extended_value & ZEND_ISSET) == 0) {
+ result = !result;
+ }
+ } else {
+ result = ((opline->extended_value & ZEND_ISSET) == 0);
+ }
+
+ ZVAL_BOOL(EX_VAR(opline->result.var), result);
+ zval_dtor(free_op1.var);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
+}
+
static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
USE_OPLINE
ZEND_FETCH_IS_SPEC_CV_VAR_HANDLER,
ZEND_FETCH_IS_SPEC_CV_UNUSED_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER,
+ ZEND_FETCH_DIM_IS_SPEC_CONST_TMP_HANDLER,
+ ZEND_FETCH_DIM_IS_SPEC_CONST_VAR_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER,
+ ZEND_FETCH_DIM_IS_SPEC_TMP_CONST_HANDLER,
+ ZEND_FETCH_DIM_IS_SPEC_TMP_TMP_HANDLER,
+ ZEND_FETCH_DIM_IS_SPEC_TMP_VAR_HANDLER,
ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
+ ZEND_FETCH_DIM_IS_SPEC_TMP_CV_HANDLER,
ZEND_FETCH_DIM_IS_SPEC_VAR_CONST_HANDLER,
ZEND_FETCH_DIM_IS_SPEC_VAR_TMP_HANDLER,
ZEND_FETCH_DIM_IS_SPEC_VAR_VAR_HANDLER,
ZEND_FETCH_DIM_IS_SPEC_CV_VAR_HANDLER,
ZEND_NULL_HANDLER,
ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER,
+ ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER,
+ ZEND_FETCH_OBJ_IS_SPEC_CONST_TMP_HANDLER,
+ ZEND_FETCH_OBJ_IS_SPEC_CONST_VAR_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER,
+ ZEND_FETCH_OBJ_IS_SPEC_TMP_CONST_HANDLER,
+ ZEND_FETCH_OBJ_IS_SPEC_TMP_TMP_HANDLER,
+ ZEND_FETCH_OBJ_IS_SPEC_TMP_VAR_HANDLER,
ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
+ ZEND_FETCH_OBJ_IS_SPEC_TMP_CV_HANDLER,
ZEND_FETCH_OBJ_IS_SPEC_VAR_CONST_HANDLER,
ZEND_FETCH_OBJ_IS_SPEC_VAR_TMP_HANDLER,
ZEND_FETCH_OBJ_IS_SPEC_VAR_VAR_HANDLER,
ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_VAR_HANDLER,
ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER,
+ ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMP_HANDLER,
+ ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_VAR_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER,
+ ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CONST_HANDLER,
+ ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_TMP_HANDLER,
+ ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_VAR_HANDLER,
ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
+ ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMP_CV_HANDLER,
ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_CONST_HANDLER,
ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_TMP_HANDLER,
ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_VAR_HANDLER,
ZEND_ASSIGN_DIM_SPEC_CV_VAR_HANDLER,
ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_HANDLER,
ZEND_ASSIGN_DIM_SPEC_CV_CV_HANDLER,
+ ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER,
+ ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMP_HANDLER,
+ ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_VAR_HANDLER,
ZEND_NULL_HANDLER,
+ ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER,
+ ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CONST_HANDLER,
+ ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_TMP_HANDLER,
+ ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_VAR_HANDLER,
ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
- ZEND_NULL_HANDLER,
+ ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMP_CV_HANDLER,
ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_CONST_HANDLER,
ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_TMP_HANDLER,
ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_VAR_HANDLER,