Annotation of embedaddon/php/Zend/zend_vm_execute.h, revision 1.1

1.1     ! misho       1: /*
        !             2:    +----------------------------------------------------------------------+
        !             3:    | Zend Engine                                                          |
        !             4:    +----------------------------------------------------------------------+
        !             5:    | Copyright (c) 1998-2012 Zend Technologies Ltd. (http://www.zend.com) |
        !             6:    +----------------------------------------------------------------------+
        !             7:    | This source file is subject to version 2.00 of the Zend license,     |
        !             8:    | that is bundled with this package in the file LICENSE, and is        |
        !             9:    | available through the world-wide-web at the following url:           |
        !            10:    | http://www.zend.com/license/2_00.txt.                                |
        !            11:    | If you did not receive a copy of the Zend license and are unable to  |
        !            12:    | obtain it through the world-wide-web, please send a note to          |
        !            13:    | license@zend.com so we can mail you a copy immediately.              |
        !            14:    +----------------------------------------------------------------------+
        !            15:    | Authors: Andi Gutmans <andi@zend.com>                                |
        !            16:    |          Zeev Suraski <zeev@zend.com>                                |
        !            17:    |          Dmitry Stogov <dmitry@zend.com>                             |
        !            18:    +----------------------------------------------------------------------+
        !            19: */
        !            20: 
        !            21: #ifdef ZEND_WIN32
        !            22: # pragma warning(once : 4101)
        !            23: #endif
        !            24: static user_opcode_handler_t zend_user_opcode_handlers[256] = {(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL,(user_opcode_handler_t)NULL};
        !            25: 
        !            26: static zend_uchar zend_user_opcodes[256] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255};
        !            27: 
        !            28: static opcode_handler_t zend_vm_get_opcode_handler(zend_uchar opcode, zend_op* op);
        !            29: 
        !            30: 
        !            31: #define ZEND_VM_CONTINUE()   return 0
        !            32: #define ZEND_VM_RETURN()     return 1
        !            33: #define ZEND_VM_ENTER()      return 2
        !            34: #define ZEND_VM_LEAVE()      return 3
        !            35: #define ZEND_VM_DISPATCH(opcode, opline) return zend_vm_get_opcode_handler(opcode, opline)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !            36: 
        !            37: #define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_INTERNAL execute_data TSRMLS_CC
        !            38: #undef EX
        !            39: #define EX(element) execute_data->element
        !            40: 
        !            41: 
        !            42: ZEND_API void execute(zend_op_array *op_array TSRMLS_DC)
        !            43: {
        !            44:        zend_execute_data *execute_data;
        !            45:        zend_bool nested = 0;
        !            46:        zend_bool original_in_execution = EG(in_execution);
        !            47: 
        !            48: 
        !            49:        if (EG(exception)) {
        !            50:                return;
        !            51:        }
        !            52: 
        !            53:        EG(in_execution) = 1;
        !            54: 
        !            55: zend_vm_enter:
        !            56:        /* Initialize execute_data */
        !            57:        execute_data = (zend_execute_data *)zend_vm_stack_alloc(
        !            58:                ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)) +
        !            59:                ZEND_MM_ALIGNED_SIZE(sizeof(zval**) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2)) +
        !            60:                ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * op_array->T TSRMLS_CC);
        !            61: 
        !            62:        EX(CVs) = (zval***)((char*)execute_data + ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)));
        !            63:        memset(EX(CVs), 0, sizeof(zval**) * op_array->last_var);
        !            64:        EX(Ts) = (temp_variable *)(((char*)EX(CVs)) + ZEND_MM_ALIGNED_SIZE(sizeof(zval**) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2)));
        !            65:        EX(fbc) = NULL;
        !            66:        EX(called_scope) = NULL;
        !            67:        EX(object) = NULL;
        !            68:        EX(old_error_reporting) = NULL;
        !            69:        EX(op_array) = op_array;
        !            70:        EX(symbol_table) = EG(active_symbol_table);
        !            71:        EX(prev_execute_data) = EG(current_execute_data);
        !            72:        EG(current_execute_data) = execute_data;
        !            73:        EX(nested) = nested;
        !            74:        nested = 1;
        !            75: 
        !            76:        if (op_array->start_op) {
        !            77:                ZEND_VM_SET_OPCODE(op_array->start_op);
        !            78:        } else {
        !            79:                ZEND_VM_SET_OPCODE(op_array->opcodes);
        !            80:        }
        !            81: 
        !            82:        if (op_array->this_var != -1 && EG(This)) {
        !            83:                Z_ADDREF_P(EG(This)); /* For $this pointer */
        !            84:                if (!EG(active_symbol_table)) {
        !            85:                        EX(CVs)[op_array->this_var] = (zval**)EX(CVs) + (op_array->last_var + op_array->this_var);
        !            86:                        *EX(CVs)[op_array->this_var] = EG(This);
        !            87:                } else {
        !            88:                        if (zend_hash_add(EG(active_symbol_table), "this", sizeof("this"), &EG(This), sizeof(zval *), (void**)&EX(CVs)[op_array->this_var])==FAILURE) {
        !            89:                                Z_DELREF_P(EG(This));
        !            90:                        }
        !            91:                }
        !            92:        }
        !            93: 
        !            94:        EG(opline_ptr) = &EX(opline);
        !            95: 
        !            96:        EX(function_state).function = (zend_function *) op_array;
        !            97:        EX(function_state).arguments = NULL;
        !            98:        
        !            99:        while (1) {
        !           100:        int ret;
        !           101: #ifdef ZEND_WIN32
        !           102:                if (EG(timed_out)) {
        !           103:                        zend_timeout(0);
        !           104:                }
        !           105: #endif
        !           106: 
        !           107:                if ((ret = EX(opline)->handler(execute_data TSRMLS_CC)) > 0) {
        !           108:                        switch (ret) {
        !           109:                                case 1:
        !           110:                                        EG(in_execution) = original_in_execution;
        !           111:                                        return;
        !           112:                                case 2:
        !           113:                                        op_array = EG(active_op_array);
        !           114:                                        goto zend_vm_enter;
        !           115:                                case 3:
        !           116:                                        execute_data = EG(current_execute_data);
        !           117:                                default:
        !           118:                                        break;
        !           119:                        }
        !           120:                }
        !           121: 
        !           122:        }
        !           123:        zend_error_noreturn(E_ERROR, "Arrived at end of main loop which shouldn't happen");
        !           124: }
        !           125: 
        !           126: static int ZEND_FASTCALL  ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           127: {
        !           128: #if DEBUG_ZEND>=2
        !           129:        printf("Jumping to %d\n", EX(opline)->op1.u.opline_num);
        !           130: #endif
        !           131:        ZEND_VM_SET_OPCODE(EX(opline)->op1.u.jmp_addr);
        !           132:        ZEND_VM_CONTINUE(); /* CHECK_ME */
        !           133: }
        !           134: 
        !           135: static int ZEND_FASTCALL  ZEND_INIT_STRING_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           136: {
        !           137:        zval *tmp = &EX_T(EX(opline)->result.u.var).tmp_var;
        !           138: 
        !           139:        tmp->value.str.val = emalloc(1);
        !           140:        tmp->value.str.val[0] = 0;
        !           141:        tmp->value.str.len = 0;
        !           142:        Z_SET_REFCOUNT_P(tmp, 1);
        !           143:        tmp->type = IS_STRING;
        !           144:        Z_UNSET_ISREF_P(tmp);
        !           145:        ZEND_VM_NEXT_OPCODE();
        !           146: }
        !           147: 
        !           148: static int ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
        !           149: {
        !           150:        zend_bool nested;
        !           151:        zend_op_array *op_array = EX(op_array);
        !           152: 
        !           153:        EG(current_execute_data) = EX(prev_execute_data);
        !           154:        EG(opline_ptr) = NULL;
        !           155:        if (!EG(active_symbol_table)) {
        !           156:                zval ***cv = EX(CVs);
        !           157:                zval ***end = cv + EX(op_array)->last_var;
        !           158:                while (cv != end) {
        !           159:                        if (*cv) {
        !           160:                                zval_ptr_dtor(*cv);
        !           161:                        }
        !           162:                        cv++;
        !           163:                }
        !           164:        }
        !           165: 
        !           166:        if ((op_array->fn_flags & ZEND_ACC_CLOSURE) && op_array->prototype) {
        !           167:                zval_ptr_dtor((zval**)&op_array->prototype);
        !           168:        }
        !           169: 
        !           170:        nested = EX(nested);
        !           171: 
        !           172:        zend_vm_stack_free(execute_data TSRMLS_CC);
        !           173: 
        !           174:        if (nested) {
        !           175:                execute_data = EG(current_execute_data);
        !           176: 
        !           177:                if (EX(call_opline)->opcode == ZEND_INCLUDE_OR_EVAL) {
        !           178: 
        !           179:                        EX(function_state).function = (zend_function *) EX(op_array);
        !           180:                        EX(function_state).arguments = NULL;
        !           181:                        EX(object) = EX(current_object);
        !           182: 
        !           183:                        if (RETURN_VALUE_USED(EX(call_opline))) {
        !           184:                                if (!EX_T(EX(call_opline)->result.u.var).var.ptr) { /* there was no return statement */
        !           185:                                        ALLOC_ZVAL(EX_T(EX(call_opline)->result.u.var).var.ptr);
        !           186:                                        INIT_PZVAL(EX_T(EX(call_opline)->result.u.var).var.ptr);
        !           187:                                        Z_LVAL_P(EX_T(EX(call_opline)->result.u.var).var.ptr) = 1;
        !           188:                                        Z_TYPE_P(EX_T(EX(call_opline)->result.u.var).var.ptr) = IS_BOOL;
        !           189:                                }
        !           190:                        }
        !           191: 
        !           192:                        EG(opline_ptr) = &EX(opline);
        !           193:                        EG(active_op_array) = EX(op_array);
        !           194:                        EG(return_value_ptr_ptr) = EX(original_return_value);
        !           195:                        destroy_op_array(op_array TSRMLS_CC);
        !           196:                        efree(op_array);
        !           197:                        if (EG(exception)) {
        !           198:                                zend_throw_exception_internal(NULL TSRMLS_CC);
        !           199:                        }
        !           200: 
        !           201:                        EX(opline)++;
        !           202:                        ZEND_VM_LEAVE();
        !           203:                } else {
        !           204: 
        !           205:                        EG(opline_ptr) = &EX(opline);
        !           206:                        EG(active_op_array) = EX(op_array);
        !           207:                        EG(return_value_ptr_ptr) = EX(original_return_value);
        !           208:                        if (EG(active_symbol_table)) {
        !           209:                                if (EG(symtable_cache_ptr)>=EG(symtable_cache_limit)) {
        !           210:                                        zend_hash_destroy(EG(active_symbol_table));
        !           211:                                        FREE_HASHTABLE(EG(active_symbol_table));
        !           212:                                } else {
        !           213:                                        /* clean before putting into the cache, since clean
        !           214:                                           could call dtors, which could use cached hash */
        !           215:                                        zend_hash_clean(EG(active_symbol_table));
        !           216:                                        *(++EG(symtable_cache_ptr)) = EG(active_symbol_table);
        !           217:                                }
        !           218:                        }
        !           219:                        EG(active_symbol_table) = EX(symbol_table);
        !           220: 
        !           221:                        EX(function_state).function = (zend_function *) EX(op_array);
        !           222:                        EX(function_state).arguments = NULL;
        !           223: 
        !           224:                        if (EG(This)) {
        !           225:                                if (EG(exception) && IS_CTOR_CALL(EX(called_scope))) {
        !           226:                                        if (IS_CTOR_USED(EX(called_scope))) {
        !           227:                                                Z_DELREF_P(EG(This));
        !           228:                                        }
        !           229:                                        if (Z_REFCOUNT_P(EG(This)) == 1) {
        !           230:                                                zend_object_store_ctor_failed(EG(This) TSRMLS_CC);
        !           231:                                        }
        !           232:                                }
        !           233:                                zval_ptr_dtor(&EG(This));
        !           234:                        }
        !           235:                        EG(This) = EX(current_this);
        !           236:                        EG(scope) = EX(current_scope);
        !           237:                        EG(called_scope) = EX(current_called_scope);
        !           238: 
        !           239:                        EX(object) = EX(current_object);
        !           240:                        EX(called_scope) = DECODE_CTOR(EX(called_scope));
        !           241: 
        !           242:                        zend_vm_stack_clear_multiple(TSRMLS_C);
        !           243: 
        !           244:                        if (EG(exception)) {
        !           245:                                zend_throw_exception_internal(NULL TSRMLS_CC);
        !           246:                                if (RETURN_VALUE_USED(EX(call_opline)) && EX_T(EX(call_opline)->result.u.var).var.ptr) {
        !           247:                                        zval_ptr_dtor(&EX_T(EX(call_opline)->result.u.var).var.ptr);
        !           248:                                }
        !           249:                        }
        !           250: 
        !           251:                        EX(opline)++;
        !           252:                        ZEND_VM_LEAVE();
        !           253:                }
        !           254:        }
        !           255:        ZEND_VM_RETURN();
        !           256: }
        !           257: 
        !           258: static int ZEND_FASTCALL zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
        !           259: {
        !           260:        zend_op *opline = EX(opline);
        !           261:        zend_bool should_change_scope = 0;
        !           262: 
        !           263:        if (EX(function_state).function->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) {
        !           264:                if (EX(function_state).function->common.fn_flags & ZEND_ACC_ABSTRACT) {
        !           265:                        zend_error_noreturn(E_ERROR, "Cannot call abstract method %s::%s()", EX(function_state).function->common.scope->name, EX(function_state).function->common.function_name);
        !           266:                        ZEND_VM_NEXT_OPCODE(); /* Never reached */
        !           267:                }
        !           268:                if (EX(function_state).function->common.fn_flags & ZEND_ACC_DEPRECATED) {
        !           269:                        zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
        !           270:                                EX(function_state).function->common.scope ? EX(function_state).function->common.scope->name : "",
        !           271:                                EX(function_state).function->common.scope ? "::" : "",
        !           272:                                EX(function_state).function->common.function_name);
        !           273:                }
        !           274:        }
        !           275:        if (EX(function_state).function->common.scope &&
        !           276:                !(EX(function_state).function->common.fn_flags & ZEND_ACC_STATIC) &&
        !           277:                !EX(object)) {
        !           278: 
        !           279:                if (EX(function_state).function->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !           280:                        /* FIXME: output identifiers properly */
        !           281:                        zend_error(E_STRICT, "Non-static method %s::%s() should not be called statically", EX(function_state).function->common.scope->name, EX(function_state).function->common.function_name);
        !           282:                } else {
        !           283:                        /* FIXME: output identifiers properly */
        !           284:                        /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !           285:                        zend_error_noreturn(E_ERROR, "Non-static method %s::%s() cannot be called statically", EX(function_state).function->common.scope->name, EX(function_state).function->common.function_name);
        !           286:                }
        !           287:        }
        !           288: 
        !           289:        if (EX(function_state).function->type == ZEND_USER_FUNCTION ||
        !           290:            EX(function_state).function->common.scope) {
        !           291:                should_change_scope = 1;
        !           292:                EX(current_this) = EG(This);
        !           293:                EX(current_scope) = EG(scope);
        !           294:                EX(current_called_scope) = EG(called_scope);
        !           295:                EG(This) = EX(object);
        !           296:                EG(scope) = (EX(function_state).function->type == ZEND_USER_FUNCTION || !EX(object)) ? EX(function_state).function->common.scope : NULL;
        !           297:                EG(called_scope) = EX(called_scope);
        !           298:        }
        !           299: 
        !           300:        zend_arg_types_stack_3_pop(&EG(arg_types_stack), &EX(called_scope), &EX(current_object), &EX(fbc));
        !           301:        EX(function_state).arguments = zend_vm_stack_push_args(opline->extended_value TSRMLS_CC);
        !           302: 
        !           303:        if (EX(function_state).function->type == ZEND_INTERNAL_FUNCTION) {
        !           304:                ALLOC_INIT_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !           305:                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !           306:                EX_T(opline->result.u.var).var.fcall_returned_reference = EX(function_state).function->common.return_reference;
        !           307: 
        !           308:                if (EX(function_state).function->common.arg_info) {
        !           309:                        zend_uint i=0;
        !           310:                        zval **p = (zval**)EX(function_state).arguments;
        !           311:                        ulong arg_count = opline->extended_value;
        !           312: 
        !           313:                        while (arg_count>0) {
        !           314:                                zend_verify_arg_type(EX(function_state).function, ++i, *(p-arg_count), 0 TSRMLS_CC);
        !           315:                                arg_count--;
        !           316:                        }
        !           317:                }
        !           318:                if (!zend_execute_internal) {
        !           319:                        /* saves one function call if zend_execute_internal is not used */
        !           320:                        ((zend_internal_function *) EX(function_state).function)->handler(opline->extended_value, EX_T(opline->result.u.var).var.ptr, EX(function_state).function->common.return_reference?&EX_T(opline->result.u.var).var.ptr:NULL, EX(object), RETURN_VALUE_USED(opline) TSRMLS_CC);
        !           321:                } else {
        !           322:                        zend_execute_internal(execute_data, RETURN_VALUE_USED(opline) TSRMLS_CC);
        !           323:                }
        !           324: 
        !           325:                if (!RETURN_VALUE_USED(opline)) {
        !           326:                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
        !           327:                }
        !           328:        } else if (EX(function_state).function->type == ZEND_USER_FUNCTION) {
        !           329:                EX(original_return_value) = EG(return_value_ptr_ptr);
        !           330:                EG(active_symbol_table) = NULL;
        !           331:                EG(active_op_array) = &EX(function_state).function->op_array;
        !           332:                EG(return_value_ptr_ptr) = NULL;
        !           333:                if (RETURN_VALUE_USED(opline)) {
        !           334:                        EG(return_value_ptr_ptr) = &EX_T(opline->result.u.var).var.ptr;
        !           335:                        EX_T(opline->result.u.var).var.ptr = NULL;
        !           336:                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !           337:                        EX_T(opline->result.u.var).var.fcall_returned_reference = EX(function_state).function->common.return_reference;
        !           338:                }
        !           339: 
        !           340:                if (zend_execute == execute && !EG(exception)) {
        !           341:                        EX(call_opline) = opline;
        !           342:                        ZEND_VM_ENTER();
        !           343:                } else {
        !           344:                        zend_execute(EG(active_op_array) TSRMLS_CC);
        !           345:                }
        !           346: 
        !           347:                EG(opline_ptr) = &EX(opline);
        !           348:                EG(active_op_array) = EX(op_array);
        !           349:                EG(return_value_ptr_ptr) = EX(original_return_value);
        !           350:                if (EG(active_symbol_table)) {
        !           351:                        if (EG(symtable_cache_ptr)>=EG(symtable_cache_limit)) {
        !           352:                                zend_hash_destroy(EG(active_symbol_table));
        !           353:                                FREE_HASHTABLE(EG(active_symbol_table));
        !           354:                        } else {
        !           355:                                /* clean before putting into the cache, since clean
        !           356:                                   could call dtors, which could use cached hash */
        !           357:                                zend_hash_clean(EG(active_symbol_table));
        !           358:                                *(++EG(symtable_cache_ptr)) = EG(active_symbol_table);
        !           359:                        }
        !           360:                }
        !           361:                EG(active_symbol_table) = EX(symbol_table);
        !           362:        } else { /* ZEND_OVERLOADED_FUNCTION */
        !           363:                ALLOC_INIT_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !           364: 
        !           365:                        /* Not sure what should be done here if it's a static method */
        !           366:                if (EX(object)) {
        !           367:                        Z_OBJ_HT_P(EX(object))->call_method(EX(function_state).function->common.function_name, opline->extended_value, EX_T(opline->result.u.var).var.ptr, &EX_T(opline->result.u.var).var.ptr, EX(object), RETURN_VALUE_USED(opline) TSRMLS_CC);
        !           368:                } else {
        !           369:                        zend_error_noreturn(E_ERROR, "Cannot call overloaded function for non-object");
        !           370:                }
        !           371: 
        !           372:                if (EX(function_state).function->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY) {
        !           373:                        efree(EX(function_state).function->common.function_name);
        !           374:                }
        !           375:                efree(EX(function_state).function);
        !           376: 
        !           377:                if (!RETURN_VALUE_USED(opline)) {
        !           378:                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
        !           379:                } else {
        !           380:                        Z_UNSET_ISREF_P(EX_T(opline->result.u.var).var.ptr);
        !           381:                        Z_SET_REFCOUNT_P(EX_T(opline->result.u.var).var.ptr, 1);
        !           382:                        EX_T(opline->result.u.var).var.fcall_returned_reference = 0;
        !           383:                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !           384:                }
        !           385:        }
        !           386: 
        !           387:        EX(function_state).function = (zend_function *) EX(op_array);
        !           388:        EX(function_state).arguments = NULL;
        !           389: 
        !           390:        if (should_change_scope) {
        !           391:                if (EG(This)) {
        !           392:                        if (EG(exception) && IS_CTOR_CALL(EX(called_scope))) {
        !           393:                                if (IS_CTOR_USED(EX(called_scope))) {
        !           394:                                        Z_DELREF_P(EG(This));
        !           395:                                }
        !           396:                                if (Z_REFCOUNT_P(EG(This)) == 1) {
        !           397:                                        zend_object_store_ctor_failed(EG(This) TSRMLS_CC);
        !           398:                                }
        !           399:                        }
        !           400:                        zval_ptr_dtor(&EG(This));
        !           401:                }
        !           402:                EG(This) = EX(current_this);
        !           403:                EG(scope) = EX(current_scope);
        !           404:                EG(called_scope) = EX(current_called_scope);
        !           405:        }
        !           406: 
        !           407:        EX(object) = EX(current_object);
        !           408:        EX(called_scope) = DECODE_CTOR(EX(called_scope));
        !           409: 
        !           410:        zend_vm_stack_clear_multiple(TSRMLS_C);
        !           411: 
        !           412:        if (EG(exception)) {
        !           413:                zend_throw_exception_internal(NULL TSRMLS_CC);
        !           414:                if (RETURN_VALUE_USED(opline) && EX_T(opline->result.u.var).var.ptr) {
        !           415:                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
        !           416:                }
        !           417:        }
        !           418: 
        !           419:        ZEND_VM_NEXT_OPCODE();
        !           420: }
        !           421: 
        !           422: static int ZEND_FASTCALL  ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           423: {
        !           424:        EX(function_state).function = EX(fbc);
        !           425:        return zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !           426: }
        !           427: 
        !           428: static int ZEND_FASTCALL  ZEND_RECV_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           429: {
        !           430:        zend_op *opline = EX(opline);
        !           431:        zend_uint arg_num = Z_LVAL(opline->op1.u.constant);
        !           432:        zval **param = zend_vm_stack_get_arg(arg_num TSRMLS_CC);
        !           433: 
        !           434:        if (param == NULL) {
        !           435:                char *space;
        !           436:                char *class_name = get_active_class_name(&space TSRMLS_CC);
        !           437:                zend_execute_data *ptr = EX(prev_execute_data);
        !           438: 
        !           439:                if (zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, NULL, opline->extended_value TSRMLS_CC)) {
        !           440:                        if(ptr && ptr->op_array) {
        !           441:                                zend_error(E_WARNING, "Missing argument %ld for %s%s%s(), called in %s on line %d and defined", opline->op1.u.constant.value.lval, class_name, space, get_active_function_name(TSRMLS_C), ptr->op_array->filename, ptr->opline->lineno);
        !           442:                        } else {
        !           443:                                zend_error(E_WARNING, "Missing argument %ld for %s%s%s()", opline->op1.u.constant.value.lval, class_name, space, get_active_function_name(TSRMLS_C));
        !           444:                        }
        !           445:                }
        !           446:                if (opline->result.op_type == IS_VAR) {
        !           447:                        PZVAL_UNLOCK_FREE(*EX_T(opline->result.u.var).var.ptr_ptr);
        !           448:                }
        !           449:        } else {
        !           450:                zend_free_op free_res;
        !           451:                zval **var_ptr;
        !           452: 
        !           453:                zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, *param, opline->extended_value TSRMLS_CC);
        !           454:                var_ptr = get_zval_ptr_ptr(&opline->result, EX(Ts), &free_res, BP_VAR_W);
        !           455:                Z_DELREF_PP(var_ptr);
        !           456:                *var_ptr = *param;
        !           457:                Z_ADDREF_PP(var_ptr);
        !           458:        }
        !           459: 
        !           460:        ZEND_VM_NEXT_OPCODE();
        !           461: }
        !           462: 
        !           463: static int ZEND_FASTCALL  ZEND_NEW_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           464: {
        !           465:        zend_op *opline = EX(opline);
        !           466:        zval *object_zval;
        !           467:        zend_function *constructor;
        !           468: 
        !           469:        if (EX_T(opline->op1.u.var).class_entry->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_IMPLICIT_ABSTRACT_CLASS|ZEND_ACC_EXPLICIT_ABSTRACT_CLASS)) {
        !           470:                char *class_type;
        !           471: 
        !           472:                if (EX_T(opline->op1.u.var).class_entry->ce_flags & ZEND_ACC_INTERFACE) {
        !           473:                        class_type = "interface";
        !           474:                } else {
        !           475:                        class_type = "abstract class";
        !           476:                }
        !           477:                zend_error_noreturn(E_ERROR, "Cannot instantiate %s %s", class_type,  EX_T(opline->op1.u.var).class_entry->name);
        !           478:        }
        !           479:        ALLOC_ZVAL(object_zval);
        !           480:        object_init_ex(object_zval, EX_T(opline->op1.u.var).class_entry);
        !           481:        INIT_PZVAL(object_zval);
        !           482: 
        !           483:        constructor = Z_OBJ_HT_P(object_zval)->get_constructor(object_zval TSRMLS_CC);
        !           484: 
        !           485:        if (constructor == NULL) {
        !           486:                if (RETURN_VALUE_USED(opline)) {
        !           487:                        AI_SET_PTR(EX_T(opline->result.u.var).var, object_zval);
        !           488:                } else {
        !           489:                        zval_ptr_dtor(&object_zval);
        !           490:                }
        !           491:                ZEND_VM_JMP(EX(op_array)->opcodes + opline->op2.u.opline_num);
        !           492:        } else {
        !           493:                if (RETURN_VALUE_USED(opline)) {
        !           494:                        AI_SET_PTR(EX_T(opline->result.u.var).var, object_zval);
        !           495:                        PZVAL_LOCK(object_zval);
        !           496:                }
        !           497: 
        !           498:                zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), ENCODE_CTOR(EX(called_scope), RETURN_VALUE_USED(opline)));
        !           499: 
        !           500:                /* We are not handling overloaded classes right now */
        !           501:                EX(object) = object_zval;
        !           502:                EX(fbc) = constructor;
        !           503:                EX(called_scope) = EX_T(opline->op1.u.var).class_entry;
        !           504: 
        !           505:                ZEND_VM_NEXT_OPCODE();
        !           506:        }
        !           507: }
        !           508: 
        !           509: static int ZEND_FASTCALL  ZEND_BEGIN_SILENCE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           510: {
        !           511:        zend_op *opline = EX(opline);
        !           512: 
        !           513:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = EG(error_reporting);
        !           514:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_LONG;  /* shouldn't be necessary */
        !           515:        if (EX(old_error_reporting) == NULL) {
        !           516:                EX(old_error_reporting) = &EX_T(opline->result.u.var).tmp_var;
        !           517:        }
        !           518: 
        !           519:        if (EG(error_reporting)) {
        !           520:                zend_alter_ini_entry_ex("error_reporting", sizeof("error_reporting"), "0", 1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME, 1 TSRMLS_CC);
        !           521:        }
        !           522:        ZEND_VM_NEXT_OPCODE();
        !           523: }
        !           524: 
        !           525: static int ZEND_FASTCALL  ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           526: {
        !           527:        zend_error_noreturn(E_ERROR, "Cannot call abstract method %s::%s()", EG(scope)->name, EX(op_array)->function_name);
        !           528:        ZEND_VM_NEXT_OPCODE(); /* Never reached */
        !           529: }
        !           530: 
        !           531: static int ZEND_FASTCALL  ZEND_EXT_STMT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           532: {
        !           533:        if (!EG(no_extensions)) {
        !           534:                zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, EX(op_array) TSRMLS_CC);
        !           535:        }
        !           536:        ZEND_VM_NEXT_OPCODE();
        !           537: }
        !           538: 
        !           539: static int ZEND_FASTCALL  ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           540: {
        !           541:        if (!EG(no_extensions)) {
        !           542:                zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, EX(op_array) TSRMLS_CC);
        !           543:        }
        !           544:        ZEND_VM_NEXT_OPCODE();
        !           545: }
        !           546: 
        !           547: static int ZEND_FASTCALL  ZEND_EXT_FCALL_END_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           548: {
        !           549:        if (!EG(no_extensions)) {
        !           550:                zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_end_handler, EX(op_array) TSRMLS_CC);
        !           551:        }
        !           552:        ZEND_VM_NEXT_OPCODE();
        !           553: }
        !           554: 
        !           555: static int ZEND_FASTCALL  ZEND_DECLARE_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           556: {
        !           557:        zend_op *opline = EX(opline);
        !           558: 
        !           559:        EX_T(opline->result.u.var).class_entry = do_bind_class(opline, EG(class_table), 0 TSRMLS_CC);
        !           560:        ZEND_VM_NEXT_OPCODE();
        !           561: }
        !           562: 
        !           563: static int ZEND_FASTCALL  ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           564: {
        !           565:        zend_op *opline = EX(opline);
        !           566: 
        !           567:        EX_T(opline->result.u.var).class_entry = do_bind_inherited_class(opline, EG(class_table), EX_T(opline->extended_value).class_entry, 0 TSRMLS_CC);
        !           568:        ZEND_VM_NEXT_OPCODE();
        !           569: }
        !           570: 
        !           571: static int ZEND_FASTCALL  ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           572: {
        !           573:        zend_op *opline = EX(opline);
        !           574:        zend_class_entry **pce, **pce_orig;
        !           575: 
        !           576:        if (zend_hash_find(EG(class_table), Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void**)&pce) == FAILURE ||
        !           577:            (zend_hash_find(EG(class_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), (void**)&pce_orig) == SUCCESS &&
        !           578:             *pce != *pce_orig)) {
        !           579:                do_bind_inherited_class(opline, EG(class_table), EX_T(opline->extended_value).class_entry, 0 TSRMLS_CC);
        !           580:        }
        !           581:        ZEND_VM_NEXT_OPCODE();
        !           582: }
        !           583: 
        !           584: static int ZEND_FASTCALL  ZEND_DECLARE_FUNCTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           585: {
        !           586:        do_bind_function(EX(opline), EG(function_table), 0);
        !           587:        ZEND_VM_NEXT_OPCODE();
        !           588: }
        !           589: 
        !           590: static int ZEND_FASTCALL  ZEND_EXT_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           591: {
        !           592:        ZEND_VM_NEXT_OPCODE();
        !           593: }
        !           594: 
        !           595: static int ZEND_FASTCALL  ZEND_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           596: {
        !           597:        ZEND_VM_NEXT_OPCODE();
        !           598: }
        !           599: 
        !           600: static int ZEND_FASTCALL  ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           601: {
        !           602:        zend_uint op_num = EG(opline_before_exception)-EG(active_op_array)->opcodes;
        !           603:        int i;
        !           604:        zend_uint catch_op_num;
        !           605:        int catched = 0;
        !           606:        zval restored_error_reporting;
        !           607: 
        !           608:        void **stack_frame = (void**)(((char*)EX(Ts)) +
        !           609:                (ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T));
        !           610: 
        !           611:        while (zend_vm_stack_top(TSRMLS_C) != stack_frame) {
        !           612:                zval *stack_zval_p = zend_vm_stack_pop(TSRMLS_C);
        !           613:                zval_ptr_dtor(&stack_zval_p);
        !           614:        }
        !           615: 
        !           616:        for (i=0; i<EG(active_op_array)->last_try_catch; i++) {
        !           617:                if (EG(active_op_array)->try_catch_array[i].try_op > op_num) {
        !           618:                        /* further blocks will not be relevant... */
        !           619:                        break;
        !           620:                }
        !           621:                if (op_num >= EG(active_op_array)->try_catch_array[i].try_op
        !           622:                        && op_num < EG(active_op_array)->try_catch_array[i].catch_op) {
        !           623:                        catch_op_num = EX(op_array)->try_catch_array[i].catch_op;
        !           624:                        catched = 1;
        !           625:                }
        !           626:        }
        !           627: 
        !           628:        while (EX(fbc)) {
        !           629:                EX(called_scope) = (zend_class_entry*)zend_ptr_stack_pop(&EG(arg_types_stack));
        !           630:                if (EX(object)) {
        !           631:                        if (IS_CTOR_CALL(EX(called_scope))) {
        !           632:                                if (IS_CTOR_USED(EX(called_scope))) {
        !           633:                                        Z_DELREF_P(EX(object));
        !           634:                                }
        !           635:                                if (Z_REFCOUNT_P(EX(object)) == 1) {
        !           636:                                        zend_object_store_ctor_failed(EX(object) TSRMLS_CC);
        !           637:                                }
        !           638:                        }
        !           639:                        zval_ptr_dtor(&EX(object));
        !           640:                }
        !           641:                EX(called_scope) = DECODE_CTOR(EX(called_scope));
        !           642:                zend_arg_types_stack_2_pop(&EG(arg_types_stack), &EX(object), &EX(fbc));
        !           643:        }
        !           644: 
        !           645:        for (i=0; i<EX(op_array)->last_brk_cont; i++) {
        !           646:                if (EX(op_array)->brk_cont_array[i].start < 0) {
        !           647:                        continue;
        !           648:                } else if (EX(op_array)->brk_cont_array[i].start > op_num) {
        !           649:                        /* further blocks will not be relevant... */
        !           650:                        break;
        !           651:                } else if (op_num < EX(op_array)->brk_cont_array[i].brk) {
        !           652:                        if (!catched ||
        !           653:                            catch_op_num >= EX(op_array)->brk_cont_array[i].brk) {
        !           654:                                zend_op *brk_opline = &EX(op_array)->opcodes[EX(op_array)->brk_cont_array[i].brk];
        !           655: 
        !           656:                                switch (brk_opline->opcode) {
        !           657:                                        case ZEND_SWITCH_FREE:
        !           658:                                                if (brk_opline->op1.u.EA.type != EXT_TYPE_FREE_ON_RETURN) {
        !           659:                                                        zend_switch_free(&EX_T(brk_opline->op1.u.var), brk_opline->extended_value TSRMLS_CC);
        !           660:                                                }
        !           661:                                                break;
        !           662:                                        case ZEND_FREE:
        !           663:                                                if (brk_opline->op1.u.EA.type != EXT_TYPE_FREE_ON_RETURN) {
        !           664:                                                        zendi_zval_dtor(EX_T(brk_opline->op1.u.var).tmp_var);
        !           665:                                                }
        !           666:                                                break;
        !           667:                                }
        !           668:                        }
        !           669:                }
        !           670:        }
        !           671: 
        !           672:        /* restore previous error_reporting value */
        !           673:        if (!EG(error_reporting) && EX(old_error_reporting) != NULL && Z_LVAL_P(EX(old_error_reporting)) != 0) {
        !           674:                Z_TYPE(restored_error_reporting) = IS_LONG;
        !           675:                Z_LVAL(restored_error_reporting) = Z_LVAL_P(EX(old_error_reporting));
        !           676:                convert_to_string(&restored_error_reporting);
        !           677:                zend_alter_ini_entry_ex("error_reporting", sizeof("error_reporting"), Z_STRVAL(restored_error_reporting), Z_STRLEN(restored_error_reporting), ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME, 1 TSRMLS_CC);
        !           678:                zendi_zval_dtor(restored_error_reporting);
        !           679:        }
        !           680:        EX(old_error_reporting) = NULL;
        !           681: 
        !           682:        if (!catched) {
        !           683:                return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !           684:        } else {
        !           685:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
        !           686:                ZEND_VM_CONTINUE();
        !           687:        }
        !           688: }
        !           689: 
        !           690: static int ZEND_FASTCALL  ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           691: {
        !           692:        zend_verify_abstract_class(EX_T(EX(opline)->op1.u.var).class_entry TSRMLS_CC);
        !           693:        ZEND_VM_NEXT_OPCODE();
        !           694: }
        !           695: 
        !           696: static int ZEND_FASTCALL  ZEND_USER_OPCODE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           697: {
        !           698:        int ret = zend_user_opcode_handlers[EX(opline)->opcode](ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_INTERNAL);
        !           699: 
        !           700:        switch (ret) {
        !           701:                case ZEND_USER_OPCODE_CONTINUE:
        !           702:                        ZEND_VM_CONTINUE();
        !           703:                case ZEND_USER_OPCODE_RETURN:
        !           704:                        return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !           705:                case ZEND_USER_OPCODE_ENTER:
        !           706:                        ZEND_VM_ENTER();
        !           707:                case ZEND_USER_OPCODE_LEAVE:
        !           708:                        ZEND_VM_LEAVE();
        !           709:                case ZEND_USER_OPCODE_DISPATCH:
        !           710:                        ZEND_VM_DISPATCH(EX(opline)->opcode, EX(opline));
        !           711:                default:
        !           712:                        ZEND_VM_DISPATCH((zend_uchar)(ret & 0xff), EX(opline));
        !           713:        }
        !           714: }
        !           715: 
        !           716: static int ZEND_FASTCALL  ZEND_FETCH_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           717: {
        !           718:        zend_op *opline = EX(opline);
        !           719: 
        !           720: 
        !           721:        if (IS_CONST == IS_UNUSED) {
        !           722:                EX_T(opline->result.u.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC);
        !           723:                ZEND_VM_NEXT_OPCODE();
        !           724:        } else {
        !           725: 
        !           726:                zval *class_name = &opline->op2.u.constant;
        !           727: 
        !           728:                if (IS_CONST != IS_CONST && Z_TYPE_P(class_name) == IS_OBJECT) {
        !           729:                        EX_T(opline->result.u.var).class_entry = Z_OBJCE_P(class_name);
        !           730:                } else if (Z_TYPE_P(class_name) == IS_STRING) {
        !           731:                        EX_T(opline->result.u.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
        !           732:                } else {
        !           733:                        zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
        !           734:                }
        !           735: 
        !           736:                ZEND_VM_NEXT_OPCODE();
        !           737:        }
        !           738: }
        !           739: 
        !           740: static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           741: {
        !           742:        zend_op *opline = EX(opline);
        !           743:        zval *function_name;
        !           744:        char *function_name_strval, *lcname;
        !           745:        int function_name_strlen;
        !           746: 
        !           747: 
        !           748:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !           749: 
        !           750:        if (IS_CONST == IS_CONST) {
        !           751:                if (zend_hash_quick_find(EG(function_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc)) == FAILURE) {
        !           752:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL(opline->op2.u.constant));
        !           753:                }
        !           754:        } else {
        !           755:                function_name = &opline->op2.u.constant;
        !           756: 
        !           757:                if (IS_CONST != IS_CONST && IS_CONST != IS_TMP_VAR &&
        !           758:                    Z_TYPE_P(function_name) == IS_OBJECT &&
        !           759:                        Z_OBJ_HANDLER_P(function_name, get_closure) &&
        !           760:                        Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
        !           761:                        if (EX(object)) {
        !           762:                                Z_ADDREF_P(EX(object));
        !           763:                        }
        !           764:                        if (IS_CONST == IS_VAR && 0 &&
        !           765:                            EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) {
        !           766:                                /* Delay closure destruction until its invocation */
        !           767:                                EX(fbc)->common.prototype = (zend_function*)function_name;
        !           768:                        } else {
        !           769: 
        !           770:                        }
        !           771:                        ZEND_VM_NEXT_OPCODE();
        !           772:                }
        !           773: 
        !           774:                if (Z_TYPE_P(function_name) != IS_STRING) {
        !           775:                        zend_error_noreturn(E_ERROR, "Function name must be a string");
        !           776:                }
        !           777:                function_name_strval = Z_STRVAL_P(function_name);
        !           778:                function_name_strlen = Z_STRLEN_P(function_name);
        !           779:                if (function_name_strval[0] == '\\') {
        !           780: 
        !           781:                    function_name_strlen -= 1;
        !           782:                        lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
        !           783:                } else {
        !           784:                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
        !           785:                }
        !           786:                if (zend_hash_find(EG(function_table), lcname, function_name_strlen+1, (void **) &EX(fbc)) == FAILURE) {
        !           787:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", function_name_strval);
        !           788:                }
        !           789:                efree(lcname);
        !           790: 
        !           791:        }
        !           792: 
        !           793:        EX(object) = NULL;
        !           794:        ZEND_VM_NEXT_OPCODE();
        !           795: }
        !           796: 
        !           797: 
        !           798: static int ZEND_FASTCALL  ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           799: {
        !           800:        zend_op *opline = EX(opline);
        !           801:        zend_op *op_data = opline + 1;
        !           802: 
        !           803:        ZEND_VM_INC_OPCODE();
        !           804:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !           805: 
        !           806:        if (zend_hash_quick_find(EG(function_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc))==FAILURE) {
        !           807:                char *short_name = Z_STRVAL(opline->op1.u.constant)+Z_LVAL(op_data->op1.u.constant);
        !           808:                if (zend_hash_quick_find(EG(function_table), short_name, Z_STRLEN(opline->op1.u.constant)-Z_LVAL(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==FAILURE) {
        !           809:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL(opline->op2.u.constant));
        !           810:                }
        !           811:        }
        !           812: 
        !           813:        EX(object) = NULL;
        !           814:        ZEND_VM_NEXT_OPCODE();
        !           815: }
        !           816: 
        !           817: static int ZEND_FASTCALL  ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           818: {
        !           819:        zend_op *opline = EX(opline);
        !           820:        zval *assignment_value;
        !           821:        zend_uint arg_num = Z_LVAL(opline->op1.u.constant);
        !           822:        zend_free_op free_res;
        !           823:        zval **param = zend_vm_stack_get_arg(arg_num TSRMLS_CC);
        !           824:        zval **var_ptr;
        !           825: 
        !           826:        if (param == NULL) {
        !           827:                ALLOC_ZVAL(assignment_value);
        !           828:                *assignment_value = opline->op2.u.constant;
        !           829:                if ((Z_TYPE(opline->op2.u.constant) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT || Z_TYPE(opline->op2.u.constant)==IS_CONSTANT_ARRAY) {
        !           830:                        Z_SET_REFCOUNT_P(assignment_value, 1);
        !           831:                        zval_update_constant(&assignment_value, 0 TSRMLS_CC);
        !           832:                } else {
        !           833:                        zval_copy_ctor(assignment_value);
        !           834:                }
        !           835:                INIT_PZVAL(assignment_value);
        !           836:        } else {
        !           837:                assignment_value = *param;
        !           838:                Z_ADDREF_P(assignment_value);
        !           839:        }
        !           840: 
        !           841:        zend_verify_arg_type((zend_function *) EG(active_op_array), arg_num, assignment_value, opline->extended_value TSRMLS_CC);
        !           842:        var_ptr = get_zval_ptr_ptr(&opline->result, EX(Ts), &free_res, BP_VAR_W);
        !           843:        Z_DELREF_PP(var_ptr);
        !           844:        *var_ptr = assignment_value;
        !           845: 
        !           846:        ZEND_VM_NEXT_OPCODE();
        !           847: }
        !           848: 
        !           849: static int ZEND_FASTCALL  ZEND_BRK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           850: {
        !           851:        zend_op *opline = EX(opline);
        !           852: 
        !           853:        zend_brk_cont_element *el;
        !           854: 
        !           855:        el = zend_brk_cont(&opline->op2.u.constant, opline->op1.u.opline_num,
        !           856:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !           857: 
        !           858:        ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
        !           859: }
        !           860: 
        !           861: static int ZEND_FASTCALL  ZEND_CONT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           862: {
        !           863:        zend_op *opline = EX(opline);
        !           864: 
        !           865:        zend_brk_cont_element *el;
        !           866: 
        !           867:        el = zend_brk_cont(&opline->op2.u.constant, opline->op1.u.opline_num,
        !           868:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !           869: 
        !           870:        ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
        !           871: }
        !           872: 
        !           873: static int ZEND_FASTCALL  ZEND_GOTO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           874: {
        !           875:        zend_op *brk_opline;
        !           876:        zend_op *opline = EX(opline);
        !           877:        zend_brk_cont_element *el;
        !           878: 
        !           879:        el = zend_brk_cont(&opline->op2.u.constant, opline->extended_value,
        !           880:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !           881: 
        !           882:        brk_opline = EX(op_array)->opcodes + el->brk;
        !           883: 
        !           884:        switch (brk_opline->opcode) {
        !           885:                case ZEND_SWITCH_FREE:
        !           886:                        if (brk_opline->op1.u.EA.type != EXT_TYPE_FREE_ON_RETURN) {
        !           887:                                zend_switch_free(&EX_T(brk_opline->op1.u.var), brk_opline->extended_value TSRMLS_CC);
        !           888:                        }
        !           889:                        break;
        !           890:                case ZEND_FREE:
        !           891:                        if (brk_opline->op1.u.EA.type != EXT_TYPE_FREE_ON_RETURN) {
        !           892:                                zendi_zval_dtor(EX_T(brk_opline->op1.u.var).tmp_var);
        !           893:                        }
        !           894:                        break;
        !           895:        }
        !           896:        ZEND_VM_JMP(opline->op1.u.jmp_addr);
        !           897: }
        !           898: 
        !           899: static int ZEND_FASTCALL  ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           900: {
        !           901:        zend_op *opline = EX(opline);
        !           902:        zend_class_entry *ce = EX_T(opline->op1.u.var).class_entry;
        !           903:        zend_class_entry *iface = zend_fetch_class(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), opline->extended_value TSRMLS_CC);
        !           904: 
        !           905:        if (iface) {
        !           906:                if (!(iface->ce_flags & ZEND_ACC_INTERFACE)) {
        !           907:                        zend_error_noreturn(E_ERROR, "%s cannot implement %s - it is not an interface", ce->name, iface->name);
        !           908:                }
        !           909:                zend_do_implement_interface(ce, iface TSRMLS_CC);
        !           910:        }
        !           911: 
        !           912:        ZEND_VM_NEXT_OPCODE();
        !           913: }
        !           914: 
        !           915: static int ZEND_FASTCALL  ZEND_FETCH_CLASS_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           916: {
        !           917:        zend_op *opline = EX(opline);
        !           918: 
        !           919: 
        !           920:        if (IS_TMP_VAR == IS_UNUSED) {
        !           921:                EX_T(opline->result.u.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC);
        !           922:                ZEND_VM_NEXT_OPCODE();
        !           923:        } else {
        !           924:                zend_free_op free_op2;
        !           925:                zval *class_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !           926: 
        !           927:                if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(class_name) == IS_OBJECT) {
        !           928:                        EX_T(opline->result.u.var).class_entry = Z_OBJCE_P(class_name);
        !           929:                } else if (Z_TYPE_P(class_name) == IS_STRING) {
        !           930:                        EX_T(opline->result.u.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
        !           931:                } else {
        !           932:                        zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
        !           933:                }
        !           934: 
        !           935:                zval_dtor(free_op2.var);
        !           936:                ZEND_VM_NEXT_OPCODE();
        !           937:        }
        !           938: }
        !           939: 
        !           940: static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           941: {
        !           942:        zend_op *opline = EX(opline);
        !           943:        zval *function_name;
        !           944:        char *function_name_strval, *lcname;
        !           945:        int function_name_strlen;
        !           946:        zend_free_op free_op2;
        !           947: 
        !           948:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !           949: 
        !           950:        if (IS_TMP_VAR == IS_CONST) {
        !           951:                if (zend_hash_quick_find(EG(function_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc)) == FAILURE) {
        !           952:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL(opline->op2.u.constant));
        !           953:                }
        !           954:        } else {
        !           955:                function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !           956: 
        !           957:                if (IS_TMP_VAR != IS_CONST && IS_TMP_VAR != IS_TMP_VAR &&
        !           958:                    Z_TYPE_P(function_name) == IS_OBJECT &&
        !           959:                        Z_OBJ_HANDLER_P(function_name, get_closure) &&
        !           960:                        Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
        !           961:                        if (EX(object)) {
        !           962:                                Z_ADDREF_P(EX(object));
        !           963:                        }
        !           964:                        if (IS_TMP_VAR == IS_VAR && 1 &&
        !           965:                            EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) {
        !           966:                                /* Delay closure destruction until its invocation */
        !           967:                                EX(fbc)->common.prototype = (zend_function*)function_name;
        !           968:                        } else {
        !           969:                                zval_dtor(free_op2.var);
        !           970:                        }
        !           971:                        ZEND_VM_NEXT_OPCODE();
        !           972:                }
        !           973: 
        !           974:                if (Z_TYPE_P(function_name) != IS_STRING) {
        !           975:                        zend_error_noreturn(E_ERROR, "Function name must be a string");
        !           976:                }
        !           977:                function_name_strval = Z_STRVAL_P(function_name);
        !           978:                function_name_strlen = Z_STRLEN_P(function_name);
        !           979:                if (function_name_strval[0] == '\\') {
        !           980: 
        !           981:                    function_name_strlen -= 1;
        !           982:                        lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
        !           983:                } else {
        !           984:                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
        !           985:                }
        !           986:                if (zend_hash_find(EG(function_table), lcname, function_name_strlen+1, (void **) &EX(fbc)) == FAILURE) {
        !           987:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", function_name_strval);
        !           988:                }
        !           989:                efree(lcname);
        !           990:                zval_dtor(free_op2.var);
        !           991:        }
        !           992: 
        !           993:        EX(object) = NULL;
        !           994:        ZEND_VM_NEXT_OPCODE();
        !           995: }
        !           996: 
        !           997: 
        !           998: static int ZEND_FASTCALL  ZEND_BRK_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !           999: {
        !          1000:        zend_op *opline = EX(opline);
        !          1001:        zend_free_op free_op2;
        !          1002:        zend_brk_cont_element *el;
        !          1003: 
        !          1004:        el = zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
        !          1005:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !          1006:        zval_dtor(free_op2.var);
        !          1007:        ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
        !          1008: }
        !          1009: 
        !          1010: static int ZEND_FASTCALL  ZEND_CONT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1011: {
        !          1012:        zend_op *opline = EX(opline);
        !          1013:        zend_free_op free_op2;
        !          1014:        zend_brk_cont_element *el;
        !          1015: 
        !          1016:        el = zend_brk_cont(_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
        !          1017:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !          1018:        zval_dtor(free_op2.var);
        !          1019:        ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
        !          1020: }
        !          1021: 
        !          1022: static int ZEND_FASTCALL  ZEND_FETCH_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1023: {
        !          1024:        zend_op *opline = EX(opline);
        !          1025: 
        !          1026: 
        !          1027:        if (IS_VAR == IS_UNUSED) {
        !          1028:                EX_T(opline->result.u.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC);
        !          1029:                ZEND_VM_NEXT_OPCODE();
        !          1030:        } else {
        !          1031:                zend_free_op free_op2;
        !          1032:                zval *class_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          1033: 
        !          1034:                if (IS_VAR != IS_CONST && Z_TYPE_P(class_name) == IS_OBJECT) {
        !          1035:                        EX_T(opline->result.u.var).class_entry = Z_OBJCE_P(class_name);
        !          1036:                } else if (Z_TYPE_P(class_name) == IS_STRING) {
        !          1037:                        EX_T(opline->result.u.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
        !          1038:                } else {
        !          1039:                        zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
        !          1040:                }
        !          1041: 
        !          1042:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          1043:                ZEND_VM_NEXT_OPCODE();
        !          1044:        }
        !          1045: }
        !          1046: 
        !          1047: static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1048: {
        !          1049:        zend_op *opline = EX(opline);
        !          1050:        zval *function_name;
        !          1051:        char *function_name_strval, *lcname;
        !          1052:        int function_name_strlen;
        !          1053:        zend_free_op free_op2;
        !          1054: 
        !          1055:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          1056: 
        !          1057:        if (IS_VAR == IS_CONST) {
        !          1058:                if (zend_hash_quick_find(EG(function_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc)) == FAILURE) {
        !          1059:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL(opline->op2.u.constant));
        !          1060:                }
        !          1061:        } else {
        !          1062:                function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          1063: 
        !          1064:                if (IS_VAR != IS_CONST && IS_VAR != IS_TMP_VAR &&
        !          1065:                    Z_TYPE_P(function_name) == IS_OBJECT &&
        !          1066:                        Z_OBJ_HANDLER_P(function_name, get_closure) &&
        !          1067:                        Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
        !          1068:                        if (EX(object)) {
        !          1069:                                Z_ADDREF_P(EX(object));
        !          1070:                        }
        !          1071:                        if (IS_VAR == IS_VAR && (free_op2.var != NULL) &&
        !          1072:                            EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) {
        !          1073:                                /* Delay closure destruction until its invocation */
        !          1074:                                EX(fbc)->common.prototype = (zend_function*)function_name;
        !          1075:                        } else {
        !          1076:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          1077:                        }
        !          1078:                        ZEND_VM_NEXT_OPCODE();
        !          1079:                }
        !          1080: 
        !          1081:                if (Z_TYPE_P(function_name) != IS_STRING) {
        !          1082:                        zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          1083:                }
        !          1084:                function_name_strval = Z_STRVAL_P(function_name);
        !          1085:                function_name_strlen = Z_STRLEN_P(function_name);
        !          1086:                if (function_name_strval[0] == '\\') {
        !          1087: 
        !          1088:                    function_name_strlen -= 1;
        !          1089:                        lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
        !          1090:                } else {
        !          1091:                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
        !          1092:                }
        !          1093:                if (zend_hash_find(EG(function_table), lcname, function_name_strlen+1, (void **) &EX(fbc)) == FAILURE) {
        !          1094:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", function_name_strval);
        !          1095:                }
        !          1096:                efree(lcname);
        !          1097:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          1098:        }
        !          1099: 
        !          1100:        EX(object) = NULL;
        !          1101:        ZEND_VM_NEXT_OPCODE();
        !          1102: }
        !          1103: 
        !          1104: 
        !          1105: static int ZEND_FASTCALL  ZEND_BRK_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1106: {
        !          1107:        zend_op *opline = EX(opline);
        !          1108:        zend_free_op free_op2;
        !          1109:        zend_brk_cont_element *el;
        !          1110: 
        !          1111:        el = zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
        !          1112:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !          1113:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          1114:        ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
        !          1115: }
        !          1116: 
        !          1117: static int ZEND_FASTCALL  ZEND_CONT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1118: {
        !          1119:        zend_op *opline = EX(opline);
        !          1120:        zend_free_op free_op2;
        !          1121:        zend_brk_cont_element *el;
        !          1122: 
        !          1123:        el = zend_brk_cont(_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC), opline->op1.u.opline_num,
        !          1124:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !          1125:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          1126:        ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
        !          1127: }
        !          1128: 
        !          1129: static int ZEND_FASTCALL  ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1130: {
        !          1131:        zend_op *opline = EX(opline);
        !          1132: 
        !          1133: 
        !          1134:        if (IS_UNUSED == IS_UNUSED) {
        !          1135:                EX_T(opline->result.u.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC);
        !          1136:                ZEND_VM_NEXT_OPCODE();
        !          1137:        } else {
        !          1138: 
        !          1139:                zval *class_name = NULL;
        !          1140: 
        !          1141:                if (IS_UNUSED != IS_CONST && Z_TYPE_P(class_name) == IS_OBJECT) {
        !          1142:                        EX_T(opline->result.u.var).class_entry = Z_OBJCE_P(class_name);
        !          1143:                } else if (Z_TYPE_P(class_name) == IS_STRING) {
        !          1144:                        EX_T(opline->result.u.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
        !          1145:                } else {
        !          1146:                        zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
        !          1147:                }
        !          1148: 
        !          1149:                ZEND_VM_NEXT_OPCODE();
        !          1150:        }
        !          1151: }
        !          1152: 
        !          1153: static int ZEND_FASTCALL  ZEND_FETCH_CLASS_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1154: {
        !          1155:        zend_op *opline = EX(opline);
        !          1156: 
        !          1157: 
        !          1158:        if (IS_CV == IS_UNUSED) {
        !          1159:                EX_T(opline->result.u.var).class_entry = zend_fetch_class(NULL, 0, opline->extended_value TSRMLS_CC);
        !          1160:                ZEND_VM_NEXT_OPCODE();
        !          1161:        } else {
        !          1162: 
        !          1163:                zval *class_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          1164: 
        !          1165:                if (IS_CV != IS_CONST && Z_TYPE_P(class_name) == IS_OBJECT) {
        !          1166:                        EX_T(opline->result.u.var).class_entry = Z_OBJCE_P(class_name);
        !          1167:                } else if (Z_TYPE_P(class_name) == IS_STRING) {
        !          1168:                        EX_T(opline->result.u.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC);
        !          1169:                } else {
        !          1170:                        zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string");
        !          1171:                }
        !          1172: 
        !          1173:                ZEND_VM_NEXT_OPCODE();
        !          1174:        }
        !          1175: }
        !          1176: 
        !          1177: static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1178: {
        !          1179:        zend_op *opline = EX(opline);
        !          1180:        zval *function_name;
        !          1181:        char *function_name_strval, *lcname;
        !          1182:        int function_name_strlen;
        !          1183: 
        !          1184: 
        !          1185:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          1186: 
        !          1187:        if (IS_CV == IS_CONST) {
        !          1188:                if (zend_hash_quick_find(EG(function_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc)) == FAILURE) {
        !          1189:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL(opline->op2.u.constant));
        !          1190:                }
        !          1191:        } else {
        !          1192:                function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          1193: 
        !          1194:                if (IS_CV != IS_CONST && IS_CV != IS_TMP_VAR &&
        !          1195:                    Z_TYPE_P(function_name) == IS_OBJECT &&
        !          1196:                        Z_OBJ_HANDLER_P(function_name, get_closure) &&
        !          1197:                        Z_OBJ_HANDLER_P(function_name, get_closure)(function_name, &EX(called_scope), &EX(fbc), &EX(object) TSRMLS_CC) == SUCCESS) {
        !          1198:                        if (EX(object)) {
        !          1199:                                Z_ADDREF_P(EX(object));
        !          1200:                        }
        !          1201:                        if (IS_CV == IS_VAR && 0 &&
        !          1202:                            EX(fbc)->common.fn_flags & ZEND_ACC_CLOSURE) {
        !          1203:                                /* Delay closure destruction until its invocation */
        !          1204:                                EX(fbc)->common.prototype = (zend_function*)function_name;
        !          1205:                        } else {
        !          1206: 
        !          1207:                        }
        !          1208:                        ZEND_VM_NEXT_OPCODE();
        !          1209:                }
        !          1210: 
        !          1211:                if (Z_TYPE_P(function_name) != IS_STRING) {
        !          1212:                        zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          1213:                }
        !          1214:                function_name_strval = Z_STRVAL_P(function_name);
        !          1215:                function_name_strlen = Z_STRLEN_P(function_name);
        !          1216:                if (function_name_strval[0] == '\\') {
        !          1217: 
        !          1218:                    function_name_strlen -= 1;
        !          1219:                        lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
        !          1220:                } else {
        !          1221:                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
        !          1222:                }
        !          1223:                if (zend_hash_find(EG(function_table), lcname, function_name_strlen+1, (void **) &EX(fbc)) == FAILURE) {
        !          1224:                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", function_name_strval);
        !          1225:                }
        !          1226:                efree(lcname);
        !          1227: 
        !          1228:        }
        !          1229: 
        !          1230:        EX(object) = NULL;
        !          1231:        ZEND_VM_NEXT_OPCODE();
        !          1232: }
        !          1233: 
        !          1234: 
        !          1235: static int ZEND_FASTCALL  ZEND_CATCH_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1236: {
        !          1237:        zend_op *opline = EX(opline);
        !          1238:        zend_class_entry *ce;
        !          1239: 
        !          1240:        /* Check whether an exception has been thrown, if not, jump over code */
        !          1241:        zend_exception_restore(TSRMLS_C);
        !          1242:        if (EG(exception) == NULL) {
        !          1243:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
        !          1244:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          1245:        }
        !          1246:        ce = Z_OBJCE_P(EG(exception));
        !          1247:        if (ce != EX_T(opline->op1.u.var).class_entry) {
        !          1248:                if (!instanceof_function(ce, EX_T(opline->op1.u.var).class_entry TSRMLS_CC)) {
        !          1249:                        if (opline->op1.u.EA.type) {
        !          1250:                                zend_throw_exception_internal(NULL TSRMLS_CC);
        !          1251:                                ZEND_VM_NEXT_OPCODE();
        !          1252:                        }
        !          1253:                        ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
        !          1254:                        ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          1255:                }
        !          1256:        }
        !          1257: 
        !          1258:        if (!EG(active_symbol_table)) {
        !          1259:                if (EX(CVs)[opline->op2.u.var]) {
        !          1260:                        zval_ptr_dtor(EX(CVs)[opline->op2.u.var]);
        !          1261:                }
        !          1262:                EX(CVs)[opline->op2.u.var] = (zval**)EX(CVs) + (EX(op_array)->last_var + opline->op2.u.var);
        !          1263:                *EX(CVs)[opline->op2.u.var] = EG(exception);
        !          1264:        } else {
        !          1265:                zend_compiled_variable *cv = &CV_DEF_OF(opline->op2.u.var);
        !          1266:                zend_hash_quick_update(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value,
        !          1267:                    &EG(exception), sizeof(zval *), (void**)&EX(CVs)[opline->op2.u.var]);
        !          1268:        }
        !          1269:        EG(exception) = NULL;
        !          1270:        ZEND_VM_NEXT_OPCODE();
        !          1271: }
        !          1272: 
        !          1273: static int ZEND_FASTCALL  ZEND_BRK_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1274: {
        !          1275:        zend_op *opline = EX(opline);
        !          1276: 
        !          1277:        zend_brk_cont_element *el;
        !          1278: 
        !          1279:        el = zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC), opline->op1.u.opline_num,
        !          1280:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !          1281: 
        !          1282:        ZEND_VM_JMP(EX(op_array)->opcodes + el->brk);
        !          1283: }
        !          1284: 
        !          1285: static int ZEND_FASTCALL  ZEND_CONT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1286: {
        !          1287:        zend_op *opline = EX(opline);
        !          1288: 
        !          1289:        zend_brk_cont_element *el;
        !          1290: 
        !          1291:        el = zend_brk_cont(_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC), opline->op1.u.opline_num,
        !          1292:                           EX(op_array), EX(Ts) TSRMLS_CC);
        !          1293: 
        !          1294:        ZEND_VM_JMP(EX(op_array)->opcodes + el->cont);
        !          1295: }
        !          1296: 
        !          1297: static int ZEND_FASTCALL  ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1298: {
        !          1299:        zend_op *opline = EX(opline);
        !          1300: 
        !          1301: 
        !          1302:        bitwise_not_function(&EX_T(opline->result.u.var).tmp_var,
        !          1303:                &opline->op1.u.constant TSRMLS_CC);
        !          1304: 
        !          1305:        ZEND_VM_NEXT_OPCODE();
        !          1306: }
        !          1307: 
        !          1308: static int ZEND_FASTCALL  ZEND_BOOL_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1309: {
        !          1310:        zend_op *opline = EX(opline);
        !          1311: 
        !          1312: 
        !          1313:        boolean_not_function(&EX_T(opline->result.u.var).tmp_var,
        !          1314:                &opline->op1.u.constant TSRMLS_CC);
        !          1315: 
        !          1316:        ZEND_VM_NEXT_OPCODE();
        !          1317: }
        !          1318: 
        !          1319: static int ZEND_FASTCALL  ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1320: {
        !          1321:        zend_op *opline = EX(opline);
        !          1322: 
        !          1323:        zval z_copy;
        !          1324:        zval *z = &opline->op1.u.constant;
        !          1325: 
        !          1326:        if (IS_CONST != IS_CONST &&
        !          1327:            Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL) {
        !          1328:            if (IS_CONST == IS_TMP_VAR) {
        !          1329:                INIT_PZVAL(z);
        !          1330:            }
        !          1331:                if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
        !          1332:                        zend_print_variable(&z_copy);
        !          1333:                        zval_dtor(&z_copy);
        !          1334:                } else {
        !          1335:                        zend_print_variable(z);
        !          1336:                }
        !          1337:        } else {
        !          1338:                zend_print_variable(z);
        !          1339:        }
        !          1340: 
        !          1341:        ZEND_VM_NEXT_OPCODE();
        !          1342: }
        !          1343: 
        !          1344: static int ZEND_FASTCALL  ZEND_PRINT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1345: {
        !          1346:        zend_op *opline = EX(opline);
        !          1347: 
        !          1348:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 1;
        !          1349:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_LONG;
        !          1350: 
        !          1351:        return ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1352: }
        !          1353: 
        !          1354: static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          1355: {
        !          1356:        zend_op *opline = EX(opline);
        !          1357:        zend_free_op free_op1;
        !          1358:        zval *varname = &opline->op1.u.constant;
        !          1359:        zval **retval;
        !          1360:        zval tmp_varname;
        !          1361:        HashTable *target_symbol_table;
        !          1362: 
        !          1363:        if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
        !          1364:                tmp_varname = *varname;
        !          1365:                zval_copy_ctor(&tmp_varname);
        !          1366:                convert_to_string(&tmp_varname);
        !          1367:                varname = &tmp_varname;
        !          1368:        }
        !          1369: 
        !          1370:        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          1371:                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
        !          1372: 
        !          1373:        } else {
        !          1374:                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
        !          1375: /*
        !          1376:                if (!target_symbol_table) {
        !          1377:                        ZEND_VM_NEXT_OPCODE();
        !          1378:                }
        !          1379: */
        !          1380:                if (zend_hash_find(target_symbol_table, varname->value.str.val, varname->value.str.len+1, (void **) &retval) == FAILURE) {
        !          1381:                        switch (type) {
        !          1382:                                case BP_VAR_R:
        !          1383:                                case BP_VAR_UNSET:
        !          1384:                                        zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
        !          1385:                                        /* break missing intentionally */
        !          1386:                                case BP_VAR_IS:
        !          1387:                                        retval = &EG(uninitialized_zval_ptr);
        !          1388:                                        break;
        !          1389:                                case BP_VAR_RW:
        !          1390:                                        zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
        !          1391:                                        /* break missing intentionally */
        !          1392:                                case BP_VAR_W: {
        !          1393:                                                zval *new_zval = &EG(uninitialized_zval);
        !          1394: 
        !          1395:                                                Z_ADDREF_P(new_zval);
        !          1396:                                                zend_hash_update(target_symbol_table, varname->value.str.val, varname->value.str.len+1, &new_zval, sizeof(zval *), (void **) &retval);
        !          1397:                                        }
        !          1398:                                        break;
        !          1399:                                EMPTY_SWITCH_DEFAULT_CASE()
        !          1400:                        }
        !          1401:                }
        !          1402:                switch (opline->op2.u.EA.type) {
        !          1403:                        case ZEND_FETCH_GLOBAL:
        !          1404:                                if (IS_CONST != IS_TMP_VAR) {
        !          1405: 
        !          1406:                                }
        !          1407:                                break;
        !          1408:                        case ZEND_FETCH_LOCAL:
        !          1409: 
        !          1410:                                break;
        !          1411:                        case ZEND_FETCH_STATIC:
        !          1412:                                zval_update_constant(retval, (void*) 1 TSRMLS_CC);
        !          1413:                                break;
        !          1414:                        case ZEND_FETCH_GLOBAL_LOCK:
        !          1415:                                if (IS_CONST == IS_VAR && !free_op1.var) {
        !          1416:                                        PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          1417:                                }
        !          1418:                                break;
        !          1419:                }
        !          1420:        }
        !          1421: 
        !          1422: 
        !          1423:        if (IS_CONST != IS_CONST && varname == &tmp_varname) {
        !          1424:                zval_dtor(varname);
        !          1425:        }
        !          1426:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          1427:                if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          1428:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
        !          1429:                }
        !          1430:                PZVAL_LOCK(*retval);
        !          1431:                switch (type) {
        !          1432:                        case BP_VAR_R:
        !          1433:                        case BP_VAR_IS:
        !          1434:                                AI_SET_PTR(EX_T(opline->result.u.var).var, *retval);
        !          1435:                                break;
        !          1436:                        case BP_VAR_UNSET: {
        !          1437:                                zend_free_op free_res;
        !          1438: 
        !          1439:                                EX_T(opline->result.u.var).var.ptr_ptr = retval;
        !          1440:                                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          1441:                                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          1442:                                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          1443:                                }
        !          1444:                                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          1445:                                FREE_OP_VAR_PTR(free_res);
        !          1446:                                break;
        !          1447:                        default:
        !          1448:                                EX_T(opline->result.u.var).var.ptr_ptr = retval;
        !          1449:                                break;
        !          1450:                        }
        !          1451:                }
        !          1452:        }
        !          1453:        ZEND_VM_NEXT_OPCODE();
        !          1454: }
        !          1455: 
        !          1456: static int ZEND_FASTCALL  ZEND_FETCH_R_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1457: {
        !          1458:        return zend_fetch_var_address_helper_SPEC_CONST(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1459: }
        !          1460: 
        !          1461: static int ZEND_FASTCALL  ZEND_FETCH_W_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1462: {
        !          1463:        return zend_fetch_var_address_helper_SPEC_CONST(BP_VAR_W, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1464: }
        !          1465: 
        !          1466: static int ZEND_FASTCALL  ZEND_FETCH_RW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1467: {
        !          1468:        return zend_fetch_var_address_helper_SPEC_CONST(BP_VAR_RW, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1469: }
        !          1470: 
        !          1471: static int ZEND_FASTCALL  ZEND_FETCH_FUNC_ARG_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1472: {
        !          1473:        return zend_fetch_var_address_helper_SPEC_CONST(ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), EX(opline)->extended_value)?BP_VAR_W:BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1474: }
        !          1475: 
        !          1476: static int ZEND_FASTCALL  ZEND_FETCH_UNSET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1477: {
        !          1478:        return zend_fetch_var_address_helper_SPEC_CONST(BP_VAR_UNSET, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1479: }
        !          1480: 
        !          1481: static int ZEND_FASTCALL  ZEND_FETCH_IS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1482: {
        !          1483:        return zend_fetch_var_address_helper_SPEC_CONST(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1484: }
        !          1485: 
        !          1486: static int ZEND_FASTCALL  ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1487: {
        !          1488:        zend_op *opline = EX(opline);
        !          1489: 
        !          1490:        zval *val = &opline->op1.u.constant;
        !          1491:        int ret;
        !          1492: 
        !          1493:        if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          1494:                ret = Z_LVAL_P(val);
        !          1495:        } else {
        !          1496:                ret = i_zend_is_true(val);
        !          1497: 
        !          1498:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          1499:                        ZEND_VM_CONTINUE();
        !          1500:                }
        !          1501:        }
        !          1502:        if (!ret) {
        !          1503: #if DEBUG_ZEND>=2
        !          1504:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          1505: #endif
        !          1506:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          1507:                ZEND_VM_CONTINUE();
        !          1508:        }
        !          1509: 
        !          1510:        ZEND_VM_NEXT_OPCODE();
        !          1511: }
        !          1512: 
        !          1513: static int ZEND_FASTCALL  ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1514: {
        !          1515:        zend_op *opline = EX(opline);
        !          1516: 
        !          1517:        zval *val = &opline->op1.u.constant;
        !          1518:        int ret;
        !          1519: 
        !          1520:        if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          1521:                ret = Z_LVAL_P(val);
        !          1522:        } else {
        !          1523:                ret = i_zend_is_true(val);
        !          1524: 
        !          1525:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          1526:                        ZEND_VM_CONTINUE();
        !          1527:                }
        !          1528:        }
        !          1529:        if (ret) {
        !          1530: #if DEBUG_ZEND>=2
        !          1531:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          1532: #endif
        !          1533:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          1534:                ZEND_VM_CONTINUE();
        !          1535:        }
        !          1536: 
        !          1537:        ZEND_VM_NEXT_OPCODE();
        !          1538: }
        !          1539: 
        !          1540: static int ZEND_FASTCALL  ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1541: {
        !          1542:        zend_op *opline = EX(opline);
        !          1543: 
        !          1544:        zval *val = &opline->op1.u.constant;
        !          1545:        int retval;
        !          1546: 
        !          1547:        if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          1548:                retval = Z_LVAL_P(val);
        !          1549:        } else {
        !          1550:                retval = i_zend_is_true(val);
        !          1551: 
        !          1552:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          1553:                        ZEND_VM_CONTINUE();
        !          1554:                }
        !          1555:        }
        !          1556:        if (EXPECTED(retval != 0)) {
        !          1557: #if DEBUG_ZEND>=2
        !          1558:                printf("Conditional jmp on true to %d\n", opline->extended_value);
        !          1559: #endif
        !          1560:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
        !          1561:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          1562:        } else {
        !          1563: #if DEBUG_ZEND>=2
        !          1564:                printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
        !          1565: #endif
        !          1566:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
        !          1567:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          1568:        }
        !          1569: }
        !          1570: 
        !          1571: static int ZEND_FASTCALL  ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1572: {
        !          1573:        zend_op *opline = EX(opline);
        !          1574: 
        !          1575:        zval *val = &opline->op1.u.constant;
        !          1576:        int retval;
        !          1577: 
        !          1578:        if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          1579:                retval = Z_LVAL_P(val);
        !          1580:        } else {
        !          1581:                retval = i_zend_is_true(val);
        !          1582: 
        !          1583:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          1584:                        ZEND_VM_CONTINUE();
        !          1585:                }
        !          1586:        }
        !          1587:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
        !          1588:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          1589:        if (!retval) {
        !          1590: #if DEBUG_ZEND>=2
        !          1591:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          1592: #endif
        !          1593:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          1594:                ZEND_VM_CONTINUE();
        !          1595:        }
        !          1596:        ZEND_VM_NEXT_OPCODE();
        !          1597: }
        !          1598: 
        !          1599: static int ZEND_FASTCALL  ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1600: {
        !          1601:        zend_op *opline = EX(opline);
        !          1602: 
        !          1603:        zval *val = &opline->op1.u.constant;
        !          1604:        int retval;
        !          1605: 
        !          1606:        if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          1607:                retval = Z_LVAL_P(val);
        !          1608:        } else {
        !          1609:                retval = i_zend_is_true(val);
        !          1610: 
        !          1611:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          1612:                        ZEND_VM_CONTINUE();
        !          1613:                }
        !          1614:        }
        !          1615:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
        !          1616:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          1617:        if (retval) {
        !          1618: #if DEBUG_ZEND>=2
        !          1619:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          1620: #endif
        !          1621:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          1622:                ZEND_VM_CONTINUE();
        !          1623:        }
        !          1624:        ZEND_VM_NEXT_OPCODE();
        !          1625: }
        !          1626: 
        !          1627: static int ZEND_FASTCALL  ZEND_DO_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1628: {
        !          1629:        zend_op *opline = EX(opline);
        !          1630: 
        !          1631:        zval *fname = &opline->op1.u.constant;
        !          1632: 
        !          1633:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          1634: 
        !          1635:        if (zend_hash_quick_find(EG(function_table), fname->value.str.val, fname->value.str.len+1, Z_LVAL(opline->op2.u.constant), (void **) &EX(function_state).function)==FAILURE) {
        !          1636:                zend_error_noreturn(E_ERROR, "Call to undefined function %s()", fname->value.str.val);
        !          1637:        }
        !          1638:        EX(object) = NULL;
        !          1639: 
        !          1640:        return zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1641: }
        !          1642: 
        !          1643: static int ZEND_FASTCALL  ZEND_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1644: {
        !          1645:        zend_op *opline = EX(opline);
        !          1646:        zval *retval_ptr;
        !          1647:        zval **retval_ptr_ptr;
        !          1648: 
        !          1649: 
        !          1650:        if (EG(active_op_array)->return_reference == ZEND_RETURN_REF) {
        !          1651: 
        !          1652:                if (IS_CONST == IS_CONST || IS_CONST == IS_TMP_VAR) {
        !          1653:                        /* Not supposed to happen, but we'll allow it */
        !          1654:                        zend_error(E_NOTICE, "Only variable references should be returned by reference");
        !          1655:                        goto return_by_value;
        !          1656:                }
        !          1657: 
        !          1658:                retval_ptr_ptr = NULL;
        !          1659: 
        !          1660:                if (IS_CONST == IS_VAR && !retval_ptr_ptr) {
        !          1661:                        zend_error_noreturn(E_ERROR, "Cannot return string offsets by reference");
        !          1662:                }
        !          1663: 
        !          1664:                if (IS_CONST == IS_VAR && !Z_ISREF_PP(retval_ptr_ptr)) {
        !          1665:                        if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
        !          1666:                            EX_T(opline->op1.u.var).var.fcall_returned_reference) {
        !          1667:                        } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
        !          1668:                                if (IS_CONST == IS_VAR && !0) {
        !          1669:                                        PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
        !          1670:                                }
        !          1671:                                zend_error(E_NOTICE, "Only variable references should be returned by reference");
        !          1672:                                goto return_by_value;
        !          1673:                        }
        !          1674:                }
        !          1675: 
        !          1676:                if (EG(return_value_ptr_ptr)) {
        !          1677:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr_ptr);
        !          1678:                        Z_ADDREF_PP(retval_ptr_ptr);
        !          1679: 
        !          1680:                        (*EG(return_value_ptr_ptr)) = (*retval_ptr_ptr);
        !          1681:                }
        !          1682:        } else {
        !          1683: return_by_value:
        !          1684: 
        !          1685:                retval_ptr = &opline->op1.u.constant;
        !          1686: 
        !          1687:                if (!EG(return_value_ptr_ptr)) {
        !          1688:                        if (IS_CONST == IS_TMP_VAR) {
        !          1689: 
        !          1690:                        }
        !          1691:                } else if (!0) { /* Not a temp var */
        !          1692:                        if (IS_CONST == IS_CONST ||
        !          1693:                            EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
        !          1694:                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
        !          1695:                                zval *ret;
        !          1696: 
        !          1697:                                ALLOC_ZVAL(ret);
        !          1698:                                INIT_PZVAL_COPY(ret, retval_ptr);
        !          1699:                                zval_copy_ctor(ret);
        !          1700:                                *EG(return_value_ptr_ptr) = ret;
        !          1701:                        } else if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) &&
        !          1702:                                   retval_ptr == &EG(uninitialized_zval)) {
        !          1703:                                zval *ret;
        !          1704: 
        !          1705:                                ALLOC_INIT_ZVAL(ret);
        !          1706:                                *EG(return_value_ptr_ptr) = ret;
        !          1707:                        } else {
        !          1708:                                *EG(return_value_ptr_ptr) = retval_ptr;
        !          1709:                                Z_ADDREF_P(retval_ptr);
        !          1710:                        }
        !          1711:                } else {
        !          1712:                        zval *ret;
        !          1713: 
        !          1714:                        ALLOC_ZVAL(ret);
        !          1715:                        INIT_PZVAL_COPY(ret, retval_ptr);
        !          1716:                        *EG(return_value_ptr_ptr) = ret;
        !          1717:                }
        !          1718:        }
        !          1719: 
        !          1720:        return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          1721: }
        !          1722: 
        !          1723: static int ZEND_FASTCALL  ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1724: {
        !          1725:        zend_op *opline = EX(opline);
        !          1726:        zval *value;
        !          1727:        zval *exception;
        !          1728: 
        !          1729: 
        !          1730:        value = &opline->op1.u.constant;
        !          1731: 
        !          1732:        if (IS_CONST == IS_CONST || Z_TYPE_P(value) != IS_OBJECT) {
        !          1733:                zend_error_noreturn(E_ERROR, "Can only throw objects");
        !          1734:        }
        !          1735:        zend_exception_save(TSRMLS_C);
        !          1736:        /* Not sure if a complete copy is what we want here */
        !          1737:        ALLOC_ZVAL(exception);
        !          1738:        INIT_PZVAL_COPY(exception, value);
        !          1739:        if (!0) {
        !          1740:                zval_copy_ctor(exception);
        !          1741:        }
        !          1742: 
        !          1743:        zend_throw_exception_object(exception TSRMLS_CC);
        !          1744:        zend_exception_restore(TSRMLS_C);
        !          1745: 
        !          1746:        ZEND_VM_NEXT_OPCODE();
        !          1747: }
        !          1748: 
        !          1749: static int ZEND_FASTCALL  ZEND_SEND_VAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1750: {
        !          1751:        zend_op *opline = EX(opline);
        !          1752:        if (opline->extended_value==ZEND_DO_FCALL_BY_NAME
        !          1753:                && ARG_MUST_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          1754:                        zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.u.opline_num);
        !          1755:        }
        !          1756:        {
        !          1757:                zval *valptr;
        !          1758:                zval *value;
        !          1759: 
        !          1760: 
        !          1761:                value = &opline->op1.u.constant;
        !          1762: 
        !          1763:                ALLOC_ZVAL(valptr);
        !          1764:                INIT_PZVAL_COPY(valptr, value);
        !          1765:                if (!0) {
        !          1766:                        zval_copy_ctor(valptr);
        !          1767:                }
        !          1768:                zend_vm_stack_push(valptr TSRMLS_CC);
        !          1769: 
        !          1770:        }
        !          1771:        ZEND_VM_NEXT_OPCODE();
        !          1772: }
        !          1773: 
        !          1774: static int ZEND_FASTCALL  ZEND_BOOL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1775: {
        !          1776:        zend_op *opline = EX(opline);
        !          1777: 
        !          1778: 
        !          1779:        /* PHP 3.0 returned "" for false and 1 for true, here we use 0 and 1 for now */
        !          1780:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = i_zend_is_true(&opline->op1.u.constant);
        !          1781:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          1782: 
        !          1783:        ZEND_VM_NEXT_OPCODE();
        !          1784: }
        !          1785: 
        !          1786: static int ZEND_FASTCALL  ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1787: {
        !          1788:        zend_op *opline = EX(opline);
        !          1789: 
        !          1790:        zval *obj = &opline->op1.u.constant;
        !          1791:        zend_class_entry *ce;
        !          1792:        zend_function *clone;
        !          1793:        zend_object_clone_obj_t clone_call;
        !          1794: 
        !          1795:        if (IS_CONST == IS_CONST ||
        !          1796:            (IS_CONST == IS_VAR && !obj) ||
        !          1797:            Z_TYPE_P(obj) != IS_OBJECT) {
        !          1798:                zend_error_noreturn(E_ERROR, "__clone method called on non-object");
        !          1799:        }
        !          1800: 
        !          1801:        ce = Z_OBJCE_P(obj);
        !          1802:        clone = ce ? ce->clone : NULL;
        !          1803:        clone_call =  Z_OBJ_HT_P(obj)->clone_obj;
        !          1804:        if (!clone_call) {
        !          1805:                if (ce) {
        !          1806:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object of class %s", ce->name);
        !          1807:                } else {
        !          1808:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object");
        !          1809:                }
        !          1810:        }
        !          1811: 
        !          1812:        if (ce && clone) {
        !          1813:                if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
        !          1814:                        /* Ensure that if we're calling a private function, we're allowed to do so.
        !          1815:                         */
        !          1816:                        if (ce != EG(scope)) {
        !          1817:                                zend_error_noreturn(E_ERROR, "Call to private %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          1818:                        }
        !          1819:                } else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
        !          1820:                        /* Ensure that if we're calling a protected function, we're allowed to do so.
        !          1821:                         */
        !          1822:                        if (!zend_check_protected(clone->common.scope, EG(scope))) {
        !          1823:                                zend_error_noreturn(E_ERROR, "Call to protected %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          1824:                        }
        !          1825:                }
        !          1826:        }
        !          1827: 
        !          1828:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          1829:        if (!EG(exception)) {
        !          1830:                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          1831:                Z_OBJVAL_P(EX_T(opline->result.u.var).var.ptr) = clone_call(obj TSRMLS_CC);
        !          1832:                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_OBJECT;
        !          1833:                Z_SET_REFCOUNT_P(EX_T(opline->result.u.var).var.ptr, 1);
        !          1834:                Z_SET_ISREF_P(EX_T(opline->result.u.var).var.ptr);
        !          1835:                if (!RETURN_VALUE_USED(opline) || EG(exception)) {
        !          1836:                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
        !          1837:                }
        !          1838:        }
        !          1839: 
        !          1840:        ZEND_VM_NEXT_OPCODE();
        !          1841: }
        !          1842: 
        !          1843: static int ZEND_FASTCALL  ZEND_CAST_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1844: {
        !          1845:        zend_op *opline = EX(opline);
        !          1846: 
        !          1847:        zval *expr = &opline->op1.u.constant;
        !          1848:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          1849: 
        !          1850:        if (opline->extended_value != IS_STRING) {
        !          1851:                *result = *expr;
        !          1852:                if (!0) {
        !          1853:                        zendi_zval_copy_ctor(*result);
        !          1854:                }
        !          1855:        }
        !          1856:        switch (opline->extended_value) {
        !          1857:                case IS_NULL:
        !          1858:                        convert_to_null(result);
        !          1859:                        break;
        !          1860:                case IS_BOOL:
        !          1861:                        convert_to_boolean(result);
        !          1862:                        break;
        !          1863:                case IS_LONG:
        !          1864:                        convert_to_long(result);
        !          1865:                        break;
        !          1866:                case IS_DOUBLE:
        !          1867:                        convert_to_double(result);
        !          1868:                        break;
        !          1869:                case IS_STRING: {
        !          1870:                        zval var_copy;
        !          1871:                        int use_copy;
        !          1872: 
        !          1873:                        zend_make_printable_zval(expr, &var_copy, &use_copy);
        !          1874:                        if (use_copy) {
        !          1875:                                *result = var_copy;
        !          1876:                                if (0) {
        !          1877: 
        !          1878:                                }
        !          1879:                        } else {
        !          1880:                                *result = *expr;
        !          1881:                                if (!0) {
        !          1882:                                        zendi_zval_copy_ctor(*result);
        !          1883:                                }
        !          1884:                        }
        !          1885:                        break;
        !          1886:                }
        !          1887:                case IS_ARRAY:
        !          1888:                        convert_to_array(result);
        !          1889:                        break;
        !          1890:                case IS_OBJECT:
        !          1891:                        convert_to_object(result);
        !          1892:                        break;
        !          1893:        }
        !          1894: 
        !          1895:        ZEND_VM_NEXT_OPCODE();
        !          1896: }
        !          1897: 
        !          1898: static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          1899: {
        !          1900:        zend_op *opline = EX(opline);
        !          1901:        zend_op_array *new_op_array=NULL;
        !          1902:        int return_value_used;
        !          1903: 
        !          1904:        zval *inc_filename = &opline->op1.u.constant;
        !          1905:        zval tmp_inc_filename;
        !          1906:        zend_bool failure_retval=0;
        !          1907: 
        !          1908:        if (inc_filename->type!=IS_STRING) {
        !          1909:                tmp_inc_filename = *inc_filename;
        !          1910:                zval_copy_ctor(&tmp_inc_filename);
        !          1911:                convert_to_string(&tmp_inc_filename);
        !          1912:                inc_filename = &tmp_inc_filename;
        !          1913:        }
        !          1914: 
        !          1915:        return_value_used = RETURN_VALUE_USED(opline);
        !          1916: 
        !          1917:        if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) {
        !          1918:                if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) {
        !          1919:                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          1920:                } else {
        !          1921:                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          1922:                }
        !          1923:        } else {
        !          1924:                switch (Z_LVAL(opline->op2.u.constant)) {
        !          1925:                        case ZEND_INCLUDE_ONCE:
        !          1926:                        case ZEND_REQUIRE_ONCE: {
        !          1927:                                        zend_file_handle file_handle;
        !          1928:                                        char *resolved_path;
        !          1929: 
        !          1930:                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
        !          1931:                                        if (resolved_path) {
        !          1932:                                                failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
        !          1933:                                        } else {
        !          1934:                                                resolved_path = Z_STRVAL_P(inc_filename);
        !          1935:                                        }
        !          1936: 
        !          1937:                                        if (failure_retval) {
        !          1938:                                                /* do nothing, file already included */
        !          1939:                                        } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) {
        !          1940: 
        !          1941:                                                if (!file_handle.opened_path) {
        !          1942:                                                        file_handle.opened_path = estrdup(resolved_path);
        !          1943:                                                }
        !          1944: 
        !          1945:                                                if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
        !          1946:                                                        new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
        !          1947:                                                        zend_destroy_file_handle(&file_handle TSRMLS_CC);
        !          1948:                                                } else {
        !          1949:                                                        zend_file_handle_dtor(&file_handle TSRMLS_CC);
        !          1950:                                                        failure_retval=1;
        !          1951:                                                }
        !          1952:                                        } else {
        !          1953:                                                if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) {
        !          1954:                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          1955:                                                } else {
        !          1956:                                                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          1957:                                                }
        !          1958:                                        }
        !          1959:                                        if (resolved_path != Z_STRVAL_P(inc_filename)) {
        !          1960:                                                efree(resolved_path);
        !          1961:                                        }
        !          1962:                                }
        !          1963:                                break;
        !          1964:                        case ZEND_INCLUDE:
        !          1965:                        case ZEND_REQUIRE:
        !          1966:                                new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC);
        !          1967:                                break;
        !          1968:                        case ZEND_EVAL: {
        !          1969:                                        char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC);
        !          1970: 
        !          1971:                                        new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC);
        !          1972:                                        efree(eval_desc);
        !          1973:                                }
        !          1974:                                break;
        !          1975:                        EMPTY_SWITCH_DEFAULT_CASE()
        !          1976:                }
        !          1977:        }
        !          1978:        if (inc_filename==&tmp_inc_filename) {
        !          1979:                zval_dtor(&tmp_inc_filename);
        !          1980:        }
        !          1981: 
        !          1982:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          1983:        if (new_op_array && !EG(exception)) {
        !          1984:                EX(original_return_value) = EG(return_value_ptr_ptr);
        !          1985:                EG(return_value_ptr_ptr) = return_value_used ? EX_T(opline->result.u.var).var.ptr_ptr : NULL;
        !          1986:                EG(active_op_array) = new_op_array;
        !          1987:                EX_T(opline->result.u.var).var.ptr = NULL;
        !          1988: 
        !          1989:                EX(current_object) = EX(object);
        !          1990: 
        !          1991:                EX(function_state).function = (zend_function *) new_op_array;
        !          1992:                EX(object) = NULL;
        !          1993: 
        !          1994:                if (!EG(active_symbol_table)) {
        !          1995:                        zend_rebuild_symbol_table(TSRMLS_C);
        !          1996:                }
        !          1997: 
        !          1998:                if (zend_execute == execute) {
        !          1999:                        EX(call_opline) = opline;
        !          2000:                        ZEND_VM_ENTER();
        !          2001:                } else {
        !          2002:                        zend_execute(new_op_array TSRMLS_CC);
        !          2003:                }
        !          2004: 
        !          2005:                EX(function_state).function = (zend_function *) EX(op_array);
        !          2006:                EX(object) = EX(current_object);
        !          2007: 
        !          2008:                if (return_value_used) {
        !          2009:                        if (!EX_T(opline->result.u.var).var.ptr) { /* there was no return statement */
        !          2010:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          2011:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          2012:                                Z_LVAL_P(EX_T(opline->result.u.var).var.ptr) = 1;
        !          2013:                                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_BOOL;
        !          2014:                        }
        !          2015:                }
        !          2016: 
        !          2017:                EG(opline_ptr) = &EX(opline);
        !          2018:                EG(active_op_array) = EX(op_array);
        !          2019:                EG(return_value_ptr_ptr) = EX(original_return_value);
        !          2020:                destroy_op_array(new_op_array TSRMLS_CC);
        !          2021:                efree(new_op_array);
        !          2022:                if (EG(exception)) {
        !          2023:                        zend_throw_exception_internal(NULL TSRMLS_CC);
        !          2024:                }
        !          2025:        } else {
        !          2026:                if (return_value_used) {
        !          2027:                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          2028:                        INIT_ZVAL(*EX_T(opline->result.u.var).var.ptr);
        !          2029:                        Z_LVAL_P(EX_T(opline->result.u.var).var.ptr) = failure_retval;
        !          2030:                        Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_BOOL;
        !          2031:                }
        !          2032:        }
        !          2033:        ZEND_VM_NEXT_OPCODE();
        !          2034: }
        !          2035: 
        !          2036: static int ZEND_FASTCALL  ZEND_UNSET_VAR_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2037: {
        !          2038:        zend_op *opline = EX(opline);
        !          2039:        zval tmp, *varname;
        !          2040:        HashTable *target_symbol_table;
        !          2041: 
        !          2042: 
        !          2043:        if (IS_CONST == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) {
        !          2044:                if (EG(active_symbol_table)) {
        !          2045:                        zend_execute_data *ex = EX(prev_execute_data);
        !          2046:                        zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.u.var);
        !          2047: 
        !          2048:                        if (zend_hash_quick_del(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value) == SUCCESS) {
        !          2049:                                while (ex && ex->symbol_table == EG(active_symbol_table)) {
        !          2050:                                        int i;
        !          2051: 
        !          2052:                                        if (ex->op_array) {
        !          2053:                                                for (i = 0; i < ex->op_array->last_var; i++) {
        !          2054:                                                        if (ex->op_array->vars[i].hash_value == cv->hash_value &&
        !          2055:                                                                ex->op_array->vars[i].name_len == cv->name_len &&
        !          2056:                                                                !memcmp(ex->op_array->vars[i].name, cv->name, cv->name_len)) {
        !          2057:                                                                ex->CVs[i] = NULL;
        !          2058:                                                                break;
        !          2059:                                                        }
        !          2060:                                                }
        !          2061:                                        }
        !          2062:                                        ex = ex->prev_execute_data;
        !          2063:                                }
        !          2064:                        }
        !          2065:                        EX(CVs)[opline->op1.u.var] = NULL;
        !          2066:                } else if (EX(CVs)[opline->op1.u.var]) {
        !          2067:                        zval_ptr_dtor(EX(CVs)[opline->op1.u.var]);
        !          2068:                        EX(CVs)[opline->op1.u.var] = NULL;
        !          2069:                }
        !          2070:                ZEND_VM_NEXT_OPCODE();
        !          2071:        }
        !          2072: 
        !          2073:        varname = &opline->op1.u.constant;
        !          2074: 
        !          2075:        if (Z_TYPE_P(varname) != IS_STRING) {
        !          2076:                tmp = *varname;
        !          2077:                zval_copy_ctor(&tmp);
        !          2078:                convert_to_string(&tmp);
        !          2079:                varname = &tmp;
        !          2080:        } else if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
        !          2081:                Z_ADDREF_P(varname);
        !          2082:        }
        !          2083: 
        !          2084:        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          2085:                zend_std_unset_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname) TSRMLS_CC);
        !          2086:        } else {
        !          2087:                ulong hash_value = zend_inline_hash_func(varname->value.str.val, varname->value.str.len+1);
        !          2088: 
        !          2089:                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC);
        !          2090:                if (zend_hash_quick_del(target_symbol_table, varname->value.str.val, varname->value.str.len+1, hash_value) == SUCCESS) {
        !          2091:                        zend_execute_data *ex = execute_data;
        !          2092: 
        !          2093:                        do {
        !          2094:                                int i;
        !          2095: 
        !          2096:                                if (ex->op_array) {
        !          2097:                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          2098:                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          2099:                                                        ex->op_array->vars[i].name_len == varname->value.str.len &&
        !          2100:                                                        !memcmp(ex->op_array->vars[i].name, varname->value.str.val, varname->value.str.len)) {
        !          2101:                                                        ex->CVs[i] = NULL;
        !          2102:                                                        break;
        !          2103:                                                }
        !          2104:                                        }
        !          2105:                                }
        !          2106:                                ex = ex->prev_execute_data;
        !          2107:                        } while (ex && ex->symbol_table == target_symbol_table);
        !          2108:                }
        !          2109:        }
        !          2110: 
        !          2111:        if (varname == &tmp) {
        !          2112:                zval_dtor(&tmp);
        !          2113:        } else if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
        !          2114:                zval_ptr_dtor(&varname);
        !          2115:        }
        !          2116: 
        !          2117:        ZEND_VM_NEXT_OPCODE();
        !          2118: }
        !          2119: 
        !          2120: static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2121: {
        !          2122:        zend_op *opline = EX(opline);
        !          2123: 
        !          2124:        zval *array_ptr, **array_ptr_ptr;
        !          2125:        HashTable *fe_ht;
        !          2126:        zend_object_iterator *iter = NULL;
        !          2127:        zend_class_entry *ce = NULL;
        !          2128:        zend_bool is_empty = 0;
        !          2129: 
        !          2130:        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          2131:                array_ptr_ptr = NULL;
        !          2132:                if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
        !          2133:                        ALLOC_INIT_ZVAL(array_ptr);
        !          2134:                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
        !          2135:                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
        !          2136:                                zend_error(E_WARNING, "foreach() cannot iterate over objects without PHP class");
        !          2137:                                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          2138:                        }
        !          2139: 
        !          2140:                        ce = Z_OBJCE_PP(array_ptr_ptr);
        !          2141:                        if (!ce || ce->get_iterator == NULL) {
        !          2142:                                SEPARATE_ZVAL_IF_NOT_REF(array_ptr_ptr);
        !          2143:                                Z_ADDREF_PP(array_ptr_ptr);
        !          2144:                        }
        !          2145:                        array_ptr = *array_ptr_ptr;
        !          2146:                } else {
        !          2147:                        if (Z_TYPE_PP(array_ptr_ptr) == IS_ARRAY) {
        !          2148:                                SEPARATE_ZVAL_IF_NOT_REF(array_ptr_ptr);
        !          2149:                                if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
        !          2150:                                        Z_SET_ISREF_PP(array_ptr_ptr);
        !          2151:                                }
        !          2152:                        }
        !          2153:                        array_ptr = *array_ptr_ptr;
        !          2154:                        Z_ADDREF_P(array_ptr);
        !          2155:                }
        !          2156:        } else {
        !          2157:                array_ptr = &opline->op1.u.constant;
        !          2158:                if (0) { /* IS_TMP_VAR */
        !          2159:                        zval *tmp;
        !          2160: 
        !          2161:                        ALLOC_ZVAL(tmp);
        !          2162:                        INIT_PZVAL_COPY(tmp, array_ptr);
        !          2163:                        array_ptr = tmp;
        !          2164:                        if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
        !          2165:                                ce = Z_OBJCE_P(array_ptr);
        !          2166:                                if (ce && ce->get_iterator) {
        !          2167:                                        Z_DELREF_P(array_ptr);
        !          2168:                                }
        !          2169:                        }
        !          2170:                } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
        !          2171:                        ce = Z_OBJCE_P(array_ptr);
        !          2172:                        if (!ce || !ce->get_iterator) {
        !          2173:                                Z_ADDREF_P(array_ptr);
        !          2174:                        }
        !          2175:                } else if (IS_CONST == IS_CONST ||
        !          2176:                           ((IS_CONST == IS_CV || IS_CONST == IS_VAR) &&
        !          2177:                            !Z_ISREF_P(array_ptr) &&
        !          2178:                            Z_REFCOUNT_P(array_ptr) > 1)) {
        !          2179:                        zval *tmp;
        !          2180: 
        !          2181:                        ALLOC_ZVAL(tmp);
        !          2182:                        INIT_PZVAL_COPY(tmp, array_ptr);
        !          2183:                        zval_copy_ctor(tmp);
        !          2184:                        array_ptr = tmp;
        !          2185:                } else {
        !          2186:                        Z_ADDREF_P(array_ptr);
        !          2187:                }
        !          2188:        }
        !          2189: 
        !          2190:        if (ce && ce->get_iterator) {
        !          2191:                iter = ce->get_iterator(ce, array_ptr, opline->extended_value & ZEND_FE_RESET_REFERENCE TSRMLS_CC);
        !          2192: 
        !          2193:                if (iter && !EG(exception)) {
        !          2194:                        array_ptr = zend_iterator_wrap(iter TSRMLS_CC);
        !          2195:                } else {
        !          2196:                        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          2197: 
        !          2198:                        } else {
        !          2199: 
        !          2200:                        }
        !          2201:                        if (!EG(exception)) {
        !          2202:                                zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "Object of type %s did not create an Iterator", ce->name);
        !          2203:                        }
        !          2204:                        zend_throw_exception_internal(NULL TSRMLS_CC);
        !          2205:                        ZEND_VM_NEXT_OPCODE();
        !          2206:                }
        !          2207:        }
        !          2208: 
        !          2209:        AI_SET_PTR(EX_T(opline->result.u.var).var, array_ptr);
        !          2210:        PZVAL_LOCK(array_ptr);
        !          2211: 
        !          2212:        if (iter) {
        !          2213:                iter->index = 0;
        !          2214:                if (iter->funcs->rewind) {
        !          2215:                        iter->funcs->rewind(iter TSRMLS_CC);
        !          2216:                        if (EG(exception)) {
        !          2217:                                Z_DELREF_P(array_ptr);
        !          2218:                                zval_ptr_dtor(&array_ptr);
        !          2219:                                if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          2220: 
        !          2221:                                } else {
        !          2222: 
        !          2223:                                }
        !          2224:                                ZEND_VM_NEXT_OPCODE();
        !          2225:                        }
        !          2226:                }
        !          2227:                is_empty = iter->funcs->valid(iter TSRMLS_CC) != SUCCESS;
        !          2228:                if (EG(exception)) {
        !          2229:                        Z_DELREF_P(array_ptr);
        !          2230:                        zval_ptr_dtor(&array_ptr);
        !          2231:                        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          2232: 
        !          2233:                        } else {
        !          2234: 
        !          2235:                        }
        !          2236:                        ZEND_VM_NEXT_OPCODE();
        !          2237:                }
        !          2238:                iter->index = -1; /* will be set to 0 before using next handler */
        !          2239:        } else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
        !          2240:                zend_hash_internal_pointer_reset(fe_ht);
        !          2241:                if (ce) {
        !          2242:                        zend_object *zobj = zend_objects_get_address(array_ptr TSRMLS_CC);
        !          2243:                        while (zend_hash_has_more_elements(fe_ht) == SUCCESS) {
        !          2244:                                char *str_key;
        !          2245:                                uint str_key_len;
        !          2246:                                ulong int_key;
        !          2247:                                zend_uchar key_type;
        !          2248: 
        !          2249:                                key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
        !          2250:                                if (key_type != HASH_KEY_NON_EXISTANT &&
        !          2251:                                        (key_type == HASH_KEY_IS_LONG ||
        !          2252:                                     zend_check_property_access(zobj, str_key, str_key_len-1 TSRMLS_CC) == SUCCESS)) {
        !          2253:                                        break;
        !          2254:                                }
        !          2255:                                zend_hash_move_forward(fe_ht);
        !          2256:                        }
        !          2257:                }
        !          2258:                is_empty = zend_hash_has_more_elements(fe_ht) != SUCCESS;
        !          2259:                zend_hash_get_pointer(fe_ht, &EX_T(opline->result.u.var).fe.fe_pos);
        !          2260:        } else {
        !          2261:                zend_error(E_WARNING, "Invalid argument supplied for foreach()");
        !          2262:                is_empty = 1;
        !          2263:        }
        !          2264: 
        !          2265:        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          2266: 
        !          2267:        } else {
        !          2268: 
        !          2269:        }
        !          2270:        if (is_empty) {
        !          2271:                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          2272:        } else {
        !          2273:                ZEND_VM_NEXT_OPCODE();
        !          2274:        }
        !          2275: }
        !          2276: 
        !          2277: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2278: {
        !          2279:        zend_op *opline = EX(opline);
        !          2280:        zval **value;
        !          2281:        zend_bool isset = 1;
        !          2282: 
        !          2283:        if (IS_CONST == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) {
        !          2284:                if (EX(CVs)[opline->op1.u.var]) {
        !          2285:                        value = EX(CVs)[opline->op1.u.var];
        !          2286:                } else if (EG(active_symbol_table)) {
        !          2287:                        zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.u.var);
        !          2288: 
        !          2289:                        if (zend_hash_quick_find(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value, (void **) &value) == FAILURE) {
        !          2290:                                isset = 0;
        !          2291:                        }
        !          2292:                } else {
        !          2293:                        isset = 0;
        !          2294:                }
        !          2295:        } else {
        !          2296:                HashTable *target_symbol_table;
        !          2297: 
        !          2298:                zval tmp, *varname = &opline->op1.u.constant;
        !          2299: 
        !          2300:                if (Z_TYPE_P(varname) != IS_STRING) {
        !          2301:                        tmp = *varname;
        !          2302:                        zval_copy_ctor(&tmp);
        !          2303:                        convert_to_string(&tmp);
        !          2304:                        varname = &tmp;
        !          2305:                }
        !          2306: 
        !          2307:                if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          2308:                        value = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 1 TSRMLS_CC);
        !          2309:                        if (!value) {
        !          2310:                                isset = 0;
        !          2311:                        }
        !          2312:                } else {
        !          2313:                        target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC);
        !          2314:                        if (zend_hash_find(target_symbol_table, varname->value.str.val, varname->value.str.len+1, (void **) &value) == FAILURE) {
        !          2315:                                isset = 0;
        !          2316:                        }
        !          2317:                }
        !          2318: 
        !          2319:                if (varname == &tmp) {
        !          2320:                        zval_dtor(&tmp);
        !          2321:                }
        !          2322: 
        !          2323:        }
        !          2324: 
        !          2325:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          2326: 
        !          2327:        switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
        !          2328:                case ZEND_ISSET:
        !          2329:                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          2330:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
        !          2331:                        } else {
        !          2332:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
        !          2333:                        }
        !          2334:                        break;
        !          2335:                case ZEND_ISEMPTY:
        !          2336:                        if (!isset || !i_zend_is_true(*value)) {
        !          2337:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 1;
        !          2338:                        } else {
        !          2339:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
        !          2340:                        }
        !          2341:                        break;
        !          2342:        }
        !          2343: 
        !          2344:        ZEND_VM_NEXT_OPCODE();
        !          2345: }
        !          2346: 
        !          2347: static int ZEND_FASTCALL  ZEND_EXIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2348: {
        !          2349: #if 0 || (IS_CONST != IS_UNUSED)
        !          2350:        zend_op *opline = EX(opline);
        !          2351:        if (IS_CONST != IS_UNUSED) {
        !          2352: 
        !          2353:                zval *ptr = &opline->op1.u.constant;
        !          2354: 
        !          2355:                if (Z_TYPE_P(ptr) == IS_LONG) {
        !          2356:                        EG(exit_status) = Z_LVAL_P(ptr);
        !          2357:                } else {
        !          2358:                        zend_print_variable(ptr);
        !          2359:                }
        !          2360: 
        !          2361:        }
        !          2362: #endif
        !          2363:        zend_bailout();
        !          2364:        ZEND_VM_NEXT_OPCODE();
        !          2365: }
        !          2366: 
        !          2367: static int ZEND_FASTCALL  ZEND_JMP_SET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2368: {
        !          2369:        zend_op *opline = EX(opline);
        !          2370: 
        !          2371:        zval *value = &opline->op1.u.constant;
        !          2372: 
        !          2373:        if (i_zend_is_true(value)) {
        !          2374:                EX_T(opline->result.u.var).tmp_var = *value;
        !          2375:                zendi_zval_copy_ctor(EX_T(opline->result.u.var).tmp_var);
        !          2376: 
        !          2377: #if DEBUG_ZEND>=2
        !          2378:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          2379: #endif
        !          2380:                ZEND_VM_JMP(opline->op2.u.jmp_addr);
        !          2381:        }
        !          2382: 
        !          2383:        ZEND_VM_NEXT_OPCODE();
        !          2384: }
        !          2385: 
        !          2386: static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2387: {
        !          2388:        zend_op *opline = EX(opline);
        !          2389: 
        !          2390:        zval *value = &opline->op1.u.constant;
        !          2391: 
        !          2392:        EX_T(opline->result.u.var).tmp_var = *value;
        !          2393:        if (!0) {
        !          2394:                zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var);
        !          2395:        }
        !          2396: 
        !          2397:        ZEND_VM_NEXT_OPCODE();
        !          2398: }
        !          2399: 
        !          2400: static int ZEND_FASTCALL  ZEND_TICKS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2401: {
        !          2402:        zend_op *opline = EX(opline);
        !          2403: 
        !          2404:        if (++EG(ticks_count)>=Z_LVAL(opline->op1.u.constant)) {
        !          2405:                EG(ticks_count)=0;
        !          2406:                if (zend_ticks_function) {
        !          2407:                        zend_ticks_function(Z_LVAL(opline->op1.u.constant));
        !          2408:                }
        !          2409:        }
        !          2410:        ZEND_VM_NEXT_OPCODE();
        !          2411: }
        !          2412: 
        !          2413: static int ZEND_FASTCALL  ZEND_ADD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2414: {
        !          2415:        zend_op *opline = EX(opline);
        !          2416: 
        !          2417: 
        !          2418:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          2419:                &opline->op1.u.constant,
        !          2420:                &opline->op2.u.constant TSRMLS_CC);
        !          2421: 
        !          2422: 
        !          2423:        ZEND_VM_NEXT_OPCODE();
        !          2424: }
        !          2425: 
        !          2426: static int ZEND_FASTCALL  ZEND_SUB_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2427: {
        !          2428:        zend_op *opline = EX(opline);
        !          2429: 
        !          2430: 
        !          2431:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          2432:                &opline->op1.u.constant,
        !          2433:                &opline->op2.u.constant TSRMLS_CC);
        !          2434: 
        !          2435: 
        !          2436:        ZEND_VM_NEXT_OPCODE();
        !          2437: }
        !          2438: 
        !          2439: static int ZEND_FASTCALL  ZEND_MUL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2440: {
        !          2441:        zend_op *opline = EX(opline);
        !          2442: 
        !          2443: 
        !          2444:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          2445:                &opline->op1.u.constant,
        !          2446:                &opline->op2.u.constant TSRMLS_CC);
        !          2447: 
        !          2448: 
        !          2449:        ZEND_VM_NEXT_OPCODE();
        !          2450: }
        !          2451: 
        !          2452: static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2453: {
        !          2454:        zend_op *opline = EX(opline);
        !          2455: 
        !          2456: 
        !          2457:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          2458:                &opline->op1.u.constant,
        !          2459:                &opline->op2.u.constant TSRMLS_CC);
        !          2460: 
        !          2461: 
        !          2462:        ZEND_VM_NEXT_OPCODE();
        !          2463: }
        !          2464: 
        !          2465: static int ZEND_FASTCALL  ZEND_MOD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2466: {
        !          2467:        zend_op *opline = EX(opline);
        !          2468: 
        !          2469: 
        !          2470:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          2471:                &opline->op1.u.constant,
        !          2472:                &opline->op2.u.constant TSRMLS_CC);
        !          2473: 
        !          2474: 
        !          2475:        ZEND_VM_NEXT_OPCODE();
        !          2476: }
        !          2477: 
        !          2478: static int ZEND_FASTCALL  ZEND_SL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2479: {
        !          2480:        zend_op *opline = EX(opline);
        !          2481: 
        !          2482: 
        !          2483:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          2484:                &opline->op1.u.constant,
        !          2485:                &opline->op2.u.constant TSRMLS_CC);
        !          2486: 
        !          2487: 
        !          2488:        ZEND_VM_NEXT_OPCODE();
        !          2489: }
        !          2490: 
        !          2491: static int ZEND_FASTCALL  ZEND_SR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2492: {
        !          2493:        zend_op *opline = EX(opline);
        !          2494: 
        !          2495: 
        !          2496:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          2497:                &opline->op1.u.constant,
        !          2498:                &opline->op2.u.constant TSRMLS_CC);
        !          2499: 
        !          2500: 
        !          2501:        ZEND_VM_NEXT_OPCODE();
        !          2502: }
        !          2503: 
        !          2504: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2505: {
        !          2506:        zend_op *opline = EX(opline);
        !          2507: 
        !          2508: 
        !          2509:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          2510:                &opline->op1.u.constant,
        !          2511:                &opline->op2.u.constant TSRMLS_CC);
        !          2512: 
        !          2513: 
        !          2514:        ZEND_VM_NEXT_OPCODE();
        !          2515: }
        !          2516: 
        !          2517: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2518: {
        !          2519:        zend_op *opline = EX(opline);
        !          2520: 
        !          2521: 
        !          2522:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          2523:                &opline->op1.u.constant,
        !          2524:                &opline->op2.u.constant TSRMLS_CC);
        !          2525: 
        !          2526: 
        !          2527:        ZEND_VM_NEXT_OPCODE();
        !          2528: }
        !          2529: 
        !          2530: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2531: {
        !          2532:        zend_op *opline = EX(opline);
        !          2533: 
        !          2534:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          2535: 
        !          2536:        is_identical_function(result,
        !          2537:                &opline->op1.u.constant,
        !          2538:                &opline->op2.u.constant TSRMLS_CC);
        !          2539:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          2540: 
        !          2541: 
        !          2542:        ZEND_VM_NEXT_OPCODE();
        !          2543: }
        !          2544: 
        !          2545: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2546: {
        !          2547:        zend_op *opline = EX(opline);
        !          2548: 
        !          2549:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          2550: 
        !          2551:        compare_function(result,
        !          2552:                &opline->op1.u.constant,
        !          2553:                &opline->op2.u.constant TSRMLS_CC);
        !          2554:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          2555: 
        !          2556: 
        !          2557:        ZEND_VM_NEXT_OPCODE();
        !          2558: }
        !          2559: 
        !          2560: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2561: {
        !          2562:        zend_op *opline = EX(opline);
        !          2563: 
        !          2564:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          2565: 
        !          2566:        compare_function(result,
        !          2567:                &opline->op1.u.constant,
        !          2568:                &opline->op2.u.constant TSRMLS_CC);
        !          2569:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          2570: 
        !          2571: 
        !          2572:        ZEND_VM_NEXT_OPCODE();
        !          2573: }
        !          2574: 
        !          2575: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2576: {
        !          2577:        zend_op *opline = EX(opline);
        !          2578: 
        !          2579:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          2580: 
        !          2581:        compare_function(result,
        !          2582:                &opline->op1.u.constant,
        !          2583:                &opline->op2.u.constant TSRMLS_CC);
        !          2584:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          2585: 
        !          2586: 
        !          2587:        ZEND_VM_NEXT_OPCODE();
        !          2588: }
        !          2589: 
        !          2590: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2591: {
        !          2592:        zend_op *opline = EX(opline);
        !          2593: 
        !          2594:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          2595: 
        !          2596:        compare_function(result,
        !          2597:                &opline->op1.u.constant,
        !          2598:                &opline->op2.u.constant TSRMLS_CC);
        !          2599:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          2600: 
        !          2601: 
        !          2602:        ZEND_VM_NEXT_OPCODE();
        !          2603: }
        !          2604: 
        !          2605: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2606: {
        !          2607:        zend_op *opline = EX(opline);
        !          2608: 
        !          2609: 
        !          2610:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          2611:                &opline->op1.u.constant,
        !          2612:                &opline->op2.u.constant TSRMLS_CC);
        !          2613: 
        !          2614: 
        !          2615:        ZEND_VM_NEXT_OPCODE();
        !          2616: }
        !          2617: 
        !          2618: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2619: {
        !          2620:        zend_op *opline = EX(opline);
        !          2621: 
        !          2622: 
        !          2623:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          2624:                &opline->op1.u.constant,
        !          2625:                &opline->op2.u.constant TSRMLS_CC);
        !          2626: 
        !          2627: 
        !          2628:        ZEND_VM_NEXT_OPCODE();
        !          2629: }
        !          2630: 
        !          2631: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2632: {
        !          2633:        zend_op *opline = EX(opline);
        !          2634: 
        !          2635: 
        !          2636:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          2637:                &opline->op1.u.constant,
        !          2638:                &opline->op2.u.constant TSRMLS_CC);
        !          2639: 
        !          2640: 
        !          2641:        ZEND_VM_NEXT_OPCODE();
        !          2642: }
        !          2643: 
        !          2644: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2645: {
        !          2646:        zend_op *opline = EX(opline);
        !          2647: 
        !          2648: 
        !          2649:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          2650:                &opline->op1.u.constant,
        !          2651:                &opline->op2.u.constant TSRMLS_CC);
        !          2652: 
        !          2653: 
        !          2654:        ZEND_VM_NEXT_OPCODE();
        !          2655: }
        !          2656: 
        !          2657: static int ZEND_FASTCALL  ZEND_FETCH_DIM_TMP_VAR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2658: {
        !          2659:        zend_op *opline = EX(opline);
        !          2660: 
        !          2661:        zval *container = &opline->op1.u.constant;
        !          2662: 
        !          2663:        if (Z_TYPE_P(container) != IS_ARRAY) {
        !          2664:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          2665:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          2666:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          2667:                }
        !          2668:        } else {
        !          2669: 
        !          2670:                zval *dim = &opline->op2.u.constant;
        !          2671: 
        !          2672:                AI_SET_PTR(EX_T(opline->result.u.var).var, *zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, BP_VAR_R TSRMLS_CC));
        !          2673:                SELECTIVE_PZVAL_LOCK(EX_T(opline->result.u.var).var.ptr, &opline->result);
        !          2674: 
        !          2675:        }
        !          2676:        ZEND_VM_NEXT_OPCODE();
        !          2677: }
        !          2678: 
        !          2679: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2680: {
        !          2681:        zend_op *opline = EX(opline);
        !          2682:        zval *function_name;
        !          2683:        zend_class_entry *ce;
        !          2684: 
        !          2685:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          2686: 
        !          2687:        if (IS_CONST == IS_CONST) {
        !          2688:                /* no function found. try a static method in class */
        !          2689:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          2690:                if (!ce) {
        !          2691:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          2692:                }
        !          2693:                EX(called_scope) = ce;
        !          2694:        } else {
        !          2695:                ce = EX_T(opline->op1.u.var).class_entry;
        !          2696: 
        !          2697:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          2698:                        EX(called_scope) = EG(called_scope);
        !          2699:                } else {
        !          2700:                        EX(called_scope) = ce;
        !          2701:                }
        !          2702:        }
        !          2703:        if(IS_CONST != IS_UNUSED) {
        !          2704:                char *function_name_strval = NULL;
        !          2705:                int function_name_strlen = 0;
        !          2706: 
        !          2707: 
        !          2708:                if (IS_CONST == IS_CONST) {
        !          2709:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          2710:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          2711:                } else {
        !          2712:                        function_name = &opline->op2.u.constant;
        !          2713: 
        !          2714:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          2715:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          2716:                        } else {
        !          2717:                                function_name_strval = Z_STRVAL_P(function_name);
        !          2718:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          2719:                        }
        !          2720:                }
        !          2721: 
        !          2722:                if (function_name_strval) {
        !          2723:                        if (ce->get_static_method) {
        !          2724:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          2725:                        } else {
        !          2726:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          2727:                        }
        !          2728:                        if (!EX(fbc)) {
        !          2729:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          2730:                        }
        !          2731:                }
        !          2732: 
        !          2733:                if (IS_CONST != IS_CONST) {
        !          2734: 
        !          2735:                }
        !          2736:        } else {
        !          2737:                if(!ce->constructor) {
        !          2738:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          2739:                }
        !          2740:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          2741:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          2742:                }
        !          2743:                EX(fbc) = ce->constructor;
        !          2744:        }
        !          2745: 
        !          2746:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          2747:                EX(object) = NULL;
        !          2748:        } else {
        !          2749:                if (EG(This) &&
        !          2750:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          2751:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          2752:                    /* We are calling method of the other (incompatible) class,
        !          2753:                       but passing $this. This is done for compatibility with php-4. */
        !          2754:                        int severity;
        !          2755:                        char *verb;
        !          2756:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          2757:                                severity = E_STRICT;
        !          2758:                                verb = "should not";
        !          2759:                        } else {
        !          2760:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          2761:                                severity = E_ERROR;
        !          2762:                                verb = "cannot";
        !          2763:                        }
        !          2764:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          2765: 
        !          2766:                }
        !          2767:                if ((EX(object) = EG(This))) {
        !          2768:                        Z_ADDREF_P(EX(object));
        !          2769:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          2770:                }
        !          2771:        }
        !          2772: 
        !          2773:        ZEND_VM_NEXT_OPCODE();
        !          2774: }
        !          2775: 
        !          2776: static int ZEND_FASTCALL  ZEND_CASE_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2777: {
        !          2778:        zend_op *opline = EX(opline);
        !          2779:        int switch_expr_is_overloaded=0;
        !          2780: 
        !          2781: 
        !          2782:        if (IS_CONST==IS_VAR) {
        !          2783:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          2784:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          2785:                } else {
        !          2786:                        switch_expr_is_overloaded = 1;
        !          2787:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          2788:                }
        !          2789:        }
        !          2790:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          2791:                                 &opline->op1.u.constant,
        !          2792:                                 &opline->op2.u.constant TSRMLS_CC);
        !          2793: 
        !          2794:        if (switch_expr_is_overloaded) {
        !          2795:                /* We only free op1 if this is a string offset,
        !          2796:                 * Since if it is a TMP_VAR, it'll be reused by
        !          2797:                 * other CASE opcodes (whereas string offsets
        !          2798:                 * are allocated at each get_zval_ptr())
        !          2799:                 */
        !          2800: 
        !          2801:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          2802:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          2803:        }
        !          2804:        ZEND_VM_NEXT_OPCODE();
        !          2805: }
        !          2806: 
        !          2807: static int ZEND_FASTCALL  ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2808: {
        !          2809:        zend_op *opline = EX(opline);
        !          2810: 
        !          2811:        if (IS_CONST == IS_UNUSED) {
        !          2812:                /* namespaced constant */
        !          2813:                if (!zend_get_constant_ex(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) {
        !          2814:                        if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
        !          2815:                                char *actual = (char *)zend_memrchr(Z_STRVAL(opline->op2.u.constant), '\\', Z_STRLEN(opline->op2.u.constant));
        !          2816:                                if(!actual) {
        !          2817:                                        actual = Z_STRVAL(opline->op2.u.constant);
        !          2818:                                } else {
        !          2819:                                        actual++;
        !          2820:                                }
        !          2821:                                /* non-qualified constant - allow text substitution */
        !          2822:                                zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", actual, actual);
        !          2823:                                ZVAL_STRINGL(&EX_T(opline->result.u.var).tmp_var, actual, Z_STRLEN(opline->op2.u.constant)-(actual - Z_STRVAL(opline->op2.u.constant)), 1);
        !          2824:                        } else {
        !          2825:                                zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
        !          2826:                                                        Z_STRVAL(opline->op2.u.constant), Z_STRVAL(opline->op2.u.constant));
        !          2827:                        }
        !          2828:                }
        !          2829:                ZEND_VM_NEXT_OPCODE();
        !          2830:        } else {
        !          2831:                /* class constant */
        !          2832:                zend_class_entry *ce;
        !          2833:                zval **value;
        !          2834: 
        !          2835:                if (IS_CONST == IS_CONST) {
        !          2836: 
        !          2837:                        ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          2838:                        if (!ce) {
        !          2839:                                zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
        !          2840:                        }
        !          2841:                } else {
        !          2842:                        ce = EX_T(opline->op1.u.var).class_entry;
        !          2843:                }
        !          2844: 
        !          2845:                if (zend_hash_find(&ce->constants_table, Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void **) &value) == SUCCESS) {
        !          2846:                        if (Z_TYPE_PP(value) == IS_CONSTANT_ARRAY ||
        !          2847:                            (Z_TYPE_PP(value) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT) {
        !          2848:                                zend_class_entry *old_scope = EG(scope);
        !          2849: 
        !          2850:                                EG(scope) = ce;
        !          2851:                                zval_update_constant(value, (void *) 1 TSRMLS_CC);
        !          2852:                                EG(scope) = old_scope;
        !          2853:                        }
        !          2854:                        EX_T(opline->result.u.var).tmp_var = **value;
        !          2855:                        zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var);
        !          2856:                } else {
        !          2857:                        zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
        !          2858:                }
        !          2859: 
        !          2860:                ZEND_VM_NEXT_OPCODE();
        !          2861:        }
        !          2862: }
        !          2863: 
        !          2864: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2865: {
        !          2866:        zend_op *opline = EX(opline);
        !          2867: 
        !          2868:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          2869:        zval *expr_ptr;
        !          2870:        zval *offset=&opline->op2.u.constant;
        !          2871: 
        !          2872: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          2873:        zval **expr_ptr_ptr = NULL;
        !          2874: 
        !          2875:        if (opline->extended_value) {
        !          2876:                expr_ptr_ptr=NULL;
        !          2877:                expr_ptr = *expr_ptr_ptr;
        !          2878:        } else {
        !          2879:                expr_ptr=&opline->op1.u.constant;
        !          2880:        }
        !          2881: #else
        !          2882:        expr_ptr=&opline->op1.u.constant;
        !          2883: #endif
        !          2884: 
        !          2885:        if (0) { /* temporary variable */
        !          2886:                zval *new_expr;
        !          2887: 
        !          2888:                ALLOC_ZVAL(new_expr);
        !          2889:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          2890:                expr_ptr = new_expr;
        !          2891:        } else {
        !          2892: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          2893:                if (opline->extended_value) {
        !          2894:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          2895:                        expr_ptr = *expr_ptr_ptr;
        !          2896:                        Z_ADDREF_P(expr_ptr);
        !          2897:                } else
        !          2898: #endif
        !          2899:                if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          2900:                        zval *new_expr;
        !          2901: 
        !          2902:                        ALLOC_ZVAL(new_expr);
        !          2903:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          2904:                        expr_ptr = new_expr;
        !          2905:                        zendi_zval_copy_ctor(*expr_ptr);
        !          2906:                } else {
        !          2907:                        Z_ADDREF_P(expr_ptr);
        !          2908:                }
        !          2909:        }
        !          2910:        if (offset) {
        !          2911:                switch (Z_TYPE_P(offset)) {
        !          2912:                        case IS_DOUBLE:
        !          2913:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          2914:                                break;
        !          2915:                        case IS_LONG:
        !          2916:                        case IS_BOOL:
        !          2917:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          2918:                                break;
        !          2919:                        case IS_STRING:
        !          2920:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          2921:                                break;
        !          2922:                        case IS_NULL:
        !          2923:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          2924:                                break;
        !          2925:                        default:
        !          2926:                                zend_error(E_WARNING, "Illegal offset type");
        !          2927:                                zval_ptr_dtor(&expr_ptr);
        !          2928:                                /* do nothing */
        !          2929:                                break;
        !          2930:                }
        !          2931: 
        !          2932:        } else {
        !          2933:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          2934:        }
        !          2935:        if (opline->extended_value) {
        !          2936: 
        !          2937:        } else {
        !          2938: 
        !          2939:        }
        !          2940:        ZEND_VM_NEXT_OPCODE();
        !          2941: }
        !          2942: 
        !          2943: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2944: {
        !          2945:        zend_op *opline = EX(opline);
        !          2946: 
        !          2947:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          2948:        if (IS_CONST == IS_UNUSED) {
        !          2949:                ZEND_VM_NEXT_OPCODE();
        !          2950: #if 0 || IS_CONST != IS_UNUSED
        !          2951:        } else {
        !          2952:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          2953: #endif
        !          2954:        }
        !          2955: }
        !          2956: 
        !          2957: static int ZEND_FASTCALL  ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2958: {
        !          2959:        zend_op *opline = EX(opline);
        !          2960: 
        !          2961:        zval *name  = &opline->op1.u.constant;
        !          2962:        zval *val   = &opline->op2.u.constant;
        !          2963:        zend_constant c;
        !          2964: 
        !          2965:        if ((Z_TYPE_P(val) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT || Z_TYPE_P(val) == IS_CONSTANT_ARRAY) {
        !          2966:                zval tmp = *val;
        !          2967:                zval *tmp_ptr = &tmp;
        !          2968: 
        !          2969:                if (Z_TYPE_P(val) == IS_CONSTANT_ARRAY) {
        !          2970:                        zval_copy_ctor(&tmp);
        !          2971:                }
        !          2972:                INIT_PZVAL(&tmp);
        !          2973:                zval_update_constant(&tmp_ptr, NULL TSRMLS_CC);
        !          2974:                c.value = *tmp_ptr;
        !          2975:        } else {
        !          2976:                c.value = *val;
        !          2977:                zval_copy_ctor(&c.value);
        !          2978:        }
        !          2979:        c.flags = CONST_CS; /* non persistent, case sensetive */
        !          2980:        c.name = zend_strndup(Z_STRVAL_P(name), Z_STRLEN_P(name));
        !          2981:        c.name_len = Z_STRLEN_P(name)+1;
        !          2982:        c.module_number = PHP_USER_CONSTANT;
        !          2983: 
        !          2984:        if (zend_register_constant(&c TSRMLS_CC) == FAILURE) {
        !          2985:        }
        !          2986: 
        !          2987: 
        !          2988:        ZEND_VM_NEXT_OPCODE();
        !          2989: }
        !          2990: 
        !          2991: static int ZEND_FASTCALL  ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          2992: {
        !          2993:        zend_op *opline = EX(opline);
        !          2994:        zend_function *op_array;
        !          2995: 
        !          2996:        if (zend_hash_quick_find(EG(function_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), Z_LVAL(opline->op2.u.constant), (void *) &op_array) == FAILURE ||
        !          2997:            op_array->type != ZEND_USER_FUNCTION) {
        !          2998:                zend_error_noreturn(E_ERROR, "Base lambda function for closure not found");
        !          2999:        }
        !          3000: 
        !          3001:        zend_create_closure(&EX_T(opline->result.u.var).tmp_var, op_array TSRMLS_CC);
        !          3002: 
        !          3003:        ZEND_VM_NEXT_OPCODE();
        !          3004: }
        !          3005: 
        !          3006: static int ZEND_FASTCALL  ZEND_ADD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3007: {
        !          3008:        zend_op *opline = EX(opline);
        !          3009:        zend_free_op free_op2;
        !          3010: 
        !          3011:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          3012:                &opline->op1.u.constant,
        !          3013:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3014: 
        !          3015:        zval_dtor(free_op2.var);
        !          3016:        ZEND_VM_NEXT_OPCODE();
        !          3017: }
        !          3018: 
        !          3019: static int ZEND_FASTCALL  ZEND_SUB_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3020: {
        !          3021:        zend_op *opline = EX(opline);
        !          3022:        zend_free_op free_op2;
        !          3023: 
        !          3024:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          3025:                &opline->op1.u.constant,
        !          3026:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3027: 
        !          3028:        zval_dtor(free_op2.var);
        !          3029:        ZEND_VM_NEXT_OPCODE();
        !          3030: }
        !          3031: 
        !          3032: static int ZEND_FASTCALL  ZEND_MUL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3033: {
        !          3034:        zend_op *opline = EX(opline);
        !          3035:        zend_free_op free_op2;
        !          3036: 
        !          3037:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          3038:                &opline->op1.u.constant,
        !          3039:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3040: 
        !          3041:        zval_dtor(free_op2.var);
        !          3042:        ZEND_VM_NEXT_OPCODE();
        !          3043: }
        !          3044: 
        !          3045: static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3046: {
        !          3047:        zend_op *opline = EX(opline);
        !          3048:        zend_free_op free_op2;
        !          3049: 
        !          3050:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          3051:                &opline->op1.u.constant,
        !          3052:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3053: 
        !          3054:        zval_dtor(free_op2.var);
        !          3055:        ZEND_VM_NEXT_OPCODE();
        !          3056: }
        !          3057: 
        !          3058: static int ZEND_FASTCALL  ZEND_MOD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3059: {
        !          3060:        zend_op *opline = EX(opline);
        !          3061:        zend_free_op free_op2;
        !          3062: 
        !          3063:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          3064:                &opline->op1.u.constant,
        !          3065:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3066: 
        !          3067:        zval_dtor(free_op2.var);
        !          3068:        ZEND_VM_NEXT_OPCODE();
        !          3069: }
        !          3070: 
        !          3071: static int ZEND_FASTCALL  ZEND_SL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3072: {
        !          3073:        zend_op *opline = EX(opline);
        !          3074:        zend_free_op free_op2;
        !          3075: 
        !          3076:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          3077:                &opline->op1.u.constant,
        !          3078:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3079: 
        !          3080:        zval_dtor(free_op2.var);
        !          3081:        ZEND_VM_NEXT_OPCODE();
        !          3082: }
        !          3083: 
        !          3084: static int ZEND_FASTCALL  ZEND_SR_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3085: {
        !          3086:        zend_op *opline = EX(opline);
        !          3087:        zend_free_op free_op2;
        !          3088: 
        !          3089:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          3090:                &opline->op1.u.constant,
        !          3091:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3092: 
        !          3093:        zval_dtor(free_op2.var);
        !          3094:        ZEND_VM_NEXT_OPCODE();
        !          3095: }
        !          3096: 
        !          3097: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3098: {
        !          3099:        zend_op *opline = EX(opline);
        !          3100:        zend_free_op free_op2;
        !          3101: 
        !          3102:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          3103:                &opline->op1.u.constant,
        !          3104:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3105: 
        !          3106:        zval_dtor(free_op2.var);
        !          3107:        ZEND_VM_NEXT_OPCODE();
        !          3108: }
        !          3109: 
        !          3110: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3111: {
        !          3112:        zend_op *opline = EX(opline);
        !          3113:        zend_free_op free_op2;
        !          3114: 
        !          3115:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          3116:                &opline->op1.u.constant,
        !          3117:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3118: 
        !          3119:        zval_dtor(free_op2.var);
        !          3120:        ZEND_VM_NEXT_OPCODE();
        !          3121: }
        !          3122: 
        !          3123: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3124: {
        !          3125:        zend_op *opline = EX(opline);
        !          3126:        zend_free_op free_op2;
        !          3127:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3128: 
        !          3129:        is_identical_function(result,
        !          3130:                &opline->op1.u.constant,
        !          3131:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3132:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          3133: 
        !          3134:        zval_dtor(free_op2.var);
        !          3135:        ZEND_VM_NEXT_OPCODE();
        !          3136: }
        !          3137: 
        !          3138: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3139: {
        !          3140:        zend_op *opline = EX(opline);
        !          3141:        zend_free_op free_op2;
        !          3142:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3143: 
        !          3144:        compare_function(result,
        !          3145:                &opline->op1.u.constant,
        !          3146:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3147:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          3148: 
        !          3149:        zval_dtor(free_op2.var);
        !          3150:        ZEND_VM_NEXT_OPCODE();
        !          3151: }
        !          3152: 
        !          3153: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3154: {
        !          3155:        zend_op *opline = EX(opline);
        !          3156:        zend_free_op free_op2;
        !          3157:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3158: 
        !          3159:        compare_function(result,
        !          3160:                &opline->op1.u.constant,
        !          3161:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3162:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          3163: 
        !          3164:        zval_dtor(free_op2.var);
        !          3165:        ZEND_VM_NEXT_OPCODE();
        !          3166: }
        !          3167: 
        !          3168: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3169: {
        !          3170:        zend_op *opline = EX(opline);
        !          3171:        zend_free_op free_op2;
        !          3172:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3173: 
        !          3174:        compare_function(result,
        !          3175:                &opline->op1.u.constant,
        !          3176:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3177:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          3178: 
        !          3179:        zval_dtor(free_op2.var);
        !          3180:        ZEND_VM_NEXT_OPCODE();
        !          3181: }
        !          3182: 
        !          3183: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3184: {
        !          3185:        zend_op *opline = EX(opline);
        !          3186:        zend_free_op free_op2;
        !          3187:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3188: 
        !          3189:        compare_function(result,
        !          3190:                &opline->op1.u.constant,
        !          3191:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3192:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          3193: 
        !          3194:        zval_dtor(free_op2.var);
        !          3195:        ZEND_VM_NEXT_OPCODE();
        !          3196: }
        !          3197: 
        !          3198: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3199: {
        !          3200:        zend_op *opline = EX(opline);
        !          3201:        zend_free_op free_op2;
        !          3202: 
        !          3203:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          3204:                &opline->op1.u.constant,
        !          3205:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3206: 
        !          3207:        zval_dtor(free_op2.var);
        !          3208:        ZEND_VM_NEXT_OPCODE();
        !          3209: }
        !          3210: 
        !          3211: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3212: {
        !          3213:        zend_op *opline = EX(opline);
        !          3214:        zend_free_op free_op2;
        !          3215: 
        !          3216:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          3217:                &opline->op1.u.constant,
        !          3218:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3219: 
        !          3220:        zval_dtor(free_op2.var);
        !          3221:        ZEND_VM_NEXT_OPCODE();
        !          3222: }
        !          3223: 
        !          3224: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3225: {
        !          3226:        zend_op *opline = EX(opline);
        !          3227:        zend_free_op free_op2;
        !          3228: 
        !          3229:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          3230:                &opline->op1.u.constant,
        !          3231:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3232: 
        !          3233:        zval_dtor(free_op2.var);
        !          3234:        ZEND_VM_NEXT_OPCODE();
        !          3235: }
        !          3236: 
        !          3237: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3238: {
        !          3239:        zend_op *opline = EX(opline);
        !          3240:        zend_free_op free_op2;
        !          3241: 
        !          3242:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          3243:                &opline->op1.u.constant,
        !          3244:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3245: 
        !          3246:        zval_dtor(free_op2.var);
        !          3247:        ZEND_VM_NEXT_OPCODE();
        !          3248: }
        !          3249: 
        !          3250: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3251: {
        !          3252:        zend_op *opline = EX(opline);
        !          3253:        zval *function_name;
        !          3254:        zend_class_entry *ce;
        !          3255: 
        !          3256:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          3257: 
        !          3258:        if (IS_CONST == IS_CONST) {
        !          3259:                /* no function found. try a static method in class */
        !          3260:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          3261:                if (!ce) {
        !          3262:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          3263:                }
        !          3264:                EX(called_scope) = ce;
        !          3265:        } else {
        !          3266:                ce = EX_T(opline->op1.u.var).class_entry;
        !          3267: 
        !          3268:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          3269:                        EX(called_scope) = EG(called_scope);
        !          3270:                } else {
        !          3271:                        EX(called_scope) = ce;
        !          3272:                }
        !          3273:        }
        !          3274:        if(IS_TMP_VAR != IS_UNUSED) {
        !          3275:                char *function_name_strval = NULL;
        !          3276:                int function_name_strlen = 0;
        !          3277:                zend_free_op free_op2;
        !          3278: 
        !          3279:                if (IS_TMP_VAR == IS_CONST) {
        !          3280:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          3281:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          3282:                } else {
        !          3283:                        function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          3284: 
        !          3285:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          3286:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          3287:                        } else {
        !          3288:                                function_name_strval = Z_STRVAL_P(function_name);
        !          3289:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          3290:                        }
        !          3291:                }
        !          3292: 
        !          3293:                if (function_name_strval) {
        !          3294:                        if (ce->get_static_method) {
        !          3295:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          3296:                        } else {
        !          3297:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          3298:                        }
        !          3299:                        if (!EX(fbc)) {
        !          3300:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          3301:                        }
        !          3302:                }
        !          3303: 
        !          3304:                if (IS_TMP_VAR != IS_CONST) {
        !          3305:                        zval_dtor(free_op2.var);
        !          3306:                }
        !          3307:        } else {
        !          3308:                if(!ce->constructor) {
        !          3309:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          3310:                }
        !          3311:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          3312:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          3313:                }
        !          3314:                EX(fbc) = ce->constructor;
        !          3315:        }
        !          3316: 
        !          3317:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          3318:                EX(object) = NULL;
        !          3319:        } else {
        !          3320:                if (EG(This) &&
        !          3321:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          3322:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          3323:                    /* We are calling method of the other (incompatible) class,
        !          3324:                       but passing $this. This is done for compatibility with php-4. */
        !          3325:                        int severity;
        !          3326:                        char *verb;
        !          3327:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          3328:                                severity = E_STRICT;
        !          3329:                                verb = "should not";
        !          3330:                        } else {
        !          3331:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          3332:                                severity = E_ERROR;
        !          3333:                                verb = "cannot";
        !          3334:                        }
        !          3335:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          3336: 
        !          3337:                }
        !          3338:                if ((EX(object) = EG(This))) {
        !          3339:                        Z_ADDREF_P(EX(object));
        !          3340:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          3341:                }
        !          3342:        }
        !          3343: 
        !          3344:        ZEND_VM_NEXT_OPCODE();
        !          3345: }
        !          3346: 
        !          3347: static int ZEND_FASTCALL  ZEND_CASE_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3348: {
        !          3349:        zend_op *opline = EX(opline);
        !          3350:        int switch_expr_is_overloaded=0;
        !          3351:        zend_free_op free_op2;
        !          3352: 
        !          3353:        if (IS_CONST==IS_VAR) {
        !          3354:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          3355:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          3356:                } else {
        !          3357:                        switch_expr_is_overloaded = 1;
        !          3358:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          3359:                }
        !          3360:        }
        !          3361:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          3362:                                 &opline->op1.u.constant,
        !          3363:                                 _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3364: 
        !          3365:        zval_dtor(free_op2.var);
        !          3366:        if (switch_expr_is_overloaded) {
        !          3367:                /* We only free op1 if this is a string offset,
        !          3368:                 * Since if it is a TMP_VAR, it'll be reused by
        !          3369:                 * other CASE opcodes (whereas string offsets
        !          3370:                 * are allocated at each get_zval_ptr())
        !          3371:                 */
        !          3372: 
        !          3373:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          3374:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          3375:        }
        !          3376:        ZEND_VM_NEXT_OPCODE();
        !          3377: }
        !          3378: 
        !          3379: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3380: {
        !          3381:        zend_op *opline = EX(opline);
        !          3382:        zend_free_op free_op2;
        !          3383:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          3384:        zval *expr_ptr;
        !          3385:        zval *offset=_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          3386: 
        !          3387: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          3388:        zval **expr_ptr_ptr = NULL;
        !          3389: 
        !          3390:        if (opline->extended_value) {
        !          3391:                expr_ptr_ptr=NULL;
        !          3392:                expr_ptr = *expr_ptr_ptr;
        !          3393:        } else {
        !          3394:                expr_ptr=&opline->op1.u.constant;
        !          3395:        }
        !          3396: #else
        !          3397:        expr_ptr=&opline->op1.u.constant;
        !          3398: #endif
        !          3399: 
        !          3400:        if (0) { /* temporary variable */
        !          3401:                zval *new_expr;
        !          3402: 
        !          3403:                ALLOC_ZVAL(new_expr);
        !          3404:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          3405:                expr_ptr = new_expr;
        !          3406:        } else {
        !          3407: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          3408:                if (opline->extended_value) {
        !          3409:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          3410:                        expr_ptr = *expr_ptr_ptr;
        !          3411:                        Z_ADDREF_P(expr_ptr);
        !          3412:                } else
        !          3413: #endif
        !          3414:                if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          3415:                        zval *new_expr;
        !          3416: 
        !          3417:                        ALLOC_ZVAL(new_expr);
        !          3418:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          3419:                        expr_ptr = new_expr;
        !          3420:                        zendi_zval_copy_ctor(*expr_ptr);
        !          3421:                } else {
        !          3422:                        Z_ADDREF_P(expr_ptr);
        !          3423:                }
        !          3424:        }
        !          3425:        if (offset) {
        !          3426:                switch (Z_TYPE_P(offset)) {
        !          3427:                        case IS_DOUBLE:
        !          3428:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          3429:                                break;
        !          3430:                        case IS_LONG:
        !          3431:                        case IS_BOOL:
        !          3432:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          3433:                                break;
        !          3434:                        case IS_STRING:
        !          3435:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          3436:                                break;
        !          3437:                        case IS_NULL:
        !          3438:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          3439:                                break;
        !          3440:                        default:
        !          3441:                                zend_error(E_WARNING, "Illegal offset type");
        !          3442:                                zval_ptr_dtor(&expr_ptr);
        !          3443:                                /* do nothing */
        !          3444:                                break;
        !          3445:                }
        !          3446:                zval_dtor(free_op2.var);
        !          3447:        } else {
        !          3448:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          3449:        }
        !          3450:        if (opline->extended_value) {
        !          3451: 
        !          3452:        } else {
        !          3453: 
        !          3454:        }
        !          3455:        ZEND_VM_NEXT_OPCODE();
        !          3456: }
        !          3457: 
        !          3458: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3459: {
        !          3460:        zend_op *opline = EX(opline);
        !          3461: 
        !          3462:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          3463:        if (IS_CONST == IS_UNUSED) {
        !          3464:                ZEND_VM_NEXT_OPCODE();
        !          3465: #if 0 || IS_CONST != IS_UNUSED
        !          3466:        } else {
        !          3467:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          3468: #endif
        !          3469:        }
        !          3470: }
        !          3471: 
        !          3472: static int ZEND_FASTCALL  ZEND_ADD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3473: {
        !          3474:        zend_op *opline = EX(opline);
        !          3475:        zend_free_op free_op2;
        !          3476: 
        !          3477:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          3478:                &opline->op1.u.constant,
        !          3479:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3480: 
        !          3481:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3482:        ZEND_VM_NEXT_OPCODE();
        !          3483: }
        !          3484: 
        !          3485: static int ZEND_FASTCALL  ZEND_SUB_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3486: {
        !          3487:        zend_op *opline = EX(opline);
        !          3488:        zend_free_op free_op2;
        !          3489: 
        !          3490:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          3491:                &opline->op1.u.constant,
        !          3492:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3493: 
        !          3494:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3495:        ZEND_VM_NEXT_OPCODE();
        !          3496: }
        !          3497: 
        !          3498: static int ZEND_FASTCALL  ZEND_MUL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3499: {
        !          3500:        zend_op *opline = EX(opline);
        !          3501:        zend_free_op free_op2;
        !          3502: 
        !          3503:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          3504:                &opline->op1.u.constant,
        !          3505:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3506: 
        !          3507:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3508:        ZEND_VM_NEXT_OPCODE();
        !          3509: }
        !          3510: 
        !          3511: static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3512: {
        !          3513:        zend_op *opline = EX(opline);
        !          3514:        zend_free_op free_op2;
        !          3515: 
        !          3516:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          3517:                &opline->op1.u.constant,
        !          3518:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3519: 
        !          3520:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3521:        ZEND_VM_NEXT_OPCODE();
        !          3522: }
        !          3523: 
        !          3524: static int ZEND_FASTCALL  ZEND_MOD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3525: {
        !          3526:        zend_op *opline = EX(opline);
        !          3527:        zend_free_op free_op2;
        !          3528: 
        !          3529:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          3530:                &opline->op1.u.constant,
        !          3531:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3532: 
        !          3533:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3534:        ZEND_VM_NEXT_OPCODE();
        !          3535: }
        !          3536: 
        !          3537: static int ZEND_FASTCALL  ZEND_SL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3538: {
        !          3539:        zend_op *opline = EX(opline);
        !          3540:        zend_free_op free_op2;
        !          3541: 
        !          3542:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          3543:                &opline->op1.u.constant,
        !          3544:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3545: 
        !          3546:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3547:        ZEND_VM_NEXT_OPCODE();
        !          3548: }
        !          3549: 
        !          3550: static int ZEND_FASTCALL  ZEND_SR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3551: {
        !          3552:        zend_op *opline = EX(opline);
        !          3553:        zend_free_op free_op2;
        !          3554: 
        !          3555:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          3556:                &opline->op1.u.constant,
        !          3557:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3558: 
        !          3559:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3560:        ZEND_VM_NEXT_OPCODE();
        !          3561: }
        !          3562: 
        !          3563: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3564: {
        !          3565:        zend_op *opline = EX(opline);
        !          3566:        zend_free_op free_op2;
        !          3567: 
        !          3568:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          3569:                &opline->op1.u.constant,
        !          3570:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3571: 
        !          3572:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3573:        ZEND_VM_NEXT_OPCODE();
        !          3574: }
        !          3575: 
        !          3576: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3577: {
        !          3578:        zend_op *opline = EX(opline);
        !          3579:        zend_free_op free_op2;
        !          3580: 
        !          3581:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          3582:                &opline->op1.u.constant,
        !          3583:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3584: 
        !          3585:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3586:        ZEND_VM_NEXT_OPCODE();
        !          3587: }
        !          3588: 
        !          3589: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3590: {
        !          3591:        zend_op *opline = EX(opline);
        !          3592:        zend_free_op free_op2;
        !          3593:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3594: 
        !          3595:        is_identical_function(result,
        !          3596:                &opline->op1.u.constant,
        !          3597:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3598:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          3599: 
        !          3600:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3601:        ZEND_VM_NEXT_OPCODE();
        !          3602: }
        !          3603: 
        !          3604: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3605: {
        !          3606:        zend_op *opline = EX(opline);
        !          3607:        zend_free_op free_op2;
        !          3608:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3609: 
        !          3610:        compare_function(result,
        !          3611:                &opline->op1.u.constant,
        !          3612:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3613:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          3614: 
        !          3615:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3616:        ZEND_VM_NEXT_OPCODE();
        !          3617: }
        !          3618: 
        !          3619: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3620: {
        !          3621:        zend_op *opline = EX(opline);
        !          3622:        zend_free_op free_op2;
        !          3623:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3624: 
        !          3625:        compare_function(result,
        !          3626:                &opline->op1.u.constant,
        !          3627:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3628:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          3629: 
        !          3630:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3631:        ZEND_VM_NEXT_OPCODE();
        !          3632: }
        !          3633: 
        !          3634: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3635: {
        !          3636:        zend_op *opline = EX(opline);
        !          3637:        zend_free_op free_op2;
        !          3638:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3639: 
        !          3640:        compare_function(result,
        !          3641:                &opline->op1.u.constant,
        !          3642:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3643:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          3644: 
        !          3645:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3646:        ZEND_VM_NEXT_OPCODE();
        !          3647: }
        !          3648: 
        !          3649: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3650: {
        !          3651:        zend_op *opline = EX(opline);
        !          3652:        zend_free_op free_op2;
        !          3653:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          3654: 
        !          3655:        compare_function(result,
        !          3656:                &opline->op1.u.constant,
        !          3657:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3658:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          3659: 
        !          3660:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3661:        ZEND_VM_NEXT_OPCODE();
        !          3662: }
        !          3663: 
        !          3664: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3665: {
        !          3666:        zend_op *opline = EX(opline);
        !          3667:        zend_free_op free_op2;
        !          3668: 
        !          3669:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          3670:                &opline->op1.u.constant,
        !          3671:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3672: 
        !          3673:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3674:        ZEND_VM_NEXT_OPCODE();
        !          3675: }
        !          3676: 
        !          3677: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3678: {
        !          3679:        zend_op *opline = EX(opline);
        !          3680:        zend_free_op free_op2;
        !          3681: 
        !          3682:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          3683:                &opline->op1.u.constant,
        !          3684:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3685: 
        !          3686:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3687:        ZEND_VM_NEXT_OPCODE();
        !          3688: }
        !          3689: 
        !          3690: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3691: {
        !          3692:        zend_op *opline = EX(opline);
        !          3693:        zend_free_op free_op2;
        !          3694: 
        !          3695:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          3696:                &opline->op1.u.constant,
        !          3697:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3698: 
        !          3699:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3700:        ZEND_VM_NEXT_OPCODE();
        !          3701: }
        !          3702: 
        !          3703: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3704: {
        !          3705:        zend_op *opline = EX(opline);
        !          3706:        zend_free_op free_op2;
        !          3707: 
        !          3708:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          3709:                &opline->op1.u.constant,
        !          3710:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3711: 
        !          3712:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3713:        ZEND_VM_NEXT_OPCODE();
        !          3714: }
        !          3715: 
        !          3716: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3717: {
        !          3718:        zend_op *opline = EX(opline);
        !          3719:        zval *function_name;
        !          3720:        zend_class_entry *ce;
        !          3721: 
        !          3722:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          3723: 
        !          3724:        if (IS_CONST == IS_CONST) {
        !          3725:                /* no function found. try a static method in class */
        !          3726:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          3727:                if (!ce) {
        !          3728:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          3729:                }
        !          3730:                EX(called_scope) = ce;
        !          3731:        } else {
        !          3732:                ce = EX_T(opline->op1.u.var).class_entry;
        !          3733: 
        !          3734:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          3735:                        EX(called_scope) = EG(called_scope);
        !          3736:                } else {
        !          3737:                        EX(called_scope) = ce;
        !          3738:                }
        !          3739:        }
        !          3740:        if(IS_VAR != IS_UNUSED) {
        !          3741:                char *function_name_strval = NULL;
        !          3742:                int function_name_strlen = 0;
        !          3743:                zend_free_op free_op2;
        !          3744: 
        !          3745:                if (IS_VAR == IS_CONST) {
        !          3746:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          3747:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          3748:                } else {
        !          3749:                        function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          3750: 
        !          3751:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          3752:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          3753:                        } else {
        !          3754:                                function_name_strval = Z_STRVAL_P(function_name);
        !          3755:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          3756:                        }
        !          3757:                }
        !          3758: 
        !          3759:                if (function_name_strval) {
        !          3760:                        if (ce->get_static_method) {
        !          3761:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          3762:                        } else {
        !          3763:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          3764:                        }
        !          3765:                        if (!EX(fbc)) {
        !          3766:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          3767:                        }
        !          3768:                }
        !          3769: 
        !          3770:                if (IS_VAR != IS_CONST) {
        !          3771:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3772:                }
        !          3773:        } else {
        !          3774:                if(!ce->constructor) {
        !          3775:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          3776:                }
        !          3777:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          3778:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          3779:                }
        !          3780:                EX(fbc) = ce->constructor;
        !          3781:        }
        !          3782: 
        !          3783:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          3784:                EX(object) = NULL;
        !          3785:        } else {
        !          3786:                if (EG(This) &&
        !          3787:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          3788:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          3789:                    /* We are calling method of the other (incompatible) class,
        !          3790:                       but passing $this. This is done for compatibility with php-4. */
        !          3791:                        int severity;
        !          3792:                        char *verb;
        !          3793:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          3794:                                severity = E_STRICT;
        !          3795:                                verb = "should not";
        !          3796:                        } else {
        !          3797:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          3798:                                severity = E_ERROR;
        !          3799:                                verb = "cannot";
        !          3800:                        }
        !          3801:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          3802: 
        !          3803:                }
        !          3804:                if ((EX(object) = EG(This))) {
        !          3805:                        Z_ADDREF_P(EX(object));
        !          3806:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          3807:                }
        !          3808:        }
        !          3809: 
        !          3810:        ZEND_VM_NEXT_OPCODE();
        !          3811: }
        !          3812: 
        !          3813: static int ZEND_FASTCALL  ZEND_CASE_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3814: {
        !          3815:        zend_op *opline = EX(opline);
        !          3816:        int switch_expr_is_overloaded=0;
        !          3817:        zend_free_op free_op2;
        !          3818: 
        !          3819:        if (IS_CONST==IS_VAR) {
        !          3820:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          3821:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          3822:                } else {
        !          3823:                        switch_expr_is_overloaded = 1;
        !          3824:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          3825:                }
        !          3826:        }
        !          3827:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          3828:                                 &opline->op1.u.constant,
        !          3829:                                 _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          3830: 
        !          3831:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3832:        if (switch_expr_is_overloaded) {
        !          3833:                /* We only free op1 if this is a string offset,
        !          3834:                 * Since if it is a TMP_VAR, it'll be reused by
        !          3835:                 * other CASE opcodes (whereas string offsets
        !          3836:                 * are allocated at each get_zval_ptr())
        !          3837:                 */
        !          3838: 
        !          3839:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          3840:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          3841:        }
        !          3842:        ZEND_VM_NEXT_OPCODE();
        !          3843: }
        !          3844: 
        !          3845: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3846: {
        !          3847:        zend_op *opline = EX(opline);
        !          3848:        zend_free_op free_op2;
        !          3849:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          3850:        zval *expr_ptr;
        !          3851:        zval *offset=_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          3852: 
        !          3853: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          3854:        zval **expr_ptr_ptr = NULL;
        !          3855: 
        !          3856:        if (opline->extended_value) {
        !          3857:                expr_ptr_ptr=NULL;
        !          3858:                expr_ptr = *expr_ptr_ptr;
        !          3859:        } else {
        !          3860:                expr_ptr=&opline->op1.u.constant;
        !          3861:        }
        !          3862: #else
        !          3863:        expr_ptr=&opline->op1.u.constant;
        !          3864: #endif
        !          3865: 
        !          3866:        if (0) { /* temporary variable */
        !          3867:                zval *new_expr;
        !          3868: 
        !          3869:                ALLOC_ZVAL(new_expr);
        !          3870:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          3871:                expr_ptr = new_expr;
        !          3872:        } else {
        !          3873: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          3874:                if (opline->extended_value) {
        !          3875:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          3876:                        expr_ptr = *expr_ptr_ptr;
        !          3877:                        Z_ADDREF_P(expr_ptr);
        !          3878:                } else
        !          3879: #endif
        !          3880:                if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          3881:                        zval *new_expr;
        !          3882: 
        !          3883:                        ALLOC_ZVAL(new_expr);
        !          3884:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          3885:                        expr_ptr = new_expr;
        !          3886:                        zendi_zval_copy_ctor(*expr_ptr);
        !          3887:                } else {
        !          3888:                        Z_ADDREF_P(expr_ptr);
        !          3889:                }
        !          3890:        }
        !          3891:        if (offset) {
        !          3892:                switch (Z_TYPE_P(offset)) {
        !          3893:                        case IS_DOUBLE:
        !          3894:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          3895:                                break;
        !          3896:                        case IS_LONG:
        !          3897:                        case IS_BOOL:
        !          3898:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          3899:                                break;
        !          3900:                        case IS_STRING:
        !          3901:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          3902:                                break;
        !          3903:                        case IS_NULL:
        !          3904:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          3905:                                break;
        !          3906:                        default:
        !          3907:                                zend_error(E_WARNING, "Illegal offset type");
        !          3908:                                zval_ptr_dtor(&expr_ptr);
        !          3909:                                /* do nothing */
        !          3910:                                break;
        !          3911:                }
        !          3912:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          3913:        } else {
        !          3914:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          3915:        }
        !          3916:        if (opline->extended_value) {
        !          3917: 
        !          3918:        } else {
        !          3919: 
        !          3920:        }
        !          3921:        ZEND_VM_NEXT_OPCODE();
        !          3922: }
        !          3923: 
        !          3924: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3925: {
        !          3926:        zend_op *opline = EX(opline);
        !          3927: 
        !          3928:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          3929:        if (IS_CONST == IS_UNUSED) {
        !          3930:                ZEND_VM_NEXT_OPCODE();
        !          3931: #if 0 || IS_CONST != IS_UNUSED
        !          3932:        } else {
        !          3933:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          3934: #endif
        !          3935:        }
        !          3936: }
        !          3937: 
        !          3938: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          3939: {
        !          3940:        zend_op *opline = EX(opline);
        !          3941:        zval *function_name;
        !          3942:        zend_class_entry *ce;
        !          3943: 
        !          3944:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          3945: 
        !          3946:        if (IS_CONST == IS_CONST) {
        !          3947:                /* no function found. try a static method in class */
        !          3948:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          3949:                if (!ce) {
        !          3950:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          3951:                }
        !          3952:                EX(called_scope) = ce;
        !          3953:        } else {
        !          3954:                ce = EX_T(opline->op1.u.var).class_entry;
        !          3955: 
        !          3956:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          3957:                        EX(called_scope) = EG(called_scope);
        !          3958:                } else {
        !          3959:                        EX(called_scope) = ce;
        !          3960:                }
        !          3961:        }
        !          3962:        if(IS_UNUSED != IS_UNUSED) {
        !          3963:                char *function_name_strval = NULL;
        !          3964:                int function_name_strlen = 0;
        !          3965: 
        !          3966: 
        !          3967:                if (IS_UNUSED == IS_CONST) {
        !          3968:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          3969:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          3970:                } else {
        !          3971:                        function_name = NULL;
        !          3972: 
        !          3973:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          3974:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          3975:                        } else {
        !          3976:                                function_name_strval = Z_STRVAL_P(function_name);
        !          3977:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          3978:                        }
        !          3979:                }
        !          3980: 
        !          3981:                if (function_name_strval) {
        !          3982:                        if (ce->get_static_method) {
        !          3983:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          3984:                        } else {
        !          3985:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          3986:                        }
        !          3987:                        if (!EX(fbc)) {
        !          3988:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          3989:                        }
        !          3990:                }
        !          3991: 
        !          3992:                if (IS_UNUSED != IS_CONST) {
        !          3993: 
        !          3994:                }
        !          3995:        } else {
        !          3996:                if(!ce->constructor) {
        !          3997:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          3998:                }
        !          3999:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          4000:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          4001:                }
        !          4002:                EX(fbc) = ce->constructor;
        !          4003:        }
        !          4004: 
        !          4005:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          4006:                EX(object) = NULL;
        !          4007:        } else {
        !          4008:                if (EG(This) &&
        !          4009:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          4010:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          4011:                    /* We are calling method of the other (incompatible) class,
        !          4012:                       but passing $this. This is done for compatibility with php-4. */
        !          4013:                        int severity;
        !          4014:                        char *verb;
        !          4015:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          4016:                                severity = E_STRICT;
        !          4017:                                verb = "should not";
        !          4018:                        } else {
        !          4019:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          4020:                                severity = E_ERROR;
        !          4021:                                verb = "cannot";
        !          4022:                        }
        !          4023:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          4024: 
        !          4025:                }
        !          4026:                if ((EX(object) = EG(This))) {
        !          4027:                        Z_ADDREF_P(EX(object));
        !          4028:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          4029:                }
        !          4030:        }
        !          4031: 
        !          4032:        ZEND_VM_NEXT_OPCODE();
        !          4033: }
        !          4034: 
        !          4035: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4036: {
        !          4037:        zend_op *opline = EX(opline);
        !          4038: 
        !          4039:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          4040:        zval *expr_ptr;
        !          4041:        zval *offset=NULL;
        !          4042: 
        !          4043: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          4044:        zval **expr_ptr_ptr = NULL;
        !          4045: 
        !          4046:        if (opline->extended_value) {
        !          4047:                expr_ptr_ptr=NULL;
        !          4048:                expr_ptr = *expr_ptr_ptr;
        !          4049:        } else {
        !          4050:                expr_ptr=&opline->op1.u.constant;
        !          4051:        }
        !          4052: #else
        !          4053:        expr_ptr=&opline->op1.u.constant;
        !          4054: #endif
        !          4055: 
        !          4056:        if (0) { /* temporary variable */
        !          4057:                zval *new_expr;
        !          4058: 
        !          4059:                ALLOC_ZVAL(new_expr);
        !          4060:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          4061:                expr_ptr = new_expr;
        !          4062:        } else {
        !          4063: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          4064:                if (opline->extended_value) {
        !          4065:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          4066:                        expr_ptr = *expr_ptr_ptr;
        !          4067:                        Z_ADDREF_P(expr_ptr);
        !          4068:                } else
        !          4069: #endif
        !          4070:                if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          4071:                        zval *new_expr;
        !          4072: 
        !          4073:                        ALLOC_ZVAL(new_expr);
        !          4074:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          4075:                        expr_ptr = new_expr;
        !          4076:                        zendi_zval_copy_ctor(*expr_ptr);
        !          4077:                } else {
        !          4078:                        Z_ADDREF_P(expr_ptr);
        !          4079:                }
        !          4080:        }
        !          4081:        if (offset) {
        !          4082:                switch (Z_TYPE_P(offset)) {
        !          4083:                        case IS_DOUBLE:
        !          4084:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          4085:                                break;
        !          4086:                        case IS_LONG:
        !          4087:                        case IS_BOOL:
        !          4088:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          4089:                                break;
        !          4090:                        case IS_STRING:
        !          4091:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          4092:                                break;
        !          4093:                        case IS_NULL:
        !          4094:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          4095:                                break;
        !          4096:                        default:
        !          4097:                                zend_error(E_WARNING, "Illegal offset type");
        !          4098:                                zval_ptr_dtor(&expr_ptr);
        !          4099:                                /* do nothing */
        !          4100:                                break;
        !          4101:                }
        !          4102: 
        !          4103:        } else {
        !          4104:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          4105:        }
        !          4106:        if (opline->extended_value) {
        !          4107: 
        !          4108:        } else {
        !          4109: 
        !          4110:        }
        !          4111:        ZEND_VM_NEXT_OPCODE();
        !          4112: }
        !          4113: 
        !          4114: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4115: {
        !          4116:        zend_op *opline = EX(opline);
        !          4117: 
        !          4118:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          4119:        if (IS_CONST == IS_UNUSED) {
        !          4120:                ZEND_VM_NEXT_OPCODE();
        !          4121: #if 0 || IS_CONST != IS_UNUSED
        !          4122:        } else {
        !          4123:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4124: #endif
        !          4125:        }
        !          4126: }
        !          4127: 
        !          4128: static int ZEND_FASTCALL  ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4129: {
        !          4130:        zend_op *opline = EX(opline);
        !          4131: 
        !          4132: 
        !          4133:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          4134:                &opline->op1.u.constant,
        !          4135:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4136: 
        !          4137: 
        !          4138:        ZEND_VM_NEXT_OPCODE();
        !          4139: }
        !          4140: 
        !          4141: static int ZEND_FASTCALL  ZEND_SUB_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4142: {
        !          4143:        zend_op *opline = EX(opline);
        !          4144: 
        !          4145: 
        !          4146:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          4147:                &opline->op1.u.constant,
        !          4148:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4149: 
        !          4150: 
        !          4151:        ZEND_VM_NEXT_OPCODE();
        !          4152: }
        !          4153: 
        !          4154: static int ZEND_FASTCALL  ZEND_MUL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4155: {
        !          4156:        zend_op *opline = EX(opline);
        !          4157: 
        !          4158: 
        !          4159:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          4160:                &opline->op1.u.constant,
        !          4161:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4162: 
        !          4163: 
        !          4164:        ZEND_VM_NEXT_OPCODE();
        !          4165: }
        !          4166: 
        !          4167: static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4168: {
        !          4169:        zend_op *opline = EX(opline);
        !          4170: 
        !          4171: 
        !          4172:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          4173:                &opline->op1.u.constant,
        !          4174:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4175: 
        !          4176: 
        !          4177:        ZEND_VM_NEXT_OPCODE();
        !          4178: }
        !          4179: 
        !          4180: static int ZEND_FASTCALL  ZEND_MOD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4181: {
        !          4182:        zend_op *opline = EX(opline);
        !          4183: 
        !          4184: 
        !          4185:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          4186:                &opline->op1.u.constant,
        !          4187:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4188: 
        !          4189: 
        !          4190:        ZEND_VM_NEXT_OPCODE();
        !          4191: }
        !          4192: 
        !          4193: static int ZEND_FASTCALL  ZEND_SL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4194: {
        !          4195:        zend_op *opline = EX(opline);
        !          4196: 
        !          4197: 
        !          4198:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          4199:                &opline->op1.u.constant,
        !          4200:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4201: 
        !          4202: 
        !          4203:        ZEND_VM_NEXT_OPCODE();
        !          4204: }
        !          4205: 
        !          4206: static int ZEND_FASTCALL  ZEND_SR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4207: {
        !          4208:        zend_op *opline = EX(opline);
        !          4209: 
        !          4210: 
        !          4211:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          4212:                &opline->op1.u.constant,
        !          4213:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4214: 
        !          4215: 
        !          4216:        ZEND_VM_NEXT_OPCODE();
        !          4217: }
        !          4218: 
        !          4219: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4220: {
        !          4221:        zend_op *opline = EX(opline);
        !          4222: 
        !          4223: 
        !          4224:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          4225:                &opline->op1.u.constant,
        !          4226:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4227: 
        !          4228: 
        !          4229:        ZEND_VM_NEXT_OPCODE();
        !          4230: }
        !          4231: 
        !          4232: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4233: {
        !          4234:        zend_op *opline = EX(opline);
        !          4235: 
        !          4236: 
        !          4237:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          4238:                &opline->op1.u.constant,
        !          4239:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4240: 
        !          4241: 
        !          4242:        ZEND_VM_NEXT_OPCODE();
        !          4243: }
        !          4244: 
        !          4245: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4246: {
        !          4247:        zend_op *opline = EX(opline);
        !          4248: 
        !          4249:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          4250: 
        !          4251:        is_identical_function(result,
        !          4252:                &opline->op1.u.constant,
        !          4253:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4254:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          4255: 
        !          4256: 
        !          4257:        ZEND_VM_NEXT_OPCODE();
        !          4258: }
        !          4259: 
        !          4260: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4261: {
        !          4262:        zend_op *opline = EX(opline);
        !          4263: 
        !          4264:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          4265: 
        !          4266:        compare_function(result,
        !          4267:                &opline->op1.u.constant,
        !          4268:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4269:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          4270: 
        !          4271: 
        !          4272:        ZEND_VM_NEXT_OPCODE();
        !          4273: }
        !          4274: 
        !          4275: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4276: {
        !          4277:        zend_op *opline = EX(opline);
        !          4278: 
        !          4279:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          4280: 
        !          4281:        compare_function(result,
        !          4282:                &opline->op1.u.constant,
        !          4283:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4284:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          4285: 
        !          4286: 
        !          4287:        ZEND_VM_NEXT_OPCODE();
        !          4288: }
        !          4289: 
        !          4290: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4291: {
        !          4292:        zend_op *opline = EX(opline);
        !          4293: 
        !          4294:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          4295: 
        !          4296:        compare_function(result,
        !          4297:                &opline->op1.u.constant,
        !          4298:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4299:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          4300: 
        !          4301: 
        !          4302:        ZEND_VM_NEXT_OPCODE();
        !          4303: }
        !          4304: 
        !          4305: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4306: {
        !          4307:        zend_op *opline = EX(opline);
        !          4308: 
        !          4309:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          4310: 
        !          4311:        compare_function(result,
        !          4312:                &opline->op1.u.constant,
        !          4313:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4314:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          4315: 
        !          4316: 
        !          4317:        ZEND_VM_NEXT_OPCODE();
        !          4318: }
        !          4319: 
        !          4320: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4321: {
        !          4322:        zend_op *opline = EX(opline);
        !          4323: 
        !          4324: 
        !          4325:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          4326:                &opline->op1.u.constant,
        !          4327:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4328: 
        !          4329: 
        !          4330:        ZEND_VM_NEXT_OPCODE();
        !          4331: }
        !          4332: 
        !          4333: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4334: {
        !          4335:        zend_op *opline = EX(opline);
        !          4336: 
        !          4337: 
        !          4338:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          4339:                &opline->op1.u.constant,
        !          4340:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4341: 
        !          4342: 
        !          4343:        ZEND_VM_NEXT_OPCODE();
        !          4344: }
        !          4345: 
        !          4346: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4347: {
        !          4348:        zend_op *opline = EX(opline);
        !          4349: 
        !          4350: 
        !          4351:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          4352:                &opline->op1.u.constant,
        !          4353:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4354: 
        !          4355: 
        !          4356:        ZEND_VM_NEXT_OPCODE();
        !          4357: }
        !          4358: 
        !          4359: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4360: {
        !          4361:        zend_op *opline = EX(opline);
        !          4362: 
        !          4363: 
        !          4364:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          4365:                &opline->op1.u.constant,
        !          4366:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4367: 
        !          4368: 
        !          4369:        ZEND_VM_NEXT_OPCODE();
        !          4370: }
        !          4371: 
        !          4372: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4373: {
        !          4374:        zend_op *opline = EX(opline);
        !          4375:        zval *function_name;
        !          4376:        zend_class_entry *ce;
        !          4377: 
        !          4378:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          4379: 
        !          4380:        if (IS_CONST == IS_CONST) {
        !          4381:                /* no function found. try a static method in class */
        !          4382:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          4383:                if (!ce) {
        !          4384:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          4385:                }
        !          4386:                EX(called_scope) = ce;
        !          4387:        } else {
        !          4388:                ce = EX_T(opline->op1.u.var).class_entry;
        !          4389: 
        !          4390:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          4391:                        EX(called_scope) = EG(called_scope);
        !          4392:                } else {
        !          4393:                        EX(called_scope) = ce;
        !          4394:                }
        !          4395:        }
        !          4396:        if(IS_CV != IS_UNUSED) {
        !          4397:                char *function_name_strval = NULL;
        !          4398:                int function_name_strlen = 0;
        !          4399: 
        !          4400: 
        !          4401:                if (IS_CV == IS_CONST) {
        !          4402:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          4403:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          4404:                } else {
        !          4405:                        function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          4406: 
        !          4407:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          4408:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          4409:                        } else {
        !          4410:                                function_name_strval = Z_STRVAL_P(function_name);
        !          4411:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          4412:                        }
        !          4413:                }
        !          4414: 
        !          4415:                if (function_name_strval) {
        !          4416:                        if (ce->get_static_method) {
        !          4417:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          4418:                        } else {
        !          4419:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          4420:                        }
        !          4421:                        if (!EX(fbc)) {
        !          4422:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          4423:                        }
        !          4424:                }
        !          4425: 
        !          4426:                if (IS_CV != IS_CONST) {
        !          4427: 
        !          4428:                }
        !          4429:        } else {
        !          4430:                if(!ce->constructor) {
        !          4431:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          4432:                }
        !          4433:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          4434:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          4435:                }
        !          4436:                EX(fbc) = ce->constructor;
        !          4437:        }
        !          4438: 
        !          4439:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          4440:                EX(object) = NULL;
        !          4441:        } else {
        !          4442:                if (EG(This) &&
        !          4443:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          4444:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          4445:                    /* We are calling method of the other (incompatible) class,
        !          4446:                       but passing $this. This is done for compatibility with php-4. */
        !          4447:                        int severity;
        !          4448:                        char *verb;
        !          4449:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          4450:                                severity = E_STRICT;
        !          4451:                                verb = "should not";
        !          4452:                        } else {
        !          4453:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          4454:                                severity = E_ERROR;
        !          4455:                                verb = "cannot";
        !          4456:                        }
        !          4457:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          4458: 
        !          4459:                }
        !          4460:                if ((EX(object) = EG(This))) {
        !          4461:                        Z_ADDREF_P(EX(object));
        !          4462:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          4463:                }
        !          4464:        }
        !          4465: 
        !          4466:        ZEND_VM_NEXT_OPCODE();
        !          4467: }
        !          4468: 
        !          4469: static int ZEND_FASTCALL  ZEND_CASE_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4470: {
        !          4471:        zend_op *opline = EX(opline);
        !          4472:        int switch_expr_is_overloaded=0;
        !          4473: 
        !          4474: 
        !          4475:        if (IS_CONST==IS_VAR) {
        !          4476:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          4477:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          4478:                } else {
        !          4479:                        switch_expr_is_overloaded = 1;
        !          4480:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          4481:                }
        !          4482:        }
        !          4483:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          4484:                                 &opline->op1.u.constant,
        !          4485:                                 _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          4486: 
        !          4487:        if (switch_expr_is_overloaded) {
        !          4488:                /* We only free op1 if this is a string offset,
        !          4489:                 * Since if it is a TMP_VAR, it'll be reused by
        !          4490:                 * other CASE opcodes (whereas string offsets
        !          4491:                 * are allocated at each get_zval_ptr())
        !          4492:                 */
        !          4493: 
        !          4494:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          4495:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          4496:        }
        !          4497:        ZEND_VM_NEXT_OPCODE();
        !          4498: }
        !          4499: 
        !          4500: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4501: {
        !          4502:        zend_op *opline = EX(opline);
        !          4503: 
        !          4504:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          4505:        zval *expr_ptr;
        !          4506:        zval *offset=_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          4507: 
        !          4508: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          4509:        zval **expr_ptr_ptr = NULL;
        !          4510: 
        !          4511:        if (opline->extended_value) {
        !          4512:                expr_ptr_ptr=NULL;
        !          4513:                expr_ptr = *expr_ptr_ptr;
        !          4514:        } else {
        !          4515:                expr_ptr=&opline->op1.u.constant;
        !          4516:        }
        !          4517: #else
        !          4518:        expr_ptr=&opline->op1.u.constant;
        !          4519: #endif
        !          4520: 
        !          4521:        if (0) { /* temporary variable */
        !          4522:                zval *new_expr;
        !          4523: 
        !          4524:                ALLOC_ZVAL(new_expr);
        !          4525:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          4526:                expr_ptr = new_expr;
        !          4527:        } else {
        !          4528: #if 0 || IS_CONST == IS_VAR || IS_CONST == IS_CV
        !          4529:                if (opline->extended_value) {
        !          4530:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          4531:                        expr_ptr = *expr_ptr_ptr;
        !          4532:                        Z_ADDREF_P(expr_ptr);
        !          4533:                } else
        !          4534: #endif
        !          4535:                if (IS_CONST == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          4536:                        zval *new_expr;
        !          4537: 
        !          4538:                        ALLOC_ZVAL(new_expr);
        !          4539:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          4540:                        expr_ptr = new_expr;
        !          4541:                        zendi_zval_copy_ctor(*expr_ptr);
        !          4542:                } else {
        !          4543:                        Z_ADDREF_P(expr_ptr);
        !          4544:                }
        !          4545:        }
        !          4546:        if (offset) {
        !          4547:                switch (Z_TYPE_P(offset)) {
        !          4548:                        case IS_DOUBLE:
        !          4549:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          4550:                                break;
        !          4551:                        case IS_LONG:
        !          4552:                        case IS_BOOL:
        !          4553:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          4554:                                break;
        !          4555:                        case IS_STRING:
        !          4556:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          4557:                                break;
        !          4558:                        case IS_NULL:
        !          4559:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          4560:                                break;
        !          4561:                        default:
        !          4562:                                zend_error(E_WARNING, "Illegal offset type");
        !          4563:                                zval_ptr_dtor(&expr_ptr);
        !          4564:                                /* do nothing */
        !          4565:                                break;
        !          4566:                }
        !          4567: 
        !          4568:        } else {
        !          4569:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          4570:        }
        !          4571:        if (opline->extended_value) {
        !          4572: 
        !          4573:        } else {
        !          4574: 
        !          4575:        }
        !          4576:        ZEND_VM_NEXT_OPCODE();
        !          4577: }
        !          4578: 
        !          4579: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4580: {
        !          4581:        zend_op *opline = EX(opline);
        !          4582: 
        !          4583:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          4584:        if (IS_CONST == IS_UNUSED) {
        !          4585:                ZEND_VM_NEXT_OPCODE();
        !          4586: #if 0 || IS_CONST != IS_UNUSED
        !          4587:        } else {
        !          4588:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4589: #endif
        !          4590:        }
        !          4591: }
        !          4592: 
        !          4593: static int ZEND_FASTCALL  ZEND_BW_NOT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4594: {
        !          4595:        zend_op *opline = EX(opline);
        !          4596:        zend_free_op free_op1;
        !          4597: 
        !          4598:        bitwise_not_function(&EX_T(opline->result.u.var).tmp_var,
        !          4599:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC) TSRMLS_CC);
        !          4600:        zval_dtor(free_op1.var);
        !          4601:        ZEND_VM_NEXT_OPCODE();
        !          4602: }
        !          4603: 
        !          4604: static int ZEND_FASTCALL  ZEND_BOOL_NOT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4605: {
        !          4606:        zend_op *opline = EX(opline);
        !          4607:        zend_free_op free_op1;
        !          4608: 
        !          4609:        boolean_not_function(&EX_T(opline->result.u.var).tmp_var,
        !          4610:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC) TSRMLS_CC);
        !          4611:        zval_dtor(free_op1.var);
        !          4612:        ZEND_VM_NEXT_OPCODE();
        !          4613: }
        !          4614: 
        !          4615: static int ZEND_FASTCALL  ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4616: {
        !          4617:        zend_op *opline = EX(opline);
        !          4618:        zend_free_op free_op1;
        !          4619:        zval z_copy;
        !          4620:        zval *z = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          4621: 
        !          4622:        if (IS_TMP_VAR != IS_CONST &&
        !          4623:            Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL) {
        !          4624:            if (IS_TMP_VAR == IS_TMP_VAR) {
        !          4625:                INIT_PZVAL(z);
        !          4626:            }
        !          4627:                if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
        !          4628:                        zend_print_variable(&z_copy);
        !          4629:                        zval_dtor(&z_copy);
        !          4630:                } else {
        !          4631:                        zend_print_variable(z);
        !          4632:                }
        !          4633:        } else {
        !          4634:                zend_print_variable(z);
        !          4635:        }
        !          4636: 
        !          4637:        zval_dtor(free_op1.var);
        !          4638:        ZEND_VM_NEXT_OPCODE();
        !          4639: }
        !          4640: 
        !          4641: static int ZEND_FASTCALL  ZEND_PRINT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4642: {
        !          4643:        zend_op *opline = EX(opline);
        !          4644: 
        !          4645:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 1;
        !          4646:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_LONG;
        !          4647: 
        !          4648:        return ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4649: }
        !          4650: 
        !          4651: static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          4652: {
        !          4653:        zend_op *opline = EX(opline);
        !          4654:        zend_free_op free_op1;
        !          4655:        zval *varname = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          4656:        zval **retval;
        !          4657:        zval tmp_varname;
        !          4658:        HashTable *target_symbol_table;
        !          4659: 
        !          4660:        if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
        !          4661:                tmp_varname = *varname;
        !          4662:                zval_copy_ctor(&tmp_varname);
        !          4663:                convert_to_string(&tmp_varname);
        !          4664:                varname = &tmp_varname;
        !          4665:        }
        !          4666: 
        !          4667:        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          4668:                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
        !          4669:                zval_dtor(free_op1.var);
        !          4670:        } else {
        !          4671:                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
        !          4672: /*
        !          4673:                if (!target_symbol_table) {
        !          4674:                        ZEND_VM_NEXT_OPCODE();
        !          4675:                }
        !          4676: */
        !          4677:                if (zend_hash_find(target_symbol_table, varname->value.str.val, varname->value.str.len+1, (void **) &retval) == FAILURE) {
        !          4678:                        switch (type) {
        !          4679:                                case BP_VAR_R:
        !          4680:                                case BP_VAR_UNSET:
        !          4681:                                        zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
        !          4682:                                        /* break missing intentionally */
        !          4683:                                case BP_VAR_IS:
        !          4684:                                        retval = &EG(uninitialized_zval_ptr);
        !          4685:                                        break;
        !          4686:                                case BP_VAR_RW:
        !          4687:                                        zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
        !          4688:                                        /* break missing intentionally */
        !          4689:                                case BP_VAR_W: {
        !          4690:                                                zval *new_zval = &EG(uninitialized_zval);
        !          4691: 
        !          4692:                                                Z_ADDREF_P(new_zval);
        !          4693:                                                zend_hash_update(target_symbol_table, varname->value.str.val, varname->value.str.len+1, &new_zval, sizeof(zval *), (void **) &retval);
        !          4694:                                        }
        !          4695:                                        break;
        !          4696:                                EMPTY_SWITCH_DEFAULT_CASE()
        !          4697:                        }
        !          4698:                }
        !          4699:                switch (opline->op2.u.EA.type) {
        !          4700:                        case ZEND_FETCH_GLOBAL:
        !          4701:                                if (IS_TMP_VAR != IS_TMP_VAR) {
        !          4702:                                        zval_dtor(free_op1.var);
        !          4703:                                }
        !          4704:                                break;
        !          4705:                        case ZEND_FETCH_LOCAL:
        !          4706:                                zval_dtor(free_op1.var);
        !          4707:                                break;
        !          4708:                        case ZEND_FETCH_STATIC:
        !          4709:                                zval_update_constant(retval, (void*) 1 TSRMLS_CC);
        !          4710:                                break;
        !          4711:                        case ZEND_FETCH_GLOBAL_LOCK:
        !          4712:                                if (IS_TMP_VAR == IS_VAR && !free_op1.var) {
        !          4713:                                        PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          4714:                                }
        !          4715:                                break;
        !          4716:                }
        !          4717:        }
        !          4718: 
        !          4719: 
        !          4720:        if (IS_TMP_VAR != IS_CONST && varname == &tmp_varname) {
        !          4721:                zval_dtor(varname);
        !          4722:        }
        !          4723:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          4724:                if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          4725:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
        !          4726:                }
        !          4727:                PZVAL_LOCK(*retval);
        !          4728:                switch (type) {
        !          4729:                        case BP_VAR_R:
        !          4730:                        case BP_VAR_IS:
        !          4731:                                AI_SET_PTR(EX_T(opline->result.u.var).var, *retval);
        !          4732:                                break;
        !          4733:                        case BP_VAR_UNSET: {
        !          4734:                                zend_free_op free_res;
        !          4735: 
        !          4736:                                EX_T(opline->result.u.var).var.ptr_ptr = retval;
        !          4737:                                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          4738:                                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          4739:                                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          4740:                                }
        !          4741:                                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          4742:                                FREE_OP_VAR_PTR(free_res);
        !          4743:                                break;
        !          4744:                        default:
        !          4745:                                EX_T(opline->result.u.var).var.ptr_ptr = retval;
        !          4746:                                break;
        !          4747:                        }
        !          4748:                }
        !          4749:        }
        !          4750:        ZEND_VM_NEXT_OPCODE();
        !          4751: }
        !          4752: 
        !          4753: static int ZEND_FASTCALL  ZEND_FETCH_R_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4754: {
        !          4755:        return zend_fetch_var_address_helper_SPEC_TMP(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4756: }
        !          4757: 
        !          4758: static int ZEND_FASTCALL  ZEND_FETCH_W_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4759: {
        !          4760:        return zend_fetch_var_address_helper_SPEC_TMP(BP_VAR_W, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4761: }
        !          4762: 
        !          4763: static int ZEND_FASTCALL  ZEND_FETCH_RW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4764: {
        !          4765:        return zend_fetch_var_address_helper_SPEC_TMP(BP_VAR_RW, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4766: }
        !          4767: 
        !          4768: static int ZEND_FASTCALL  ZEND_FETCH_FUNC_ARG_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4769: {
        !          4770:        return zend_fetch_var_address_helper_SPEC_TMP(ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), EX(opline)->extended_value)?BP_VAR_W:BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4771: }
        !          4772: 
        !          4773: static int ZEND_FASTCALL  ZEND_FETCH_UNSET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4774: {
        !          4775:        return zend_fetch_var_address_helper_SPEC_TMP(BP_VAR_UNSET, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4776: }
        !          4777: 
        !          4778: static int ZEND_FASTCALL  ZEND_FETCH_IS_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4779: {
        !          4780:        return zend_fetch_var_address_helper_SPEC_TMP(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          4781: }
        !          4782: 
        !          4783: static int ZEND_FASTCALL  ZEND_JMPZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4784: {
        !          4785:        zend_op *opline = EX(opline);
        !          4786:        zend_free_op free_op1;
        !          4787:        zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          4788:        int ret;
        !          4789: 
        !          4790:        if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          4791:                ret = Z_LVAL_P(val);
        !          4792:        } else {
        !          4793:                ret = i_zend_is_true(val);
        !          4794:                zval_dtor(free_op1.var);
        !          4795:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          4796:                        ZEND_VM_CONTINUE();
        !          4797:                }
        !          4798:        }
        !          4799:        if (!ret) {
        !          4800: #if DEBUG_ZEND>=2
        !          4801:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          4802: #endif
        !          4803:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          4804:                ZEND_VM_CONTINUE();
        !          4805:        }
        !          4806: 
        !          4807:        ZEND_VM_NEXT_OPCODE();
        !          4808: }
        !          4809: 
        !          4810: static int ZEND_FASTCALL  ZEND_JMPNZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4811: {
        !          4812:        zend_op *opline = EX(opline);
        !          4813:        zend_free_op free_op1;
        !          4814:        zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          4815:        int ret;
        !          4816: 
        !          4817:        if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          4818:                ret = Z_LVAL_P(val);
        !          4819:        } else {
        !          4820:                ret = i_zend_is_true(val);
        !          4821:                zval_dtor(free_op1.var);
        !          4822:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          4823:                        ZEND_VM_CONTINUE();
        !          4824:                }
        !          4825:        }
        !          4826:        if (ret) {
        !          4827: #if DEBUG_ZEND>=2
        !          4828:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          4829: #endif
        !          4830:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          4831:                ZEND_VM_CONTINUE();
        !          4832:        }
        !          4833: 
        !          4834:        ZEND_VM_NEXT_OPCODE();
        !          4835: }
        !          4836: 
        !          4837: static int ZEND_FASTCALL  ZEND_JMPZNZ_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4838: {
        !          4839:        zend_op *opline = EX(opline);
        !          4840:        zend_free_op free_op1;
        !          4841:        zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          4842:        int retval;
        !          4843: 
        !          4844:        if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          4845:                retval = Z_LVAL_P(val);
        !          4846:        } else {
        !          4847:                retval = i_zend_is_true(val);
        !          4848:                zval_dtor(free_op1.var);
        !          4849:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          4850:                        ZEND_VM_CONTINUE();
        !          4851:                }
        !          4852:        }
        !          4853:        if (EXPECTED(retval != 0)) {
        !          4854: #if DEBUG_ZEND>=2
        !          4855:                printf("Conditional jmp on true to %d\n", opline->extended_value);
        !          4856: #endif
        !          4857:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
        !          4858:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          4859:        } else {
        !          4860: #if DEBUG_ZEND>=2
        !          4861:                printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
        !          4862: #endif
        !          4863:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
        !          4864:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          4865:        }
        !          4866: }
        !          4867: 
        !          4868: static int ZEND_FASTCALL  ZEND_JMPZ_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4869: {
        !          4870:        zend_op *opline = EX(opline);
        !          4871:        zend_free_op free_op1;
        !          4872:        zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          4873:        int retval;
        !          4874: 
        !          4875:        if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          4876:                retval = Z_LVAL_P(val);
        !          4877:        } else {
        !          4878:                retval = i_zend_is_true(val);
        !          4879:                zval_dtor(free_op1.var);
        !          4880:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          4881:                        ZEND_VM_CONTINUE();
        !          4882:                }
        !          4883:        }
        !          4884:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
        !          4885:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          4886:        if (!retval) {
        !          4887: #if DEBUG_ZEND>=2
        !          4888:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          4889: #endif
        !          4890:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          4891:                ZEND_VM_CONTINUE();
        !          4892:        }
        !          4893:        ZEND_VM_NEXT_OPCODE();
        !          4894: }
        !          4895: 
        !          4896: static int ZEND_FASTCALL  ZEND_JMPNZ_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4897: {
        !          4898:        zend_op *opline = EX(opline);
        !          4899:        zend_free_op free_op1;
        !          4900:        zval *val = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          4901:        int retval;
        !          4902: 
        !          4903:        if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          4904:                retval = Z_LVAL_P(val);
        !          4905:        } else {
        !          4906:                retval = i_zend_is_true(val);
        !          4907:                zval_dtor(free_op1.var);
        !          4908:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          4909:                        ZEND_VM_CONTINUE();
        !          4910:                }
        !          4911:        }
        !          4912:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
        !          4913:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          4914:        if (retval) {
        !          4915: #if DEBUG_ZEND>=2
        !          4916:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          4917: #endif
        !          4918:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          4919:                ZEND_VM_CONTINUE();
        !          4920:        }
        !          4921:        ZEND_VM_NEXT_OPCODE();
        !          4922: }
        !          4923: 
        !          4924: static int ZEND_FASTCALL  ZEND_FREE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4925: {
        !          4926:        zendi_zval_dtor(EX_T(EX(opline)->op1.u.var).tmp_var);
        !          4927:        ZEND_VM_NEXT_OPCODE();
        !          4928: }
        !          4929: 
        !          4930: static int ZEND_FASTCALL  ZEND_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          4931: {
        !          4932:        zend_op *opline = EX(opline);
        !          4933:        zval *retval_ptr;
        !          4934:        zval **retval_ptr_ptr;
        !          4935:        zend_free_op free_op1;
        !          4936: 
        !          4937:        if (EG(active_op_array)->return_reference == ZEND_RETURN_REF) {
        !          4938: 
        !          4939:                if (IS_TMP_VAR == IS_CONST || IS_TMP_VAR == IS_TMP_VAR) {
        !          4940:                        /* Not supposed to happen, but we'll allow it */
        !          4941:                        zend_error(E_NOTICE, "Only variable references should be returned by reference");
        !          4942:                        goto return_by_value;
        !          4943:                }
        !          4944: 
        !          4945:                retval_ptr_ptr = NULL;
        !          4946: 
        !          4947:                if (IS_TMP_VAR == IS_VAR && !retval_ptr_ptr) {
        !          4948:                        zend_error_noreturn(E_ERROR, "Cannot return string offsets by reference");
        !          4949:                }
        !          4950: 
        !          4951:                if (IS_TMP_VAR == IS_VAR && !Z_ISREF_PP(retval_ptr_ptr)) {
        !          4952:                        if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
        !          4953:                            EX_T(opline->op1.u.var).var.fcall_returned_reference) {
        !          4954:                        } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
        !          4955:                                if (IS_TMP_VAR == IS_VAR && !1) {
        !          4956:                                        PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
        !          4957:                                }
        !          4958:                                zend_error(E_NOTICE, "Only variable references should be returned by reference");
        !          4959:                                goto return_by_value;
        !          4960:                        }
        !          4961:                }
        !          4962: 
        !          4963:                if (EG(return_value_ptr_ptr)) {
        !          4964:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr_ptr);
        !          4965:                        Z_ADDREF_PP(retval_ptr_ptr);
        !          4966: 
        !          4967:                        (*EG(return_value_ptr_ptr)) = (*retval_ptr_ptr);
        !          4968:                }
        !          4969:        } else {
        !          4970: return_by_value:
        !          4971: 
        !          4972:                retval_ptr = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          4973: 
        !          4974:                if (!EG(return_value_ptr_ptr)) {
        !          4975:                        if (IS_TMP_VAR == IS_TMP_VAR) {
        !          4976:                                zval_dtor(free_op1.var);
        !          4977:                        }
        !          4978:                } else if (!1) { /* Not a temp var */
        !          4979:                        if (IS_TMP_VAR == IS_CONST ||
        !          4980:                            EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
        !          4981:                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
        !          4982:                                zval *ret;
        !          4983: 
        !          4984:                                ALLOC_ZVAL(ret);
        !          4985:                                INIT_PZVAL_COPY(ret, retval_ptr);
        !          4986:                                zval_copy_ctor(ret);
        !          4987:                                *EG(return_value_ptr_ptr) = ret;
        !          4988:                        } else if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) &&
        !          4989:                                   retval_ptr == &EG(uninitialized_zval)) {
        !          4990:                                zval *ret;
        !          4991: 
        !          4992:                                ALLOC_INIT_ZVAL(ret);
        !          4993:                                *EG(return_value_ptr_ptr) = ret;
        !          4994:                        } else {
        !          4995:                                *EG(return_value_ptr_ptr) = retval_ptr;
        !          4996:                                Z_ADDREF_P(retval_ptr);
        !          4997:                        }
        !          4998:                } else {
        !          4999:                        zval *ret;
        !          5000: 
        !          5001:                        ALLOC_ZVAL(ret);
        !          5002:                        INIT_PZVAL_COPY(ret, retval_ptr);
        !          5003:                        *EG(return_value_ptr_ptr) = ret;
        !          5004:                }
        !          5005:        }
        !          5006: 
        !          5007:        return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          5008: }
        !          5009: 
        !          5010: static int ZEND_FASTCALL  ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5011: {
        !          5012:        zend_op *opline = EX(opline);
        !          5013:        zval *value;
        !          5014:        zval *exception;
        !          5015:        zend_free_op free_op1;
        !          5016: 
        !          5017:        value = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5018: 
        !          5019:        if (IS_TMP_VAR == IS_CONST || Z_TYPE_P(value) != IS_OBJECT) {
        !          5020:                zend_error_noreturn(E_ERROR, "Can only throw objects");
        !          5021:        }
        !          5022:        zend_exception_save(TSRMLS_C);
        !          5023:        /* Not sure if a complete copy is what we want here */
        !          5024:        ALLOC_ZVAL(exception);
        !          5025:        INIT_PZVAL_COPY(exception, value);
        !          5026:        if (!1) {
        !          5027:                zval_copy_ctor(exception);
        !          5028:        }
        !          5029: 
        !          5030:        zend_throw_exception_object(exception TSRMLS_CC);
        !          5031:        zend_exception_restore(TSRMLS_C);
        !          5032: 
        !          5033:        ZEND_VM_NEXT_OPCODE();
        !          5034: }
        !          5035: 
        !          5036: static int ZEND_FASTCALL  ZEND_SEND_VAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5037: {
        !          5038:        zend_op *opline = EX(opline);
        !          5039:        if (opline->extended_value==ZEND_DO_FCALL_BY_NAME
        !          5040:                && ARG_MUST_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          5041:                        zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.u.opline_num);
        !          5042:        }
        !          5043:        {
        !          5044:                zval *valptr;
        !          5045:                zval *value;
        !          5046:                zend_free_op free_op1;
        !          5047: 
        !          5048:                value = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5049: 
        !          5050:                ALLOC_ZVAL(valptr);
        !          5051:                INIT_PZVAL_COPY(valptr, value);
        !          5052:                if (!1) {
        !          5053:                        zval_copy_ctor(valptr);
        !          5054:                }
        !          5055:                zend_vm_stack_push(valptr TSRMLS_CC);
        !          5056: 
        !          5057:        }
        !          5058:        ZEND_VM_NEXT_OPCODE();
        !          5059: }
        !          5060: 
        !          5061: static int ZEND_FASTCALL  ZEND_BOOL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5062: {
        !          5063:        zend_op *opline = EX(opline);
        !          5064:        zend_free_op free_op1;
        !          5065: 
        !          5066:        /* PHP 3.0 returned "" for false and 1 for true, here we use 0 and 1 for now */
        !          5067:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = i_zend_is_true(_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
        !          5068:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          5069:        zval_dtor(free_op1.var);
        !          5070: 
        !          5071:        ZEND_VM_NEXT_OPCODE();
        !          5072: }
        !          5073: 
        !          5074: static int ZEND_FASTCALL  ZEND_CLONE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5075: {
        !          5076:        zend_op *opline = EX(opline);
        !          5077:        zend_free_op free_op1;
        !          5078:        zval *obj = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5079:        zend_class_entry *ce;
        !          5080:        zend_function *clone;
        !          5081:        zend_object_clone_obj_t clone_call;
        !          5082: 
        !          5083:        if (IS_TMP_VAR == IS_CONST ||
        !          5084:            (IS_TMP_VAR == IS_VAR && !obj) ||
        !          5085:            Z_TYPE_P(obj) != IS_OBJECT) {
        !          5086:                zend_error_noreturn(E_ERROR, "__clone method called on non-object");
        !          5087:        }
        !          5088: 
        !          5089:        ce = Z_OBJCE_P(obj);
        !          5090:        clone = ce ? ce->clone : NULL;
        !          5091:        clone_call =  Z_OBJ_HT_P(obj)->clone_obj;
        !          5092:        if (!clone_call) {
        !          5093:                if (ce) {
        !          5094:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object of class %s", ce->name);
        !          5095:                } else {
        !          5096:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object");
        !          5097:                }
        !          5098:        }
        !          5099: 
        !          5100:        if (ce && clone) {
        !          5101:                if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
        !          5102:                        /* Ensure that if we're calling a private function, we're allowed to do so.
        !          5103:                         */
        !          5104:                        if (ce != EG(scope)) {
        !          5105:                                zend_error_noreturn(E_ERROR, "Call to private %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          5106:                        }
        !          5107:                } else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
        !          5108:                        /* Ensure that if we're calling a protected function, we're allowed to do so.
        !          5109:                         */
        !          5110:                        if (!zend_check_protected(clone->common.scope, EG(scope))) {
        !          5111:                                zend_error_noreturn(E_ERROR, "Call to protected %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          5112:                        }
        !          5113:                }
        !          5114:        }
        !          5115: 
        !          5116:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          5117:        if (!EG(exception)) {
        !          5118:                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          5119:                Z_OBJVAL_P(EX_T(opline->result.u.var).var.ptr) = clone_call(obj TSRMLS_CC);
        !          5120:                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_OBJECT;
        !          5121:                Z_SET_REFCOUNT_P(EX_T(opline->result.u.var).var.ptr, 1);
        !          5122:                Z_SET_ISREF_P(EX_T(opline->result.u.var).var.ptr);
        !          5123:                if (!RETURN_VALUE_USED(opline) || EG(exception)) {
        !          5124:                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
        !          5125:                }
        !          5126:        }
        !          5127: 
        !          5128:        ZEND_VM_NEXT_OPCODE();
        !          5129: }
        !          5130: 
        !          5131: static int ZEND_FASTCALL  ZEND_CAST_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5132: {
        !          5133:        zend_op *opline = EX(opline);
        !          5134:        zend_free_op free_op1;
        !          5135:        zval *expr = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5136:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          5137: 
        !          5138:        if (opline->extended_value != IS_STRING) {
        !          5139:                *result = *expr;
        !          5140:                if (!1) {
        !          5141:                        zendi_zval_copy_ctor(*result);
        !          5142:                }
        !          5143:        }
        !          5144:        switch (opline->extended_value) {
        !          5145:                case IS_NULL:
        !          5146:                        convert_to_null(result);
        !          5147:                        break;
        !          5148:                case IS_BOOL:
        !          5149:                        convert_to_boolean(result);
        !          5150:                        break;
        !          5151:                case IS_LONG:
        !          5152:                        convert_to_long(result);
        !          5153:                        break;
        !          5154:                case IS_DOUBLE:
        !          5155:                        convert_to_double(result);
        !          5156:                        break;
        !          5157:                case IS_STRING: {
        !          5158:                        zval var_copy;
        !          5159:                        int use_copy;
        !          5160: 
        !          5161:                        zend_make_printable_zval(expr, &var_copy, &use_copy);
        !          5162:                        if (use_copy) {
        !          5163:                                *result = var_copy;
        !          5164:                                if (1) {
        !          5165:                                        zval_dtor(free_op1.var);
        !          5166:                                }
        !          5167:                        } else {
        !          5168:                                *result = *expr;
        !          5169:                                if (!1) {
        !          5170:                                        zendi_zval_copy_ctor(*result);
        !          5171:                                }
        !          5172:                        }
        !          5173:                        break;
        !          5174:                }
        !          5175:                case IS_ARRAY:
        !          5176:                        convert_to_array(result);
        !          5177:                        break;
        !          5178:                case IS_OBJECT:
        !          5179:                        convert_to_object(result);
        !          5180:                        break;
        !          5181:        }
        !          5182: 
        !          5183:        ZEND_VM_NEXT_OPCODE();
        !          5184: }
        !          5185: 
        !          5186: static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5187: {
        !          5188:        zend_op *opline = EX(opline);
        !          5189:        zend_op_array *new_op_array=NULL;
        !          5190:        int return_value_used;
        !          5191:        zend_free_op free_op1;
        !          5192:        zval *inc_filename = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5193:        zval tmp_inc_filename;
        !          5194:        zend_bool failure_retval=0;
        !          5195: 
        !          5196:        if (inc_filename->type!=IS_STRING) {
        !          5197:                tmp_inc_filename = *inc_filename;
        !          5198:                zval_copy_ctor(&tmp_inc_filename);
        !          5199:                convert_to_string(&tmp_inc_filename);
        !          5200:                inc_filename = &tmp_inc_filename;
        !          5201:        }
        !          5202: 
        !          5203:        return_value_used = RETURN_VALUE_USED(opline);
        !          5204: 
        !          5205:        if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) {
        !          5206:                if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) {
        !          5207:                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          5208:                } else {
        !          5209:                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          5210:                }
        !          5211:        } else {
        !          5212:                switch (Z_LVAL(opline->op2.u.constant)) {
        !          5213:                        case ZEND_INCLUDE_ONCE:
        !          5214:                        case ZEND_REQUIRE_ONCE: {
        !          5215:                                        zend_file_handle file_handle;
        !          5216:                                        char *resolved_path;
        !          5217: 
        !          5218:                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
        !          5219:                                        if (resolved_path) {
        !          5220:                                                failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
        !          5221:                                        } else {
        !          5222:                                                resolved_path = Z_STRVAL_P(inc_filename);
        !          5223:                                        }
        !          5224: 
        !          5225:                                        if (failure_retval) {
        !          5226:                                                /* do nothing, file already included */
        !          5227:                                        } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) {
        !          5228: 
        !          5229:                                                if (!file_handle.opened_path) {
        !          5230:                                                        file_handle.opened_path = estrdup(resolved_path);
        !          5231:                                                }
        !          5232: 
        !          5233:                                                if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
        !          5234:                                                        new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
        !          5235:                                                        zend_destroy_file_handle(&file_handle TSRMLS_CC);
        !          5236:                                                } else {
        !          5237:                                                        zend_file_handle_dtor(&file_handle TSRMLS_CC);
        !          5238:                                                        failure_retval=1;
        !          5239:                                                }
        !          5240:                                        } else {
        !          5241:                                                if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) {
        !          5242:                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          5243:                                                } else {
        !          5244:                                                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          5245:                                                }
        !          5246:                                        }
        !          5247:                                        if (resolved_path != Z_STRVAL_P(inc_filename)) {
        !          5248:                                                efree(resolved_path);
        !          5249:                                        }
        !          5250:                                }
        !          5251:                                break;
        !          5252:                        case ZEND_INCLUDE:
        !          5253:                        case ZEND_REQUIRE:
        !          5254:                                new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC);
        !          5255:                                break;
        !          5256:                        case ZEND_EVAL: {
        !          5257:                                        char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC);
        !          5258: 
        !          5259:                                        new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC);
        !          5260:                                        efree(eval_desc);
        !          5261:                                }
        !          5262:                                break;
        !          5263:                        EMPTY_SWITCH_DEFAULT_CASE()
        !          5264:                }
        !          5265:        }
        !          5266:        if (inc_filename==&tmp_inc_filename) {
        !          5267:                zval_dtor(&tmp_inc_filename);
        !          5268:        }
        !          5269:        zval_dtor(free_op1.var);
        !          5270:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          5271:        if (new_op_array && !EG(exception)) {
        !          5272:                EX(original_return_value) = EG(return_value_ptr_ptr);
        !          5273:                EG(return_value_ptr_ptr) = return_value_used ? EX_T(opline->result.u.var).var.ptr_ptr : NULL;
        !          5274:                EG(active_op_array) = new_op_array;
        !          5275:                EX_T(opline->result.u.var).var.ptr = NULL;
        !          5276: 
        !          5277:                EX(current_object) = EX(object);
        !          5278: 
        !          5279:                EX(function_state).function = (zend_function *) new_op_array;
        !          5280:                EX(object) = NULL;
        !          5281: 
        !          5282:                if (!EG(active_symbol_table)) {
        !          5283:                        zend_rebuild_symbol_table(TSRMLS_C);
        !          5284:                }
        !          5285: 
        !          5286:                if (zend_execute == execute) {
        !          5287:                        EX(call_opline) = opline;
        !          5288:                        ZEND_VM_ENTER();
        !          5289:                } else {
        !          5290:                        zend_execute(new_op_array TSRMLS_CC);
        !          5291:                }
        !          5292: 
        !          5293:                EX(function_state).function = (zend_function *) EX(op_array);
        !          5294:                EX(object) = EX(current_object);
        !          5295: 
        !          5296:                if (return_value_used) {
        !          5297:                        if (!EX_T(opline->result.u.var).var.ptr) { /* there was no return statement */
        !          5298:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          5299:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          5300:                                Z_LVAL_P(EX_T(opline->result.u.var).var.ptr) = 1;
        !          5301:                                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_BOOL;
        !          5302:                        }
        !          5303:                }
        !          5304: 
        !          5305:                EG(opline_ptr) = &EX(opline);
        !          5306:                EG(active_op_array) = EX(op_array);
        !          5307:                EG(return_value_ptr_ptr) = EX(original_return_value);
        !          5308:                destroy_op_array(new_op_array TSRMLS_CC);
        !          5309:                efree(new_op_array);
        !          5310:                if (EG(exception)) {
        !          5311:                        zend_throw_exception_internal(NULL TSRMLS_CC);
        !          5312:                }
        !          5313:        } else {
        !          5314:                if (return_value_used) {
        !          5315:                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          5316:                        INIT_ZVAL(*EX_T(opline->result.u.var).var.ptr);
        !          5317:                        Z_LVAL_P(EX_T(opline->result.u.var).var.ptr) = failure_retval;
        !          5318:                        Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_BOOL;
        !          5319:                }
        !          5320:        }
        !          5321:        ZEND_VM_NEXT_OPCODE();
        !          5322: }
        !          5323: 
        !          5324: static int ZEND_FASTCALL  ZEND_UNSET_VAR_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5325: {
        !          5326:        zend_op *opline = EX(opline);
        !          5327:        zval tmp, *varname;
        !          5328:        HashTable *target_symbol_table;
        !          5329:        zend_free_op free_op1;
        !          5330: 
        !          5331:        if (IS_TMP_VAR == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) {
        !          5332:                if (EG(active_symbol_table)) {
        !          5333:                        zend_execute_data *ex = EX(prev_execute_data);
        !          5334:                        zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.u.var);
        !          5335: 
        !          5336:                        if (zend_hash_quick_del(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value) == SUCCESS) {
        !          5337:                                while (ex && ex->symbol_table == EG(active_symbol_table)) {
        !          5338:                                        int i;
        !          5339: 
        !          5340:                                        if (ex->op_array) {
        !          5341:                                                for (i = 0; i < ex->op_array->last_var; i++) {
        !          5342:                                                        if (ex->op_array->vars[i].hash_value == cv->hash_value &&
        !          5343:                                                                ex->op_array->vars[i].name_len == cv->name_len &&
        !          5344:                                                                !memcmp(ex->op_array->vars[i].name, cv->name, cv->name_len)) {
        !          5345:                                                                ex->CVs[i] = NULL;
        !          5346:                                                                break;
        !          5347:                                                        }
        !          5348:                                                }
        !          5349:                                        }
        !          5350:                                        ex = ex->prev_execute_data;
        !          5351:                                }
        !          5352:                        }
        !          5353:                        EX(CVs)[opline->op1.u.var] = NULL;
        !          5354:                } else if (EX(CVs)[opline->op1.u.var]) {
        !          5355:                        zval_ptr_dtor(EX(CVs)[opline->op1.u.var]);
        !          5356:                        EX(CVs)[opline->op1.u.var] = NULL;
        !          5357:                }
        !          5358:                ZEND_VM_NEXT_OPCODE();
        !          5359:        }
        !          5360: 
        !          5361:        varname = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5362: 
        !          5363:        if (Z_TYPE_P(varname) != IS_STRING) {
        !          5364:                tmp = *varname;
        !          5365:                zval_copy_ctor(&tmp);
        !          5366:                convert_to_string(&tmp);
        !          5367:                varname = &tmp;
        !          5368:        } else if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
        !          5369:                Z_ADDREF_P(varname);
        !          5370:        }
        !          5371: 
        !          5372:        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          5373:                zend_std_unset_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname) TSRMLS_CC);
        !          5374:        } else {
        !          5375:                ulong hash_value = zend_inline_hash_func(varname->value.str.val, varname->value.str.len+1);
        !          5376: 
        !          5377:                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC);
        !          5378:                if (zend_hash_quick_del(target_symbol_table, varname->value.str.val, varname->value.str.len+1, hash_value) == SUCCESS) {
        !          5379:                        zend_execute_data *ex = execute_data;
        !          5380: 
        !          5381:                        do {
        !          5382:                                int i;
        !          5383: 
        !          5384:                                if (ex->op_array) {
        !          5385:                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          5386:                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          5387:                                                        ex->op_array->vars[i].name_len == varname->value.str.len &&
        !          5388:                                                        !memcmp(ex->op_array->vars[i].name, varname->value.str.val, varname->value.str.len)) {
        !          5389:                                                        ex->CVs[i] = NULL;
        !          5390:                                                        break;
        !          5391:                                                }
        !          5392:                                        }
        !          5393:                                }
        !          5394:                                ex = ex->prev_execute_data;
        !          5395:                        } while (ex && ex->symbol_table == target_symbol_table);
        !          5396:                }
        !          5397:        }
        !          5398: 
        !          5399:        if (varname == &tmp) {
        !          5400:                zval_dtor(&tmp);
        !          5401:        } else if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
        !          5402:                zval_ptr_dtor(&varname);
        !          5403:        }
        !          5404:        zval_dtor(free_op1.var);
        !          5405:        ZEND_VM_NEXT_OPCODE();
        !          5406: }
        !          5407: 
        !          5408: static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5409: {
        !          5410:        zend_op *opline = EX(opline);
        !          5411:        zend_free_op free_op1;
        !          5412:        zval *array_ptr, **array_ptr_ptr;
        !          5413:        HashTable *fe_ht;
        !          5414:        zend_object_iterator *iter = NULL;
        !          5415:        zend_class_entry *ce = NULL;
        !          5416:        zend_bool is_empty = 0;
        !          5417: 
        !          5418:        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          5419:                array_ptr_ptr = NULL;
        !          5420:                if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
        !          5421:                        ALLOC_INIT_ZVAL(array_ptr);
        !          5422:                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
        !          5423:                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
        !          5424:                                zend_error(E_WARNING, "foreach() cannot iterate over objects without PHP class");
        !          5425:                                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          5426:                        }
        !          5427: 
        !          5428:                        ce = Z_OBJCE_PP(array_ptr_ptr);
        !          5429:                        if (!ce || ce->get_iterator == NULL) {
        !          5430:                                SEPARATE_ZVAL_IF_NOT_REF(array_ptr_ptr);
        !          5431:                                Z_ADDREF_PP(array_ptr_ptr);
        !          5432:                        }
        !          5433:                        array_ptr = *array_ptr_ptr;
        !          5434:                } else {
        !          5435:                        if (Z_TYPE_PP(array_ptr_ptr) == IS_ARRAY) {
        !          5436:                                SEPARATE_ZVAL_IF_NOT_REF(array_ptr_ptr);
        !          5437:                                if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
        !          5438:                                        Z_SET_ISREF_PP(array_ptr_ptr);
        !          5439:                                }
        !          5440:                        }
        !          5441:                        array_ptr = *array_ptr_ptr;
        !          5442:                        Z_ADDREF_P(array_ptr);
        !          5443:                }
        !          5444:        } else {
        !          5445:                array_ptr = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5446:                if (1) { /* IS_TMP_VAR */
        !          5447:                        zval *tmp;
        !          5448: 
        !          5449:                        ALLOC_ZVAL(tmp);
        !          5450:                        INIT_PZVAL_COPY(tmp, array_ptr);
        !          5451:                        array_ptr = tmp;
        !          5452:                        if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
        !          5453:                                ce = Z_OBJCE_P(array_ptr);
        !          5454:                                if (ce && ce->get_iterator) {
        !          5455:                                        Z_DELREF_P(array_ptr);
        !          5456:                                }
        !          5457:                        }
        !          5458:                } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
        !          5459:                        ce = Z_OBJCE_P(array_ptr);
        !          5460:                        if (!ce || !ce->get_iterator) {
        !          5461:                                Z_ADDREF_P(array_ptr);
        !          5462:                        }
        !          5463:                } else if (IS_TMP_VAR == IS_CONST ||
        !          5464:                           ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) &&
        !          5465:                            !Z_ISREF_P(array_ptr) &&
        !          5466:                            Z_REFCOUNT_P(array_ptr) > 1)) {
        !          5467:                        zval *tmp;
        !          5468: 
        !          5469:                        ALLOC_ZVAL(tmp);
        !          5470:                        INIT_PZVAL_COPY(tmp, array_ptr);
        !          5471:                        zval_copy_ctor(tmp);
        !          5472:                        array_ptr = tmp;
        !          5473:                } else {
        !          5474:                        Z_ADDREF_P(array_ptr);
        !          5475:                }
        !          5476:        }
        !          5477: 
        !          5478:        if (ce && ce->get_iterator) {
        !          5479:                iter = ce->get_iterator(ce, array_ptr, opline->extended_value & ZEND_FE_RESET_REFERENCE TSRMLS_CC);
        !          5480: 
        !          5481:                if (iter && !EG(exception)) {
        !          5482:                        array_ptr = zend_iterator_wrap(iter TSRMLS_CC);
        !          5483:                } else {
        !          5484:                        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          5485: 
        !          5486:                        } else {
        !          5487: 
        !          5488:                        }
        !          5489:                        if (!EG(exception)) {
        !          5490:                                zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "Object of type %s did not create an Iterator", ce->name);
        !          5491:                        }
        !          5492:                        zend_throw_exception_internal(NULL TSRMLS_CC);
        !          5493:                        ZEND_VM_NEXT_OPCODE();
        !          5494:                }
        !          5495:        }
        !          5496: 
        !          5497:        AI_SET_PTR(EX_T(opline->result.u.var).var, array_ptr);
        !          5498:        PZVAL_LOCK(array_ptr);
        !          5499: 
        !          5500:        if (iter) {
        !          5501:                iter->index = 0;
        !          5502:                if (iter->funcs->rewind) {
        !          5503:                        iter->funcs->rewind(iter TSRMLS_CC);
        !          5504:                        if (EG(exception)) {
        !          5505:                                Z_DELREF_P(array_ptr);
        !          5506:                                zval_ptr_dtor(&array_ptr);
        !          5507:                                if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          5508: 
        !          5509:                                } else {
        !          5510: 
        !          5511:                                }
        !          5512:                                ZEND_VM_NEXT_OPCODE();
        !          5513:                        }
        !          5514:                }
        !          5515:                is_empty = iter->funcs->valid(iter TSRMLS_CC) != SUCCESS;
        !          5516:                if (EG(exception)) {
        !          5517:                        Z_DELREF_P(array_ptr);
        !          5518:                        zval_ptr_dtor(&array_ptr);
        !          5519:                        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          5520: 
        !          5521:                        } else {
        !          5522: 
        !          5523:                        }
        !          5524:                        ZEND_VM_NEXT_OPCODE();
        !          5525:                }
        !          5526:                iter->index = -1; /* will be set to 0 before using next handler */
        !          5527:        } else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
        !          5528:                zend_hash_internal_pointer_reset(fe_ht);
        !          5529:                if (ce) {
        !          5530:                        zend_object *zobj = zend_objects_get_address(array_ptr TSRMLS_CC);
        !          5531:                        while (zend_hash_has_more_elements(fe_ht) == SUCCESS) {
        !          5532:                                char *str_key;
        !          5533:                                uint str_key_len;
        !          5534:                                ulong int_key;
        !          5535:                                zend_uchar key_type;
        !          5536: 
        !          5537:                                key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
        !          5538:                                if (key_type != HASH_KEY_NON_EXISTANT &&
        !          5539:                                        (key_type == HASH_KEY_IS_LONG ||
        !          5540:                                     zend_check_property_access(zobj, str_key, str_key_len-1 TSRMLS_CC) == SUCCESS)) {
        !          5541:                                        break;
        !          5542:                                }
        !          5543:                                zend_hash_move_forward(fe_ht);
        !          5544:                        }
        !          5545:                }
        !          5546:                is_empty = zend_hash_has_more_elements(fe_ht) != SUCCESS;
        !          5547:                zend_hash_get_pointer(fe_ht, &EX_T(opline->result.u.var).fe.fe_pos);
        !          5548:        } else {
        !          5549:                zend_error(E_WARNING, "Invalid argument supplied for foreach()");
        !          5550:                is_empty = 1;
        !          5551:        }
        !          5552: 
        !          5553:        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          5554: 
        !          5555:        } else {
        !          5556: 
        !          5557:        }
        !          5558:        if (is_empty) {
        !          5559:                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          5560:        } else {
        !          5561:                ZEND_VM_NEXT_OPCODE();
        !          5562:        }
        !          5563: }
        !          5564: 
        !          5565: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5566: {
        !          5567:        zend_op *opline = EX(opline);
        !          5568:        zval **value;
        !          5569:        zend_bool isset = 1;
        !          5570: 
        !          5571:        if (IS_TMP_VAR == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) {
        !          5572:                if (EX(CVs)[opline->op1.u.var]) {
        !          5573:                        value = EX(CVs)[opline->op1.u.var];
        !          5574:                } else if (EG(active_symbol_table)) {
        !          5575:                        zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.u.var);
        !          5576: 
        !          5577:                        if (zend_hash_quick_find(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value, (void **) &value) == FAILURE) {
        !          5578:                                isset = 0;
        !          5579:                        }
        !          5580:                } else {
        !          5581:                        isset = 0;
        !          5582:                }
        !          5583:        } else {
        !          5584:                HashTable *target_symbol_table;
        !          5585:                zend_free_op free_op1;
        !          5586:                zval tmp, *varname = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5587: 
        !          5588:                if (Z_TYPE_P(varname) != IS_STRING) {
        !          5589:                        tmp = *varname;
        !          5590:                        zval_copy_ctor(&tmp);
        !          5591:                        convert_to_string(&tmp);
        !          5592:                        varname = &tmp;
        !          5593:                }
        !          5594: 
        !          5595:                if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          5596:                        value = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 1 TSRMLS_CC);
        !          5597:                        if (!value) {
        !          5598:                                isset = 0;
        !          5599:                        }
        !          5600:                } else {
        !          5601:                        target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC);
        !          5602:                        if (zend_hash_find(target_symbol_table, varname->value.str.val, varname->value.str.len+1, (void **) &value) == FAILURE) {
        !          5603:                                isset = 0;
        !          5604:                        }
        !          5605:                }
        !          5606: 
        !          5607:                if (varname == &tmp) {
        !          5608:                        zval_dtor(&tmp);
        !          5609:                }
        !          5610:                zval_dtor(free_op1.var);
        !          5611:        }
        !          5612: 
        !          5613:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          5614: 
        !          5615:        switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
        !          5616:                case ZEND_ISSET:
        !          5617:                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          5618:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
        !          5619:                        } else {
        !          5620:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
        !          5621:                        }
        !          5622:                        break;
        !          5623:                case ZEND_ISEMPTY:
        !          5624:                        if (!isset || !i_zend_is_true(*value)) {
        !          5625:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 1;
        !          5626:                        } else {
        !          5627:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
        !          5628:                        }
        !          5629:                        break;
        !          5630:        }
        !          5631: 
        !          5632:        ZEND_VM_NEXT_OPCODE();
        !          5633: }
        !          5634: 
        !          5635: static int ZEND_FASTCALL  ZEND_EXIT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5636: {
        !          5637: #if 0 || (IS_TMP_VAR != IS_UNUSED)
        !          5638:        zend_op *opline = EX(opline);
        !          5639:        if (IS_TMP_VAR != IS_UNUSED) {
        !          5640:                zend_free_op free_op1;
        !          5641:                zval *ptr = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5642: 
        !          5643:                if (Z_TYPE_P(ptr) == IS_LONG) {
        !          5644:                        EG(exit_status) = Z_LVAL_P(ptr);
        !          5645:                } else {
        !          5646:                        zend_print_variable(ptr);
        !          5647:                }
        !          5648:                zval_dtor(free_op1.var);
        !          5649:        }
        !          5650: #endif
        !          5651:        zend_bailout();
        !          5652:        ZEND_VM_NEXT_OPCODE();
        !          5653: }
        !          5654: 
        !          5655: static int ZEND_FASTCALL  ZEND_END_SILENCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5656: {
        !          5657:        zend_op *opline = EX(opline);
        !          5658:        zval restored_error_reporting;
        !          5659: 
        !          5660:        if (!EG(error_reporting) && Z_LVAL(EX_T(opline->op1.u.var).tmp_var) != 0) {
        !          5661:                Z_TYPE(restored_error_reporting) = IS_LONG;
        !          5662:                Z_LVAL(restored_error_reporting) = Z_LVAL(EX_T(opline->op1.u.var).tmp_var);
        !          5663:                convert_to_string(&restored_error_reporting);
        !          5664:                zend_alter_ini_entry_ex("error_reporting", sizeof("error_reporting"), Z_STRVAL(restored_error_reporting), Z_STRLEN(restored_error_reporting), ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME, 1 TSRMLS_CC);
        !          5665:                zendi_zval_dtor(restored_error_reporting);
        !          5666:        }
        !          5667:        if (EX(old_error_reporting) == &EX_T(opline->op1.u.var).tmp_var) {
        !          5668:                EX(old_error_reporting) = NULL;
        !          5669:        }
        !          5670:        ZEND_VM_NEXT_OPCODE();
        !          5671: }
        !          5672: 
        !          5673: static int ZEND_FASTCALL  ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5674: {
        !          5675:        zend_op *opline = EX(opline);
        !          5676:        zend_free_op free_op1;
        !          5677:        zval *value = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5678: 
        !          5679:        if (i_zend_is_true(value)) {
        !          5680:                EX_T(opline->result.u.var).tmp_var = *value;
        !          5681:                zendi_zval_copy_ctor(EX_T(opline->result.u.var).tmp_var);
        !          5682:                zval_dtor(free_op1.var);
        !          5683: #if DEBUG_ZEND>=2
        !          5684:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          5685: #endif
        !          5686:                ZEND_VM_JMP(opline->op2.u.jmp_addr);
        !          5687:        }
        !          5688: 
        !          5689:        zval_dtor(free_op1.var);
        !          5690:        ZEND_VM_NEXT_OPCODE();
        !          5691: }
        !          5692: 
        !          5693: static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5694: {
        !          5695:        zend_op *opline = EX(opline);
        !          5696:        zend_free_op free_op1;
        !          5697:        zval *value = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5698: 
        !          5699:        EX_T(opline->result.u.var).tmp_var = *value;
        !          5700:        if (!1) {
        !          5701:                zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var);
        !          5702:        }
        !          5703: 
        !          5704:        ZEND_VM_NEXT_OPCODE();
        !          5705: }
        !          5706: 
        !          5707: static int ZEND_FASTCALL  ZEND_INSTANCEOF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5708: {
        !          5709:        zend_op *opline = EX(opline);
        !          5710:        zend_free_op free_op1;
        !          5711:        zval *expr = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5712:        zend_bool result;
        !          5713: 
        !          5714:        if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->get_class_entry) {
        !          5715:                result = instanceof_function(Z_OBJCE_P(expr), EX_T(opline->op2.u.var).class_entry TSRMLS_CC);
        !          5716:        } else {
        !          5717:                result = 0;
        !          5718:        }
        !          5719:        ZVAL_BOOL(&EX_T(opline->result.u.var).tmp_var, result);
        !          5720:        zval_dtor(free_op1.var);
        !          5721:        ZEND_VM_NEXT_OPCODE();
        !          5722: }
        !          5723: 
        !          5724: static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5725: {
        !          5726:        zend_op *opline = EX(opline);
        !          5727:        zend_free_op free_op1;
        !          5728: 
        !          5729:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          5730:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5731:                &opline->op2.u.constant TSRMLS_CC);
        !          5732:        zval_dtor(free_op1.var);
        !          5733: 
        !          5734:        ZEND_VM_NEXT_OPCODE();
        !          5735: }
        !          5736: 
        !          5737: static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5738: {
        !          5739:        zend_op *opline = EX(opline);
        !          5740:        zend_free_op free_op1;
        !          5741: 
        !          5742:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          5743:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5744:                &opline->op2.u.constant TSRMLS_CC);
        !          5745:        zval_dtor(free_op1.var);
        !          5746: 
        !          5747:        ZEND_VM_NEXT_OPCODE();
        !          5748: }
        !          5749: 
        !          5750: static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5751: {
        !          5752:        zend_op *opline = EX(opline);
        !          5753:        zend_free_op free_op1;
        !          5754: 
        !          5755:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          5756:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5757:                &opline->op2.u.constant TSRMLS_CC);
        !          5758:        zval_dtor(free_op1.var);
        !          5759: 
        !          5760:        ZEND_VM_NEXT_OPCODE();
        !          5761: }
        !          5762: 
        !          5763: static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5764: {
        !          5765:        zend_op *opline = EX(opline);
        !          5766:        zend_free_op free_op1;
        !          5767: 
        !          5768:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          5769:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5770:                &opline->op2.u.constant TSRMLS_CC);
        !          5771:        zval_dtor(free_op1.var);
        !          5772: 
        !          5773:        ZEND_VM_NEXT_OPCODE();
        !          5774: }
        !          5775: 
        !          5776: static int ZEND_FASTCALL  ZEND_MOD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5777: {
        !          5778:        zend_op *opline = EX(opline);
        !          5779:        zend_free_op free_op1;
        !          5780: 
        !          5781:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          5782:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5783:                &opline->op2.u.constant TSRMLS_CC);
        !          5784:        zval_dtor(free_op1.var);
        !          5785: 
        !          5786:        ZEND_VM_NEXT_OPCODE();
        !          5787: }
        !          5788: 
        !          5789: static int ZEND_FASTCALL  ZEND_SL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5790: {
        !          5791:        zend_op *opline = EX(opline);
        !          5792:        zend_free_op free_op1;
        !          5793: 
        !          5794:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          5795:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5796:                &opline->op2.u.constant TSRMLS_CC);
        !          5797:        zval_dtor(free_op1.var);
        !          5798: 
        !          5799:        ZEND_VM_NEXT_OPCODE();
        !          5800: }
        !          5801: 
        !          5802: static int ZEND_FASTCALL  ZEND_SR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5803: {
        !          5804:        zend_op *opline = EX(opline);
        !          5805:        zend_free_op free_op1;
        !          5806: 
        !          5807:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          5808:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5809:                &opline->op2.u.constant TSRMLS_CC);
        !          5810:        zval_dtor(free_op1.var);
        !          5811: 
        !          5812:        ZEND_VM_NEXT_OPCODE();
        !          5813: }
        !          5814: 
        !          5815: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5816: {
        !          5817:        zend_op *opline = EX(opline);
        !          5818:        zend_free_op free_op1;
        !          5819: 
        !          5820:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          5821:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5822:                &opline->op2.u.constant TSRMLS_CC);
        !          5823:        zval_dtor(free_op1.var);
        !          5824: 
        !          5825:        ZEND_VM_NEXT_OPCODE();
        !          5826: }
        !          5827: 
        !          5828: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5829: {
        !          5830:        zend_op *opline = EX(opline);
        !          5831:        zend_free_op free_op1;
        !          5832: 
        !          5833:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          5834:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5835:                &opline->op2.u.constant TSRMLS_CC);
        !          5836:        zval_dtor(free_op1.var);
        !          5837: 
        !          5838:        ZEND_VM_NEXT_OPCODE();
        !          5839: }
        !          5840: 
        !          5841: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5842: {
        !          5843:        zend_op *opline = EX(opline);
        !          5844:        zend_free_op free_op1;
        !          5845:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          5846: 
        !          5847:        is_identical_function(result,
        !          5848:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5849:                &opline->op2.u.constant TSRMLS_CC);
        !          5850:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          5851:        zval_dtor(free_op1.var);
        !          5852: 
        !          5853:        ZEND_VM_NEXT_OPCODE();
        !          5854: }
        !          5855: 
        !          5856: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5857: {
        !          5858:        zend_op *opline = EX(opline);
        !          5859:        zend_free_op free_op1;
        !          5860:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          5861: 
        !          5862:        compare_function(result,
        !          5863:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5864:                &opline->op2.u.constant TSRMLS_CC);
        !          5865:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          5866:        zval_dtor(free_op1.var);
        !          5867: 
        !          5868:        ZEND_VM_NEXT_OPCODE();
        !          5869: }
        !          5870: 
        !          5871: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5872: {
        !          5873:        zend_op *opline = EX(opline);
        !          5874:        zend_free_op free_op1;
        !          5875:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          5876: 
        !          5877:        compare_function(result,
        !          5878:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5879:                &opline->op2.u.constant TSRMLS_CC);
        !          5880:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          5881:        zval_dtor(free_op1.var);
        !          5882: 
        !          5883:        ZEND_VM_NEXT_OPCODE();
        !          5884: }
        !          5885: 
        !          5886: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5887: {
        !          5888:        zend_op *opline = EX(opline);
        !          5889:        zend_free_op free_op1;
        !          5890:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          5891: 
        !          5892:        compare_function(result,
        !          5893:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5894:                &opline->op2.u.constant TSRMLS_CC);
        !          5895:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          5896:        zval_dtor(free_op1.var);
        !          5897: 
        !          5898:        ZEND_VM_NEXT_OPCODE();
        !          5899: }
        !          5900: 
        !          5901: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5902: {
        !          5903:        zend_op *opline = EX(opline);
        !          5904:        zend_free_op free_op1;
        !          5905:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          5906: 
        !          5907:        compare_function(result,
        !          5908:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5909:                &opline->op2.u.constant TSRMLS_CC);
        !          5910:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          5911:        zval_dtor(free_op1.var);
        !          5912: 
        !          5913:        ZEND_VM_NEXT_OPCODE();
        !          5914: }
        !          5915: 
        !          5916: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5917: {
        !          5918:        zend_op *opline = EX(opline);
        !          5919:        zend_free_op free_op1;
        !          5920: 
        !          5921:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          5922:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5923:                &opline->op2.u.constant TSRMLS_CC);
        !          5924:        zval_dtor(free_op1.var);
        !          5925: 
        !          5926:        ZEND_VM_NEXT_OPCODE();
        !          5927: }
        !          5928: 
        !          5929: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5930: {
        !          5931:        zend_op *opline = EX(opline);
        !          5932:        zend_free_op free_op1;
        !          5933: 
        !          5934:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          5935:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5936:                &opline->op2.u.constant TSRMLS_CC);
        !          5937:        zval_dtor(free_op1.var);
        !          5938: 
        !          5939:        ZEND_VM_NEXT_OPCODE();
        !          5940: }
        !          5941: 
        !          5942: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5943: {
        !          5944:        zend_op *opline = EX(opline);
        !          5945:        zend_free_op free_op1;
        !          5946: 
        !          5947:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          5948:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5949:                &opline->op2.u.constant TSRMLS_CC);
        !          5950:        zval_dtor(free_op1.var);
        !          5951: 
        !          5952:        ZEND_VM_NEXT_OPCODE();
        !          5953: }
        !          5954: 
        !          5955: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5956: {
        !          5957:        zend_op *opline = EX(opline);
        !          5958:        zend_free_op free_op1;
        !          5959: 
        !          5960:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          5961:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          5962:                &opline->op2.u.constant TSRMLS_CC);
        !          5963:        zval_dtor(free_op1.var);
        !          5964: 
        !          5965:        ZEND_VM_NEXT_OPCODE();
        !          5966: }
        !          5967: 
        !          5968: static int ZEND_FASTCALL  ZEND_FETCH_DIM_TMP_VAR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5969: {
        !          5970:        zend_op *opline = EX(opline);
        !          5971:        zend_free_op free_op1;
        !          5972:        zval *container = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          5973: 
        !          5974:        if (Z_TYPE_P(container) != IS_ARRAY) {
        !          5975:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          5976:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          5977:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          5978:                }
        !          5979:        } else {
        !          5980: 
        !          5981:                zval *dim = &opline->op2.u.constant;
        !          5982: 
        !          5983:                AI_SET_PTR(EX_T(opline->result.u.var).var, *zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, BP_VAR_R TSRMLS_CC));
        !          5984:                SELECTIVE_PZVAL_LOCK(EX_T(opline->result.u.var).var.ptr, &opline->result);
        !          5985: 
        !          5986:        }
        !          5987:        ZEND_VM_NEXT_OPCODE();
        !          5988: }
        !          5989: 
        !          5990: static int ZEND_FASTCALL  ZEND_ADD_CHAR_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          5991: {
        !          5992:        zend_op *opline = EX(opline);
        !          5993:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          5994: 
        !          5995:        if (IS_TMP_VAR == IS_UNUSED) {
        !          5996:                /* Initialize for erealloc in add_char_to_string */
        !          5997:                Z_STRVAL_P(str) = NULL;
        !          5998:                Z_STRLEN_P(str) = 0;
        !          5999:                Z_TYPE_P(str) = IS_STRING;
        !          6000: 
        !          6001:                INIT_PZVAL(str);
        !          6002:        }
        !          6003: 
        !          6004:        add_char_to_string(str, str, &opline->op2.u.constant);
        !          6005: 
        !          6006:        /* FREE_OP is missing intentionally here - we're always working on the same temporary variable */
        !          6007:        ZEND_VM_NEXT_OPCODE();
        !          6008: }
        !          6009: 
        !          6010: static int ZEND_FASTCALL  ZEND_ADD_STRING_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6011: {
        !          6012:        zend_op *opline = EX(opline);
        !          6013:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          6014: 
        !          6015:        if (IS_TMP_VAR == IS_UNUSED) {
        !          6016:                /* Initialize for erealloc in add_string_to_string */
        !          6017:                Z_STRVAL_P(str) = NULL;
        !          6018:                Z_STRLEN_P(str) = 0;
        !          6019:                Z_TYPE_P(str) = IS_STRING;
        !          6020: 
        !          6021:                INIT_PZVAL(str);
        !          6022:        }
        !          6023: 
        !          6024:        add_string_to_string(str, str, &opline->op2.u.constant);
        !          6025: 
        !          6026:        /* FREE_OP is missing intentionally here - we're always working on the same temporary variable */
        !          6027:        ZEND_VM_NEXT_OPCODE();
        !          6028: }
        !          6029: 
        !          6030: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6031: {
        !          6032:        zend_op *opline = EX(opline);
        !          6033:        zval *function_name;
        !          6034:        char *function_name_strval;
        !          6035:        int function_name_strlen;
        !          6036:        zend_free_op free_op1;
        !          6037: 
        !          6038:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          6039: 
        !          6040:        function_name = &opline->op2.u.constant;
        !          6041: 
        !          6042:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          6043:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          6044:        }
        !          6045: 
        !          6046:        function_name_strval = Z_STRVAL_P(function_name);
        !          6047:        function_name_strlen = Z_STRLEN_P(function_name);
        !          6048: 
        !          6049:        EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          6050: 
        !          6051:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          6052:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          6053:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          6054:                }
        !          6055: 
        !          6056:                /* First, locate the function. */
        !          6057:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          6058:                if (!EX(fbc)) {
        !          6059:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          6060:                }
        !          6061: 
        !          6062:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          6063:        } else {
        !          6064:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          6065:        }
        !          6066: 
        !          6067:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          6068:                EX(object) = NULL;
        !          6069:        } else {
        !          6070:                if (!PZVAL_IS_REF(EX(object))) {
        !          6071:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          6072:                } else {
        !          6073:                        zval *this_ptr;
        !          6074:                        ALLOC_ZVAL(this_ptr);
        !          6075:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          6076:                        zval_copy_ctor(this_ptr);
        !          6077:                        EX(object) = this_ptr;
        !          6078:                }
        !          6079:        }
        !          6080: 
        !          6081: 
        !          6082:        ZEND_VM_NEXT_OPCODE();
        !          6083: }
        !          6084: 
        !          6085: static int ZEND_FASTCALL  ZEND_CASE_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6086: {
        !          6087:        zend_op *opline = EX(opline);
        !          6088:        int switch_expr_is_overloaded=0;
        !          6089:        zend_free_op free_op1;
        !          6090: 
        !          6091:        if (IS_TMP_VAR==IS_VAR) {
        !          6092:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          6093:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          6094:                } else {
        !          6095:                        switch_expr_is_overloaded = 1;
        !          6096:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          6097:                }
        !          6098:        }
        !          6099:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          6100:                                 _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6101:                                 &opline->op2.u.constant TSRMLS_CC);
        !          6102: 
        !          6103:        if (switch_expr_is_overloaded) {
        !          6104:                /* We only free op1 if this is a string offset,
        !          6105:                 * Since if it is a TMP_VAR, it'll be reused by
        !          6106:                 * other CASE opcodes (whereas string offsets
        !          6107:                 * are allocated at each get_zval_ptr())
        !          6108:                 */
        !          6109:                zval_dtor(free_op1.var);
        !          6110:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          6111:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          6112:        }
        !          6113:        ZEND_VM_NEXT_OPCODE();
        !          6114: }
        !          6115: 
        !          6116: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6117: {
        !          6118:        zend_op *opline = EX(opline);
        !          6119:        zend_free_op free_op1;
        !          6120:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          6121:        zval *expr_ptr;
        !          6122:        zval *offset=&opline->op2.u.constant;
        !          6123: 
        !          6124: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          6125:        zval **expr_ptr_ptr = NULL;
        !          6126: 
        !          6127:        if (opline->extended_value) {
        !          6128:                expr_ptr_ptr=NULL;
        !          6129:                expr_ptr = *expr_ptr_ptr;
        !          6130:        } else {
        !          6131:                expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          6132:        }
        !          6133: #else
        !          6134:        expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          6135: #endif
        !          6136: 
        !          6137:        if (1) { /* temporary variable */
        !          6138:                zval *new_expr;
        !          6139: 
        !          6140:                ALLOC_ZVAL(new_expr);
        !          6141:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          6142:                expr_ptr = new_expr;
        !          6143:        } else {
        !          6144: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          6145:                if (opline->extended_value) {
        !          6146:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          6147:                        expr_ptr = *expr_ptr_ptr;
        !          6148:                        Z_ADDREF_P(expr_ptr);
        !          6149:                } else
        !          6150: #endif
        !          6151:                if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          6152:                        zval *new_expr;
        !          6153: 
        !          6154:                        ALLOC_ZVAL(new_expr);
        !          6155:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          6156:                        expr_ptr = new_expr;
        !          6157:                        zendi_zval_copy_ctor(*expr_ptr);
        !          6158:                } else {
        !          6159:                        Z_ADDREF_P(expr_ptr);
        !          6160:                }
        !          6161:        }
        !          6162:        if (offset) {
        !          6163:                switch (Z_TYPE_P(offset)) {
        !          6164:                        case IS_DOUBLE:
        !          6165:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          6166:                                break;
        !          6167:                        case IS_LONG:
        !          6168:                        case IS_BOOL:
        !          6169:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          6170:                                break;
        !          6171:                        case IS_STRING:
        !          6172:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          6173:                                break;
        !          6174:                        case IS_NULL:
        !          6175:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          6176:                                break;
        !          6177:                        default:
        !          6178:                                zend_error(E_WARNING, "Illegal offset type");
        !          6179:                                zval_ptr_dtor(&expr_ptr);
        !          6180:                                /* do nothing */
        !          6181:                                break;
        !          6182:                }
        !          6183: 
        !          6184:        } else {
        !          6185:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          6186:        }
        !          6187:        if (opline->extended_value) {
        !          6188: 
        !          6189:        } else {
        !          6190: 
        !          6191:        }
        !          6192:        ZEND_VM_NEXT_OPCODE();
        !          6193: }
        !          6194: 
        !          6195: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6196: {
        !          6197:        zend_op *opline = EX(opline);
        !          6198: 
        !          6199:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          6200:        if (IS_TMP_VAR == IS_UNUSED) {
        !          6201:                ZEND_VM_NEXT_OPCODE();
        !          6202: #if 0 || IS_TMP_VAR != IS_UNUSED
        !          6203:        } else {
        !          6204:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          6205: #endif
        !          6206:        }
        !          6207: }
        !          6208: 
        !          6209: static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6210: {
        !          6211:        zend_op *opline = EX(opline);
        !          6212:        zend_free_op free_op1, free_op2;
        !          6213: 
        !          6214:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          6215:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6216:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6217:        zval_dtor(free_op1.var);
        !          6218:        zval_dtor(free_op2.var);
        !          6219:        ZEND_VM_NEXT_OPCODE();
        !          6220: }
        !          6221: 
        !          6222: static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6223: {
        !          6224:        zend_op *opline = EX(opline);
        !          6225:        zend_free_op free_op1, free_op2;
        !          6226: 
        !          6227:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          6228:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6229:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6230:        zval_dtor(free_op1.var);
        !          6231:        zval_dtor(free_op2.var);
        !          6232:        ZEND_VM_NEXT_OPCODE();
        !          6233: }
        !          6234: 
        !          6235: static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6236: {
        !          6237:        zend_op *opline = EX(opline);
        !          6238:        zend_free_op free_op1, free_op2;
        !          6239: 
        !          6240:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          6241:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6242:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6243:        zval_dtor(free_op1.var);
        !          6244:        zval_dtor(free_op2.var);
        !          6245:        ZEND_VM_NEXT_OPCODE();
        !          6246: }
        !          6247: 
        !          6248: static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6249: {
        !          6250:        zend_op *opline = EX(opline);
        !          6251:        zend_free_op free_op1, free_op2;
        !          6252: 
        !          6253:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          6254:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6255:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6256:        zval_dtor(free_op1.var);
        !          6257:        zval_dtor(free_op2.var);
        !          6258:        ZEND_VM_NEXT_OPCODE();
        !          6259: }
        !          6260: 
        !          6261: static int ZEND_FASTCALL  ZEND_MOD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6262: {
        !          6263:        zend_op *opline = EX(opline);
        !          6264:        zend_free_op free_op1, free_op2;
        !          6265: 
        !          6266:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          6267:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6268:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6269:        zval_dtor(free_op1.var);
        !          6270:        zval_dtor(free_op2.var);
        !          6271:        ZEND_VM_NEXT_OPCODE();
        !          6272: }
        !          6273: 
        !          6274: static int ZEND_FASTCALL  ZEND_SL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6275: {
        !          6276:        zend_op *opline = EX(opline);
        !          6277:        zend_free_op free_op1, free_op2;
        !          6278: 
        !          6279:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          6280:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6281:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6282:        zval_dtor(free_op1.var);
        !          6283:        zval_dtor(free_op2.var);
        !          6284:        ZEND_VM_NEXT_OPCODE();
        !          6285: }
        !          6286: 
        !          6287: static int ZEND_FASTCALL  ZEND_SR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6288: {
        !          6289:        zend_op *opline = EX(opline);
        !          6290:        zend_free_op free_op1, free_op2;
        !          6291: 
        !          6292:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          6293:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6294:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6295:        zval_dtor(free_op1.var);
        !          6296:        zval_dtor(free_op2.var);
        !          6297:        ZEND_VM_NEXT_OPCODE();
        !          6298: }
        !          6299: 
        !          6300: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6301: {
        !          6302:        zend_op *opline = EX(opline);
        !          6303:        zend_free_op free_op1, free_op2;
        !          6304: 
        !          6305:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          6306:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6307:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6308:        zval_dtor(free_op1.var);
        !          6309:        zval_dtor(free_op2.var);
        !          6310:        ZEND_VM_NEXT_OPCODE();
        !          6311: }
        !          6312: 
        !          6313: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6314: {
        !          6315:        zend_op *opline = EX(opline);
        !          6316:        zend_free_op free_op1, free_op2;
        !          6317: 
        !          6318:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          6319:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6320:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6321:        zval_dtor(free_op1.var);
        !          6322:        zval_dtor(free_op2.var);
        !          6323:        ZEND_VM_NEXT_OPCODE();
        !          6324: }
        !          6325: 
        !          6326: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6327: {
        !          6328:        zend_op *opline = EX(opline);
        !          6329:        zend_free_op free_op1, free_op2;
        !          6330:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6331: 
        !          6332:        is_identical_function(result,
        !          6333:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6334:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6335:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          6336:        zval_dtor(free_op1.var);
        !          6337:        zval_dtor(free_op2.var);
        !          6338:        ZEND_VM_NEXT_OPCODE();
        !          6339: }
        !          6340: 
        !          6341: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6342: {
        !          6343:        zend_op *opline = EX(opline);
        !          6344:        zend_free_op free_op1, free_op2;
        !          6345:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6346: 
        !          6347:        compare_function(result,
        !          6348:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6349:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6350:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          6351:        zval_dtor(free_op1.var);
        !          6352:        zval_dtor(free_op2.var);
        !          6353:        ZEND_VM_NEXT_OPCODE();
        !          6354: }
        !          6355: 
        !          6356: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6357: {
        !          6358:        zend_op *opline = EX(opline);
        !          6359:        zend_free_op free_op1, free_op2;
        !          6360:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6361: 
        !          6362:        compare_function(result,
        !          6363:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6364:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6365:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          6366:        zval_dtor(free_op1.var);
        !          6367:        zval_dtor(free_op2.var);
        !          6368:        ZEND_VM_NEXT_OPCODE();
        !          6369: }
        !          6370: 
        !          6371: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6372: {
        !          6373:        zend_op *opline = EX(opline);
        !          6374:        zend_free_op free_op1, free_op2;
        !          6375:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6376: 
        !          6377:        compare_function(result,
        !          6378:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6379:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6380:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          6381:        zval_dtor(free_op1.var);
        !          6382:        zval_dtor(free_op2.var);
        !          6383:        ZEND_VM_NEXT_OPCODE();
        !          6384: }
        !          6385: 
        !          6386: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6387: {
        !          6388:        zend_op *opline = EX(opline);
        !          6389:        zend_free_op free_op1, free_op2;
        !          6390:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6391: 
        !          6392:        compare_function(result,
        !          6393:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6394:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6395:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          6396:        zval_dtor(free_op1.var);
        !          6397:        zval_dtor(free_op2.var);
        !          6398:        ZEND_VM_NEXT_OPCODE();
        !          6399: }
        !          6400: 
        !          6401: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6402: {
        !          6403:        zend_op *opline = EX(opline);
        !          6404:        zend_free_op free_op1, free_op2;
        !          6405: 
        !          6406:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          6407:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6408:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6409:        zval_dtor(free_op1.var);
        !          6410:        zval_dtor(free_op2.var);
        !          6411:        ZEND_VM_NEXT_OPCODE();
        !          6412: }
        !          6413: 
        !          6414: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6415: {
        !          6416:        zend_op *opline = EX(opline);
        !          6417:        zend_free_op free_op1, free_op2;
        !          6418: 
        !          6419:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          6420:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6421:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6422:        zval_dtor(free_op1.var);
        !          6423:        zval_dtor(free_op2.var);
        !          6424:        ZEND_VM_NEXT_OPCODE();
        !          6425: }
        !          6426: 
        !          6427: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6428: {
        !          6429:        zend_op *opline = EX(opline);
        !          6430:        zend_free_op free_op1, free_op2;
        !          6431: 
        !          6432:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          6433:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6434:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6435:        zval_dtor(free_op1.var);
        !          6436:        zval_dtor(free_op2.var);
        !          6437:        ZEND_VM_NEXT_OPCODE();
        !          6438: }
        !          6439: 
        !          6440: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6441: {
        !          6442:        zend_op *opline = EX(opline);
        !          6443:        zend_free_op free_op1, free_op2;
        !          6444: 
        !          6445:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          6446:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6447:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6448:        zval_dtor(free_op1.var);
        !          6449:        zval_dtor(free_op2.var);
        !          6450:        ZEND_VM_NEXT_OPCODE();
        !          6451: }
        !          6452: 
        !          6453: static int ZEND_FASTCALL  ZEND_ADD_VAR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6454: {
        !          6455:        zend_op *opline = EX(opline);
        !          6456:        zend_free_op free_op2;
        !          6457:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          6458:        zval *var = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          6459:        zval var_copy;
        !          6460:        int use_copy = 0;
        !          6461: 
        !          6462:        if (IS_TMP_VAR == IS_UNUSED) {
        !          6463:                /* Initialize for erealloc in add_string_to_string */
        !          6464:                Z_STRVAL_P(str) = NULL;
        !          6465:                Z_STRLEN_P(str) = 0;
        !          6466:                Z_TYPE_P(str) = IS_STRING;
        !          6467: 
        !          6468:                INIT_PZVAL(str);
        !          6469:        }
        !          6470: 
        !          6471:        if (Z_TYPE_P(var) != IS_STRING) {
        !          6472:                zend_make_printable_zval(var, &var_copy, &use_copy);
        !          6473: 
        !          6474:                if (use_copy) {
        !          6475:                        var = &var_copy;
        !          6476:                }
        !          6477:        }
        !          6478:        add_string_to_string(str, str, var);
        !          6479: 
        !          6480:        if (use_copy) {
        !          6481:                zval_dtor(var);
        !          6482:        }
        !          6483:        /* original comment, possibly problematic:
        !          6484:         * FREE_OP is missing intentionally here - we're always working on the same temporary variable
        !          6485:         * (Zeev):  I don't think it's problematic, we only use variables
        !          6486:         * which aren't affected by FREE_OP(Ts, )'s anyway, unless they're
        !          6487:         * string offsets or overloaded objects
        !          6488:         */
        !          6489:        zval_dtor(free_op2.var);
        !          6490: 
        !          6491:        ZEND_VM_NEXT_OPCODE();
        !          6492: }
        !          6493: 
        !          6494: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6495: {
        !          6496:        zend_op *opline = EX(opline);
        !          6497:        zval *function_name;
        !          6498:        char *function_name_strval;
        !          6499:        int function_name_strlen;
        !          6500:        zend_free_op free_op1, free_op2;
        !          6501: 
        !          6502:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          6503: 
        !          6504:        function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          6505: 
        !          6506:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          6507:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          6508:        }
        !          6509: 
        !          6510:        function_name_strval = Z_STRVAL_P(function_name);
        !          6511:        function_name_strlen = Z_STRLEN_P(function_name);
        !          6512: 
        !          6513:        EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          6514: 
        !          6515:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          6516:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          6517:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          6518:                }
        !          6519: 
        !          6520:                /* First, locate the function. */
        !          6521:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          6522:                if (!EX(fbc)) {
        !          6523:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          6524:                }
        !          6525: 
        !          6526:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          6527:        } else {
        !          6528:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          6529:        }
        !          6530: 
        !          6531:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          6532:                EX(object) = NULL;
        !          6533:        } else {
        !          6534:                if (!PZVAL_IS_REF(EX(object))) {
        !          6535:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          6536:                } else {
        !          6537:                        zval *this_ptr;
        !          6538:                        ALLOC_ZVAL(this_ptr);
        !          6539:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          6540:                        zval_copy_ctor(this_ptr);
        !          6541:                        EX(object) = this_ptr;
        !          6542:                }
        !          6543:        }
        !          6544: 
        !          6545:        zval_dtor(free_op2.var);
        !          6546: 
        !          6547:        ZEND_VM_NEXT_OPCODE();
        !          6548: }
        !          6549: 
        !          6550: static int ZEND_FASTCALL  ZEND_CASE_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6551: {
        !          6552:        zend_op *opline = EX(opline);
        !          6553:        int switch_expr_is_overloaded=0;
        !          6554:        zend_free_op free_op1, free_op2;
        !          6555: 
        !          6556:        if (IS_TMP_VAR==IS_VAR) {
        !          6557:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          6558:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          6559:                } else {
        !          6560:                        switch_expr_is_overloaded = 1;
        !          6561:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          6562:                }
        !          6563:        }
        !          6564:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          6565:                                 _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6566:                                 _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6567: 
        !          6568:        zval_dtor(free_op2.var);
        !          6569:        if (switch_expr_is_overloaded) {
        !          6570:                /* We only free op1 if this is a string offset,
        !          6571:                 * Since if it is a TMP_VAR, it'll be reused by
        !          6572:                 * other CASE opcodes (whereas string offsets
        !          6573:                 * are allocated at each get_zval_ptr())
        !          6574:                 */
        !          6575:                zval_dtor(free_op1.var);
        !          6576:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          6577:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          6578:        }
        !          6579:        ZEND_VM_NEXT_OPCODE();
        !          6580: }
        !          6581: 
        !          6582: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6583: {
        !          6584:        zend_op *opline = EX(opline);
        !          6585:        zend_free_op free_op1, free_op2;
        !          6586:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          6587:        zval *expr_ptr;
        !          6588:        zval *offset=_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          6589: 
        !          6590: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          6591:        zval **expr_ptr_ptr = NULL;
        !          6592: 
        !          6593:        if (opline->extended_value) {
        !          6594:                expr_ptr_ptr=NULL;
        !          6595:                expr_ptr = *expr_ptr_ptr;
        !          6596:        } else {
        !          6597:                expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          6598:        }
        !          6599: #else
        !          6600:        expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          6601: #endif
        !          6602: 
        !          6603:        if (1) { /* temporary variable */
        !          6604:                zval *new_expr;
        !          6605: 
        !          6606:                ALLOC_ZVAL(new_expr);
        !          6607:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          6608:                expr_ptr = new_expr;
        !          6609:        } else {
        !          6610: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          6611:                if (opline->extended_value) {
        !          6612:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          6613:                        expr_ptr = *expr_ptr_ptr;
        !          6614:                        Z_ADDREF_P(expr_ptr);
        !          6615:                } else
        !          6616: #endif
        !          6617:                if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          6618:                        zval *new_expr;
        !          6619: 
        !          6620:                        ALLOC_ZVAL(new_expr);
        !          6621:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          6622:                        expr_ptr = new_expr;
        !          6623:                        zendi_zval_copy_ctor(*expr_ptr);
        !          6624:                } else {
        !          6625:                        Z_ADDREF_P(expr_ptr);
        !          6626:                }
        !          6627:        }
        !          6628:        if (offset) {
        !          6629:                switch (Z_TYPE_P(offset)) {
        !          6630:                        case IS_DOUBLE:
        !          6631:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          6632:                                break;
        !          6633:                        case IS_LONG:
        !          6634:                        case IS_BOOL:
        !          6635:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          6636:                                break;
        !          6637:                        case IS_STRING:
        !          6638:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          6639:                                break;
        !          6640:                        case IS_NULL:
        !          6641:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          6642:                                break;
        !          6643:                        default:
        !          6644:                                zend_error(E_WARNING, "Illegal offset type");
        !          6645:                                zval_ptr_dtor(&expr_ptr);
        !          6646:                                /* do nothing */
        !          6647:                                break;
        !          6648:                }
        !          6649:                zval_dtor(free_op2.var);
        !          6650:        } else {
        !          6651:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          6652:        }
        !          6653:        if (opline->extended_value) {
        !          6654: 
        !          6655:        } else {
        !          6656: 
        !          6657:        }
        !          6658:        ZEND_VM_NEXT_OPCODE();
        !          6659: }
        !          6660: 
        !          6661: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6662: {
        !          6663:        zend_op *opline = EX(opline);
        !          6664: 
        !          6665:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          6666:        if (IS_TMP_VAR == IS_UNUSED) {
        !          6667:                ZEND_VM_NEXT_OPCODE();
        !          6668: #if 0 || IS_TMP_VAR != IS_UNUSED
        !          6669:        } else {
        !          6670:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          6671: #endif
        !          6672:        }
        !          6673: }
        !          6674: 
        !          6675: static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6676: {
        !          6677:        zend_op *opline = EX(opline);
        !          6678:        zend_free_op free_op1, free_op2;
        !          6679: 
        !          6680:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          6681:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6682:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6683:        zval_dtor(free_op1.var);
        !          6684:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6685:        ZEND_VM_NEXT_OPCODE();
        !          6686: }
        !          6687: 
        !          6688: static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6689: {
        !          6690:        zend_op *opline = EX(opline);
        !          6691:        zend_free_op free_op1, free_op2;
        !          6692: 
        !          6693:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          6694:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6695:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6696:        zval_dtor(free_op1.var);
        !          6697:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6698:        ZEND_VM_NEXT_OPCODE();
        !          6699: }
        !          6700: 
        !          6701: static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6702: {
        !          6703:        zend_op *opline = EX(opline);
        !          6704:        zend_free_op free_op1, free_op2;
        !          6705: 
        !          6706:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          6707:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6708:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6709:        zval_dtor(free_op1.var);
        !          6710:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6711:        ZEND_VM_NEXT_OPCODE();
        !          6712: }
        !          6713: 
        !          6714: static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6715: {
        !          6716:        zend_op *opline = EX(opline);
        !          6717:        zend_free_op free_op1, free_op2;
        !          6718: 
        !          6719:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          6720:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6721:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6722:        zval_dtor(free_op1.var);
        !          6723:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6724:        ZEND_VM_NEXT_OPCODE();
        !          6725: }
        !          6726: 
        !          6727: static int ZEND_FASTCALL  ZEND_MOD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6728: {
        !          6729:        zend_op *opline = EX(opline);
        !          6730:        zend_free_op free_op1, free_op2;
        !          6731: 
        !          6732:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          6733:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6734:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6735:        zval_dtor(free_op1.var);
        !          6736:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6737:        ZEND_VM_NEXT_OPCODE();
        !          6738: }
        !          6739: 
        !          6740: static int ZEND_FASTCALL  ZEND_SL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6741: {
        !          6742:        zend_op *opline = EX(opline);
        !          6743:        zend_free_op free_op1, free_op2;
        !          6744: 
        !          6745:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          6746:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6747:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6748:        zval_dtor(free_op1.var);
        !          6749:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6750:        ZEND_VM_NEXT_OPCODE();
        !          6751: }
        !          6752: 
        !          6753: static int ZEND_FASTCALL  ZEND_SR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6754: {
        !          6755:        zend_op *opline = EX(opline);
        !          6756:        zend_free_op free_op1, free_op2;
        !          6757: 
        !          6758:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          6759:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6760:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6761:        zval_dtor(free_op1.var);
        !          6762:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6763:        ZEND_VM_NEXT_OPCODE();
        !          6764: }
        !          6765: 
        !          6766: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6767: {
        !          6768:        zend_op *opline = EX(opline);
        !          6769:        zend_free_op free_op1, free_op2;
        !          6770: 
        !          6771:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          6772:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6773:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6774:        zval_dtor(free_op1.var);
        !          6775:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6776:        ZEND_VM_NEXT_OPCODE();
        !          6777: }
        !          6778: 
        !          6779: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6780: {
        !          6781:        zend_op *opline = EX(opline);
        !          6782:        zend_free_op free_op1, free_op2;
        !          6783: 
        !          6784:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          6785:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6786:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6787:        zval_dtor(free_op1.var);
        !          6788:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6789:        ZEND_VM_NEXT_OPCODE();
        !          6790: }
        !          6791: 
        !          6792: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6793: {
        !          6794:        zend_op *opline = EX(opline);
        !          6795:        zend_free_op free_op1, free_op2;
        !          6796:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6797: 
        !          6798:        is_identical_function(result,
        !          6799:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6800:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6801:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          6802:        zval_dtor(free_op1.var);
        !          6803:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6804:        ZEND_VM_NEXT_OPCODE();
        !          6805: }
        !          6806: 
        !          6807: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6808: {
        !          6809:        zend_op *opline = EX(opline);
        !          6810:        zend_free_op free_op1, free_op2;
        !          6811:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6812: 
        !          6813:        compare_function(result,
        !          6814:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6815:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6816:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          6817:        zval_dtor(free_op1.var);
        !          6818:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6819:        ZEND_VM_NEXT_OPCODE();
        !          6820: }
        !          6821: 
        !          6822: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6823: {
        !          6824:        zend_op *opline = EX(opline);
        !          6825:        zend_free_op free_op1, free_op2;
        !          6826:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6827: 
        !          6828:        compare_function(result,
        !          6829:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6830:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6831:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          6832:        zval_dtor(free_op1.var);
        !          6833:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6834:        ZEND_VM_NEXT_OPCODE();
        !          6835: }
        !          6836: 
        !          6837: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6838: {
        !          6839:        zend_op *opline = EX(opline);
        !          6840:        zend_free_op free_op1, free_op2;
        !          6841:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6842: 
        !          6843:        compare_function(result,
        !          6844:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6845:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6846:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          6847:        zval_dtor(free_op1.var);
        !          6848:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6849:        ZEND_VM_NEXT_OPCODE();
        !          6850: }
        !          6851: 
        !          6852: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6853: {
        !          6854:        zend_op *opline = EX(opline);
        !          6855:        zend_free_op free_op1, free_op2;
        !          6856:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          6857: 
        !          6858:        compare_function(result,
        !          6859:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6860:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6861:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          6862:        zval_dtor(free_op1.var);
        !          6863:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6864:        ZEND_VM_NEXT_OPCODE();
        !          6865: }
        !          6866: 
        !          6867: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6868: {
        !          6869:        zend_op *opline = EX(opline);
        !          6870:        zend_free_op free_op1, free_op2;
        !          6871: 
        !          6872:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          6873:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6874:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6875:        zval_dtor(free_op1.var);
        !          6876:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6877:        ZEND_VM_NEXT_OPCODE();
        !          6878: }
        !          6879: 
        !          6880: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6881: {
        !          6882:        zend_op *opline = EX(opline);
        !          6883:        zend_free_op free_op1, free_op2;
        !          6884: 
        !          6885:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          6886:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6887:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6888:        zval_dtor(free_op1.var);
        !          6889:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6890:        ZEND_VM_NEXT_OPCODE();
        !          6891: }
        !          6892: 
        !          6893: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6894: {
        !          6895:        zend_op *opline = EX(opline);
        !          6896:        zend_free_op free_op1, free_op2;
        !          6897: 
        !          6898:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          6899:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6900:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6901:        zval_dtor(free_op1.var);
        !          6902:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6903:        ZEND_VM_NEXT_OPCODE();
        !          6904: }
        !          6905: 
        !          6906: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6907: {
        !          6908:        zend_op *opline = EX(opline);
        !          6909:        zend_free_op free_op1, free_op2;
        !          6910: 
        !          6911:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          6912:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          6913:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          6914:        zval_dtor(free_op1.var);
        !          6915:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6916:        ZEND_VM_NEXT_OPCODE();
        !          6917: }
        !          6918: 
        !          6919: static int ZEND_FASTCALL  ZEND_ADD_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6920: {
        !          6921:        zend_op *opline = EX(opline);
        !          6922:        zend_free_op free_op2;
        !          6923:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          6924:        zval *var = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          6925:        zval var_copy;
        !          6926:        int use_copy = 0;
        !          6927: 
        !          6928:        if (IS_TMP_VAR == IS_UNUSED) {
        !          6929:                /* Initialize for erealloc in add_string_to_string */
        !          6930:                Z_STRVAL_P(str) = NULL;
        !          6931:                Z_STRLEN_P(str) = 0;
        !          6932:                Z_TYPE_P(str) = IS_STRING;
        !          6933: 
        !          6934:                INIT_PZVAL(str);
        !          6935:        }
        !          6936: 
        !          6937:        if (Z_TYPE_P(var) != IS_STRING) {
        !          6938:                zend_make_printable_zval(var, &var_copy, &use_copy);
        !          6939: 
        !          6940:                if (use_copy) {
        !          6941:                        var = &var_copy;
        !          6942:                }
        !          6943:        }
        !          6944:        add_string_to_string(str, str, var);
        !          6945: 
        !          6946:        if (use_copy) {
        !          6947:                zval_dtor(var);
        !          6948:        }
        !          6949:        /* original comment, possibly problematic:
        !          6950:         * FREE_OP is missing intentionally here - we're always working on the same temporary variable
        !          6951:         * (Zeev):  I don't think it's problematic, we only use variables
        !          6952:         * which aren't affected by FREE_OP(Ts, )'s anyway, unless they're
        !          6953:         * string offsets or overloaded objects
        !          6954:         */
        !          6955:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          6956: 
        !          6957:        ZEND_VM_NEXT_OPCODE();
        !          6958: }
        !          6959: 
        !          6960: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          6961: {
        !          6962:        zend_op *opline = EX(opline);
        !          6963:        zval *function_name;
        !          6964:        char *function_name_strval;
        !          6965:        int function_name_strlen;
        !          6966:        zend_free_op free_op1, free_op2;
        !          6967: 
        !          6968:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          6969: 
        !          6970:        function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          6971: 
        !          6972:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          6973:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          6974:        }
        !          6975: 
        !          6976:        function_name_strval = Z_STRVAL_P(function_name);
        !          6977:        function_name_strlen = Z_STRLEN_P(function_name);
        !          6978: 
        !          6979:        EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          6980: 
        !          6981:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          6982:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          6983:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          6984:                }
        !          6985: 
        !          6986:                /* First, locate the function. */
        !          6987:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          6988:                if (!EX(fbc)) {
        !          6989:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          6990:                }
        !          6991: 
        !          6992:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          6993:        } else {
        !          6994:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          6995:        }
        !          6996: 
        !          6997:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          6998:                EX(object) = NULL;
        !          6999:        } else {
        !          7000:                if (!PZVAL_IS_REF(EX(object))) {
        !          7001:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          7002:                } else {
        !          7003:                        zval *this_ptr;
        !          7004:                        ALLOC_ZVAL(this_ptr);
        !          7005:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          7006:                        zval_copy_ctor(this_ptr);
        !          7007:                        EX(object) = this_ptr;
        !          7008:                }
        !          7009:        }
        !          7010: 
        !          7011:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          7012: 
        !          7013:        ZEND_VM_NEXT_OPCODE();
        !          7014: }
        !          7015: 
        !          7016: static int ZEND_FASTCALL  ZEND_CASE_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7017: {
        !          7018:        zend_op *opline = EX(opline);
        !          7019:        int switch_expr_is_overloaded=0;
        !          7020:        zend_free_op free_op1, free_op2;
        !          7021: 
        !          7022:        if (IS_TMP_VAR==IS_VAR) {
        !          7023:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          7024:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          7025:                } else {
        !          7026:                        switch_expr_is_overloaded = 1;
        !          7027:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          7028:                }
        !          7029:        }
        !          7030:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          7031:                                 _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7032:                                 _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          7033: 
        !          7034:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          7035:        if (switch_expr_is_overloaded) {
        !          7036:                /* We only free op1 if this is a string offset,
        !          7037:                 * Since if it is a TMP_VAR, it'll be reused by
        !          7038:                 * other CASE opcodes (whereas string offsets
        !          7039:                 * are allocated at each get_zval_ptr())
        !          7040:                 */
        !          7041:                zval_dtor(free_op1.var);
        !          7042:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          7043:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          7044:        }
        !          7045:        ZEND_VM_NEXT_OPCODE();
        !          7046: }
        !          7047: 
        !          7048: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7049: {
        !          7050:        zend_op *opline = EX(opline);
        !          7051:        zend_free_op free_op1, free_op2;
        !          7052:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          7053:        zval *expr_ptr;
        !          7054:        zval *offset=_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          7055: 
        !          7056: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          7057:        zval **expr_ptr_ptr = NULL;
        !          7058: 
        !          7059:        if (opline->extended_value) {
        !          7060:                expr_ptr_ptr=NULL;
        !          7061:                expr_ptr = *expr_ptr_ptr;
        !          7062:        } else {
        !          7063:                expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7064:        }
        !          7065: #else
        !          7066:        expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7067: #endif
        !          7068: 
        !          7069:        if (1) { /* temporary variable */
        !          7070:                zval *new_expr;
        !          7071: 
        !          7072:                ALLOC_ZVAL(new_expr);
        !          7073:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          7074:                expr_ptr = new_expr;
        !          7075:        } else {
        !          7076: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          7077:                if (opline->extended_value) {
        !          7078:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          7079:                        expr_ptr = *expr_ptr_ptr;
        !          7080:                        Z_ADDREF_P(expr_ptr);
        !          7081:                } else
        !          7082: #endif
        !          7083:                if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          7084:                        zval *new_expr;
        !          7085: 
        !          7086:                        ALLOC_ZVAL(new_expr);
        !          7087:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          7088:                        expr_ptr = new_expr;
        !          7089:                        zendi_zval_copy_ctor(*expr_ptr);
        !          7090:                } else {
        !          7091:                        Z_ADDREF_P(expr_ptr);
        !          7092:                }
        !          7093:        }
        !          7094:        if (offset) {
        !          7095:                switch (Z_TYPE_P(offset)) {
        !          7096:                        case IS_DOUBLE:
        !          7097:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          7098:                                break;
        !          7099:                        case IS_LONG:
        !          7100:                        case IS_BOOL:
        !          7101:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          7102:                                break;
        !          7103:                        case IS_STRING:
        !          7104:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          7105:                                break;
        !          7106:                        case IS_NULL:
        !          7107:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          7108:                                break;
        !          7109:                        default:
        !          7110:                                zend_error(E_WARNING, "Illegal offset type");
        !          7111:                                zval_ptr_dtor(&expr_ptr);
        !          7112:                                /* do nothing */
        !          7113:                                break;
        !          7114:                }
        !          7115:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          7116:        } else {
        !          7117:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          7118:        }
        !          7119:        if (opline->extended_value) {
        !          7120: 
        !          7121:        } else {
        !          7122: 
        !          7123:        }
        !          7124:        ZEND_VM_NEXT_OPCODE();
        !          7125: }
        !          7126: 
        !          7127: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7128: {
        !          7129:        zend_op *opline = EX(opline);
        !          7130: 
        !          7131:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          7132:        if (IS_TMP_VAR == IS_UNUSED) {
        !          7133:                ZEND_VM_NEXT_OPCODE();
        !          7134: #if 0 || IS_TMP_VAR != IS_UNUSED
        !          7135:        } else {
        !          7136:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          7137: #endif
        !          7138:        }
        !          7139: }
        !          7140: 
        !          7141: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7142: {
        !          7143:        zend_op *opline = EX(opline);
        !          7144:        zend_free_op free_op1;
        !          7145:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          7146:        zval *expr_ptr;
        !          7147:        zval *offset=NULL;
        !          7148: 
        !          7149: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          7150:        zval **expr_ptr_ptr = NULL;
        !          7151: 
        !          7152:        if (opline->extended_value) {
        !          7153:                expr_ptr_ptr=NULL;
        !          7154:                expr_ptr = *expr_ptr_ptr;
        !          7155:        } else {
        !          7156:                expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7157:        }
        !          7158: #else
        !          7159:        expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7160: #endif
        !          7161: 
        !          7162:        if (1) { /* temporary variable */
        !          7163:                zval *new_expr;
        !          7164: 
        !          7165:                ALLOC_ZVAL(new_expr);
        !          7166:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          7167:                expr_ptr = new_expr;
        !          7168:        } else {
        !          7169: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          7170:                if (opline->extended_value) {
        !          7171:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          7172:                        expr_ptr = *expr_ptr_ptr;
        !          7173:                        Z_ADDREF_P(expr_ptr);
        !          7174:                } else
        !          7175: #endif
        !          7176:                if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          7177:                        zval *new_expr;
        !          7178: 
        !          7179:                        ALLOC_ZVAL(new_expr);
        !          7180:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          7181:                        expr_ptr = new_expr;
        !          7182:                        zendi_zval_copy_ctor(*expr_ptr);
        !          7183:                } else {
        !          7184:                        Z_ADDREF_P(expr_ptr);
        !          7185:                }
        !          7186:        }
        !          7187:        if (offset) {
        !          7188:                switch (Z_TYPE_P(offset)) {
        !          7189:                        case IS_DOUBLE:
        !          7190:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          7191:                                break;
        !          7192:                        case IS_LONG:
        !          7193:                        case IS_BOOL:
        !          7194:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          7195:                                break;
        !          7196:                        case IS_STRING:
        !          7197:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          7198:                                break;
        !          7199:                        case IS_NULL:
        !          7200:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          7201:                                break;
        !          7202:                        default:
        !          7203:                                zend_error(E_WARNING, "Illegal offset type");
        !          7204:                                zval_ptr_dtor(&expr_ptr);
        !          7205:                                /* do nothing */
        !          7206:                                break;
        !          7207:                }
        !          7208: 
        !          7209:        } else {
        !          7210:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          7211:        }
        !          7212:        if (opline->extended_value) {
        !          7213: 
        !          7214:        } else {
        !          7215: 
        !          7216:        }
        !          7217:        ZEND_VM_NEXT_OPCODE();
        !          7218: }
        !          7219: 
        !          7220: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7221: {
        !          7222:        zend_op *opline = EX(opline);
        !          7223: 
        !          7224:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          7225:        if (IS_TMP_VAR == IS_UNUSED) {
        !          7226:                ZEND_VM_NEXT_OPCODE();
        !          7227: #if 0 || IS_TMP_VAR != IS_UNUSED
        !          7228:        } else {
        !          7229:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          7230: #endif
        !          7231:        }
        !          7232: }
        !          7233: 
        !          7234: static int ZEND_FASTCALL  ZEND_ADD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7235: {
        !          7236:        zend_op *opline = EX(opline);
        !          7237:        zend_free_op free_op1;
        !          7238: 
        !          7239:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          7240:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7241:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7242:        zval_dtor(free_op1.var);
        !          7243: 
        !          7244:        ZEND_VM_NEXT_OPCODE();
        !          7245: }
        !          7246: 
        !          7247: static int ZEND_FASTCALL  ZEND_SUB_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7248: {
        !          7249:        zend_op *opline = EX(opline);
        !          7250:        zend_free_op free_op1;
        !          7251: 
        !          7252:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          7253:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7254:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7255:        zval_dtor(free_op1.var);
        !          7256: 
        !          7257:        ZEND_VM_NEXT_OPCODE();
        !          7258: }
        !          7259: 
        !          7260: static int ZEND_FASTCALL  ZEND_MUL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7261: {
        !          7262:        zend_op *opline = EX(opline);
        !          7263:        zend_free_op free_op1;
        !          7264: 
        !          7265:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          7266:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7267:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7268:        zval_dtor(free_op1.var);
        !          7269: 
        !          7270:        ZEND_VM_NEXT_OPCODE();
        !          7271: }
        !          7272: 
        !          7273: static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7274: {
        !          7275:        zend_op *opline = EX(opline);
        !          7276:        zend_free_op free_op1;
        !          7277: 
        !          7278:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          7279:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7280:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7281:        zval_dtor(free_op1.var);
        !          7282: 
        !          7283:        ZEND_VM_NEXT_OPCODE();
        !          7284: }
        !          7285: 
        !          7286: static int ZEND_FASTCALL  ZEND_MOD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7287: {
        !          7288:        zend_op *opline = EX(opline);
        !          7289:        zend_free_op free_op1;
        !          7290: 
        !          7291:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          7292:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7293:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7294:        zval_dtor(free_op1.var);
        !          7295: 
        !          7296:        ZEND_VM_NEXT_OPCODE();
        !          7297: }
        !          7298: 
        !          7299: static int ZEND_FASTCALL  ZEND_SL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7300: {
        !          7301:        zend_op *opline = EX(opline);
        !          7302:        zend_free_op free_op1;
        !          7303: 
        !          7304:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          7305:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7306:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7307:        zval_dtor(free_op1.var);
        !          7308: 
        !          7309:        ZEND_VM_NEXT_OPCODE();
        !          7310: }
        !          7311: 
        !          7312: static int ZEND_FASTCALL  ZEND_SR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7313: {
        !          7314:        zend_op *opline = EX(opline);
        !          7315:        zend_free_op free_op1;
        !          7316: 
        !          7317:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          7318:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7319:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7320:        zval_dtor(free_op1.var);
        !          7321: 
        !          7322:        ZEND_VM_NEXT_OPCODE();
        !          7323: }
        !          7324: 
        !          7325: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7326: {
        !          7327:        zend_op *opline = EX(opline);
        !          7328:        zend_free_op free_op1;
        !          7329: 
        !          7330:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          7331:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7332:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7333:        zval_dtor(free_op1.var);
        !          7334: 
        !          7335:        ZEND_VM_NEXT_OPCODE();
        !          7336: }
        !          7337: 
        !          7338: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7339: {
        !          7340:        zend_op *opline = EX(opline);
        !          7341:        zend_free_op free_op1;
        !          7342: 
        !          7343:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          7344:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7345:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7346:        zval_dtor(free_op1.var);
        !          7347: 
        !          7348:        ZEND_VM_NEXT_OPCODE();
        !          7349: }
        !          7350: 
        !          7351: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7352: {
        !          7353:        zend_op *opline = EX(opline);
        !          7354:        zend_free_op free_op1;
        !          7355:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          7356: 
        !          7357:        is_identical_function(result,
        !          7358:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7359:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7360:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          7361:        zval_dtor(free_op1.var);
        !          7362: 
        !          7363:        ZEND_VM_NEXT_OPCODE();
        !          7364: }
        !          7365: 
        !          7366: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7367: {
        !          7368:        zend_op *opline = EX(opline);
        !          7369:        zend_free_op free_op1;
        !          7370:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          7371: 
        !          7372:        compare_function(result,
        !          7373:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7374:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7375:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          7376:        zval_dtor(free_op1.var);
        !          7377: 
        !          7378:        ZEND_VM_NEXT_OPCODE();
        !          7379: }
        !          7380: 
        !          7381: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7382: {
        !          7383:        zend_op *opline = EX(opline);
        !          7384:        zend_free_op free_op1;
        !          7385:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          7386: 
        !          7387:        compare_function(result,
        !          7388:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7389:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7390:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          7391:        zval_dtor(free_op1.var);
        !          7392: 
        !          7393:        ZEND_VM_NEXT_OPCODE();
        !          7394: }
        !          7395: 
        !          7396: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7397: {
        !          7398:        zend_op *opline = EX(opline);
        !          7399:        zend_free_op free_op1;
        !          7400:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          7401: 
        !          7402:        compare_function(result,
        !          7403:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7404:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7405:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          7406:        zval_dtor(free_op1.var);
        !          7407: 
        !          7408:        ZEND_VM_NEXT_OPCODE();
        !          7409: }
        !          7410: 
        !          7411: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7412: {
        !          7413:        zend_op *opline = EX(opline);
        !          7414:        zend_free_op free_op1;
        !          7415:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          7416: 
        !          7417:        compare_function(result,
        !          7418:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7419:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7420:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          7421:        zval_dtor(free_op1.var);
        !          7422: 
        !          7423:        ZEND_VM_NEXT_OPCODE();
        !          7424: }
        !          7425: 
        !          7426: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7427: {
        !          7428:        zend_op *opline = EX(opline);
        !          7429:        zend_free_op free_op1;
        !          7430: 
        !          7431:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          7432:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7433:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7434:        zval_dtor(free_op1.var);
        !          7435: 
        !          7436:        ZEND_VM_NEXT_OPCODE();
        !          7437: }
        !          7438: 
        !          7439: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7440: {
        !          7441:        zend_op *opline = EX(opline);
        !          7442:        zend_free_op free_op1;
        !          7443: 
        !          7444:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          7445:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7446:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7447:        zval_dtor(free_op1.var);
        !          7448: 
        !          7449:        ZEND_VM_NEXT_OPCODE();
        !          7450: }
        !          7451: 
        !          7452: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7453: {
        !          7454:        zend_op *opline = EX(opline);
        !          7455:        zend_free_op free_op1;
        !          7456: 
        !          7457:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          7458:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7459:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7460:        zval_dtor(free_op1.var);
        !          7461: 
        !          7462:        ZEND_VM_NEXT_OPCODE();
        !          7463: }
        !          7464: 
        !          7465: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7466: {
        !          7467:        zend_op *opline = EX(opline);
        !          7468:        zend_free_op free_op1;
        !          7469: 
        !          7470:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          7471:                _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7472:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7473:        zval_dtor(free_op1.var);
        !          7474: 
        !          7475:        ZEND_VM_NEXT_OPCODE();
        !          7476: }
        !          7477: 
        !          7478: static int ZEND_FASTCALL  ZEND_ADD_VAR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7479: {
        !          7480:        zend_op *opline = EX(opline);
        !          7481: 
        !          7482:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          7483:        zval *var = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          7484:        zval var_copy;
        !          7485:        int use_copy = 0;
        !          7486: 
        !          7487:        if (IS_TMP_VAR == IS_UNUSED) {
        !          7488:                /* Initialize for erealloc in add_string_to_string */
        !          7489:                Z_STRVAL_P(str) = NULL;
        !          7490:                Z_STRLEN_P(str) = 0;
        !          7491:                Z_TYPE_P(str) = IS_STRING;
        !          7492: 
        !          7493:                INIT_PZVAL(str);
        !          7494:        }
        !          7495: 
        !          7496:        if (Z_TYPE_P(var) != IS_STRING) {
        !          7497:                zend_make_printable_zval(var, &var_copy, &use_copy);
        !          7498: 
        !          7499:                if (use_copy) {
        !          7500:                        var = &var_copy;
        !          7501:                }
        !          7502:        }
        !          7503:        add_string_to_string(str, str, var);
        !          7504: 
        !          7505:        if (use_copy) {
        !          7506:                zval_dtor(var);
        !          7507:        }
        !          7508:        /* original comment, possibly problematic:
        !          7509:         * FREE_OP is missing intentionally here - we're always working on the same temporary variable
        !          7510:         * (Zeev):  I don't think it's problematic, we only use variables
        !          7511:         * which aren't affected by FREE_OP(Ts, )'s anyway, unless they're
        !          7512:         * string offsets or overloaded objects
        !          7513:         */
        !          7514: 
        !          7515:        ZEND_VM_NEXT_OPCODE();
        !          7516: }
        !          7517: 
        !          7518: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7519: {
        !          7520:        zend_op *opline = EX(opline);
        !          7521:        zval *function_name;
        !          7522:        char *function_name_strval;
        !          7523:        int function_name_strlen;
        !          7524:        zend_free_op free_op1;
        !          7525: 
        !          7526:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          7527: 
        !          7528:        function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          7529: 
        !          7530:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          7531:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          7532:        }
        !          7533: 
        !          7534:        function_name_strval = Z_STRVAL_P(function_name);
        !          7535:        function_name_strlen = Z_STRLEN_P(function_name);
        !          7536: 
        !          7537:        EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7538: 
        !          7539:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          7540:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          7541:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          7542:                }
        !          7543: 
        !          7544:                /* First, locate the function. */
        !          7545:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          7546:                if (!EX(fbc)) {
        !          7547:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          7548:                }
        !          7549: 
        !          7550:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          7551:        } else {
        !          7552:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          7553:        }
        !          7554: 
        !          7555:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          7556:                EX(object) = NULL;
        !          7557:        } else {
        !          7558:                if (!PZVAL_IS_REF(EX(object))) {
        !          7559:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          7560:                } else {
        !          7561:                        zval *this_ptr;
        !          7562:                        ALLOC_ZVAL(this_ptr);
        !          7563:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          7564:                        zval_copy_ctor(this_ptr);
        !          7565:                        EX(object) = this_ptr;
        !          7566:                }
        !          7567:        }
        !          7568: 
        !          7569: 
        !          7570:        ZEND_VM_NEXT_OPCODE();
        !          7571: }
        !          7572: 
        !          7573: static int ZEND_FASTCALL  ZEND_CASE_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7574: {
        !          7575:        zend_op *opline = EX(opline);
        !          7576:        int switch_expr_is_overloaded=0;
        !          7577:        zend_free_op free_op1;
        !          7578: 
        !          7579:        if (IS_TMP_VAR==IS_VAR) {
        !          7580:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          7581:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          7582:                } else {
        !          7583:                        switch_expr_is_overloaded = 1;
        !          7584:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          7585:                }
        !          7586:        }
        !          7587:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          7588:                                 _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          7589:                                 _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          7590: 
        !          7591:        if (switch_expr_is_overloaded) {
        !          7592:                /* We only free op1 if this is a string offset,
        !          7593:                 * Since if it is a TMP_VAR, it'll be reused by
        !          7594:                 * other CASE opcodes (whereas string offsets
        !          7595:                 * are allocated at each get_zval_ptr())
        !          7596:                 */
        !          7597:                zval_dtor(free_op1.var);
        !          7598:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          7599:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          7600:        }
        !          7601:        ZEND_VM_NEXT_OPCODE();
        !          7602: }
        !          7603: 
        !          7604: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7605: {
        !          7606:        zend_op *opline = EX(opline);
        !          7607:        zend_free_op free_op1;
        !          7608:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          7609:        zval *expr_ptr;
        !          7610:        zval *offset=_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          7611: 
        !          7612: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          7613:        zval **expr_ptr_ptr = NULL;
        !          7614: 
        !          7615:        if (opline->extended_value) {
        !          7616:                expr_ptr_ptr=NULL;
        !          7617:                expr_ptr = *expr_ptr_ptr;
        !          7618:        } else {
        !          7619:                expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7620:        }
        !          7621: #else
        !          7622:        expr_ptr=_get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7623: #endif
        !          7624: 
        !          7625:        if (1) { /* temporary variable */
        !          7626:                zval *new_expr;
        !          7627: 
        !          7628:                ALLOC_ZVAL(new_expr);
        !          7629:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          7630:                expr_ptr = new_expr;
        !          7631:        } else {
        !          7632: #if 0 || IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV
        !          7633:                if (opline->extended_value) {
        !          7634:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          7635:                        expr_ptr = *expr_ptr_ptr;
        !          7636:                        Z_ADDREF_P(expr_ptr);
        !          7637:                } else
        !          7638: #endif
        !          7639:                if (IS_TMP_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          7640:                        zval *new_expr;
        !          7641: 
        !          7642:                        ALLOC_ZVAL(new_expr);
        !          7643:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          7644:                        expr_ptr = new_expr;
        !          7645:                        zendi_zval_copy_ctor(*expr_ptr);
        !          7646:                } else {
        !          7647:                        Z_ADDREF_P(expr_ptr);
        !          7648:                }
        !          7649:        }
        !          7650:        if (offset) {
        !          7651:                switch (Z_TYPE_P(offset)) {
        !          7652:                        case IS_DOUBLE:
        !          7653:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          7654:                                break;
        !          7655:                        case IS_LONG:
        !          7656:                        case IS_BOOL:
        !          7657:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          7658:                                break;
        !          7659:                        case IS_STRING:
        !          7660:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          7661:                                break;
        !          7662:                        case IS_NULL:
        !          7663:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          7664:                                break;
        !          7665:                        default:
        !          7666:                                zend_error(E_WARNING, "Illegal offset type");
        !          7667:                                zval_ptr_dtor(&expr_ptr);
        !          7668:                                /* do nothing */
        !          7669:                                break;
        !          7670:                }
        !          7671: 
        !          7672:        } else {
        !          7673:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          7674:        }
        !          7675:        if (opline->extended_value) {
        !          7676: 
        !          7677:        } else {
        !          7678: 
        !          7679:        }
        !          7680:        ZEND_VM_NEXT_OPCODE();
        !          7681: }
        !          7682: 
        !          7683: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7684: {
        !          7685:        zend_op *opline = EX(opline);
        !          7686: 
        !          7687:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          7688:        if (IS_TMP_VAR == IS_UNUSED) {
        !          7689:                ZEND_VM_NEXT_OPCODE();
        !          7690: #if 0 || IS_TMP_VAR != IS_UNUSED
        !          7691:        } else {
        !          7692:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          7693: #endif
        !          7694:        }
        !          7695: }
        !          7696: 
        !          7697: static int ZEND_FASTCALL  ZEND_BW_NOT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7698: {
        !          7699:        zend_op *opline = EX(opline);
        !          7700:        zend_free_op free_op1;
        !          7701: 
        !          7702:        bitwise_not_function(&EX_T(opline->result.u.var).tmp_var,
        !          7703:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC) TSRMLS_CC);
        !          7704:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7705:        ZEND_VM_NEXT_OPCODE();
        !          7706: }
        !          7707: 
        !          7708: static int ZEND_FASTCALL  ZEND_BOOL_NOT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7709: {
        !          7710:        zend_op *opline = EX(opline);
        !          7711:        zend_free_op free_op1;
        !          7712: 
        !          7713:        boolean_not_function(&EX_T(opline->result.u.var).tmp_var,
        !          7714:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC) TSRMLS_CC);
        !          7715:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7716:        ZEND_VM_NEXT_OPCODE();
        !          7717: }
        !          7718: 
        !          7719: static int ZEND_FASTCALL  ZEND_PRE_INC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7720: {
        !          7721:        zend_op *opline = EX(opline);
        !          7722:        zend_free_op free_op1;
        !          7723:        zval **var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7724: 
        !          7725:        if (IS_VAR == IS_VAR && !var_ptr) {
        !          7726:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          7727:        }
        !          7728:        if (IS_VAR == IS_VAR && *var_ptr == EG(error_zval_ptr)) {
        !          7729:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          7730:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          7731:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          7732:                }
        !          7733:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7734:                ZEND_VM_NEXT_OPCODE();
        !          7735:        }
        !          7736: 
        !          7737:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          7738: 
        !          7739:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          7740:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          7741:                /* proxy object */
        !          7742:                zval *val = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          7743:                Z_ADDREF_P(val);
        !          7744:                increment_function(val);
        !          7745:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, val TSRMLS_CC);
        !          7746:                zval_ptr_dtor(&val);
        !          7747:        } else {
        !          7748:                increment_function(*var_ptr);
        !          7749:        }
        !          7750: 
        !          7751:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          7752:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          7753:                PZVAL_LOCK(*var_ptr);
        !          7754:        }
        !          7755: 
        !          7756:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7757:        ZEND_VM_NEXT_OPCODE();
        !          7758: }
        !          7759: 
        !          7760: static int ZEND_FASTCALL  ZEND_PRE_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7761: {
        !          7762:        zend_op *opline = EX(opline);
        !          7763:        zend_free_op free_op1;
        !          7764:        zval **var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7765: 
        !          7766:        if (IS_VAR == IS_VAR && !var_ptr) {
        !          7767:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          7768:        }
        !          7769:        if (IS_VAR == IS_VAR && *var_ptr == EG(error_zval_ptr)) {
        !          7770:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          7771:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          7772:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          7773:                }
        !          7774:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7775:                ZEND_VM_NEXT_OPCODE();
        !          7776:        }
        !          7777: 
        !          7778:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          7779: 
        !          7780:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          7781:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          7782:                /* proxy object */
        !          7783:                zval *val = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          7784:                Z_ADDREF_P(val);
        !          7785:                decrement_function(val);
        !          7786:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, val TSRMLS_CC);
        !          7787:                zval_ptr_dtor(&val);
        !          7788:        } else {
        !          7789:                decrement_function(*var_ptr);
        !          7790:        }
        !          7791: 
        !          7792:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          7793:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          7794:                PZVAL_LOCK(*var_ptr);
        !          7795:        }
        !          7796: 
        !          7797:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7798:        ZEND_VM_NEXT_OPCODE();
        !          7799: }
        !          7800: 
        !          7801: static int ZEND_FASTCALL  ZEND_POST_INC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7802: {
        !          7803:        zend_op *opline = EX(opline);
        !          7804:        zend_free_op free_op1;
        !          7805:        zval **var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7806: 
        !          7807:        if (IS_VAR == IS_VAR && !var_ptr) {
        !          7808:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          7809:        }
        !          7810:        if (IS_VAR == IS_VAR && *var_ptr == EG(error_zval_ptr)) {
        !          7811:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          7812:                        EX_T(opline->result.u.var).tmp_var = *EG(uninitialized_zval_ptr);
        !          7813:                }
        !          7814:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7815:                ZEND_VM_NEXT_OPCODE();
        !          7816:        }
        !          7817: 
        !          7818:        EX_T(opline->result.u.var).tmp_var = **var_ptr;
        !          7819:        zendi_zval_copy_ctor(EX_T(opline->result.u.var).tmp_var);
        !          7820: 
        !          7821:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          7822: 
        !          7823:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          7824:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          7825:                /* proxy object */
        !          7826:                zval *val = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          7827:                Z_ADDREF_P(val);
        !          7828:                increment_function(val);
        !          7829:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, val TSRMLS_CC);
        !          7830:                zval_ptr_dtor(&val);
        !          7831:        } else {
        !          7832:                increment_function(*var_ptr);
        !          7833:        }
        !          7834: 
        !          7835:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7836:        ZEND_VM_NEXT_OPCODE();
        !          7837: }
        !          7838: 
        !          7839: static int ZEND_FASTCALL  ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7840: {
        !          7841:        zend_op *opline = EX(opline);
        !          7842:        zend_free_op free_op1;
        !          7843:        zval **var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7844: 
        !          7845:        if (IS_VAR == IS_VAR && !var_ptr) {
        !          7846:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          7847:        }
        !          7848:        if (IS_VAR == IS_VAR && *var_ptr == EG(error_zval_ptr)) {
        !          7849:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          7850:                        EX_T(opline->result.u.var).tmp_var = *EG(uninitialized_zval_ptr);
        !          7851:                }
        !          7852:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7853:                ZEND_VM_NEXT_OPCODE();
        !          7854:        }
        !          7855: 
        !          7856:        EX_T(opline->result.u.var).tmp_var = **var_ptr;
        !          7857:        zendi_zval_copy_ctor(EX_T(opline->result.u.var).tmp_var);
        !          7858: 
        !          7859:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          7860: 
        !          7861:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          7862:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          7863:                /* proxy object */
        !          7864:                zval *val = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          7865:                Z_ADDREF_P(val);
        !          7866:                decrement_function(val);
        !          7867:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, val TSRMLS_CC);
        !          7868:                zval_ptr_dtor(&val);
        !          7869:        } else {
        !          7870:                decrement_function(*var_ptr);
        !          7871:        }
        !          7872: 
        !          7873:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7874:        ZEND_VM_NEXT_OPCODE();
        !          7875: }
        !          7876: 
        !          7877: static int ZEND_FASTCALL  ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7878: {
        !          7879:        zend_op *opline = EX(opline);
        !          7880:        zend_free_op free_op1;
        !          7881:        zval z_copy;
        !          7882:        zval *z = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7883: 
        !          7884:        if (IS_VAR != IS_CONST &&
        !          7885:            Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL) {
        !          7886:            if (IS_VAR == IS_TMP_VAR) {
        !          7887:                INIT_PZVAL(z);
        !          7888:            }
        !          7889:                if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
        !          7890:                        zend_print_variable(&z_copy);
        !          7891:                        zval_dtor(&z_copy);
        !          7892:                } else {
        !          7893:                        zend_print_variable(z);
        !          7894:                }
        !          7895:        } else {
        !          7896:                zend_print_variable(z);
        !          7897:        }
        !          7898: 
        !          7899:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7900:        ZEND_VM_NEXT_OPCODE();
        !          7901: }
        !          7902: 
        !          7903: static int ZEND_FASTCALL  ZEND_PRINT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          7904: {
        !          7905:        zend_op *opline = EX(opline);
        !          7906: 
        !          7907:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 1;
        !          7908:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_LONG;
        !          7909: 
        !          7910:        return ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          7911: }
        !          7912: 
        !          7913: static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          7914: {
        !          7915:        zend_op *opline = EX(opline);
        !          7916:        zend_free_op free_op1;
        !          7917:        zval *varname = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          7918:        zval **retval;
        !          7919:        zval tmp_varname;
        !          7920:        HashTable *target_symbol_table;
        !          7921: 
        !          7922:        if (IS_VAR != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
        !          7923:                tmp_varname = *varname;
        !          7924:                zval_copy_ctor(&tmp_varname);
        !          7925:                convert_to_string(&tmp_varname);
        !          7926:                varname = &tmp_varname;
        !          7927:        }
        !          7928: 
        !          7929:        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          7930:                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
        !          7931:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7932:        } else {
        !          7933:                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
        !          7934: /*
        !          7935:                if (!target_symbol_table) {
        !          7936:                        ZEND_VM_NEXT_OPCODE();
        !          7937:                }
        !          7938: */
        !          7939:                if (zend_hash_find(target_symbol_table, varname->value.str.val, varname->value.str.len+1, (void **) &retval) == FAILURE) {
        !          7940:                        switch (type) {
        !          7941:                                case BP_VAR_R:
        !          7942:                                case BP_VAR_UNSET:
        !          7943:                                        zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
        !          7944:                                        /* break missing intentionally */
        !          7945:                                case BP_VAR_IS:
        !          7946:                                        retval = &EG(uninitialized_zval_ptr);
        !          7947:                                        break;
        !          7948:                                case BP_VAR_RW:
        !          7949:                                        zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
        !          7950:                                        /* break missing intentionally */
        !          7951:                                case BP_VAR_W: {
        !          7952:                                                zval *new_zval = &EG(uninitialized_zval);
        !          7953: 
        !          7954:                                                Z_ADDREF_P(new_zval);
        !          7955:                                                zend_hash_update(target_symbol_table, varname->value.str.val, varname->value.str.len+1, &new_zval, sizeof(zval *), (void **) &retval);
        !          7956:                                        }
        !          7957:                                        break;
        !          7958:                                EMPTY_SWITCH_DEFAULT_CASE()
        !          7959:                        }
        !          7960:                }
        !          7961:                switch (opline->op2.u.EA.type) {
        !          7962:                        case ZEND_FETCH_GLOBAL:
        !          7963:                                if (IS_VAR != IS_TMP_VAR) {
        !          7964:                                        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7965:                                }
        !          7966:                                break;
        !          7967:                        case ZEND_FETCH_LOCAL:
        !          7968:                                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          7969:                                break;
        !          7970:                        case ZEND_FETCH_STATIC:
        !          7971:                                zval_update_constant(retval, (void*) 1 TSRMLS_CC);
        !          7972:                                break;
        !          7973:                        case ZEND_FETCH_GLOBAL_LOCK:
        !          7974:                                if (IS_VAR == IS_VAR && !free_op1.var) {
        !          7975:                                        PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          7976:                                }
        !          7977:                                break;
        !          7978:                }
        !          7979:        }
        !          7980: 
        !          7981: 
        !          7982:        if (IS_VAR != IS_CONST && varname == &tmp_varname) {
        !          7983:                zval_dtor(varname);
        !          7984:        }
        !          7985:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          7986:                if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          7987:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
        !          7988:                }
        !          7989:                PZVAL_LOCK(*retval);
        !          7990:                switch (type) {
        !          7991:                        case BP_VAR_R:
        !          7992:                        case BP_VAR_IS:
        !          7993:                                AI_SET_PTR(EX_T(opline->result.u.var).var, *retval);
        !          7994:                                break;
        !          7995:                        case BP_VAR_UNSET: {
        !          7996:                                zend_free_op free_res;
        !          7997: 
        !          7998:                                EX_T(opline->result.u.var).var.ptr_ptr = retval;
        !          7999:                                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          8000:                                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          8001:                                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          8002:                                }
        !          8003:                                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          8004:                                FREE_OP_VAR_PTR(free_res);
        !          8005:                                break;
        !          8006:                        default:
        !          8007:                                EX_T(opline->result.u.var).var.ptr_ptr = retval;
        !          8008:                                break;
        !          8009:                        }
        !          8010:                }
        !          8011:        }
        !          8012:        ZEND_VM_NEXT_OPCODE();
        !          8013: }
        !          8014: 
        !          8015: static int ZEND_FASTCALL  ZEND_FETCH_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8016: {
        !          8017:        return zend_fetch_var_address_helper_SPEC_VAR(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8018: }
        !          8019: 
        !          8020: static int ZEND_FASTCALL  ZEND_FETCH_W_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8021: {
        !          8022:        return zend_fetch_var_address_helper_SPEC_VAR(BP_VAR_W, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8023: }
        !          8024: 
        !          8025: static int ZEND_FASTCALL  ZEND_FETCH_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8026: {
        !          8027:        return zend_fetch_var_address_helper_SPEC_VAR(BP_VAR_RW, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8028: }
        !          8029: 
        !          8030: static int ZEND_FASTCALL  ZEND_FETCH_FUNC_ARG_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8031: {
        !          8032:        return zend_fetch_var_address_helper_SPEC_VAR(ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), EX(opline)->extended_value)?BP_VAR_W:BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8033: }
        !          8034: 
        !          8035: static int ZEND_FASTCALL  ZEND_FETCH_UNSET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8036: {
        !          8037:        return zend_fetch_var_address_helper_SPEC_VAR(BP_VAR_UNSET, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8038: }
        !          8039: 
        !          8040: static int ZEND_FASTCALL  ZEND_FETCH_IS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8041: {
        !          8042:        return zend_fetch_var_address_helper_SPEC_VAR(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8043: }
        !          8044: 
        !          8045: static int ZEND_FASTCALL  ZEND_JMPZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8046: {
        !          8047:        zend_op *opline = EX(opline);
        !          8048:        zend_free_op free_op1;
        !          8049:        zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8050:        int ret;
        !          8051: 
        !          8052:        if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          8053:                ret = Z_LVAL_P(val);
        !          8054:        } else {
        !          8055:                ret = i_zend_is_true(val);
        !          8056:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8057:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          8058:                        ZEND_VM_CONTINUE();
        !          8059:                }
        !          8060:        }
        !          8061:        if (!ret) {
        !          8062: #if DEBUG_ZEND>=2
        !          8063:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          8064: #endif
        !          8065:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          8066:                ZEND_VM_CONTINUE();
        !          8067:        }
        !          8068: 
        !          8069:        ZEND_VM_NEXT_OPCODE();
        !          8070: }
        !          8071: 
        !          8072: static int ZEND_FASTCALL  ZEND_JMPNZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8073: {
        !          8074:        zend_op *opline = EX(opline);
        !          8075:        zend_free_op free_op1;
        !          8076:        zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8077:        int ret;
        !          8078: 
        !          8079:        if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          8080:                ret = Z_LVAL_P(val);
        !          8081:        } else {
        !          8082:                ret = i_zend_is_true(val);
        !          8083:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8084:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          8085:                        ZEND_VM_CONTINUE();
        !          8086:                }
        !          8087:        }
        !          8088:        if (ret) {
        !          8089: #if DEBUG_ZEND>=2
        !          8090:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          8091: #endif
        !          8092:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          8093:                ZEND_VM_CONTINUE();
        !          8094:        }
        !          8095: 
        !          8096:        ZEND_VM_NEXT_OPCODE();
        !          8097: }
        !          8098: 
        !          8099: static int ZEND_FASTCALL  ZEND_JMPZNZ_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8100: {
        !          8101:        zend_op *opline = EX(opline);
        !          8102:        zend_free_op free_op1;
        !          8103:        zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8104:        int retval;
        !          8105: 
        !          8106:        if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          8107:                retval = Z_LVAL_P(val);
        !          8108:        } else {
        !          8109:                retval = i_zend_is_true(val);
        !          8110:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8111:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          8112:                        ZEND_VM_CONTINUE();
        !          8113:                }
        !          8114:        }
        !          8115:        if (EXPECTED(retval != 0)) {
        !          8116: #if DEBUG_ZEND>=2
        !          8117:                printf("Conditional jmp on true to %d\n", opline->extended_value);
        !          8118: #endif
        !          8119:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
        !          8120:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          8121:        } else {
        !          8122: #if DEBUG_ZEND>=2
        !          8123:                printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
        !          8124: #endif
        !          8125:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
        !          8126:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          8127:        }
        !          8128: }
        !          8129: 
        !          8130: static int ZEND_FASTCALL  ZEND_JMPZ_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8131: {
        !          8132:        zend_op *opline = EX(opline);
        !          8133:        zend_free_op free_op1;
        !          8134:        zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8135:        int retval;
        !          8136: 
        !          8137:        if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          8138:                retval = Z_LVAL_P(val);
        !          8139:        } else {
        !          8140:                retval = i_zend_is_true(val);
        !          8141:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8142:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          8143:                        ZEND_VM_CONTINUE();
        !          8144:                }
        !          8145:        }
        !          8146:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
        !          8147:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          8148:        if (!retval) {
        !          8149: #if DEBUG_ZEND>=2
        !          8150:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          8151: #endif
        !          8152:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          8153:                ZEND_VM_CONTINUE();
        !          8154:        }
        !          8155:        ZEND_VM_NEXT_OPCODE();
        !          8156: }
        !          8157: 
        !          8158: static int ZEND_FASTCALL  ZEND_JMPNZ_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8159: {
        !          8160:        zend_op *opline = EX(opline);
        !          8161:        zend_free_op free_op1;
        !          8162:        zval *val = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8163:        int retval;
        !          8164: 
        !          8165:        if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          8166:                retval = Z_LVAL_P(val);
        !          8167:        } else {
        !          8168:                retval = i_zend_is_true(val);
        !          8169:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8170:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          8171:                        ZEND_VM_CONTINUE();
        !          8172:                }
        !          8173:        }
        !          8174:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
        !          8175:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          8176:        if (retval) {
        !          8177: #if DEBUG_ZEND>=2
        !          8178:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          8179: #endif
        !          8180:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          8181:                ZEND_VM_CONTINUE();
        !          8182:        }
        !          8183:        ZEND_VM_NEXT_OPCODE();
        !          8184: }
        !          8185: 
        !          8186: static int ZEND_FASTCALL  ZEND_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8187: {
        !          8188:        zend_op *opline = EX(opline);
        !          8189:        zval *retval_ptr;
        !          8190:        zval **retval_ptr_ptr;
        !          8191:        zend_free_op free_op1;
        !          8192: 
        !          8193:        if (EG(active_op_array)->return_reference == ZEND_RETURN_REF) {
        !          8194: 
        !          8195:                if (IS_VAR == IS_CONST || IS_VAR == IS_TMP_VAR) {
        !          8196:                        /* Not supposed to happen, but we'll allow it */
        !          8197:                        zend_error(E_NOTICE, "Only variable references should be returned by reference");
        !          8198:                        goto return_by_value;
        !          8199:                }
        !          8200: 
        !          8201:                retval_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8202: 
        !          8203:                if (IS_VAR == IS_VAR && !retval_ptr_ptr) {
        !          8204:                        zend_error_noreturn(E_ERROR, "Cannot return string offsets by reference");
        !          8205:                }
        !          8206: 
        !          8207:                if (IS_VAR == IS_VAR && !Z_ISREF_PP(retval_ptr_ptr)) {
        !          8208:                        if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
        !          8209:                            EX_T(opline->op1.u.var).var.fcall_returned_reference) {
        !          8210:                        } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
        !          8211:                                if (IS_VAR == IS_VAR && !(free_op1.var != NULL)) {
        !          8212:                                        PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
        !          8213:                                }
        !          8214:                                zend_error(E_NOTICE, "Only variable references should be returned by reference");
        !          8215:                                goto return_by_value;
        !          8216:                        }
        !          8217:                }
        !          8218: 
        !          8219:                if (EG(return_value_ptr_ptr)) {
        !          8220:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr_ptr);
        !          8221:                        Z_ADDREF_PP(retval_ptr_ptr);
        !          8222: 
        !          8223:                        (*EG(return_value_ptr_ptr)) = (*retval_ptr_ptr);
        !          8224:                }
        !          8225:        } else {
        !          8226: return_by_value:
        !          8227: 
        !          8228:                retval_ptr = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8229: 
        !          8230:                if (!EG(return_value_ptr_ptr)) {
        !          8231:                        if (IS_VAR == IS_TMP_VAR) {
        !          8232:                                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8233:                        }
        !          8234:                } else if (!0) { /* Not a temp var */
        !          8235:                        if (IS_VAR == IS_CONST ||
        !          8236:                            EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
        !          8237:                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
        !          8238:                                zval *ret;
        !          8239: 
        !          8240:                                ALLOC_ZVAL(ret);
        !          8241:                                INIT_PZVAL_COPY(ret, retval_ptr);
        !          8242:                                zval_copy_ctor(ret);
        !          8243:                                *EG(return_value_ptr_ptr) = ret;
        !          8244:                        } else if ((IS_VAR == IS_CV || IS_VAR == IS_VAR) &&
        !          8245:                                   retval_ptr == &EG(uninitialized_zval)) {
        !          8246:                                zval *ret;
        !          8247: 
        !          8248:                                ALLOC_INIT_ZVAL(ret);
        !          8249:                                *EG(return_value_ptr_ptr) = ret;
        !          8250:                        } else {
        !          8251:                                *EG(return_value_ptr_ptr) = retval_ptr;
        !          8252:                                Z_ADDREF_P(retval_ptr);
        !          8253:                        }
        !          8254:                } else {
        !          8255:                        zval *ret;
        !          8256: 
        !          8257:                        ALLOC_ZVAL(ret);
        !          8258:                        INIT_PZVAL_COPY(ret, retval_ptr);
        !          8259:                        *EG(return_value_ptr_ptr) = ret;
        !          8260:                }
        !          8261:        }
        !          8262:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8263:        return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8264: }
        !          8265: 
        !          8266: static int ZEND_FASTCALL  ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8267: {
        !          8268:        zend_op *opline = EX(opline);
        !          8269:        zval *value;
        !          8270:        zval *exception;
        !          8271:        zend_free_op free_op1;
        !          8272: 
        !          8273:        value = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8274: 
        !          8275:        if (IS_VAR == IS_CONST || Z_TYPE_P(value) != IS_OBJECT) {
        !          8276:                zend_error_noreturn(E_ERROR, "Can only throw objects");
        !          8277:        }
        !          8278:        zend_exception_save(TSRMLS_C);
        !          8279:        /* Not sure if a complete copy is what we want here */
        !          8280:        ALLOC_ZVAL(exception);
        !          8281:        INIT_PZVAL_COPY(exception, value);
        !          8282:        if (!0) {
        !          8283:                zval_copy_ctor(exception);
        !          8284:        }
        !          8285: 
        !          8286:        zend_throw_exception_object(exception TSRMLS_CC);
        !          8287:        zend_exception_restore(TSRMLS_C);
        !          8288:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8289:        ZEND_VM_NEXT_OPCODE();
        !          8290: }
        !          8291: 
        !          8292: static int ZEND_FASTCALL  ZEND_SEND_VAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8293: {
        !          8294:        zend_op *opline = EX(opline);
        !          8295:        if (opline->extended_value==ZEND_DO_FCALL_BY_NAME
        !          8296:                && ARG_MUST_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          8297:                        zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.u.opline_num);
        !          8298:        }
        !          8299:        {
        !          8300:                zval *valptr;
        !          8301:                zval *value;
        !          8302:                zend_free_op free_op1;
        !          8303: 
        !          8304:                value = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8305: 
        !          8306:                ALLOC_ZVAL(valptr);
        !          8307:                INIT_PZVAL_COPY(valptr, value);
        !          8308:                if (!0) {
        !          8309:                        zval_copy_ctor(valptr);
        !          8310:                }
        !          8311:                zend_vm_stack_push(valptr TSRMLS_CC);
        !          8312:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8313:        }
        !          8314:        ZEND_VM_NEXT_OPCODE();
        !          8315: }
        !          8316: 
        !          8317: static int ZEND_FASTCALL zend_send_by_var_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS)
        !          8318: {
        !          8319:        zend_op *opline = EX(opline);
        !          8320:        zval *varptr;
        !          8321:        zend_free_op free_op1;
        !          8322:        varptr = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8323: 
        !          8324:        if (varptr == &EG(uninitialized_zval)) {
        !          8325:                ALLOC_ZVAL(varptr);
        !          8326:                INIT_ZVAL(*varptr);
        !          8327:                Z_SET_REFCOUNT_P(varptr, 0);
        !          8328:        } else if (PZVAL_IS_REF(varptr)) {
        !          8329:                zval *original_var = varptr;
        !          8330: 
        !          8331:                ALLOC_ZVAL(varptr);
        !          8332:                *varptr = *original_var;
        !          8333:                Z_UNSET_ISREF_P(varptr);
        !          8334:                Z_SET_REFCOUNT_P(varptr, 0);
        !          8335:                zval_copy_ctor(varptr);
        !          8336:        }
        !          8337:        Z_ADDREF_P(varptr);
        !          8338:        zend_vm_stack_push(varptr TSRMLS_CC);
        !          8339:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};  /* for string offsets */
        !          8340: 
        !          8341:        ZEND_VM_NEXT_OPCODE();
        !          8342: }
        !          8343: 
        !          8344: static int ZEND_FASTCALL  ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8345: {
        !          8346:        zend_op *opline = EX(opline);
        !          8347:        zend_free_op free_op1;
        !          8348:        zval *varptr;
        !          8349: 
        !          8350:        if (opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) { /* Had function_ptr at compile_time */
        !          8351:                if (!(opline->extended_value & ZEND_ARG_SEND_BY_REF)) {
        !          8352:                        return zend_send_by_var_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8353:                }
        !          8354:        } else if (!ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          8355:                return zend_send_by_var_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8356:        }
        !          8357: 
        !          8358:        if (IS_VAR == IS_VAR &&
        !          8359:                (opline->extended_value & ZEND_ARG_SEND_FUNCTION) &&
        !          8360:                EX_T(opline->op1.u.var).var.fcall_returned_reference &&
        !          8361:                EX_T(opline->op1.u.var).var.ptr) {
        !          8362:                varptr = EX_T(opline->op1.u.var).var.ptr;
        !          8363:                PZVAL_UNLOCK_EX(varptr, &free_op1, 0);
        !          8364:        } else {
        !          8365:                varptr = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8366:        }
        !          8367:        if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
        !          8368:             EX_T(opline->op1.u.var).var.fcall_returned_reference) &&
        !          8369:            varptr != &EG(uninitialized_zval) &&
        !          8370:            (PZVAL_IS_REF(varptr) ||
        !          8371:             (Z_REFCOUNT_P(varptr) == 1 && (IS_VAR == IS_CV || free_op1.var)))) {
        !          8372:                Z_SET_ISREF_P(varptr);
        !          8373:                Z_ADDREF_P(varptr);
        !          8374:                zend_vm_stack_push(varptr TSRMLS_CC);
        !          8375:        } else {
        !          8376:                zval *valptr;
        !          8377: 
        !          8378:                if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
        !          8379:                        !(opline->extended_value & ZEND_ARG_SEND_SILENT) :
        !          8380:                        !ARG_MAY_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          8381:                        zend_error(E_STRICT, "Only variables should be passed by reference");
        !          8382:                }
        !          8383:                ALLOC_ZVAL(valptr);
        !          8384:                INIT_PZVAL_COPY(valptr, varptr);
        !          8385:                if (!0) {
        !          8386:                        zval_copy_ctor(valptr);
        !          8387:                }
        !          8388:                zend_vm_stack_push(valptr TSRMLS_CC);
        !          8389:        }
        !          8390:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8391:        ZEND_VM_NEXT_OPCODE();
        !          8392: }
        !          8393: 
        !          8394: static int ZEND_FASTCALL  ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8395: {
        !          8396:        zend_op *opline = EX(opline);
        !          8397:        zend_free_op free_op1;
        !          8398:        zval **varptr_ptr;
        !          8399:        zval *varptr;
        !          8400:        varptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8401: 
        !          8402:        if (IS_VAR == IS_VAR && !varptr_ptr) {
        !          8403:                zend_error_noreturn(E_ERROR, "Only variables can be passed by reference");
        !          8404:        }
        !          8405: 
        !          8406:        if (IS_VAR == IS_VAR && *varptr_ptr == EG(error_zval_ptr)) {
        !          8407:                ALLOC_INIT_ZVAL(varptr);
        !          8408:                zend_vm_stack_push(varptr TSRMLS_CC);
        !          8409:                ZEND_VM_NEXT_OPCODE();
        !          8410:        }
        !          8411: 
        !          8412:        if (EX(function_state).function->type == ZEND_INTERNAL_FUNCTION && !ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          8413:                return zend_send_by_var_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8414:        }
        !          8415: 
        !          8416:        SEPARATE_ZVAL_TO_MAKE_IS_REF(varptr_ptr);
        !          8417:        varptr = *varptr_ptr;
        !          8418:        Z_ADDREF_P(varptr);
        !          8419:        zend_vm_stack_push(varptr TSRMLS_CC);
        !          8420: 
        !          8421:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8422:        ZEND_VM_NEXT_OPCODE();
        !          8423: }
        !          8424: 
        !          8425: static int ZEND_FASTCALL  ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8426: {
        !          8427:        zend_op *opline = EX(opline);
        !          8428: 
        !          8429:        if ((opline->extended_value == ZEND_DO_FCALL_BY_NAME)
        !          8430:                && ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          8431:                return ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8432:        }
        !          8433:        return zend_send_by_var_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          8434: }
        !          8435: 
        !          8436: static int ZEND_FASTCALL  ZEND_BOOL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8437: {
        !          8438:        zend_op *opline = EX(opline);
        !          8439:        zend_free_op free_op1;
        !          8440: 
        !          8441:        /* PHP 3.0 returned "" for false and 1 for true, here we use 0 and 1 for now */
        !          8442:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = i_zend_is_true(_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC));
        !          8443:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          8444:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8445: 
        !          8446:        ZEND_VM_NEXT_OPCODE();
        !          8447: }
        !          8448: 
        !          8449: static int ZEND_FASTCALL  ZEND_SWITCH_FREE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8450: {
        !          8451:        zend_op *opline = EX(opline);
        !          8452: 
        !          8453:        zend_switch_free(&EX_T(opline->op1.u.var), opline->extended_value TSRMLS_CC);
        !          8454:        ZEND_VM_NEXT_OPCODE();
        !          8455: }
        !          8456: 
        !          8457: static int ZEND_FASTCALL  ZEND_CLONE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8458: {
        !          8459:        zend_op *opline = EX(opline);
        !          8460:        zend_free_op free_op1;
        !          8461:        zval *obj = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8462:        zend_class_entry *ce;
        !          8463:        zend_function *clone;
        !          8464:        zend_object_clone_obj_t clone_call;
        !          8465: 
        !          8466:        if (IS_VAR == IS_CONST ||
        !          8467:            (IS_VAR == IS_VAR && !obj) ||
        !          8468:            Z_TYPE_P(obj) != IS_OBJECT) {
        !          8469:                zend_error_noreturn(E_ERROR, "__clone method called on non-object");
        !          8470:        }
        !          8471: 
        !          8472:        ce = Z_OBJCE_P(obj);
        !          8473:        clone = ce ? ce->clone : NULL;
        !          8474:        clone_call =  Z_OBJ_HT_P(obj)->clone_obj;
        !          8475:        if (!clone_call) {
        !          8476:                if (ce) {
        !          8477:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object of class %s", ce->name);
        !          8478:                } else {
        !          8479:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object");
        !          8480:                }
        !          8481:        }
        !          8482: 
        !          8483:        if (ce && clone) {
        !          8484:                if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
        !          8485:                        /* Ensure that if we're calling a private function, we're allowed to do so.
        !          8486:                         */
        !          8487:                        if (ce != EG(scope)) {
        !          8488:                                zend_error_noreturn(E_ERROR, "Call to private %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          8489:                        }
        !          8490:                } else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
        !          8491:                        /* Ensure that if we're calling a protected function, we're allowed to do so.
        !          8492:                         */
        !          8493:                        if (!zend_check_protected(clone->common.scope, EG(scope))) {
        !          8494:                                zend_error_noreturn(E_ERROR, "Call to protected %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          8495:                        }
        !          8496:                }
        !          8497:        }
        !          8498: 
        !          8499:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          8500:        if (!EG(exception)) {
        !          8501:                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          8502:                Z_OBJVAL_P(EX_T(opline->result.u.var).var.ptr) = clone_call(obj TSRMLS_CC);
        !          8503:                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_OBJECT;
        !          8504:                Z_SET_REFCOUNT_P(EX_T(opline->result.u.var).var.ptr, 1);
        !          8505:                Z_SET_ISREF_P(EX_T(opline->result.u.var).var.ptr);
        !          8506:                if (!RETURN_VALUE_USED(opline) || EG(exception)) {
        !          8507:                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
        !          8508:                }
        !          8509:        }
        !          8510:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8511:        ZEND_VM_NEXT_OPCODE();
        !          8512: }
        !          8513: 
        !          8514: static int ZEND_FASTCALL  ZEND_CAST_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8515: {
        !          8516:        zend_op *opline = EX(opline);
        !          8517:        zend_free_op free_op1;
        !          8518:        zval *expr = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8519:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          8520: 
        !          8521:        if (opline->extended_value != IS_STRING) {
        !          8522:                *result = *expr;
        !          8523:                if (!0) {
        !          8524:                        zendi_zval_copy_ctor(*result);
        !          8525:                }
        !          8526:        }
        !          8527:        switch (opline->extended_value) {
        !          8528:                case IS_NULL:
        !          8529:                        convert_to_null(result);
        !          8530:                        break;
        !          8531:                case IS_BOOL:
        !          8532:                        convert_to_boolean(result);
        !          8533:                        break;
        !          8534:                case IS_LONG:
        !          8535:                        convert_to_long(result);
        !          8536:                        break;
        !          8537:                case IS_DOUBLE:
        !          8538:                        convert_to_double(result);
        !          8539:                        break;
        !          8540:                case IS_STRING: {
        !          8541:                        zval var_copy;
        !          8542:                        int use_copy;
        !          8543: 
        !          8544:                        zend_make_printable_zval(expr, &var_copy, &use_copy);
        !          8545:                        if (use_copy) {
        !          8546:                                *result = var_copy;
        !          8547:                                if (0) {
        !          8548:                                        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8549:                                }
        !          8550:                        } else {
        !          8551:                                *result = *expr;
        !          8552:                                if (!0) {
        !          8553:                                        zendi_zval_copy_ctor(*result);
        !          8554:                                }
        !          8555:                        }
        !          8556:                        break;
        !          8557:                }
        !          8558:                case IS_ARRAY:
        !          8559:                        convert_to_array(result);
        !          8560:                        break;
        !          8561:                case IS_OBJECT:
        !          8562:                        convert_to_object(result);
        !          8563:                        break;
        !          8564:        }
        !          8565:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8566:        ZEND_VM_NEXT_OPCODE();
        !          8567: }
        !          8568: 
        !          8569: static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8570: {
        !          8571:        zend_op *opline = EX(opline);
        !          8572:        zend_op_array *new_op_array=NULL;
        !          8573:        int return_value_used;
        !          8574:        zend_free_op free_op1;
        !          8575:        zval *inc_filename = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8576:        zval tmp_inc_filename;
        !          8577:        zend_bool failure_retval=0;
        !          8578: 
        !          8579:        if (inc_filename->type!=IS_STRING) {
        !          8580:                tmp_inc_filename = *inc_filename;
        !          8581:                zval_copy_ctor(&tmp_inc_filename);
        !          8582:                convert_to_string(&tmp_inc_filename);
        !          8583:                inc_filename = &tmp_inc_filename;
        !          8584:        }
        !          8585: 
        !          8586:        return_value_used = RETURN_VALUE_USED(opline);
        !          8587: 
        !          8588:        if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) {
        !          8589:                if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) {
        !          8590:                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          8591:                } else {
        !          8592:                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          8593:                }
        !          8594:        } else {
        !          8595:                switch (Z_LVAL(opline->op2.u.constant)) {
        !          8596:                        case ZEND_INCLUDE_ONCE:
        !          8597:                        case ZEND_REQUIRE_ONCE: {
        !          8598:                                        zend_file_handle file_handle;
        !          8599:                                        char *resolved_path;
        !          8600: 
        !          8601:                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
        !          8602:                                        if (resolved_path) {
        !          8603:                                                failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
        !          8604:                                        } else {
        !          8605:                                                resolved_path = Z_STRVAL_P(inc_filename);
        !          8606:                                        }
        !          8607: 
        !          8608:                                        if (failure_retval) {
        !          8609:                                                /* do nothing, file already included */
        !          8610:                                        } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) {
        !          8611: 
        !          8612:                                                if (!file_handle.opened_path) {
        !          8613:                                                        file_handle.opened_path = estrdup(resolved_path);
        !          8614:                                                }
        !          8615: 
        !          8616:                                                if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
        !          8617:                                                        new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
        !          8618:                                                        zend_destroy_file_handle(&file_handle TSRMLS_CC);
        !          8619:                                                } else {
        !          8620:                                                        zend_file_handle_dtor(&file_handle TSRMLS_CC);
        !          8621:                                                        failure_retval=1;
        !          8622:                                                }
        !          8623:                                        } else {
        !          8624:                                                if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) {
        !          8625:                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          8626:                                                } else {
        !          8627:                                                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          8628:                                                }
        !          8629:                                        }
        !          8630:                                        if (resolved_path != Z_STRVAL_P(inc_filename)) {
        !          8631:                                                efree(resolved_path);
        !          8632:                                        }
        !          8633:                                }
        !          8634:                                break;
        !          8635:                        case ZEND_INCLUDE:
        !          8636:                        case ZEND_REQUIRE:
        !          8637:                                new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC);
        !          8638:                                break;
        !          8639:                        case ZEND_EVAL: {
        !          8640:                                        char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC);
        !          8641: 
        !          8642:                                        new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC);
        !          8643:                                        efree(eval_desc);
        !          8644:                                }
        !          8645:                                break;
        !          8646:                        EMPTY_SWITCH_DEFAULT_CASE()
        !          8647:                }
        !          8648:        }
        !          8649:        if (inc_filename==&tmp_inc_filename) {
        !          8650:                zval_dtor(&tmp_inc_filename);
        !          8651:        }
        !          8652:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8653:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          8654:        if (new_op_array && !EG(exception)) {
        !          8655:                EX(original_return_value) = EG(return_value_ptr_ptr);
        !          8656:                EG(return_value_ptr_ptr) = return_value_used ? EX_T(opline->result.u.var).var.ptr_ptr : NULL;
        !          8657:                EG(active_op_array) = new_op_array;
        !          8658:                EX_T(opline->result.u.var).var.ptr = NULL;
        !          8659: 
        !          8660:                EX(current_object) = EX(object);
        !          8661: 
        !          8662:                EX(function_state).function = (zend_function *) new_op_array;
        !          8663:                EX(object) = NULL;
        !          8664: 
        !          8665:                if (!EG(active_symbol_table)) {
        !          8666:                        zend_rebuild_symbol_table(TSRMLS_C);
        !          8667:                }
        !          8668: 
        !          8669:                if (zend_execute == execute) {
        !          8670:                        EX(call_opline) = opline;
        !          8671:                        ZEND_VM_ENTER();
        !          8672:                } else {
        !          8673:                        zend_execute(new_op_array TSRMLS_CC);
        !          8674:                }
        !          8675: 
        !          8676:                EX(function_state).function = (zend_function *) EX(op_array);
        !          8677:                EX(object) = EX(current_object);
        !          8678: 
        !          8679:                if (return_value_used) {
        !          8680:                        if (!EX_T(opline->result.u.var).var.ptr) { /* there was no return statement */
        !          8681:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          8682:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          8683:                                Z_LVAL_P(EX_T(opline->result.u.var).var.ptr) = 1;
        !          8684:                                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_BOOL;
        !          8685:                        }
        !          8686:                }
        !          8687: 
        !          8688:                EG(opline_ptr) = &EX(opline);
        !          8689:                EG(active_op_array) = EX(op_array);
        !          8690:                EG(return_value_ptr_ptr) = EX(original_return_value);
        !          8691:                destroy_op_array(new_op_array TSRMLS_CC);
        !          8692:                efree(new_op_array);
        !          8693:                if (EG(exception)) {
        !          8694:                        zend_throw_exception_internal(NULL TSRMLS_CC);
        !          8695:                }
        !          8696:        } else {
        !          8697:                if (return_value_used) {
        !          8698:                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          8699:                        INIT_ZVAL(*EX_T(opline->result.u.var).var.ptr);
        !          8700:                        Z_LVAL_P(EX_T(opline->result.u.var).var.ptr) = failure_retval;
        !          8701:                        Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_BOOL;
        !          8702:                }
        !          8703:        }
        !          8704:        ZEND_VM_NEXT_OPCODE();
        !          8705: }
        !          8706: 
        !          8707: static int ZEND_FASTCALL  ZEND_UNSET_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8708: {
        !          8709:        zend_op *opline = EX(opline);
        !          8710:        zval tmp, *varname;
        !          8711:        HashTable *target_symbol_table;
        !          8712:        zend_free_op free_op1;
        !          8713: 
        !          8714:        if (IS_VAR == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) {
        !          8715:                if (EG(active_symbol_table)) {
        !          8716:                        zend_execute_data *ex = EX(prev_execute_data);
        !          8717:                        zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.u.var);
        !          8718: 
        !          8719:                        if (zend_hash_quick_del(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value) == SUCCESS) {
        !          8720:                                while (ex && ex->symbol_table == EG(active_symbol_table)) {
        !          8721:                                        int i;
        !          8722: 
        !          8723:                                        if (ex->op_array) {
        !          8724:                                                for (i = 0; i < ex->op_array->last_var; i++) {
        !          8725:                                                        if (ex->op_array->vars[i].hash_value == cv->hash_value &&
        !          8726:                                                                ex->op_array->vars[i].name_len == cv->name_len &&
        !          8727:                                                                !memcmp(ex->op_array->vars[i].name, cv->name, cv->name_len)) {
        !          8728:                                                                ex->CVs[i] = NULL;
        !          8729:                                                                break;
        !          8730:                                                        }
        !          8731:                                                }
        !          8732:                                        }
        !          8733:                                        ex = ex->prev_execute_data;
        !          8734:                                }
        !          8735:                        }
        !          8736:                        EX(CVs)[opline->op1.u.var] = NULL;
        !          8737:                } else if (EX(CVs)[opline->op1.u.var]) {
        !          8738:                        zval_ptr_dtor(EX(CVs)[opline->op1.u.var]);
        !          8739:                        EX(CVs)[opline->op1.u.var] = NULL;
        !          8740:                }
        !          8741:                ZEND_VM_NEXT_OPCODE();
        !          8742:        }
        !          8743: 
        !          8744:        varname = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8745: 
        !          8746:        if (Z_TYPE_P(varname) != IS_STRING) {
        !          8747:                tmp = *varname;
        !          8748:                zval_copy_ctor(&tmp);
        !          8749:                convert_to_string(&tmp);
        !          8750:                varname = &tmp;
        !          8751:        } else if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
        !          8752:                Z_ADDREF_P(varname);
        !          8753:        }
        !          8754: 
        !          8755:        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          8756:                zend_std_unset_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname) TSRMLS_CC);
        !          8757:        } else {
        !          8758:                ulong hash_value = zend_inline_hash_func(varname->value.str.val, varname->value.str.len+1);
        !          8759: 
        !          8760:                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC);
        !          8761:                if (zend_hash_quick_del(target_symbol_table, varname->value.str.val, varname->value.str.len+1, hash_value) == SUCCESS) {
        !          8762:                        zend_execute_data *ex = execute_data;
        !          8763: 
        !          8764:                        do {
        !          8765:                                int i;
        !          8766: 
        !          8767:                                if (ex->op_array) {
        !          8768:                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          8769:                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          8770:                                                        ex->op_array->vars[i].name_len == varname->value.str.len &&
        !          8771:                                                        !memcmp(ex->op_array->vars[i].name, varname->value.str.val, varname->value.str.len)) {
        !          8772:                                                        ex->CVs[i] = NULL;
        !          8773:                                                        break;
        !          8774:                                                }
        !          8775:                                        }
        !          8776:                                }
        !          8777:                                ex = ex->prev_execute_data;
        !          8778:                        } while (ex && ex->symbol_table == target_symbol_table);
        !          8779:                }
        !          8780:        }
        !          8781: 
        !          8782:        if (varname == &tmp) {
        !          8783:                zval_dtor(&tmp);
        !          8784:        } else if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
        !          8785:                zval_ptr_dtor(&varname);
        !          8786:        }
        !          8787:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8788:        ZEND_VM_NEXT_OPCODE();
        !          8789: }
        !          8790: 
        !          8791: static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8792: {
        !          8793:        zend_op *opline = EX(opline);
        !          8794:        zend_free_op free_op1;
        !          8795:        zval *array_ptr, **array_ptr_ptr;
        !          8796:        HashTable *fe_ht;
        !          8797:        zend_object_iterator *iter = NULL;
        !          8798:        zend_class_entry *ce = NULL;
        !          8799:        zend_bool is_empty = 0;
        !          8800: 
        !          8801:        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          8802:                array_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8803:                if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
        !          8804:                        ALLOC_INIT_ZVAL(array_ptr);
        !          8805:                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
        !          8806:                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
        !          8807:                                zend_error(E_WARNING, "foreach() cannot iterate over objects without PHP class");
        !          8808:                                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          8809:                        }
        !          8810: 
        !          8811:                        ce = Z_OBJCE_PP(array_ptr_ptr);
        !          8812:                        if (!ce || ce->get_iterator == NULL) {
        !          8813:                                SEPARATE_ZVAL_IF_NOT_REF(array_ptr_ptr);
        !          8814:                                Z_ADDREF_PP(array_ptr_ptr);
        !          8815:                        }
        !          8816:                        array_ptr = *array_ptr_ptr;
        !          8817:                } else {
        !          8818:                        if (Z_TYPE_PP(array_ptr_ptr) == IS_ARRAY) {
        !          8819:                                SEPARATE_ZVAL_IF_NOT_REF(array_ptr_ptr);
        !          8820:                                if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
        !          8821:                                        Z_SET_ISREF_PP(array_ptr_ptr);
        !          8822:                                }
        !          8823:                        }
        !          8824:                        array_ptr = *array_ptr_ptr;
        !          8825:                        Z_ADDREF_P(array_ptr);
        !          8826:                }
        !          8827:        } else {
        !          8828:                array_ptr = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          8829:                if (0) { /* IS_TMP_VAR */
        !          8830:                        zval *tmp;
        !          8831: 
        !          8832:                        ALLOC_ZVAL(tmp);
        !          8833:                        INIT_PZVAL_COPY(tmp, array_ptr);
        !          8834:                        array_ptr = tmp;
        !          8835:                        if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
        !          8836:                                ce = Z_OBJCE_P(array_ptr);
        !          8837:                                if (ce && ce->get_iterator) {
        !          8838:                                        Z_DELREF_P(array_ptr);
        !          8839:                                }
        !          8840:                        }
        !          8841:                } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
        !          8842:                        ce = Z_OBJCE_P(array_ptr);
        !          8843:                        if (!ce || !ce->get_iterator) {
        !          8844:                                Z_ADDREF_P(array_ptr);
        !          8845:                        }
        !          8846:                } else if (IS_VAR == IS_CONST ||
        !          8847:                           ((IS_VAR == IS_CV || IS_VAR == IS_VAR) &&
        !          8848:                            !Z_ISREF_P(array_ptr) &&
        !          8849:                            Z_REFCOUNT_P(array_ptr) > 1)) {
        !          8850:                        zval *tmp;
        !          8851: 
        !          8852:                        ALLOC_ZVAL(tmp);
        !          8853:                        INIT_PZVAL_COPY(tmp, array_ptr);
        !          8854:                        zval_copy_ctor(tmp);
        !          8855:                        array_ptr = tmp;
        !          8856:                } else {
        !          8857:                        Z_ADDREF_P(array_ptr);
        !          8858:                }
        !          8859:        }
        !          8860: 
        !          8861:        if (ce && ce->get_iterator) {
        !          8862:                iter = ce->get_iterator(ce, array_ptr, opline->extended_value & ZEND_FE_RESET_REFERENCE TSRMLS_CC);
        !          8863: 
        !          8864:                if (iter && !EG(exception)) {
        !          8865:                        array_ptr = zend_iterator_wrap(iter TSRMLS_CC);
        !          8866:                } else {
        !          8867:                        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          8868:                                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8869:                        } else {
        !          8870:                                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8871:                        }
        !          8872:                        if (!EG(exception)) {
        !          8873:                                zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "Object of type %s did not create an Iterator", ce->name);
        !          8874:                        }
        !          8875:                        zend_throw_exception_internal(NULL TSRMLS_CC);
        !          8876:                        ZEND_VM_NEXT_OPCODE();
        !          8877:                }
        !          8878:        }
        !          8879: 
        !          8880:        AI_SET_PTR(EX_T(opline->result.u.var).var, array_ptr);
        !          8881:        PZVAL_LOCK(array_ptr);
        !          8882: 
        !          8883:        if (iter) {
        !          8884:                iter->index = 0;
        !          8885:                if (iter->funcs->rewind) {
        !          8886:                        iter->funcs->rewind(iter TSRMLS_CC);
        !          8887:                        if (EG(exception)) {
        !          8888:                                Z_DELREF_P(array_ptr);
        !          8889:                                zval_ptr_dtor(&array_ptr);
        !          8890:                                if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          8891:                                        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8892:                                } else {
        !          8893:                                        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8894:                                }
        !          8895:                                ZEND_VM_NEXT_OPCODE();
        !          8896:                        }
        !          8897:                }
        !          8898:                is_empty = iter->funcs->valid(iter TSRMLS_CC) != SUCCESS;
        !          8899:                if (EG(exception)) {
        !          8900:                        Z_DELREF_P(array_ptr);
        !          8901:                        zval_ptr_dtor(&array_ptr);
        !          8902:                        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          8903:                                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8904:                        } else {
        !          8905:                                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8906:                        }
        !          8907:                        ZEND_VM_NEXT_OPCODE();
        !          8908:                }
        !          8909:                iter->index = -1; /* will be set to 0 before using next handler */
        !          8910:        } else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
        !          8911:                zend_hash_internal_pointer_reset(fe_ht);
        !          8912:                if (ce) {
        !          8913:                        zend_object *zobj = zend_objects_get_address(array_ptr TSRMLS_CC);
        !          8914:                        while (zend_hash_has_more_elements(fe_ht) == SUCCESS) {
        !          8915:                                char *str_key;
        !          8916:                                uint str_key_len;
        !          8917:                                ulong int_key;
        !          8918:                                zend_uchar key_type;
        !          8919: 
        !          8920:                                key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
        !          8921:                                if (key_type != HASH_KEY_NON_EXISTANT &&
        !          8922:                                        (key_type == HASH_KEY_IS_LONG ||
        !          8923:                                     zend_check_property_access(zobj, str_key, str_key_len-1 TSRMLS_CC) == SUCCESS)) {
        !          8924:                                        break;
        !          8925:                                }
        !          8926:                                zend_hash_move_forward(fe_ht);
        !          8927:                        }
        !          8928:                }
        !          8929:                is_empty = zend_hash_has_more_elements(fe_ht) != SUCCESS;
        !          8930:                zend_hash_get_pointer(fe_ht, &EX_T(opline->result.u.var).fe.fe_pos);
        !          8931:        } else {
        !          8932:                zend_error(E_WARNING, "Invalid argument supplied for foreach()");
        !          8933:                is_empty = 1;
        !          8934:        }
        !          8935: 
        !          8936:        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          8937:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8938:        } else {
        !          8939:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          8940:        }
        !          8941:        if (is_empty) {
        !          8942:                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          8943:        } else {
        !          8944:                ZEND_VM_NEXT_OPCODE();
        !          8945:        }
        !          8946: }
        !          8947: 
        !          8948: static int ZEND_FASTCALL  ZEND_FE_FETCH_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          8949: {
        !          8950:        zend_op *opline = EX(opline);
        !          8951: 
        !          8952:        zval *array = EX_T(opline->op1.u.var).var.ptr;
        !          8953:        zval **value;
        !          8954:        char *str_key;
        !          8955:        uint str_key_len;
        !          8956:        ulong int_key;
        !          8957:        HashTable *fe_ht;
        !          8958:        zend_object_iterator *iter = NULL;
        !          8959:        int key_type = 0;
        !          8960:        zend_bool use_key = (zend_bool)(opline->extended_value & ZEND_FE_FETCH_WITH_KEY);
        !          8961: 
        !          8962:        switch (zend_iterator_unwrap(array, &iter TSRMLS_CC)) {
        !          8963:                default:
        !          8964:                case ZEND_ITER_INVALID:
        !          8965:                        zend_error(E_WARNING, "Invalid argument supplied for foreach()");
        !          8966:                        ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          8967: 
        !          8968:                case ZEND_ITER_PLAIN_OBJECT: {
        !          8969:                        char *class_name, *prop_name;
        !          8970:                        zend_object *zobj = zend_objects_get_address(array TSRMLS_CC);
        !          8971: 
        !          8972:                        fe_ht = HASH_OF(array);
        !          8973:                        zend_hash_set_pointer(fe_ht, &EX_T(opline->op1.u.var).fe.fe_pos);
        !          8974:                        do {
        !          8975:                                if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
        !          8976:                                        /* reached end of iteration */
        !          8977:                                        ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          8978:                                }
        !          8979:                                key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
        !          8980: 
        !          8981:                                zend_hash_move_forward(fe_ht);
        !          8982:                        } while (key_type == HASH_KEY_NON_EXISTANT ||
        !          8983:                                 (key_type != HASH_KEY_IS_LONG &&
        !          8984:                                  zend_check_property_access(zobj, str_key, str_key_len-1 TSRMLS_CC) != SUCCESS));
        !          8985:                        zend_hash_get_pointer(fe_ht, &EX_T(opline->op1.u.var).fe.fe_pos);
        !          8986:                        if (use_key && key_type != HASH_KEY_IS_LONG) {
        !          8987:                                zend_unmangle_property_name(str_key, str_key_len-1, &class_name, &prop_name);
        !          8988:                                str_key_len = strlen(prop_name);
        !          8989:                                str_key = estrndup(prop_name, str_key_len);
        !          8990:                                str_key_len++;
        !          8991:                        }
        !          8992:                        break;
        !          8993:                }
        !          8994: 
        !          8995:                case ZEND_ITER_PLAIN_ARRAY:
        !          8996:                        fe_ht = HASH_OF(array);
        !          8997:                        zend_hash_set_pointer(fe_ht, &EX_T(opline->op1.u.var).fe.fe_pos);
        !          8998:                        if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {
        !          8999:                                /* reached end of iteration */
        !          9000:                                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          9001:                        }
        !          9002:                        if (use_key) {
        !          9003:                                key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 1, NULL);
        !          9004:                        }
        !          9005:                        zend_hash_move_forward(fe_ht);
        !          9006:                        zend_hash_get_pointer(fe_ht, &EX_T(opline->op1.u.var).fe.fe_pos);
        !          9007:                        break;
        !          9008: 
        !          9009:                case ZEND_ITER_OBJECT:
        !          9010:                        /* !iter happens from exception */
        !          9011:                        if (iter && ++iter->index > 0) {
        !          9012:                                /* This could cause an endless loop if index becomes zero again.
        !          9013:                                 * In case that ever happens we need an additional flag. */
        !          9014:                                iter->funcs->move_forward(iter TSRMLS_CC);
        !          9015:                                if (EG(exception)) {
        !          9016:                                        Z_DELREF_P(array);
        !          9017:                                        zval_ptr_dtor(&array);
        !          9018:                                        ZEND_VM_NEXT_OPCODE();
        !          9019:                                }
        !          9020:                        }
        !          9021:                        /* If index is zero we come from FE_RESET and checked valid() already. */
        !          9022:                        if (!iter || (iter->index > 0 && iter->funcs->valid(iter TSRMLS_CC) == FAILURE)) {
        !          9023:                                /* reached end of iteration */
        !          9024:                                if (EG(exception)) {
        !          9025:                                        Z_DELREF_P(array);
        !          9026:                                        zval_ptr_dtor(&array);
        !          9027:                                        ZEND_VM_NEXT_OPCODE();
        !          9028:                                }
        !          9029:                                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          9030:                        }
        !          9031:                        iter->funcs->get_current_data(iter, &value TSRMLS_CC);
        !          9032:                        if (EG(exception)) {
        !          9033:                                Z_DELREF_P(array);
        !          9034:                                zval_ptr_dtor(&array);
        !          9035:                                ZEND_VM_NEXT_OPCODE();
        !          9036:                        }
        !          9037:                        if (!value) {
        !          9038:                                /* failure in get_current_data */
        !          9039:                                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          9040:                        }
        !          9041:                        if (use_key) {
        !          9042:                                if (iter->funcs->get_current_key) {
        !          9043:                                        key_type = iter->funcs->get_current_key(iter, &str_key, &str_key_len, &int_key TSRMLS_CC);
        !          9044:                                        if (EG(exception)) {
        !          9045:                                                Z_DELREF_P(array);
        !          9046:                                                zval_ptr_dtor(&array);
        !          9047:                                                ZEND_VM_NEXT_OPCODE();
        !          9048:                                        }
        !          9049:                                } else {
        !          9050:                                        key_type = HASH_KEY_IS_LONG;
        !          9051:                                        int_key = iter->index;
        !          9052:                                }
        !          9053:                        }
        !          9054:                        break;
        !          9055:        }
        !          9056: 
        !          9057:        if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
        !          9058:                SEPARATE_ZVAL_IF_NOT_REF(value);
        !          9059:                Z_SET_ISREF_PP(value);
        !          9060:                EX_T(opline->result.u.var).var.ptr_ptr = value;
        !          9061:                Z_ADDREF_PP(value);
        !          9062:        } else {
        !          9063:                AI_SET_PTR(EX_T(opline->result.u.var).var, *value);
        !          9064:                PZVAL_LOCK(*value);
        !          9065:        }
        !          9066: 
        !          9067:        if (use_key) {
        !          9068:                zend_op *op_data = opline+1;
        !          9069:                zval *key = &EX_T(op_data->result.u.var).tmp_var;
        !          9070: 
        !          9071:                switch (key_type) {
        !          9072:                        case HASH_KEY_IS_STRING:
        !          9073:                                Z_STRVAL_P(key) = str_key;
        !          9074:                                Z_STRLEN_P(key) = str_key_len-1;
        !          9075:                                Z_TYPE_P(key) = IS_STRING;
        !          9076:                                break;
        !          9077:                        case HASH_KEY_IS_LONG:
        !          9078:                                Z_LVAL_P(key) = int_key;
        !          9079:                                Z_TYPE_P(key) = IS_LONG;
        !          9080:                                break;
        !          9081:                        default:
        !          9082:                        case HASH_KEY_NON_EXISTANT:
        !          9083:                                ZVAL_NULL(key);
        !          9084:                                break;
        !          9085:                }
        !          9086:        }
        !          9087: 
        !          9088:        ZEND_VM_INC_OPCODE();
        !          9089:        ZEND_VM_NEXT_OPCODE();
        !          9090: }
        !          9091: 
        !          9092: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9093: {
        !          9094:        zend_op *opline = EX(opline);
        !          9095:        zval **value;
        !          9096:        zend_bool isset = 1;
        !          9097: 
        !          9098:        if (IS_VAR == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) {
        !          9099:                if (EX(CVs)[opline->op1.u.var]) {
        !          9100:                        value = EX(CVs)[opline->op1.u.var];
        !          9101:                } else if (EG(active_symbol_table)) {
        !          9102:                        zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.u.var);
        !          9103: 
        !          9104:                        if (zend_hash_quick_find(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value, (void **) &value) == FAILURE) {
        !          9105:                                isset = 0;
        !          9106:                        }
        !          9107:                } else {
        !          9108:                        isset = 0;
        !          9109:                }
        !          9110:        } else {
        !          9111:                HashTable *target_symbol_table;
        !          9112:                zend_free_op free_op1;
        !          9113:                zval tmp, *varname = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9114: 
        !          9115:                if (Z_TYPE_P(varname) != IS_STRING) {
        !          9116:                        tmp = *varname;
        !          9117:                        zval_copy_ctor(&tmp);
        !          9118:                        convert_to_string(&tmp);
        !          9119:                        varname = &tmp;
        !          9120:                }
        !          9121: 
        !          9122:                if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          9123:                        value = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 1 TSRMLS_CC);
        !          9124:                        if (!value) {
        !          9125:                                isset = 0;
        !          9126:                        }
        !          9127:                } else {
        !          9128:                        target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC);
        !          9129:                        if (zend_hash_find(target_symbol_table, varname->value.str.val, varname->value.str.len+1, (void **) &value) == FAILURE) {
        !          9130:                                isset = 0;
        !          9131:                        }
        !          9132:                }
        !          9133: 
        !          9134:                if (varname == &tmp) {
        !          9135:                        zval_dtor(&tmp);
        !          9136:                }
        !          9137:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9138:        }
        !          9139: 
        !          9140:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          9141: 
        !          9142:        switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
        !          9143:                case ZEND_ISSET:
        !          9144:                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          9145:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
        !          9146:                        } else {
        !          9147:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
        !          9148:                        }
        !          9149:                        break;
        !          9150:                case ZEND_ISEMPTY:
        !          9151:                        if (!isset || !i_zend_is_true(*value)) {
        !          9152:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 1;
        !          9153:                        } else {
        !          9154:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
        !          9155:                        }
        !          9156:                        break;
        !          9157:        }
        !          9158: 
        !          9159:        ZEND_VM_NEXT_OPCODE();
        !          9160: }
        !          9161: 
        !          9162: static int ZEND_FASTCALL  ZEND_EXIT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9163: {
        !          9164: #if 0 || (IS_VAR != IS_UNUSED)
        !          9165:        zend_op *opline = EX(opline);
        !          9166:        if (IS_VAR != IS_UNUSED) {
        !          9167:                zend_free_op free_op1;
        !          9168:                zval *ptr = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9169: 
        !          9170:                if (Z_TYPE_P(ptr) == IS_LONG) {
        !          9171:                        EG(exit_status) = Z_LVAL_P(ptr);
        !          9172:                } else {
        !          9173:                        zend_print_variable(ptr);
        !          9174:                }
        !          9175:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9176:        }
        !          9177: #endif
        !          9178:        zend_bailout();
        !          9179:        ZEND_VM_NEXT_OPCODE();
        !          9180: }
        !          9181: 
        !          9182: static int ZEND_FASTCALL  ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9183: {
        !          9184:        zend_op *opline = EX(opline);
        !          9185:        zend_free_op free_op1;
        !          9186:        zval *value = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9187: 
        !          9188:        if (i_zend_is_true(value)) {
        !          9189:                EX_T(opline->result.u.var).tmp_var = *value;
        !          9190:                zendi_zval_copy_ctor(EX_T(opline->result.u.var).tmp_var);
        !          9191:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9192: #if DEBUG_ZEND>=2
        !          9193:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          9194: #endif
        !          9195:                ZEND_VM_JMP(opline->op2.u.jmp_addr);
        !          9196:        }
        !          9197: 
        !          9198:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9199:        ZEND_VM_NEXT_OPCODE();
        !          9200: }
        !          9201: 
        !          9202: static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9203: {
        !          9204:        zend_op *opline = EX(opline);
        !          9205:        zend_free_op free_op1;
        !          9206:        zval *value = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9207: 
        !          9208:        EX_T(opline->result.u.var).tmp_var = *value;
        !          9209:        if (!0) {
        !          9210:                zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var);
        !          9211:        }
        !          9212:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9213:        ZEND_VM_NEXT_OPCODE();
        !          9214: }
        !          9215: 
        !          9216: static int ZEND_FASTCALL  ZEND_INSTANCEOF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9217: {
        !          9218:        zend_op *opline = EX(opline);
        !          9219:        zend_free_op free_op1;
        !          9220:        zval *expr = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9221:        zend_bool result;
        !          9222: 
        !          9223:        if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->get_class_entry) {
        !          9224:                result = instanceof_function(Z_OBJCE_P(expr), EX_T(opline->op2.u.var).class_entry TSRMLS_CC);
        !          9225:        } else {
        !          9226:                result = 0;
        !          9227:        }
        !          9228:        ZVAL_BOOL(&EX_T(opline->result.u.var).tmp_var, result);
        !          9229:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9230:        ZEND_VM_NEXT_OPCODE();
        !          9231: }
        !          9232: 
        !          9233: static int ZEND_FASTCALL  ZEND_ADD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9234: {
        !          9235:        zend_op *opline = EX(opline);
        !          9236:        zend_free_op free_op1;
        !          9237: 
        !          9238:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          9239:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9240:                &opline->op2.u.constant TSRMLS_CC);
        !          9241:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9242: 
        !          9243:        ZEND_VM_NEXT_OPCODE();
        !          9244: }
        !          9245: 
        !          9246: static int ZEND_FASTCALL  ZEND_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9247: {
        !          9248:        zend_op *opline = EX(opline);
        !          9249:        zend_free_op free_op1;
        !          9250: 
        !          9251:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          9252:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9253:                &opline->op2.u.constant TSRMLS_CC);
        !          9254:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9255: 
        !          9256:        ZEND_VM_NEXT_OPCODE();
        !          9257: }
        !          9258: 
        !          9259: static int ZEND_FASTCALL  ZEND_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9260: {
        !          9261:        zend_op *opline = EX(opline);
        !          9262:        zend_free_op free_op1;
        !          9263: 
        !          9264:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          9265:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9266:                &opline->op2.u.constant TSRMLS_CC);
        !          9267:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9268: 
        !          9269:        ZEND_VM_NEXT_OPCODE();
        !          9270: }
        !          9271: 
        !          9272: static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9273: {
        !          9274:        zend_op *opline = EX(opline);
        !          9275:        zend_free_op free_op1;
        !          9276: 
        !          9277:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          9278:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9279:                &opline->op2.u.constant TSRMLS_CC);
        !          9280:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9281: 
        !          9282:        ZEND_VM_NEXT_OPCODE();
        !          9283: }
        !          9284: 
        !          9285: static int ZEND_FASTCALL  ZEND_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9286: {
        !          9287:        zend_op *opline = EX(opline);
        !          9288:        zend_free_op free_op1;
        !          9289: 
        !          9290:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          9291:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9292:                &opline->op2.u.constant TSRMLS_CC);
        !          9293:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9294: 
        !          9295:        ZEND_VM_NEXT_OPCODE();
        !          9296: }
        !          9297: 
        !          9298: static int ZEND_FASTCALL  ZEND_SL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9299: {
        !          9300:        zend_op *opline = EX(opline);
        !          9301:        zend_free_op free_op1;
        !          9302: 
        !          9303:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          9304:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9305:                &opline->op2.u.constant TSRMLS_CC);
        !          9306:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9307: 
        !          9308:        ZEND_VM_NEXT_OPCODE();
        !          9309: }
        !          9310: 
        !          9311: static int ZEND_FASTCALL  ZEND_SR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9312: {
        !          9313:        zend_op *opline = EX(opline);
        !          9314:        zend_free_op free_op1;
        !          9315: 
        !          9316:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          9317:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9318:                &opline->op2.u.constant TSRMLS_CC);
        !          9319:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9320: 
        !          9321:        ZEND_VM_NEXT_OPCODE();
        !          9322: }
        !          9323: 
        !          9324: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9325: {
        !          9326:        zend_op *opline = EX(opline);
        !          9327:        zend_free_op free_op1;
        !          9328: 
        !          9329:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          9330:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9331:                &opline->op2.u.constant TSRMLS_CC);
        !          9332:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9333: 
        !          9334:        ZEND_VM_NEXT_OPCODE();
        !          9335: }
        !          9336: 
        !          9337: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9338: {
        !          9339:        zend_op *opline = EX(opline);
        !          9340:        zend_free_op free_op1;
        !          9341: 
        !          9342:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          9343:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9344:                &opline->op2.u.constant TSRMLS_CC);
        !          9345:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9346: 
        !          9347:        ZEND_VM_NEXT_OPCODE();
        !          9348: }
        !          9349: 
        !          9350: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9351: {
        !          9352:        zend_op *opline = EX(opline);
        !          9353:        zend_free_op free_op1;
        !          9354:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          9355: 
        !          9356:        is_identical_function(result,
        !          9357:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9358:                &opline->op2.u.constant TSRMLS_CC);
        !          9359:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          9360:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9361: 
        !          9362:        ZEND_VM_NEXT_OPCODE();
        !          9363: }
        !          9364: 
        !          9365: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9366: {
        !          9367:        zend_op *opline = EX(opline);
        !          9368:        zend_free_op free_op1;
        !          9369:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          9370: 
        !          9371:        compare_function(result,
        !          9372:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9373:                &opline->op2.u.constant TSRMLS_CC);
        !          9374:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          9375:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9376: 
        !          9377:        ZEND_VM_NEXT_OPCODE();
        !          9378: }
        !          9379: 
        !          9380: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9381: {
        !          9382:        zend_op *opline = EX(opline);
        !          9383:        zend_free_op free_op1;
        !          9384:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          9385: 
        !          9386:        compare_function(result,
        !          9387:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9388:                &opline->op2.u.constant TSRMLS_CC);
        !          9389:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          9390:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9391: 
        !          9392:        ZEND_VM_NEXT_OPCODE();
        !          9393: }
        !          9394: 
        !          9395: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9396: {
        !          9397:        zend_op *opline = EX(opline);
        !          9398:        zend_free_op free_op1;
        !          9399:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          9400: 
        !          9401:        compare_function(result,
        !          9402:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9403:                &opline->op2.u.constant TSRMLS_CC);
        !          9404:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          9405:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9406: 
        !          9407:        ZEND_VM_NEXT_OPCODE();
        !          9408: }
        !          9409: 
        !          9410: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9411: {
        !          9412:        zend_op *opline = EX(opline);
        !          9413:        zend_free_op free_op1;
        !          9414:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          9415: 
        !          9416:        compare_function(result,
        !          9417:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9418:                &opline->op2.u.constant TSRMLS_CC);
        !          9419:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          9420:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9421: 
        !          9422:        ZEND_VM_NEXT_OPCODE();
        !          9423: }
        !          9424: 
        !          9425: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9426: {
        !          9427:        zend_op *opline = EX(opline);
        !          9428:        zend_free_op free_op1;
        !          9429: 
        !          9430:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          9431:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9432:                &opline->op2.u.constant TSRMLS_CC);
        !          9433:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9434: 
        !          9435:        ZEND_VM_NEXT_OPCODE();
        !          9436: }
        !          9437: 
        !          9438: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9439: {
        !          9440:        zend_op *opline = EX(opline);
        !          9441:        zend_free_op free_op1;
        !          9442: 
        !          9443:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          9444:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9445:                &opline->op2.u.constant TSRMLS_CC);
        !          9446:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9447: 
        !          9448:        ZEND_VM_NEXT_OPCODE();
        !          9449: }
        !          9450: 
        !          9451: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9452: {
        !          9453:        zend_op *opline = EX(opline);
        !          9454:        zend_free_op free_op1;
        !          9455: 
        !          9456:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          9457:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9458:                &opline->op2.u.constant TSRMLS_CC);
        !          9459:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9460: 
        !          9461:        ZEND_VM_NEXT_OPCODE();
        !          9462: }
        !          9463: 
        !          9464: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9465: {
        !          9466:        zend_op *opline = EX(opline);
        !          9467:        zend_free_op free_op1;
        !          9468: 
        !          9469:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          9470:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          9471:                &opline->op2.u.constant TSRMLS_CC);
        !          9472:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9473: 
        !          9474:        ZEND_VM_NEXT_OPCODE();
        !          9475: }
        !          9476: 
        !          9477: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          9478: {
        !          9479:        zend_op *opline = EX(opline);
        !          9480:        zend_op *op_data = opline+1;
        !          9481:        zend_free_op free_op1, free_op_data1;
        !          9482:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9483:        zval *object;
        !          9484:        zval *property = &opline->op2.u.constant;
        !          9485:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          9486:        znode *result = &opline->result;
        !          9487:        int have_get_ptr = 0;
        !          9488: 
        !          9489:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          9490:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          9491:        }
        !          9492: 
        !          9493:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          9494:        make_real_object(object_ptr TSRMLS_CC);
        !          9495:        object = *object_ptr;
        !          9496: 
        !          9497:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          9498:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          9499: 
        !          9500:                FREE_OP(free_op_data1);
        !          9501: 
        !          9502:                if (!RETURN_VALUE_UNUSED(result)) {
        !          9503:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          9504:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          9505:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          9506:                }
        !          9507:        } else {
        !          9508:                /* here we are sure we are dealing with an object */
        !          9509:                if (0) {
        !          9510:                        MAKE_REAL_ZVAL_PTR(property);
        !          9511:                }
        !          9512: 
        !          9513:                /* here property is a string */
        !          9514:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          9515:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          9516:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          9517:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          9518:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          9519: 
        !          9520:                                have_get_ptr = 1;
        !          9521:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          9522:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          9523:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          9524:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          9525:                                        PZVAL_LOCK(*zptr);
        !          9526:                                }
        !          9527:                        }
        !          9528:                }
        !          9529: 
        !          9530:                if (!have_get_ptr) {
        !          9531:                        zval *z = NULL;
        !          9532: 
        !          9533:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          9534:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          9535:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          9536:                                }
        !          9537:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          9538:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          9539:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          9540:                                }
        !          9541:                        }
        !          9542:                        if (z) {
        !          9543:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          9544:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          9545: 
        !          9546:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          9547:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          9548:                                                zval_dtor(z);
        !          9549:                                                FREE_ZVAL(z);
        !          9550:                                        }
        !          9551:                                        z = value;
        !          9552:                                }
        !          9553:                                Z_ADDREF_P(z);
        !          9554:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          9555:                                binary_op(z, z, value TSRMLS_CC);
        !          9556:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          9557:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          9558:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          9559:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          9560:                                }
        !          9561:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          9562:                                        EX_T(result->u.var).var.ptr = z;
        !          9563:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          9564:                                        PZVAL_LOCK(z);
        !          9565:                                }
        !          9566:                                zval_ptr_dtor(&z);
        !          9567:                        } else {
        !          9568:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          9569:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          9570:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          9571:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          9572:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          9573:                                }
        !          9574:                        }
        !          9575:                }
        !          9576: 
        !          9577:                if (0) {
        !          9578:                        zval_ptr_dtor(&property);
        !          9579:                } else {
        !          9580: 
        !          9581:                }
        !          9582:                FREE_OP(free_op_data1);
        !          9583:        }
        !          9584: 
        !          9585:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9586:        /* assign_obj has two opcodes! */
        !          9587:        ZEND_VM_INC_OPCODE();
        !          9588:        ZEND_VM_NEXT_OPCODE();
        !          9589: }
        !          9590: 
        !          9591: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_VAR_CONST(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          9592: {
        !          9593:        zend_op *opline = EX(opline);
        !          9594:        zend_free_op free_op1, free_op_data2, free_op_data1;
        !          9595:        zval **var_ptr;
        !          9596:        zval *value;
        !          9597: 
        !          9598:        switch (opline->extended_value) {
        !          9599:                case ZEND_ASSIGN_OBJ:
        !          9600:                        return zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9601:                        break;
        !          9602:                case ZEND_ASSIGN_DIM: {
        !          9603:                                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9604: 
        !          9605:                                if (IS_VAR == IS_VAR && !container) {
        !          9606:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          9607:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          9608:                                        if (IS_VAR == IS_VAR && !(free_op1.var != NULL)) {
        !          9609:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          9610:                                        }
        !          9611:                                        return zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9612:                                } else {
        !          9613:                                        zend_op *op_data = opline+1;
        !          9614:                                        zval *dim = &opline->op2.u.constant;
        !          9615: 
        !          9616:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          9617:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          9618:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          9619:                                        ZEND_VM_INC_OPCODE();
        !          9620:                                }
        !          9621:                        }
        !          9622:                        break;
        !          9623:                default:
        !          9624:                        value = &opline->op2.u.constant;
        !          9625:                        var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9626:                        /* do nothing */
        !          9627:                        break;
        !          9628:        }
        !          9629: 
        !          9630:        if (!var_ptr) {
        !          9631:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          9632:        }
        !          9633: 
        !          9634:        if (*var_ptr == EG(error_zval_ptr)) {
        !          9635:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          9636:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          9637:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          9638:                }
        !          9639: 
        !          9640:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9641:                ZEND_VM_NEXT_OPCODE();
        !          9642:        }
        !          9643: 
        !          9644:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          9645: 
        !          9646:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          9647:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          9648:                /* proxy object */
        !          9649:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          9650:                Z_ADDREF_P(objval);
        !          9651:                binary_op(objval, objval, value TSRMLS_CC);
        !          9652:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          9653:                zval_ptr_dtor(&objval);
        !          9654:        } else {
        !          9655:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          9656:        }
        !          9657: 
        !          9658:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          9659:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          9660:                PZVAL_LOCK(*var_ptr);
        !          9661:        }
        !          9662: 
        !          9663:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          9664:                FREE_OP(free_op_data1);
        !          9665:                FREE_OP_VAR_PTR(free_op_data2);
        !          9666:        }
        !          9667:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9668:        ZEND_VM_NEXT_OPCODE();
        !          9669: }
        !          9670: 
        !          9671: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9672: {
        !          9673:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9674: }
        !          9675: 
        !          9676: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9677: {
        !          9678:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9679: }
        !          9680: 
        !          9681: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9682: {
        !          9683:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9684: }
        !          9685: 
        !          9686: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9687: {
        !          9688:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9689: }
        !          9690: 
        !          9691: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9692: {
        !          9693:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9694: }
        !          9695: 
        !          9696: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9697: {
        !          9698:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9699: }
        !          9700: 
        !          9701: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9702: {
        !          9703:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9704: }
        !          9705: 
        !          9706: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9707: {
        !          9708:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9709: }
        !          9710: 
        !          9711: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9712: {
        !          9713:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9714: }
        !          9715: 
        !          9716: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9717: {
        !          9718:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9719: }
        !          9720: 
        !          9721: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9722: {
        !          9723:        return zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9724: }
        !          9725: 
        !          9726: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          9727: {
        !          9728:        zend_op *opline = EX(opline);
        !          9729:        zend_free_op free_op1;
        !          9730:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9731:        zval *object;
        !          9732:        zval *property = &opline->op2.u.constant;
        !          9733:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          9734:        int have_get_ptr = 0;
        !          9735: 
        !          9736:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          9737:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          9738:        }
        !          9739: 
        !          9740:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          9741:        object = *object_ptr;
        !          9742: 
        !          9743:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          9744:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          9745: 
        !          9746:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          9747:                        *retval = EG(uninitialized_zval_ptr);
        !          9748:                        PZVAL_LOCK(*retval);
        !          9749:                }
        !          9750:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9751:                ZEND_VM_NEXT_OPCODE();
        !          9752:        }
        !          9753: 
        !          9754:        /* here we are sure we are dealing with an object */
        !          9755: 
        !          9756:        if (0) {
        !          9757:                MAKE_REAL_ZVAL_PTR(property);
        !          9758:        }
        !          9759: 
        !          9760:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          9761:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          9762:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          9763:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          9764: 
        !          9765:                        have_get_ptr = 1;
        !          9766:                        incdec_op(*zptr);
        !          9767:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          9768:                                *retval = *zptr;
        !          9769:                                PZVAL_LOCK(*retval);
        !          9770:                        }
        !          9771:                }
        !          9772:        }
        !          9773: 
        !          9774:        if (!have_get_ptr) {
        !          9775:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          9776:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          9777: 
        !          9778:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          9779:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          9780: 
        !          9781:                                if (Z_REFCOUNT_P(z) == 0) {
        !          9782:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          9783:                                        zval_dtor(z);
        !          9784:                                        FREE_ZVAL(z);
        !          9785:                                }
        !          9786:                                z = value;
        !          9787:                        }
        !          9788:                        Z_ADDREF_P(z);
        !          9789:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          9790:                        incdec_op(z);
        !          9791:                        *retval = z;
        !          9792:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          9793:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          9794:                        zval_ptr_dtor(&z);
        !          9795:                } else {
        !          9796:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          9797:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          9798:                                *retval = EG(uninitialized_zval_ptr);
        !          9799:                                PZVAL_LOCK(*retval);
        !          9800:                        }
        !          9801:                }
        !          9802:        }
        !          9803: 
        !          9804:        if (0) {
        !          9805:                zval_ptr_dtor(&property);
        !          9806:        } else {
        !          9807: 
        !          9808:        }
        !          9809:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9810:        ZEND_VM_NEXT_OPCODE();
        !          9811: }
        !          9812: 
        !          9813: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9814: {
        !          9815:        return zend_pre_incdec_property_helper_SPEC_VAR_CONST(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9816: }
        !          9817: 
        !          9818: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9819: {
        !          9820:        return zend_pre_incdec_property_helper_SPEC_VAR_CONST(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9821: }
        !          9822: 
        !          9823: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          9824: {
        !          9825:        zend_op *opline = EX(opline);
        !          9826:        zend_free_op free_op1;
        !          9827:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9828:        zval *object;
        !          9829:        zval *property = &opline->op2.u.constant;
        !          9830:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          9831:        int have_get_ptr = 0;
        !          9832: 
        !          9833:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          9834:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          9835:        }
        !          9836: 
        !          9837:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          9838:        object = *object_ptr;
        !          9839: 
        !          9840:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          9841:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          9842: 
        !          9843:                *retval = *EG(uninitialized_zval_ptr);
        !          9844:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9845:                ZEND_VM_NEXT_OPCODE();
        !          9846:        }
        !          9847: 
        !          9848:        /* here we are sure we are dealing with an object */
        !          9849: 
        !          9850:        if (0) {
        !          9851:                MAKE_REAL_ZVAL_PTR(property);
        !          9852:        }
        !          9853: 
        !          9854:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          9855:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          9856:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          9857:                        have_get_ptr = 1;
        !          9858:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          9859: 
        !          9860:                        *retval = **zptr;
        !          9861:                        zendi_zval_copy_ctor(*retval);
        !          9862: 
        !          9863:                        incdec_op(*zptr);
        !          9864: 
        !          9865:                }
        !          9866:        }
        !          9867: 
        !          9868:        if (!have_get_ptr) {
        !          9869:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          9870:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          9871:                        zval *z_copy;
        !          9872: 
        !          9873:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          9874:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          9875: 
        !          9876:                                if (Z_REFCOUNT_P(z) == 0) {
        !          9877:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          9878:                                        zval_dtor(z);
        !          9879:                                        FREE_ZVAL(z);
        !          9880:                                }
        !          9881:                                z = value;
        !          9882:                        }
        !          9883:                        *retval = *z;
        !          9884:                        zendi_zval_copy_ctor(*retval);
        !          9885:                        ALLOC_ZVAL(z_copy);
        !          9886:                        *z_copy = *z;
        !          9887:                        zendi_zval_copy_ctor(*z_copy);
        !          9888:                        INIT_PZVAL(z_copy);
        !          9889:                        incdec_op(z_copy);
        !          9890:                        Z_ADDREF_P(z);
        !          9891:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          9892:                        zval_ptr_dtor(&z_copy);
        !          9893:                        zval_ptr_dtor(&z);
        !          9894:                } else {
        !          9895:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          9896:                        *retval = *EG(uninitialized_zval_ptr);
        !          9897:                }
        !          9898:        }
        !          9899: 
        !          9900:        if (0) {
        !          9901:                zval_ptr_dtor(&property);
        !          9902:        } else {
        !          9903: 
        !          9904:        }
        !          9905:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9906:        ZEND_VM_NEXT_OPCODE();
        !          9907: }
        !          9908: 
        !          9909: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9910: {
        !          9911:        return zend_post_incdec_property_helper_SPEC_VAR_CONST(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9912: }
        !          9913: 
        !          9914: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9915: {
        !          9916:        return zend_post_incdec_property_helper_SPEC_VAR_CONST(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          9917: }
        !          9918: 
        !          9919: static int ZEND_FASTCALL  ZEND_FETCH_DIM_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9920: {
        !          9921:        zend_op *opline = EX(opline);
        !          9922:        zend_free_op free_op1;
        !          9923:        zval *dim = &opline->op2.u.constant;
        !          9924:        zval **container;
        !          9925: 
        !          9926:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK &&
        !          9927:            IS_VAR != IS_CV &&
        !          9928:            EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          9929:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          9930:        }
        !          9931:        container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9932:        if (IS_VAR == IS_VAR && !container) {
        !          9933:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          9934:        }
        !          9935:        zend_fetch_dimension_address_read(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          9936: 
        !          9937:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9938:        ZEND_VM_NEXT_OPCODE();
        !          9939: }
        !          9940: 
        !          9941: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9942: {
        !          9943:        zend_op *opline = EX(opline);
        !          9944:        zend_free_op free_op1;
        !          9945:        zval *dim = &opline->op2.u.constant;
        !          9946:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9947: 
        !          9948:        if (IS_VAR == IS_VAR && !container) {
        !          9949:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          9950:        }
        !          9951:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          9952: 
        !          9953:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          9954:            READY_TO_DESTROY(free_op1.var)) {
        !          9955:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          9956:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          9957:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          9958:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          9959:                }
        !          9960:        }
        !          9961:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9962: 
        !          9963:        /* We are going to assign the result by reference */
        !          9964:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          9965:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          9966:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          9967:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          9968:        }
        !          9969: 
        !          9970:        ZEND_VM_NEXT_OPCODE();
        !          9971: }
        !          9972: 
        !          9973: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9974: {
        !          9975:        zend_op *opline = EX(opline);
        !          9976:        zend_free_op free_op1;
        !          9977:        zval *dim = &opline->op2.u.constant;
        !          9978:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          9979: 
        !          9980:        if (IS_VAR == IS_VAR && !container) {
        !          9981:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          9982:        }
        !          9983:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          9984: 
        !          9985:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          9986:            READY_TO_DESTROY(free_op1.var)) {
        !          9987:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          9988:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          9989:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          9990:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          9991:                }
        !          9992:        }
        !          9993:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          9994:        ZEND_VM_NEXT_OPCODE();
        !          9995: }
        !          9996: 
        !          9997: static int ZEND_FASTCALL  ZEND_FETCH_DIM_IS_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          9998: {
        !          9999:        zend_op *opline = EX(opline);
        !          10000:        zend_free_op free_op1;
        !          10001:        zval *dim = &opline->op2.u.constant;
        !          10002:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10003: 
        !          10004:        if (IS_VAR == IS_VAR && !container) {
        !          10005:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          10006:        }
        !          10007:        zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_IS TSRMLS_CC);
        !          10008: 
        !          10009:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10010:        ZEND_VM_NEXT_OPCODE();
        !          10011: }
        !          10012: 
        !          10013: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10014: {
        !          10015:        zend_op *opline = EX(opline);
        !          10016:        zend_free_op free_op1;
        !          10017:        zval *dim = &opline->op2.u.constant;
        !          10018:        zval **container;
        !          10019: 
        !          10020:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          10021:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10022:                if (IS_VAR == IS_VAR && !container) {
        !          10023:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          10024:                }
        !          10025:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          10026:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          10027:                    READY_TO_DESTROY(free_op1.var)) {
        !          10028:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          10029:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          10030:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          10031:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10032:                        }
        !          10033:                }
        !          10034:        } else {
        !          10035:                if (IS_CONST == IS_UNUSED) {
        !          10036:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          10037:                }
        !          10038:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10039:                if (IS_VAR == IS_VAR && !container) {
        !          10040:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          10041:                }
        !          10042:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          10043:        }
        !          10044: 
        !          10045:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10046:        ZEND_VM_NEXT_OPCODE();
        !          10047: }
        !          10048: 
        !          10049: static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10050: {
        !          10051:        zend_op *opline = EX(opline);
        !          10052:        zend_free_op free_op1;
        !          10053:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10054:        zval *dim = &opline->op2.u.constant;
        !          10055: 
        !          10056:        /* Not needed in DIM_UNSET
        !          10057:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
        !          10058:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          10059:        }
        !          10060:        */
        !          10061:        if (IS_VAR == IS_CV) {
        !          10062:                if (container != &EG(uninitialized_zval_ptr)) {
        !          10063:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          10064:                }
        !          10065:        }
        !          10066:        if (IS_VAR == IS_VAR && !container) {
        !          10067:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          10068:        }
        !          10069:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC);
        !          10070: 
        !          10071:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          10072:            READY_TO_DESTROY(free_op1.var)) {
        !          10073:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          10074:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          10075:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          10076:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10077:                }
        !          10078:        }
        !          10079:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10080:        if (EX_T(opline->result.u.var).var.ptr_ptr == NULL) {
        !          10081:                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          10082:        } else {
        !          10083:                zend_free_op free_res;
        !          10084: 
        !          10085:                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          10086:                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          10087:                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10088:                }
        !          10089:                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          10090:                FREE_OP_VAR_PTR(free_res);
        !          10091:        }
        !          10092:        ZEND_VM_NEXT_OPCODE();
        !          10093: }
        !          10094: 
        !          10095: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_VAR_CONST(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          10096: {
        !          10097:        zend_op *opline = EX(opline);
        !          10098:        zend_free_op free_op1;
        !          10099:        zval *container = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10100: 
        !          10101:        zval *offset  = &opline->op2.u.constant;
        !          10102: 
        !          10103:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          10104:                if (type != BP_VAR_IS) {
        !          10105:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          10106:                }
        !          10107:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          10108:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          10109:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          10110:                }
        !          10111: 
        !          10112:        } else {
        !          10113:                zval *retval;
        !          10114: 
        !          10115:                if (0) {
        !          10116:                        MAKE_REAL_ZVAL_PTR(offset);
        !          10117:                }
        !          10118: 
        !          10119:                /* here we are sure we are dealing with an object */
        !          10120:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          10121: 
        !          10122:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          10123:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          10124:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          10125:                                zval_dtor(retval);
        !          10126:                                FREE_ZVAL(retval);
        !          10127:                        }
        !          10128:                } else {
        !          10129:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          10130:                        PZVAL_LOCK(retval);
        !          10131:                }
        !          10132: 
        !          10133:                if (0) {
        !          10134:                        zval_ptr_dtor(&offset);
        !          10135:                } else {
        !          10136: 
        !          10137:                }
        !          10138:        }
        !          10139: 
        !          10140:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10141:        ZEND_VM_NEXT_OPCODE();
        !          10142: }
        !          10143: 
        !          10144: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10145: {
        !          10146:        return zend_fetch_property_address_read_helper_SPEC_VAR_CONST(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          10147: }
        !          10148: 
        !          10149: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10150: {
        !          10151:        zend_op *opline = EX(opline);
        !          10152:        zend_free_op free_op1;
        !          10153:        zval *property = &opline->op2.u.constant;
        !          10154:        zval **container;
        !          10155: 
        !          10156:        if (IS_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          10157:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          10158:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          10159:        }
        !          10160: 
        !          10161:        if (0) {
        !          10162:                MAKE_REAL_ZVAL_PTR(property);
        !          10163:        }
        !          10164:        container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10165:        if (IS_VAR == IS_VAR && !container) {
        !          10166:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          10167:        }
        !          10168:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          10169:        if (0) {
        !          10170:                zval_ptr_dtor(&property);
        !          10171:        } else {
        !          10172: 
        !          10173:        }
        !          10174:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          10175:            READY_TO_DESTROY(free_op1.var)) {
        !          10176:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          10177:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          10178:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          10179:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10180:                }
        !          10181:        }
        !          10182:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10183: 
        !          10184:        /* We are going to assign the result by reference */
        !          10185:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          10186:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10187:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10188:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10189:        }
        !          10190: 
        !          10191:        ZEND_VM_NEXT_OPCODE();
        !          10192: }
        !          10193: 
        !          10194: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10195: {
        !          10196:        zend_op *opline = EX(opline);
        !          10197:        zend_free_op free_op1;
        !          10198:        zval *property = &opline->op2.u.constant;
        !          10199:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10200: 
        !          10201:        if (0) {
        !          10202:                MAKE_REAL_ZVAL_PTR(property);
        !          10203:        }
        !          10204:        if (IS_VAR == IS_VAR && !container) {
        !          10205:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          10206:        }
        !          10207:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          10208:        if (0) {
        !          10209:                zval_ptr_dtor(&property);
        !          10210:        } else {
        !          10211: 
        !          10212:        }
        !          10213:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          10214:            READY_TO_DESTROY(free_op1.var)) {
        !          10215:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          10216:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          10217:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          10218:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10219:                }
        !          10220:        }
        !          10221:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10222:        ZEND_VM_NEXT_OPCODE();
        !          10223: }
        !          10224: 
        !          10225: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10226: {
        !          10227:        return zend_fetch_property_address_read_helper_SPEC_VAR_CONST(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          10228: }
        !          10229: 
        !          10230: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10231: {
        !          10232:        zend_op *opline = EX(opline);
        !          10233: 
        !          10234:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          10235:                /* Behave like FETCH_OBJ_W */
        !          10236:                zend_free_op free_op1;
        !          10237:                zval *property = &opline->op2.u.constant;
        !          10238:                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10239: 
        !          10240:                if (0) {
        !          10241:                        MAKE_REAL_ZVAL_PTR(property);
        !          10242:                }
        !          10243:                if (IS_VAR == IS_VAR && !container) {
        !          10244:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          10245:                }
        !          10246:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          10247:                if (0) {
        !          10248:                        zval_ptr_dtor(&property);
        !          10249:                } else {
        !          10250: 
        !          10251:                }
        !          10252:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          10253:                    READY_TO_DESTROY(free_op1.var)) {
        !          10254:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          10255:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          10256:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          10257:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10258:                        }
        !          10259:                }
        !          10260:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10261:                ZEND_VM_NEXT_OPCODE();
        !          10262:        } else {
        !          10263:                return zend_fetch_property_address_read_helper_SPEC_VAR_CONST(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          10264:        }
        !          10265: }
        !          10266: 
        !          10267: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10268: {
        !          10269:        zend_op *opline = EX(opline);
        !          10270:        zend_free_op free_op1, free_res;
        !          10271:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10272:        zval *property = &opline->op2.u.constant;
        !          10273: 
        !          10274:        if (IS_VAR == IS_CV) {
        !          10275:                if (container != &EG(uninitialized_zval_ptr)) {
        !          10276:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          10277:                }
        !          10278:        }
        !          10279:        if (0) {
        !          10280:                MAKE_REAL_ZVAL_PTR(property);
        !          10281:        }
        !          10282:        if (IS_VAR == IS_VAR && !container) {
        !          10283:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          10284:        }
        !          10285:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          10286:        if (0) {
        !          10287:                zval_ptr_dtor(&property);
        !          10288:        } else {
        !          10289: 
        !          10290:        }
        !          10291:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          10292:            READY_TO_DESTROY(free_op1.var)) {
        !          10293:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          10294:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          10295:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          10296:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10297:                }
        !          10298:        }
        !          10299:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10300: 
        !          10301:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          10302:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          10303:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          10304:        }
        !          10305:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          10306:        FREE_OP_VAR_PTR(free_res);
        !          10307:        ZEND_VM_NEXT_OPCODE();
        !          10308: }
        !          10309: 
        !          10310: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10311: {
        !          10312:        zend_op *opline = EX(opline);
        !          10313:        zend_op *op_data = opline+1;
        !          10314:        zend_free_op free_op1;
        !          10315:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10316:        zval *property_name = &opline->op2.u.constant;
        !          10317: 
        !          10318:        if (0) {
        !          10319:                MAKE_REAL_ZVAL_PTR(property_name);
        !          10320:        }
        !          10321:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          10322:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          10323:        }
        !          10324:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          10325:        if (0) {
        !          10326:                zval_ptr_dtor(&property_name);
        !          10327:        } else {
        !          10328: 
        !          10329:        }
        !          10330:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10331:        /* assign_obj has two opcodes! */
        !          10332:        ZEND_VM_INC_OPCODE();
        !          10333:        ZEND_VM_NEXT_OPCODE();
        !          10334: }
        !          10335: 
        !          10336: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10337: {
        !          10338:        zend_op *opline = EX(opline);
        !          10339:        zend_op *op_data = opline+1;
        !          10340:        zend_free_op free_op1;
        !          10341:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10342: 
        !          10343:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          10344:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          10345:        }
        !          10346:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          10347: 
        !          10348:                zval *property_name = &opline->op2.u.constant;
        !          10349: 
        !          10350:                if (0) {
        !          10351:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          10352:                }
        !          10353:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          10354:                if (0) {
        !          10355:                        zval_ptr_dtor(&property_name);
        !          10356:                } else {
        !          10357: 
        !          10358:                }
        !          10359:        } else {
        !          10360:                zend_free_op free_op_data1, free_op_data2;
        !          10361:                zval *value;
        !          10362:                zval *dim = &opline->op2.u.constant;
        !          10363:                zval **variable_ptr_ptr;
        !          10364: 
        !          10365:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 0, BP_VAR_W TSRMLS_CC);
        !          10366: 
        !          10367:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          10368:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          10369:                if (!variable_ptr_ptr) {
        !          10370:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          10371:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          10372:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          10373:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          10374:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          10375:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          10376:                                }
        !          10377:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          10378:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          10379:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          10380:                        }
        !          10381:                } else {
        !          10382:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          10383:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          10384:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          10385:                                PZVAL_LOCK(value);
        !          10386:                        }
        !          10387:                }
        !          10388:                FREE_OP_VAR_PTR(free_op_data2);
        !          10389:                FREE_OP_IF_VAR(free_op_data1);
        !          10390:        }
        !          10391:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10392:        /* assign_dim has two opcodes! */
        !          10393:        ZEND_VM_INC_OPCODE();
        !          10394:        ZEND_VM_NEXT_OPCODE();
        !          10395: }
        !          10396: 
        !          10397: static int ZEND_FASTCALL  ZEND_ASSIGN_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10398: {
        !          10399:        zend_op *opline = EX(opline);
        !          10400:        zend_free_op free_op1;
        !          10401:        zval *value = &opline->op2.u.constant;
        !          10402:        zval **variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10403: 
        !          10404:        if (IS_VAR == IS_VAR && !variable_ptr_ptr) {
        !          10405:                if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CONST TSRMLS_CC)) {
        !          10406:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          10407:                                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          10408:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          10409:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          10410:                                ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
        !          10411:                        }
        !          10412:                } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          10413:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          10414:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          10415:                }
        !          10416:        } else {
        !          10417:                value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
        !          10418:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          10419:                        AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          10420:                        PZVAL_LOCK(value);
        !          10421:                }
        !          10422:        }
        !          10423: 
        !          10424:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10425: 
        !          10426:        /* zend_assign_to_variable() always takes care of op2, never free it! */
        !          10427: 
        !          10428:        ZEND_VM_NEXT_OPCODE();
        !          10429: }
        !          10430: 
        !          10431: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10432: {
        !          10433:        zend_op *opline = EX(opline);
        !          10434:        zval *function_name;
        !          10435:        char *function_name_strval;
        !          10436:        int function_name_strlen;
        !          10437:        zend_free_op free_op1;
        !          10438: 
        !          10439:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          10440: 
        !          10441:        function_name = &opline->op2.u.constant;
        !          10442: 
        !          10443:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          10444:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          10445:        }
        !          10446: 
        !          10447:        function_name_strval = Z_STRVAL_P(function_name);
        !          10448:        function_name_strlen = Z_STRLEN_P(function_name);
        !          10449: 
        !          10450:        EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10451: 
        !          10452:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          10453:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          10454:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          10455:                }
        !          10456: 
        !          10457:                /* First, locate the function. */
        !          10458:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          10459:                if (!EX(fbc)) {
        !          10460:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          10461:                }
        !          10462: 
        !          10463:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          10464:        } else {
        !          10465:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          10466:        }
        !          10467: 
        !          10468:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          10469:                EX(object) = NULL;
        !          10470:        } else {
        !          10471:                if (!PZVAL_IS_REF(EX(object))) {
        !          10472:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          10473:                } else {
        !          10474:                        zval *this_ptr;
        !          10475:                        ALLOC_ZVAL(this_ptr);
        !          10476:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          10477:                        zval_copy_ctor(this_ptr);
        !          10478:                        EX(object) = this_ptr;
        !          10479:                }
        !          10480:        }
        !          10481: 
        !          10482:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10483: 
        !          10484:        ZEND_VM_NEXT_OPCODE();
        !          10485: }
        !          10486: 
        !          10487: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10488: {
        !          10489:        zend_op *opline = EX(opline);
        !          10490:        zval *function_name;
        !          10491:        zend_class_entry *ce;
        !          10492: 
        !          10493:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          10494: 
        !          10495:        if (IS_VAR == IS_CONST) {
        !          10496:                /* no function found. try a static method in class */
        !          10497:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          10498:                if (!ce) {
        !          10499:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          10500:                }
        !          10501:                EX(called_scope) = ce;
        !          10502:        } else {
        !          10503:                ce = EX_T(opline->op1.u.var).class_entry;
        !          10504: 
        !          10505:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          10506:                        EX(called_scope) = EG(called_scope);
        !          10507:                } else {
        !          10508:                        EX(called_scope) = ce;
        !          10509:                }
        !          10510:        }
        !          10511:        if(IS_CONST != IS_UNUSED) {
        !          10512:                char *function_name_strval = NULL;
        !          10513:                int function_name_strlen = 0;
        !          10514: 
        !          10515: 
        !          10516:                if (IS_CONST == IS_CONST) {
        !          10517:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          10518:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          10519:                } else {
        !          10520:                        function_name = &opline->op2.u.constant;
        !          10521: 
        !          10522:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          10523:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          10524:                        } else {
        !          10525:                                function_name_strval = Z_STRVAL_P(function_name);
        !          10526:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          10527:                        }
        !          10528:                }
        !          10529: 
        !          10530:                if (function_name_strval) {
        !          10531:                        if (ce->get_static_method) {
        !          10532:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          10533:                        } else {
        !          10534:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          10535:                        }
        !          10536:                        if (!EX(fbc)) {
        !          10537:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          10538:                        }
        !          10539:                }
        !          10540: 
        !          10541:                if (IS_CONST != IS_CONST) {
        !          10542: 
        !          10543:                }
        !          10544:        } else {
        !          10545:                if(!ce->constructor) {
        !          10546:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          10547:                }
        !          10548:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          10549:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          10550:                }
        !          10551:                EX(fbc) = ce->constructor;
        !          10552:        }
        !          10553: 
        !          10554:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          10555:                EX(object) = NULL;
        !          10556:        } else {
        !          10557:                if (EG(This) &&
        !          10558:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          10559:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          10560:                    /* We are calling method of the other (incompatible) class,
        !          10561:                       but passing $this. This is done for compatibility with php-4. */
        !          10562:                        int severity;
        !          10563:                        char *verb;
        !          10564:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          10565:                                severity = E_STRICT;
        !          10566:                                verb = "should not";
        !          10567:                        } else {
        !          10568:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          10569:                                severity = E_ERROR;
        !          10570:                                verb = "cannot";
        !          10571:                        }
        !          10572:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          10573: 
        !          10574:                }
        !          10575:                if ((EX(object) = EG(This))) {
        !          10576:                        Z_ADDREF_P(EX(object));
        !          10577:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          10578:                }
        !          10579:        }
        !          10580: 
        !          10581:        ZEND_VM_NEXT_OPCODE();
        !          10582: }
        !          10583: 
        !          10584: static int ZEND_FASTCALL  ZEND_CASE_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10585: {
        !          10586:        zend_op *opline = EX(opline);
        !          10587:        int switch_expr_is_overloaded=0;
        !          10588:        zend_free_op free_op1;
        !          10589: 
        !          10590:        if (IS_VAR==IS_VAR) {
        !          10591:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          10592:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          10593:                } else {
        !          10594:                        switch_expr_is_overloaded = 1;
        !          10595:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          10596:                }
        !          10597:        }
        !          10598:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          10599:                                 _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          10600:                                 &opline->op2.u.constant TSRMLS_CC);
        !          10601: 
        !          10602:        if (switch_expr_is_overloaded) {
        !          10603:                /* We only free op1 if this is a string offset,
        !          10604:                 * Since if it is a TMP_VAR, it'll be reused by
        !          10605:                 * other CASE opcodes (whereas string offsets
        !          10606:                 * are allocated at each get_zval_ptr())
        !          10607:                 */
        !          10608:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10609:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          10610:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          10611:        }
        !          10612:        ZEND_VM_NEXT_OPCODE();
        !          10613: }
        !          10614: 
        !          10615: static int ZEND_FASTCALL  ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10616: {
        !          10617:        zend_op *opline = EX(opline);
        !          10618: 
        !          10619:        if (IS_VAR == IS_UNUSED) {
        !          10620:                /* namespaced constant */
        !          10621:                if (!zend_get_constant_ex(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) {
        !          10622:                        if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
        !          10623:                                char *actual = (char *)zend_memrchr(Z_STRVAL(opline->op2.u.constant), '\\', Z_STRLEN(opline->op2.u.constant));
        !          10624:                                if(!actual) {
        !          10625:                                        actual = Z_STRVAL(opline->op2.u.constant);
        !          10626:                                } else {
        !          10627:                                        actual++;
        !          10628:                                }
        !          10629:                                /* non-qualified constant - allow text substitution */
        !          10630:                                zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", actual, actual);
        !          10631:                                ZVAL_STRINGL(&EX_T(opline->result.u.var).tmp_var, actual, Z_STRLEN(opline->op2.u.constant)-(actual - Z_STRVAL(opline->op2.u.constant)), 1);
        !          10632:                        } else {
        !          10633:                                zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
        !          10634:                                                        Z_STRVAL(opline->op2.u.constant), Z_STRVAL(opline->op2.u.constant));
        !          10635:                        }
        !          10636:                }
        !          10637:                ZEND_VM_NEXT_OPCODE();
        !          10638:        } else {
        !          10639:                /* class constant */
        !          10640:                zend_class_entry *ce;
        !          10641:                zval **value;
        !          10642: 
        !          10643:                if (IS_VAR == IS_CONST) {
        !          10644: 
        !          10645:                        ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          10646:                        if (!ce) {
        !          10647:                                zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
        !          10648:                        }
        !          10649:                } else {
        !          10650:                        ce = EX_T(opline->op1.u.var).class_entry;
        !          10651:                }
        !          10652: 
        !          10653:                if (zend_hash_find(&ce->constants_table, Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void **) &value) == SUCCESS) {
        !          10654:                        if (Z_TYPE_PP(value) == IS_CONSTANT_ARRAY ||
        !          10655:                            (Z_TYPE_PP(value) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT) {
        !          10656:                                zend_class_entry *old_scope = EG(scope);
        !          10657: 
        !          10658:                                EG(scope) = ce;
        !          10659:                                zval_update_constant(value, (void *) 1 TSRMLS_CC);
        !          10660:                                EG(scope) = old_scope;
        !          10661:                        }
        !          10662:                        EX_T(opline->result.u.var).tmp_var = **value;
        !          10663:                        zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var);
        !          10664:                } else {
        !          10665:                        zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
        !          10666:                }
        !          10667: 
        !          10668:                ZEND_VM_NEXT_OPCODE();
        !          10669:        }
        !          10670: }
        !          10671: 
        !          10672: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10673: {
        !          10674:        zend_op *opline = EX(opline);
        !          10675:        zend_free_op free_op1;
        !          10676:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          10677:        zval *expr_ptr;
        !          10678:        zval *offset=&opline->op2.u.constant;
        !          10679: 
        !          10680: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          10681:        zval **expr_ptr_ptr = NULL;
        !          10682: 
        !          10683:        if (opline->extended_value) {
        !          10684:                expr_ptr_ptr=_get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10685:                expr_ptr = *expr_ptr_ptr;
        !          10686:        } else {
        !          10687:                expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10688:        }
        !          10689: #else
        !          10690:        expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10691: #endif
        !          10692: 
        !          10693:        if (0) { /* temporary variable */
        !          10694:                zval *new_expr;
        !          10695: 
        !          10696:                ALLOC_ZVAL(new_expr);
        !          10697:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          10698:                expr_ptr = new_expr;
        !          10699:        } else {
        !          10700: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          10701:                if (opline->extended_value) {
        !          10702:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          10703:                        expr_ptr = *expr_ptr_ptr;
        !          10704:                        Z_ADDREF_P(expr_ptr);
        !          10705:                } else
        !          10706: #endif
        !          10707:                if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          10708:                        zval *new_expr;
        !          10709: 
        !          10710:                        ALLOC_ZVAL(new_expr);
        !          10711:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          10712:                        expr_ptr = new_expr;
        !          10713:                        zendi_zval_copy_ctor(*expr_ptr);
        !          10714:                } else {
        !          10715:                        Z_ADDREF_P(expr_ptr);
        !          10716:                }
        !          10717:        }
        !          10718:        if (offset) {
        !          10719:                switch (Z_TYPE_P(offset)) {
        !          10720:                        case IS_DOUBLE:
        !          10721:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          10722:                                break;
        !          10723:                        case IS_LONG:
        !          10724:                        case IS_BOOL:
        !          10725:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          10726:                                break;
        !          10727:                        case IS_STRING:
        !          10728:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          10729:                                break;
        !          10730:                        case IS_NULL:
        !          10731:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          10732:                                break;
        !          10733:                        default:
        !          10734:                                zend_error(E_WARNING, "Illegal offset type");
        !          10735:                                zval_ptr_dtor(&expr_ptr);
        !          10736:                                /* do nothing */
        !          10737:                                break;
        !          10738:                }
        !          10739: 
        !          10740:        } else {
        !          10741:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          10742:        }
        !          10743:        if (opline->extended_value) {
        !          10744:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10745:        } else {
        !          10746:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10747:        }
        !          10748:        ZEND_VM_NEXT_OPCODE();
        !          10749: }
        !          10750: 
        !          10751: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10752: {
        !          10753:        zend_op *opline = EX(opline);
        !          10754: 
        !          10755:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          10756:        if (IS_VAR == IS_UNUSED) {
        !          10757:                ZEND_VM_NEXT_OPCODE();
        !          10758: #if 0 || IS_VAR != IS_UNUSED
        !          10759:        } else {
        !          10760:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          10761: #endif
        !          10762:        }
        !          10763: }
        !          10764: 
        !          10765: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10766: {
        !          10767:        zend_op *opline = EX(opline);
        !          10768:        zend_free_op free_op1;
        !          10769:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10770:        zval *offset;
        !          10771: 
        !          10772:        if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          10773:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          10774:        }
        !          10775:        offset = &opline->op2.u.constant;
        !          10776: 
        !          10777:        if (IS_VAR != IS_VAR || container) {
        !          10778:                switch (Z_TYPE_PP(container)) {
        !          10779:                        case IS_ARRAY: {
        !          10780:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          10781: 
        !          10782:                                switch (Z_TYPE_P(offset)) {
        !          10783:                                        case IS_DOUBLE:
        !          10784:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          10785:                                                break;
        !          10786:                                        case IS_RESOURCE:
        !          10787:                                        case IS_BOOL:
        !          10788:                                        case IS_LONG:
        !          10789:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          10790:                                                break;
        !          10791:                                        case IS_STRING:
        !          10792:                                                if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
        !          10793:                                                        Z_ADDREF_P(offset);
        !          10794:                                                }
        !          10795:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          10796:                                            ht == &EG(symbol_table)) {
        !          10797:                                                        zend_execute_data *ex;
        !          10798:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          10799: 
        !          10800:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          10801:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          10802:                                                                        int i;
        !          10803: 
        !          10804:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          10805:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          10806:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          10807:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          10808:                                                                                        ex->CVs[i] = NULL;
        !          10809:                                                                                        break;
        !          10810:                                                                                }
        !          10811:                                                                        }
        !          10812:                                                                }
        !          10813:                                                        }
        !          10814:                                                }
        !          10815:                                                if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
        !          10816:                                                        zval_ptr_dtor(&offset);
        !          10817:                                                }
        !          10818:                                                break;
        !          10819:                                        case IS_NULL:
        !          10820:                                                zend_hash_del(ht, "", sizeof(""));
        !          10821:                                                break;
        !          10822:                                        default:
        !          10823:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          10824:                                                break;
        !          10825:                                }
        !          10826: 
        !          10827:                                break;
        !          10828:                        }
        !          10829:                        case IS_OBJECT:
        !          10830:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          10831:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          10832:                                }
        !          10833:                                if (0) {
        !          10834:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          10835:                                }
        !          10836:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          10837:                                if (0) {
        !          10838:                                        zval_ptr_dtor(&offset);
        !          10839:                                } else {
        !          10840: 
        !          10841:                                }
        !          10842:                                break;
        !          10843:                        case IS_STRING:
        !          10844:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          10845:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          10846:                        default:
        !          10847: 
        !          10848:                                break;
        !          10849:                }
        !          10850:        } else {
        !          10851: 
        !          10852:        }
        !          10853:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10854: 
        !          10855:        ZEND_VM_NEXT_OPCODE();
        !          10856: }
        !          10857: 
        !          10858: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          10859: {
        !          10860:        zend_op *opline = EX(opline);
        !          10861:        zend_free_op free_op1;
        !          10862:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10863:        zval *offset = &opline->op2.u.constant;
        !          10864: 
        !          10865:        if (IS_VAR != IS_VAR || container) {
        !          10866:                if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          10867:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          10868:                }
        !          10869:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          10870:                        if (0) {
        !          10871:                                MAKE_REAL_ZVAL_PTR(offset);
        !          10872:                        }
        !          10873:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          10874:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          10875:                        } else {
        !          10876:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          10877:                        }
        !          10878:                        if (0) {
        !          10879:                                zval_ptr_dtor(&offset);
        !          10880:                        } else {
        !          10881: 
        !          10882:                        }
        !          10883:                } else {
        !          10884: 
        !          10885:                }
        !          10886:        } else {
        !          10887: 
        !          10888:        }
        !          10889:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          10890: 
        !          10891:        ZEND_VM_NEXT_OPCODE();
        !          10892: }
        !          10893: 
        !          10894: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CONST(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          10895: {
        !          10896:        zend_op *opline = EX(opline);
        !          10897:        zend_free_op free_op1;
        !          10898:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          10899:        zval **value = NULL;
        !          10900:        int result = 0;
        !          10901: 
        !          10902:        if (IS_VAR != IS_VAR || container) {
        !          10903: 
        !          10904:                zval *offset = &opline->op2.u.constant;
        !          10905: 
        !          10906:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          10907:                        HashTable *ht;
        !          10908:                        int isset = 0;
        !          10909: 
        !          10910:                        ht = Z_ARRVAL_PP(container);
        !          10911: 
        !          10912:                        switch (Z_TYPE_P(offset)) {
        !          10913:                                case IS_DOUBLE:
        !          10914:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          10915:                                                isset = 1;
        !          10916:                                        }
        !          10917:                                        break;
        !          10918:                                case IS_RESOURCE:
        !          10919:                                case IS_BOOL:
        !          10920:                                case IS_LONG:
        !          10921:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          10922:                                                isset = 1;
        !          10923:                                        }
        !          10924:                                        break;
        !          10925:                                case IS_STRING:
        !          10926:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          10927:                                                isset = 1;
        !          10928:                                        }
        !          10929:                                        break;
        !          10930:                                case IS_NULL:
        !          10931:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          10932:                                                isset = 1;
        !          10933:                                        }
        !          10934:                                        break;
        !          10935:                                default:
        !          10936:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          10937: 
        !          10938:                                        break;
        !          10939:                        }
        !          10940: 
        !          10941:                        switch (opline->extended_value) {
        !          10942:                                case ZEND_ISSET:
        !          10943:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          10944:                                                result = 0;
        !          10945:                                        } else {
        !          10946:                                                result = isset;
        !          10947:                                        }
        !          10948:                                        break;
        !          10949:                                case ZEND_ISEMPTY:
        !          10950:                                        if (!isset || !i_zend_is_true(*value)) {
        !          10951:                                                result = 0;
        !          10952:                                        } else {
        !          10953:                                                result = 1;
        !          10954:                                        }
        !          10955:                                        break;
        !          10956:                        }
        !          10957: 
        !          10958:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          10959:                        if (0) {
        !          10960:                                MAKE_REAL_ZVAL_PTR(offset);
        !          10961:                        }
        !          10962:                        if (prop_dim) {
        !          10963:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          10964:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          10965:                                } else {
        !          10966:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          10967:                                        result = 0;
        !          10968:                                }
        !          10969:                        } else {
        !          10970:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          10971:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          10972:                                } else {
        !          10973:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          10974:                                        result = 0;
        !          10975:                                }
        !          10976:                        }
        !          10977:                        if (0) {
        !          10978:                                zval_ptr_dtor(&offset);
        !          10979:                        } else {
        !          10980: 
        !          10981:                        }
        !          10982:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          10983:                        zval tmp;
        !          10984: 
        !          10985:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          10986:                                tmp = *offset;
        !          10987:                                zval_copy_ctor(&tmp);
        !          10988:                                convert_to_long(&tmp);
        !          10989:                                offset = &tmp;
        !          10990:                        }
        !          10991:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          10992:                                switch (opline->extended_value) {
        !          10993:                                        case ZEND_ISSET:
        !          10994:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          10995:                                                        result = 1;
        !          10996:                                                }
        !          10997:                                                break;
        !          10998:                                        case ZEND_ISEMPTY:
        !          10999:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          11000:                                                        result = 1;
        !          11001:                                                }
        !          11002:                                                break;
        !          11003:                                }
        !          11004:                        }
        !          11005: 
        !          11006:                } else {
        !          11007: 
        !          11008:                }
        !          11009:        }
        !          11010: 
        !          11011:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          11012: 
        !          11013:        switch (opline->extended_value) {
        !          11014:                case ZEND_ISSET:
        !          11015:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          11016:                        break;
        !          11017:                case ZEND_ISEMPTY:
        !          11018:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          11019:                        break;
        !          11020:        }
        !          11021: 
        !          11022:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11023: 
        !          11024:        ZEND_VM_NEXT_OPCODE();
        !          11025: }
        !          11026: 
        !          11027: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11028: {
        !          11029:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CONST(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11030: }
        !          11031: 
        !          11032: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11033: {
        !          11034:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CONST(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11035: }
        !          11036: 
        !          11037: static int ZEND_FASTCALL  ZEND_ADD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11038: {
        !          11039:        zend_op *opline = EX(opline);
        !          11040:        zend_free_op free_op1, free_op2;
        !          11041: 
        !          11042:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          11043:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11044:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11045:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11046:        zval_dtor(free_op2.var);
        !          11047:        ZEND_VM_NEXT_OPCODE();
        !          11048: }
        !          11049: 
        !          11050: static int ZEND_FASTCALL  ZEND_SUB_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11051: {
        !          11052:        zend_op *opline = EX(opline);
        !          11053:        zend_free_op free_op1, free_op2;
        !          11054: 
        !          11055:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          11056:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11057:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11058:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11059:        zval_dtor(free_op2.var);
        !          11060:        ZEND_VM_NEXT_OPCODE();
        !          11061: }
        !          11062: 
        !          11063: static int ZEND_FASTCALL  ZEND_MUL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11064: {
        !          11065:        zend_op *opline = EX(opline);
        !          11066:        zend_free_op free_op1, free_op2;
        !          11067: 
        !          11068:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          11069:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11070:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11071:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11072:        zval_dtor(free_op2.var);
        !          11073:        ZEND_VM_NEXT_OPCODE();
        !          11074: }
        !          11075: 
        !          11076: static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11077: {
        !          11078:        zend_op *opline = EX(opline);
        !          11079:        zend_free_op free_op1, free_op2;
        !          11080: 
        !          11081:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          11082:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11083:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11084:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11085:        zval_dtor(free_op2.var);
        !          11086:        ZEND_VM_NEXT_OPCODE();
        !          11087: }
        !          11088: 
        !          11089: static int ZEND_FASTCALL  ZEND_MOD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11090: {
        !          11091:        zend_op *opline = EX(opline);
        !          11092:        zend_free_op free_op1, free_op2;
        !          11093: 
        !          11094:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          11095:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11096:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11097:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11098:        zval_dtor(free_op2.var);
        !          11099:        ZEND_VM_NEXT_OPCODE();
        !          11100: }
        !          11101: 
        !          11102: static int ZEND_FASTCALL  ZEND_SL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11103: {
        !          11104:        zend_op *opline = EX(opline);
        !          11105:        zend_free_op free_op1, free_op2;
        !          11106: 
        !          11107:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          11108:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11109:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11110:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11111:        zval_dtor(free_op2.var);
        !          11112:        ZEND_VM_NEXT_OPCODE();
        !          11113: }
        !          11114: 
        !          11115: static int ZEND_FASTCALL  ZEND_SR_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11116: {
        !          11117:        zend_op *opline = EX(opline);
        !          11118:        zend_free_op free_op1, free_op2;
        !          11119: 
        !          11120:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          11121:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11122:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11123:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11124:        zval_dtor(free_op2.var);
        !          11125:        ZEND_VM_NEXT_OPCODE();
        !          11126: }
        !          11127: 
        !          11128: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11129: {
        !          11130:        zend_op *opline = EX(opline);
        !          11131:        zend_free_op free_op1, free_op2;
        !          11132: 
        !          11133:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          11134:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11135:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11136:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11137:        zval_dtor(free_op2.var);
        !          11138:        ZEND_VM_NEXT_OPCODE();
        !          11139: }
        !          11140: 
        !          11141: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11142: {
        !          11143:        zend_op *opline = EX(opline);
        !          11144:        zend_free_op free_op1, free_op2;
        !          11145: 
        !          11146:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          11147:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11148:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11149:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11150:        zval_dtor(free_op2.var);
        !          11151:        ZEND_VM_NEXT_OPCODE();
        !          11152: }
        !          11153: 
        !          11154: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11155: {
        !          11156:        zend_op *opline = EX(opline);
        !          11157:        zend_free_op free_op1, free_op2;
        !          11158:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          11159: 
        !          11160:        is_identical_function(result,
        !          11161:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11162:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11163:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          11164:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11165:        zval_dtor(free_op2.var);
        !          11166:        ZEND_VM_NEXT_OPCODE();
        !          11167: }
        !          11168: 
        !          11169: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11170: {
        !          11171:        zend_op *opline = EX(opline);
        !          11172:        zend_free_op free_op1, free_op2;
        !          11173:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          11174: 
        !          11175:        compare_function(result,
        !          11176:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11177:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11178:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          11179:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11180:        zval_dtor(free_op2.var);
        !          11181:        ZEND_VM_NEXT_OPCODE();
        !          11182: }
        !          11183: 
        !          11184: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11185: {
        !          11186:        zend_op *opline = EX(opline);
        !          11187:        zend_free_op free_op1, free_op2;
        !          11188:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          11189: 
        !          11190:        compare_function(result,
        !          11191:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11192:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11193:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          11194:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11195:        zval_dtor(free_op2.var);
        !          11196:        ZEND_VM_NEXT_OPCODE();
        !          11197: }
        !          11198: 
        !          11199: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11200: {
        !          11201:        zend_op *opline = EX(opline);
        !          11202:        zend_free_op free_op1, free_op2;
        !          11203:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          11204: 
        !          11205:        compare_function(result,
        !          11206:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11207:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11208:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          11209:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11210:        zval_dtor(free_op2.var);
        !          11211:        ZEND_VM_NEXT_OPCODE();
        !          11212: }
        !          11213: 
        !          11214: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11215: {
        !          11216:        zend_op *opline = EX(opline);
        !          11217:        zend_free_op free_op1, free_op2;
        !          11218:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          11219: 
        !          11220:        compare_function(result,
        !          11221:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11222:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11223:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          11224:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11225:        zval_dtor(free_op2.var);
        !          11226:        ZEND_VM_NEXT_OPCODE();
        !          11227: }
        !          11228: 
        !          11229: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11230: {
        !          11231:        zend_op *opline = EX(opline);
        !          11232:        zend_free_op free_op1, free_op2;
        !          11233: 
        !          11234:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          11235:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11236:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11237:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11238:        zval_dtor(free_op2.var);
        !          11239:        ZEND_VM_NEXT_OPCODE();
        !          11240: }
        !          11241: 
        !          11242: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11243: {
        !          11244:        zend_op *opline = EX(opline);
        !          11245:        zend_free_op free_op1, free_op2;
        !          11246: 
        !          11247:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          11248:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11249:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11250:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11251:        zval_dtor(free_op2.var);
        !          11252:        ZEND_VM_NEXT_OPCODE();
        !          11253: }
        !          11254: 
        !          11255: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11256: {
        !          11257:        zend_op *opline = EX(opline);
        !          11258:        zend_free_op free_op1, free_op2;
        !          11259: 
        !          11260:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          11261:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11262:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11263:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11264:        zval_dtor(free_op2.var);
        !          11265:        ZEND_VM_NEXT_OPCODE();
        !          11266: }
        !          11267: 
        !          11268: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11269: {
        !          11270:        zend_op *opline = EX(opline);
        !          11271:        zend_free_op free_op1, free_op2;
        !          11272: 
        !          11273:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          11274:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          11275:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          11276:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11277:        zval_dtor(free_op2.var);
        !          11278:        ZEND_VM_NEXT_OPCODE();
        !          11279: }
        !          11280: 
        !          11281: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_TMP(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          11282: {
        !          11283:        zend_op *opline = EX(opline);
        !          11284:        zend_op *op_data = opline+1;
        !          11285:        zend_free_op free_op1, free_op2, free_op_data1;
        !          11286:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11287:        zval *object;
        !          11288:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11289:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          11290:        znode *result = &opline->result;
        !          11291:        int have_get_ptr = 0;
        !          11292: 
        !          11293:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          11294:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          11295:        }
        !          11296: 
        !          11297:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          11298:        make_real_object(object_ptr TSRMLS_CC);
        !          11299:        object = *object_ptr;
        !          11300: 
        !          11301:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          11302:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          11303:                zval_dtor(free_op2.var);
        !          11304:                FREE_OP(free_op_data1);
        !          11305: 
        !          11306:                if (!RETURN_VALUE_UNUSED(result)) {
        !          11307:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          11308:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          11309:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          11310:                }
        !          11311:        } else {
        !          11312:                /* here we are sure we are dealing with an object */
        !          11313:                if (1) {
        !          11314:                        MAKE_REAL_ZVAL_PTR(property);
        !          11315:                }
        !          11316: 
        !          11317:                /* here property is a string */
        !          11318:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          11319:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          11320:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          11321:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          11322:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          11323: 
        !          11324:                                have_get_ptr = 1;
        !          11325:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          11326:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          11327:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          11328:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          11329:                                        PZVAL_LOCK(*zptr);
        !          11330:                                }
        !          11331:                        }
        !          11332:                }
        !          11333: 
        !          11334:                if (!have_get_ptr) {
        !          11335:                        zval *z = NULL;
        !          11336: 
        !          11337:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          11338:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          11339:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          11340:                                }
        !          11341:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          11342:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          11343:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          11344:                                }
        !          11345:                        }
        !          11346:                        if (z) {
        !          11347:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          11348:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          11349: 
        !          11350:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          11351:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          11352:                                                zval_dtor(z);
        !          11353:                                                FREE_ZVAL(z);
        !          11354:                                        }
        !          11355:                                        z = value;
        !          11356:                                }
        !          11357:                                Z_ADDREF_P(z);
        !          11358:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          11359:                                binary_op(z, z, value TSRMLS_CC);
        !          11360:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          11361:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          11362:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          11363:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          11364:                                }
        !          11365:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          11366:                                        EX_T(result->u.var).var.ptr = z;
        !          11367:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          11368:                                        PZVAL_LOCK(z);
        !          11369:                                }
        !          11370:                                zval_ptr_dtor(&z);
        !          11371:                        } else {
        !          11372:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          11373:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          11374:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          11375:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          11376:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          11377:                                }
        !          11378:                        }
        !          11379:                }
        !          11380: 
        !          11381:                if (1) {
        !          11382:                        zval_ptr_dtor(&property);
        !          11383:                } else {
        !          11384:                        zval_dtor(free_op2.var);
        !          11385:                }
        !          11386:                FREE_OP(free_op_data1);
        !          11387:        }
        !          11388: 
        !          11389:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11390:        /* assign_obj has two opcodes! */
        !          11391:        ZEND_VM_INC_OPCODE();
        !          11392:        ZEND_VM_NEXT_OPCODE();
        !          11393: }
        !          11394: 
        !          11395: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_VAR_TMP(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          11396: {
        !          11397:        zend_op *opline = EX(opline);
        !          11398:        zend_free_op free_op1, free_op2, free_op_data2, free_op_data1;
        !          11399:        zval **var_ptr;
        !          11400:        zval *value;
        !          11401: 
        !          11402:        switch (opline->extended_value) {
        !          11403:                case ZEND_ASSIGN_OBJ:
        !          11404:                        return zend_binary_assign_op_obj_helper_SPEC_VAR_TMP(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11405:                        break;
        !          11406:                case ZEND_ASSIGN_DIM: {
        !          11407:                                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11408: 
        !          11409:                                if (IS_VAR == IS_VAR && !container) {
        !          11410:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          11411:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          11412:                                        if (IS_VAR == IS_VAR && !(free_op1.var != NULL)) {
        !          11413:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          11414:                                        }
        !          11415:                                        return zend_binary_assign_op_obj_helper_SPEC_VAR_TMP(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11416:                                } else {
        !          11417:                                        zend_op *op_data = opline+1;
        !          11418:                                        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11419: 
        !          11420:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 1, BP_VAR_RW TSRMLS_CC);
        !          11421:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          11422:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          11423:                                        ZEND_VM_INC_OPCODE();
        !          11424:                                }
        !          11425:                        }
        !          11426:                        break;
        !          11427:                default:
        !          11428:                        value = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11429:                        var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11430:                        /* do nothing */
        !          11431:                        break;
        !          11432:        }
        !          11433: 
        !          11434:        if (!var_ptr) {
        !          11435:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          11436:        }
        !          11437: 
        !          11438:        if (*var_ptr == EG(error_zval_ptr)) {
        !          11439:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          11440:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          11441:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          11442:                }
        !          11443:                zval_dtor(free_op2.var);
        !          11444:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11445:                ZEND_VM_NEXT_OPCODE();
        !          11446:        }
        !          11447: 
        !          11448:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          11449: 
        !          11450:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          11451:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          11452:                /* proxy object */
        !          11453:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          11454:                Z_ADDREF_P(objval);
        !          11455:                binary_op(objval, objval, value TSRMLS_CC);
        !          11456:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          11457:                zval_ptr_dtor(&objval);
        !          11458:        } else {
        !          11459:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          11460:        }
        !          11461: 
        !          11462:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          11463:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          11464:                PZVAL_LOCK(*var_ptr);
        !          11465:        }
        !          11466:        zval_dtor(free_op2.var);
        !          11467: 
        !          11468:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          11469:                FREE_OP(free_op_data1);
        !          11470:                FREE_OP_VAR_PTR(free_op_data2);
        !          11471:        }
        !          11472:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11473:        ZEND_VM_NEXT_OPCODE();
        !          11474: }
        !          11475: 
        !          11476: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11477: {
        !          11478:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11479: }
        !          11480: 
        !          11481: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11482: {
        !          11483:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11484: }
        !          11485: 
        !          11486: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11487: {
        !          11488:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11489: }
        !          11490: 
        !          11491: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11492: {
        !          11493:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11494: }
        !          11495: 
        !          11496: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11497: {
        !          11498:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11499: }
        !          11500: 
        !          11501: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11502: {
        !          11503:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11504: }
        !          11505: 
        !          11506: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11507: {
        !          11508:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11509: }
        !          11510: 
        !          11511: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11512: {
        !          11513:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11514: }
        !          11515: 
        !          11516: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11517: {
        !          11518:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11519: }
        !          11520: 
        !          11521: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11522: {
        !          11523:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11524: }
        !          11525: 
        !          11526: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11527: {
        !          11528:        return zend_binary_assign_op_helper_SPEC_VAR_TMP(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11529: }
        !          11530: 
        !          11531: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_TMP(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          11532: {
        !          11533:        zend_op *opline = EX(opline);
        !          11534:        zend_free_op free_op1, free_op2;
        !          11535:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11536:        zval *object;
        !          11537:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11538:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          11539:        int have_get_ptr = 0;
        !          11540: 
        !          11541:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          11542:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          11543:        }
        !          11544: 
        !          11545:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          11546:        object = *object_ptr;
        !          11547: 
        !          11548:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          11549:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          11550:                zval_dtor(free_op2.var);
        !          11551:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          11552:                        *retval = EG(uninitialized_zval_ptr);
        !          11553:                        PZVAL_LOCK(*retval);
        !          11554:                }
        !          11555:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11556:                ZEND_VM_NEXT_OPCODE();
        !          11557:        }
        !          11558: 
        !          11559:        /* here we are sure we are dealing with an object */
        !          11560: 
        !          11561:        if (1) {
        !          11562:                MAKE_REAL_ZVAL_PTR(property);
        !          11563:        }
        !          11564: 
        !          11565:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          11566:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          11567:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          11568:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          11569: 
        !          11570:                        have_get_ptr = 1;
        !          11571:                        incdec_op(*zptr);
        !          11572:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          11573:                                *retval = *zptr;
        !          11574:                                PZVAL_LOCK(*retval);
        !          11575:                        }
        !          11576:                }
        !          11577:        }
        !          11578: 
        !          11579:        if (!have_get_ptr) {
        !          11580:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          11581:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          11582: 
        !          11583:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          11584:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          11585: 
        !          11586:                                if (Z_REFCOUNT_P(z) == 0) {
        !          11587:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          11588:                                        zval_dtor(z);
        !          11589:                                        FREE_ZVAL(z);
        !          11590:                                }
        !          11591:                                z = value;
        !          11592:                        }
        !          11593:                        Z_ADDREF_P(z);
        !          11594:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          11595:                        incdec_op(z);
        !          11596:                        *retval = z;
        !          11597:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          11598:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          11599:                        zval_ptr_dtor(&z);
        !          11600:                } else {
        !          11601:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          11602:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          11603:                                *retval = EG(uninitialized_zval_ptr);
        !          11604:                                PZVAL_LOCK(*retval);
        !          11605:                        }
        !          11606:                }
        !          11607:        }
        !          11608: 
        !          11609:        if (1) {
        !          11610:                zval_ptr_dtor(&property);
        !          11611:        } else {
        !          11612:                zval_dtor(free_op2.var);
        !          11613:        }
        !          11614:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11615:        ZEND_VM_NEXT_OPCODE();
        !          11616: }
        !          11617: 
        !          11618: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11619: {
        !          11620:        return zend_pre_incdec_property_helper_SPEC_VAR_TMP(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11621: }
        !          11622: 
        !          11623: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11624: {
        !          11625:        return zend_pre_incdec_property_helper_SPEC_VAR_TMP(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11626: }
        !          11627: 
        !          11628: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_TMP(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          11629: {
        !          11630:        zend_op *opline = EX(opline);
        !          11631:        zend_free_op free_op1, free_op2;
        !          11632:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11633:        zval *object;
        !          11634:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11635:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          11636:        int have_get_ptr = 0;
        !          11637: 
        !          11638:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          11639:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          11640:        }
        !          11641: 
        !          11642:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          11643:        object = *object_ptr;
        !          11644: 
        !          11645:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          11646:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          11647:                zval_dtor(free_op2.var);
        !          11648:                *retval = *EG(uninitialized_zval_ptr);
        !          11649:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11650:                ZEND_VM_NEXT_OPCODE();
        !          11651:        }
        !          11652: 
        !          11653:        /* here we are sure we are dealing with an object */
        !          11654: 
        !          11655:        if (1) {
        !          11656:                MAKE_REAL_ZVAL_PTR(property);
        !          11657:        }
        !          11658: 
        !          11659:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          11660:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          11661:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          11662:                        have_get_ptr = 1;
        !          11663:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          11664: 
        !          11665:                        *retval = **zptr;
        !          11666:                        zendi_zval_copy_ctor(*retval);
        !          11667: 
        !          11668:                        incdec_op(*zptr);
        !          11669: 
        !          11670:                }
        !          11671:        }
        !          11672: 
        !          11673:        if (!have_get_ptr) {
        !          11674:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          11675:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          11676:                        zval *z_copy;
        !          11677: 
        !          11678:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          11679:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          11680: 
        !          11681:                                if (Z_REFCOUNT_P(z) == 0) {
        !          11682:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          11683:                                        zval_dtor(z);
        !          11684:                                        FREE_ZVAL(z);
        !          11685:                                }
        !          11686:                                z = value;
        !          11687:                        }
        !          11688:                        *retval = *z;
        !          11689:                        zendi_zval_copy_ctor(*retval);
        !          11690:                        ALLOC_ZVAL(z_copy);
        !          11691:                        *z_copy = *z;
        !          11692:                        zendi_zval_copy_ctor(*z_copy);
        !          11693:                        INIT_PZVAL(z_copy);
        !          11694:                        incdec_op(z_copy);
        !          11695:                        Z_ADDREF_P(z);
        !          11696:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          11697:                        zval_ptr_dtor(&z_copy);
        !          11698:                        zval_ptr_dtor(&z);
        !          11699:                } else {
        !          11700:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          11701:                        *retval = *EG(uninitialized_zval_ptr);
        !          11702:                }
        !          11703:        }
        !          11704: 
        !          11705:        if (1) {
        !          11706:                zval_ptr_dtor(&property);
        !          11707:        } else {
        !          11708:                zval_dtor(free_op2.var);
        !          11709:        }
        !          11710:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11711:        ZEND_VM_NEXT_OPCODE();
        !          11712: }
        !          11713: 
        !          11714: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11715: {
        !          11716:        return zend_post_incdec_property_helper_SPEC_VAR_TMP(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11717: }
        !          11718: 
        !          11719: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11720: {
        !          11721:        return zend_post_incdec_property_helper_SPEC_VAR_TMP(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11722: }
        !          11723: 
        !          11724: static int ZEND_FASTCALL  ZEND_FETCH_DIM_R_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11725: {
        !          11726:        zend_op *opline = EX(opline);
        !          11727:        zend_free_op free_op1, free_op2;
        !          11728:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11729:        zval **container;
        !          11730: 
        !          11731:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK &&
        !          11732:            IS_VAR != IS_CV &&
        !          11733:            EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          11734:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          11735:        }
        !          11736:        container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11737:        if (IS_VAR == IS_VAR && !container) {
        !          11738:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          11739:        }
        !          11740:        zend_fetch_dimension_address_read(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_R TSRMLS_CC);
        !          11741:        zval_dtor(free_op2.var);
        !          11742:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11743:        ZEND_VM_NEXT_OPCODE();
        !          11744: }
        !          11745: 
        !          11746: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11747: {
        !          11748:        zend_op *opline = EX(opline);
        !          11749:        zend_free_op free_op1, free_op2;
        !          11750:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11751:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11752: 
        !          11753:        if (IS_VAR == IS_VAR && !container) {
        !          11754:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          11755:        }
        !          11756:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_W TSRMLS_CC);
        !          11757:        zval_dtor(free_op2.var);
        !          11758:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          11759:            READY_TO_DESTROY(free_op1.var)) {
        !          11760:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          11761:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          11762:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          11763:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11764:                }
        !          11765:        }
        !          11766:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11767: 
        !          11768:        /* We are going to assign the result by reference */
        !          11769:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          11770:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11771:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11772:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11773:        }
        !          11774: 
        !          11775:        ZEND_VM_NEXT_OPCODE();
        !          11776: }
        !          11777: 
        !          11778: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11779: {
        !          11780:        zend_op *opline = EX(opline);
        !          11781:        zend_free_op free_op1, free_op2;
        !          11782:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11783:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11784: 
        !          11785:        if (IS_VAR == IS_VAR && !container) {
        !          11786:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          11787:        }
        !          11788:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_RW TSRMLS_CC);
        !          11789:        zval_dtor(free_op2.var);
        !          11790:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          11791:            READY_TO_DESTROY(free_op1.var)) {
        !          11792:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          11793:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          11794:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          11795:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11796:                }
        !          11797:        }
        !          11798:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11799:        ZEND_VM_NEXT_OPCODE();
        !          11800: }
        !          11801: 
        !          11802: static int ZEND_FASTCALL  ZEND_FETCH_DIM_IS_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11803: {
        !          11804:        zend_op *opline = EX(opline);
        !          11805:        zend_free_op free_op1, free_op2;
        !          11806:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11807:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11808: 
        !          11809:        if (IS_VAR == IS_VAR && !container) {
        !          11810:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          11811:        }
        !          11812:        zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_IS TSRMLS_CC);
        !          11813:        zval_dtor(free_op2.var);
        !          11814:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11815:        ZEND_VM_NEXT_OPCODE();
        !          11816: }
        !          11817: 
        !          11818: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11819: {
        !          11820:        zend_op *opline = EX(opline);
        !          11821:        zend_free_op free_op1, free_op2;
        !          11822:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11823:        zval **container;
        !          11824: 
        !          11825:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          11826:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11827:                if (IS_VAR == IS_VAR && !container) {
        !          11828:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          11829:                }
        !          11830:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_W TSRMLS_CC);
        !          11831:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          11832:                    READY_TO_DESTROY(free_op1.var)) {
        !          11833:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          11834:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          11835:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          11836:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11837:                        }
        !          11838:                }
        !          11839:        } else {
        !          11840:                if (IS_TMP_VAR == IS_UNUSED) {
        !          11841:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          11842:                }
        !          11843:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11844:                if (IS_VAR == IS_VAR && !container) {
        !          11845:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          11846:                }
        !          11847:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_R TSRMLS_CC);
        !          11848:        }
        !          11849:        zval_dtor(free_op2.var);
        !          11850:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11851:        ZEND_VM_NEXT_OPCODE();
        !          11852: }
        !          11853: 
        !          11854: static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11855: {
        !          11856:        zend_op *opline = EX(opline);
        !          11857:        zend_free_op free_op1, free_op2;
        !          11858:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11859:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11860: 
        !          11861:        /* Not needed in DIM_UNSET
        !          11862:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
        !          11863:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          11864:        }
        !          11865:        */
        !          11866:        if (IS_VAR == IS_CV) {
        !          11867:                if (container != &EG(uninitialized_zval_ptr)) {
        !          11868:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          11869:                }
        !          11870:        }
        !          11871:        if (IS_VAR == IS_VAR && !container) {
        !          11872:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          11873:        }
        !          11874:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_UNSET TSRMLS_CC);
        !          11875:        zval_dtor(free_op2.var);
        !          11876:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          11877:            READY_TO_DESTROY(free_op1.var)) {
        !          11878:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          11879:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          11880:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          11881:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11882:                }
        !          11883:        }
        !          11884:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11885:        if (EX_T(opline->result.u.var).var.ptr_ptr == NULL) {
        !          11886:                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          11887:        } else {
        !          11888:                zend_free_op free_res;
        !          11889: 
        !          11890:                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          11891:                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          11892:                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11893:                }
        !          11894:                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          11895:                FREE_OP_VAR_PTR(free_res);
        !          11896:        }
        !          11897:        ZEND_VM_NEXT_OPCODE();
        !          11898: }
        !          11899: 
        !          11900: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_VAR_TMP(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          11901: {
        !          11902:        zend_op *opline = EX(opline);
        !          11903:        zend_free_op free_op1;
        !          11904:        zval *container = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11905:        zend_free_op free_op2;
        !          11906:        zval *offset  = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11907: 
        !          11908:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          11909:                if (type != BP_VAR_IS) {
        !          11910:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          11911:                }
        !          11912:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          11913:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          11914:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          11915:                }
        !          11916:                zval_dtor(free_op2.var);
        !          11917:        } else {
        !          11918:                zval *retval;
        !          11919: 
        !          11920:                if (1) {
        !          11921:                        MAKE_REAL_ZVAL_PTR(offset);
        !          11922:                }
        !          11923: 
        !          11924:                /* here we are sure we are dealing with an object */
        !          11925:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          11926: 
        !          11927:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          11928:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          11929:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          11930:                                zval_dtor(retval);
        !          11931:                                FREE_ZVAL(retval);
        !          11932:                        }
        !          11933:                } else {
        !          11934:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          11935:                        PZVAL_LOCK(retval);
        !          11936:                }
        !          11937: 
        !          11938:                if (1) {
        !          11939:                        zval_ptr_dtor(&offset);
        !          11940:                } else {
        !          11941:                        zval_dtor(free_op2.var);
        !          11942:                }
        !          11943:        }
        !          11944: 
        !          11945:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11946:        ZEND_VM_NEXT_OPCODE();
        !          11947: }
        !          11948: 
        !          11949: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11950: {
        !          11951:        return zend_fetch_property_address_read_helper_SPEC_VAR_TMP(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          11952: }
        !          11953: 
        !          11954: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          11955: {
        !          11956:        zend_op *opline = EX(opline);
        !          11957:        zend_free_op free_op1, free_op2;
        !          11958:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          11959:        zval **container;
        !          11960: 
        !          11961:        if (IS_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          11962:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          11963:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          11964:        }
        !          11965: 
        !          11966:        if (1) {
        !          11967:                MAKE_REAL_ZVAL_PTR(property);
        !          11968:        }
        !          11969:        container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          11970:        if (IS_VAR == IS_VAR && !container) {
        !          11971:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          11972:        }
        !          11973:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          11974:        if (1) {
        !          11975:                zval_ptr_dtor(&property);
        !          11976:        } else {
        !          11977:                zval_dtor(free_op2.var);
        !          11978:        }
        !          11979:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          11980:            READY_TO_DESTROY(free_op1.var)) {
        !          11981:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          11982:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          11983:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          11984:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11985:                }
        !          11986:        }
        !          11987:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          11988: 
        !          11989:        /* We are going to assign the result by reference */
        !          11990:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          11991:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11992:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11993:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          11994:        }
        !          11995: 
        !          11996:        ZEND_VM_NEXT_OPCODE();
        !          11997: }
        !          11998: 
        !          11999: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12000: {
        !          12001:        zend_op *opline = EX(opline);
        !          12002:        zend_free_op free_op1, free_op2;
        !          12003:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12004:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12005: 
        !          12006:        if (1) {
        !          12007:                MAKE_REAL_ZVAL_PTR(property);
        !          12008:        }
        !          12009:        if (IS_VAR == IS_VAR && !container) {
        !          12010:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          12011:        }
        !          12012:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          12013:        if (1) {
        !          12014:                zval_ptr_dtor(&property);
        !          12015:        } else {
        !          12016:                zval_dtor(free_op2.var);
        !          12017:        }
        !          12018:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          12019:            READY_TO_DESTROY(free_op1.var)) {
        !          12020:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          12021:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          12022:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          12023:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          12024:                }
        !          12025:        }
        !          12026:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12027:        ZEND_VM_NEXT_OPCODE();
        !          12028: }
        !          12029: 
        !          12030: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12031: {
        !          12032:        return zend_fetch_property_address_read_helper_SPEC_VAR_TMP(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          12033: }
        !          12034: 
        !          12035: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12036: {
        !          12037:        zend_op *opline = EX(opline);
        !          12038: 
        !          12039:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          12040:                /* Behave like FETCH_OBJ_W */
        !          12041:                zend_free_op free_op1, free_op2;
        !          12042:                zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12043:                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12044: 
        !          12045:                if (1) {
        !          12046:                        MAKE_REAL_ZVAL_PTR(property);
        !          12047:                }
        !          12048:                if (IS_VAR == IS_VAR && !container) {
        !          12049:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          12050:                }
        !          12051:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          12052:                if (1) {
        !          12053:                        zval_ptr_dtor(&property);
        !          12054:                } else {
        !          12055:                        zval_dtor(free_op2.var);
        !          12056:                }
        !          12057:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          12058:                    READY_TO_DESTROY(free_op1.var)) {
        !          12059:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          12060:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          12061:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          12062:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          12063:                        }
        !          12064:                }
        !          12065:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12066:                ZEND_VM_NEXT_OPCODE();
        !          12067:        } else {
        !          12068:                return zend_fetch_property_address_read_helper_SPEC_VAR_TMP(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          12069:        }
        !          12070: }
        !          12071: 
        !          12072: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12073: {
        !          12074:        zend_op *opline = EX(opline);
        !          12075:        zend_free_op free_op1, free_op2, free_res;
        !          12076:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12077:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12078: 
        !          12079:        if (IS_VAR == IS_CV) {
        !          12080:                if (container != &EG(uninitialized_zval_ptr)) {
        !          12081:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          12082:                }
        !          12083:        }
        !          12084:        if (1) {
        !          12085:                MAKE_REAL_ZVAL_PTR(property);
        !          12086:        }
        !          12087:        if (IS_VAR == IS_VAR && !container) {
        !          12088:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          12089:        }
        !          12090:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          12091:        if (1) {
        !          12092:                zval_ptr_dtor(&property);
        !          12093:        } else {
        !          12094:                zval_dtor(free_op2.var);
        !          12095:        }
        !          12096:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          12097:            READY_TO_DESTROY(free_op1.var)) {
        !          12098:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          12099:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          12100:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          12101:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          12102:                }
        !          12103:        }
        !          12104:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12105: 
        !          12106:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          12107:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          12108:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          12109:        }
        !          12110:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          12111:        FREE_OP_VAR_PTR(free_res);
        !          12112:        ZEND_VM_NEXT_OPCODE();
        !          12113: }
        !          12114: 
        !          12115: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12116: {
        !          12117:        zend_op *opline = EX(opline);
        !          12118:        zend_op *op_data = opline+1;
        !          12119:        zend_free_op free_op1, free_op2;
        !          12120:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12121:        zval *property_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12122: 
        !          12123:        if (1) {
        !          12124:                MAKE_REAL_ZVAL_PTR(property_name);
        !          12125:        }
        !          12126:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          12127:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          12128:        }
        !          12129:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          12130:        if (1) {
        !          12131:                zval_ptr_dtor(&property_name);
        !          12132:        } else {
        !          12133:                zval_dtor(free_op2.var);
        !          12134:        }
        !          12135:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12136:        /* assign_obj has two opcodes! */
        !          12137:        ZEND_VM_INC_OPCODE();
        !          12138:        ZEND_VM_NEXT_OPCODE();
        !          12139: }
        !          12140: 
        !          12141: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12142: {
        !          12143:        zend_op *opline = EX(opline);
        !          12144:        zend_op *op_data = opline+1;
        !          12145:        zend_free_op free_op1;
        !          12146:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12147: 
        !          12148:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          12149:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          12150:        }
        !          12151:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          12152:                zend_free_op free_op2;
        !          12153:                zval *property_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12154: 
        !          12155:                if (1) {
        !          12156:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          12157:                }
        !          12158:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          12159:                if (1) {
        !          12160:                        zval_ptr_dtor(&property_name);
        !          12161:                } else {
        !          12162:                        zval_dtor(free_op2.var);
        !          12163:                }
        !          12164:        } else {
        !          12165:                zend_free_op free_op2, free_op_data1, free_op_data2;
        !          12166:                zval *value;
        !          12167:                zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12168:                zval **variable_ptr_ptr;
        !          12169: 
        !          12170:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 1, BP_VAR_W TSRMLS_CC);
        !          12171:                zval_dtor(free_op2.var);
        !          12172: 
        !          12173:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          12174:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          12175:                if (!variable_ptr_ptr) {
        !          12176:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          12177:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          12178:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          12179:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          12180:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          12181:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          12182:                                }
        !          12183:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          12184:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          12185:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          12186:                        }
        !          12187:                } else {
        !          12188:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          12189:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          12190:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          12191:                                PZVAL_LOCK(value);
        !          12192:                        }
        !          12193:                }
        !          12194:                FREE_OP_VAR_PTR(free_op_data2);
        !          12195:                FREE_OP_IF_VAR(free_op_data1);
        !          12196:        }
        !          12197:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12198:        /* assign_dim has two opcodes! */
        !          12199:        ZEND_VM_INC_OPCODE();
        !          12200:        ZEND_VM_NEXT_OPCODE();
        !          12201: }
        !          12202: 
        !          12203: static int ZEND_FASTCALL  ZEND_ASSIGN_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12204: {
        !          12205:        zend_op *opline = EX(opline);
        !          12206:        zend_free_op free_op1, free_op2;
        !          12207:        zval *value = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12208:        zval **variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12209: 
        !          12210:        if (IS_VAR == IS_VAR && !variable_ptr_ptr) {
        !          12211:                if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_TMP_VAR TSRMLS_CC)) {
        !          12212:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          12213:                                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          12214:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          12215:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          12216:                                ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
        !          12217:                        }
        !          12218:                } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          12219:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          12220:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          12221:                }
        !          12222:        } else {
        !          12223:                value = zend_assign_to_variable(variable_ptr_ptr, value, 1 TSRMLS_CC);
        !          12224:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          12225:                        AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          12226:                        PZVAL_LOCK(value);
        !          12227:                }
        !          12228:        }
        !          12229: 
        !          12230:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12231: 
        !          12232:        /* zend_assign_to_variable() always takes care of op2, never free it! */
        !          12233: 
        !          12234:        ZEND_VM_NEXT_OPCODE();
        !          12235: }
        !          12236: 
        !          12237: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12238: {
        !          12239:        zend_op *opline = EX(opline);
        !          12240:        zval *function_name;
        !          12241:        char *function_name_strval;
        !          12242:        int function_name_strlen;
        !          12243:        zend_free_op free_op1, free_op2;
        !          12244: 
        !          12245:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          12246: 
        !          12247:        function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12248: 
        !          12249:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          12250:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          12251:        }
        !          12252: 
        !          12253:        function_name_strval = Z_STRVAL_P(function_name);
        !          12254:        function_name_strlen = Z_STRLEN_P(function_name);
        !          12255: 
        !          12256:        EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12257: 
        !          12258:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          12259:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          12260:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          12261:                }
        !          12262: 
        !          12263:                /* First, locate the function. */
        !          12264:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          12265:                if (!EX(fbc)) {
        !          12266:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          12267:                }
        !          12268: 
        !          12269:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          12270:        } else {
        !          12271:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          12272:        }
        !          12273: 
        !          12274:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          12275:                EX(object) = NULL;
        !          12276:        } else {
        !          12277:                if (!PZVAL_IS_REF(EX(object))) {
        !          12278:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          12279:                } else {
        !          12280:                        zval *this_ptr;
        !          12281:                        ALLOC_ZVAL(this_ptr);
        !          12282:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          12283:                        zval_copy_ctor(this_ptr);
        !          12284:                        EX(object) = this_ptr;
        !          12285:                }
        !          12286:        }
        !          12287: 
        !          12288:        zval_dtor(free_op2.var);
        !          12289:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12290: 
        !          12291:        ZEND_VM_NEXT_OPCODE();
        !          12292: }
        !          12293: 
        !          12294: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12295: {
        !          12296:        zend_op *opline = EX(opline);
        !          12297:        zval *function_name;
        !          12298:        zend_class_entry *ce;
        !          12299: 
        !          12300:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          12301: 
        !          12302:        if (IS_VAR == IS_CONST) {
        !          12303:                /* no function found. try a static method in class */
        !          12304:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          12305:                if (!ce) {
        !          12306:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          12307:                }
        !          12308:                EX(called_scope) = ce;
        !          12309:        } else {
        !          12310:                ce = EX_T(opline->op1.u.var).class_entry;
        !          12311: 
        !          12312:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          12313:                        EX(called_scope) = EG(called_scope);
        !          12314:                } else {
        !          12315:                        EX(called_scope) = ce;
        !          12316:                }
        !          12317:        }
        !          12318:        if(IS_TMP_VAR != IS_UNUSED) {
        !          12319:                char *function_name_strval = NULL;
        !          12320:                int function_name_strlen = 0;
        !          12321:                zend_free_op free_op2;
        !          12322: 
        !          12323:                if (IS_TMP_VAR == IS_CONST) {
        !          12324:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          12325:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          12326:                } else {
        !          12327:                        function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12328: 
        !          12329:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          12330:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          12331:                        } else {
        !          12332:                                function_name_strval = Z_STRVAL_P(function_name);
        !          12333:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          12334:                        }
        !          12335:                }
        !          12336: 
        !          12337:                if (function_name_strval) {
        !          12338:                        if (ce->get_static_method) {
        !          12339:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          12340:                        } else {
        !          12341:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          12342:                        }
        !          12343:                        if (!EX(fbc)) {
        !          12344:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          12345:                        }
        !          12346:                }
        !          12347: 
        !          12348:                if (IS_TMP_VAR != IS_CONST) {
        !          12349:                        zval_dtor(free_op2.var);
        !          12350:                }
        !          12351:        } else {
        !          12352:                if(!ce->constructor) {
        !          12353:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          12354:                }
        !          12355:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          12356:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          12357:                }
        !          12358:                EX(fbc) = ce->constructor;
        !          12359:        }
        !          12360: 
        !          12361:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          12362:                EX(object) = NULL;
        !          12363:        } else {
        !          12364:                if (EG(This) &&
        !          12365:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          12366:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          12367:                    /* We are calling method of the other (incompatible) class,
        !          12368:                       but passing $this. This is done for compatibility with php-4. */
        !          12369:                        int severity;
        !          12370:                        char *verb;
        !          12371:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          12372:                                severity = E_STRICT;
        !          12373:                                verb = "should not";
        !          12374:                        } else {
        !          12375:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          12376:                                severity = E_ERROR;
        !          12377:                                verb = "cannot";
        !          12378:                        }
        !          12379:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          12380: 
        !          12381:                }
        !          12382:                if ((EX(object) = EG(This))) {
        !          12383:                        Z_ADDREF_P(EX(object));
        !          12384:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          12385:                }
        !          12386:        }
        !          12387: 
        !          12388:        ZEND_VM_NEXT_OPCODE();
        !          12389: }
        !          12390: 
        !          12391: static int ZEND_FASTCALL  ZEND_CASE_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12392: {
        !          12393:        zend_op *opline = EX(opline);
        !          12394:        int switch_expr_is_overloaded=0;
        !          12395:        zend_free_op free_op1, free_op2;
        !          12396: 
        !          12397:        if (IS_VAR==IS_VAR) {
        !          12398:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          12399:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          12400:                } else {
        !          12401:                        switch_expr_is_overloaded = 1;
        !          12402:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          12403:                }
        !          12404:        }
        !          12405:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          12406:                                 _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12407:                                 _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12408: 
        !          12409:        zval_dtor(free_op2.var);
        !          12410:        if (switch_expr_is_overloaded) {
        !          12411:                /* We only free op1 if this is a string offset,
        !          12412:                 * Since if it is a TMP_VAR, it'll be reused by
        !          12413:                 * other CASE opcodes (whereas string offsets
        !          12414:                 * are allocated at each get_zval_ptr())
        !          12415:                 */
        !          12416:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12417:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          12418:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          12419:        }
        !          12420:        ZEND_VM_NEXT_OPCODE();
        !          12421: }
        !          12422: 
        !          12423: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12424: {
        !          12425:        zend_op *opline = EX(opline);
        !          12426:        zend_free_op free_op1, free_op2;
        !          12427:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          12428:        zval *expr_ptr;
        !          12429:        zval *offset=_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12430: 
        !          12431: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          12432:        zval **expr_ptr_ptr = NULL;
        !          12433: 
        !          12434:        if (opline->extended_value) {
        !          12435:                expr_ptr_ptr=_get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12436:                expr_ptr = *expr_ptr_ptr;
        !          12437:        } else {
        !          12438:                expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12439:        }
        !          12440: #else
        !          12441:        expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12442: #endif
        !          12443: 
        !          12444:        if (0) { /* temporary variable */
        !          12445:                zval *new_expr;
        !          12446: 
        !          12447:                ALLOC_ZVAL(new_expr);
        !          12448:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          12449:                expr_ptr = new_expr;
        !          12450:        } else {
        !          12451: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          12452:                if (opline->extended_value) {
        !          12453:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          12454:                        expr_ptr = *expr_ptr_ptr;
        !          12455:                        Z_ADDREF_P(expr_ptr);
        !          12456:                } else
        !          12457: #endif
        !          12458:                if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          12459:                        zval *new_expr;
        !          12460: 
        !          12461:                        ALLOC_ZVAL(new_expr);
        !          12462:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          12463:                        expr_ptr = new_expr;
        !          12464:                        zendi_zval_copy_ctor(*expr_ptr);
        !          12465:                } else {
        !          12466:                        Z_ADDREF_P(expr_ptr);
        !          12467:                }
        !          12468:        }
        !          12469:        if (offset) {
        !          12470:                switch (Z_TYPE_P(offset)) {
        !          12471:                        case IS_DOUBLE:
        !          12472:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          12473:                                break;
        !          12474:                        case IS_LONG:
        !          12475:                        case IS_BOOL:
        !          12476:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          12477:                                break;
        !          12478:                        case IS_STRING:
        !          12479:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          12480:                                break;
        !          12481:                        case IS_NULL:
        !          12482:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          12483:                                break;
        !          12484:                        default:
        !          12485:                                zend_error(E_WARNING, "Illegal offset type");
        !          12486:                                zval_ptr_dtor(&expr_ptr);
        !          12487:                                /* do nothing */
        !          12488:                                break;
        !          12489:                }
        !          12490:                zval_dtor(free_op2.var);
        !          12491:        } else {
        !          12492:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          12493:        }
        !          12494:        if (opline->extended_value) {
        !          12495:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12496:        } else {
        !          12497:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12498:        }
        !          12499:        ZEND_VM_NEXT_OPCODE();
        !          12500: }
        !          12501: 
        !          12502: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12503: {
        !          12504:        zend_op *opline = EX(opline);
        !          12505: 
        !          12506:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          12507:        if (IS_VAR == IS_UNUSED) {
        !          12508:                ZEND_VM_NEXT_OPCODE();
        !          12509: #if 0 || IS_VAR != IS_UNUSED
        !          12510:        } else {
        !          12511:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          12512: #endif
        !          12513:        }
        !          12514: }
        !          12515: 
        !          12516: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12517: {
        !          12518:        zend_op *opline = EX(opline);
        !          12519:        zend_free_op free_op1, free_op2;
        !          12520:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12521:        zval *offset;
        !          12522: 
        !          12523:        if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          12524:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          12525:        }
        !          12526:        offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12527: 
        !          12528:        if (IS_VAR != IS_VAR || container) {
        !          12529:                switch (Z_TYPE_PP(container)) {
        !          12530:                        case IS_ARRAY: {
        !          12531:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          12532: 
        !          12533:                                switch (Z_TYPE_P(offset)) {
        !          12534:                                        case IS_DOUBLE:
        !          12535:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          12536:                                                break;
        !          12537:                                        case IS_RESOURCE:
        !          12538:                                        case IS_BOOL:
        !          12539:                                        case IS_LONG:
        !          12540:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          12541:                                                break;
        !          12542:                                        case IS_STRING:
        !          12543:                                                if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
        !          12544:                                                        Z_ADDREF_P(offset);
        !          12545:                                                }
        !          12546:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          12547:                                            ht == &EG(symbol_table)) {
        !          12548:                                                        zend_execute_data *ex;
        !          12549:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          12550: 
        !          12551:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          12552:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          12553:                                                                        int i;
        !          12554: 
        !          12555:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          12556:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          12557:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          12558:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          12559:                                                                                        ex->CVs[i] = NULL;
        !          12560:                                                                                        break;
        !          12561:                                                                                }
        !          12562:                                                                        }
        !          12563:                                                                }
        !          12564:                                                        }
        !          12565:                                                }
        !          12566:                                                if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
        !          12567:                                                        zval_ptr_dtor(&offset);
        !          12568:                                                }
        !          12569:                                                break;
        !          12570:                                        case IS_NULL:
        !          12571:                                                zend_hash_del(ht, "", sizeof(""));
        !          12572:                                                break;
        !          12573:                                        default:
        !          12574:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          12575:                                                break;
        !          12576:                                }
        !          12577:                                zval_dtor(free_op2.var);
        !          12578:                                break;
        !          12579:                        }
        !          12580:                        case IS_OBJECT:
        !          12581:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          12582:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          12583:                                }
        !          12584:                                if (1) {
        !          12585:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          12586:                                }
        !          12587:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          12588:                                if (1) {
        !          12589:                                        zval_ptr_dtor(&offset);
        !          12590:                                } else {
        !          12591:                                        zval_dtor(free_op2.var);
        !          12592:                                }
        !          12593:                                break;
        !          12594:                        case IS_STRING:
        !          12595:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          12596:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          12597:                        default:
        !          12598:                                zval_dtor(free_op2.var);
        !          12599:                                break;
        !          12600:                }
        !          12601:        } else {
        !          12602:                zval_dtor(free_op2.var);
        !          12603:        }
        !          12604:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12605: 
        !          12606:        ZEND_VM_NEXT_OPCODE();
        !          12607: }
        !          12608: 
        !          12609: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12610: {
        !          12611:        zend_op *opline = EX(opline);
        !          12612:        zend_free_op free_op1, free_op2;
        !          12613:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12614:        zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12615: 
        !          12616:        if (IS_VAR != IS_VAR || container) {
        !          12617:                if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          12618:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          12619:                }
        !          12620:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          12621:                        if (1) {
        !          12622:                                MAKE_REAL_ZVAL_PTR(offset);
        !          12623:                        }
        !          12624:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          12625:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          12626:                        } else {
        !          12627:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          12628:                        }
        !          12629:                        if (1) {
        !          12630:                                zval_ptr_dtor(&offset);
        !          12631:                        } else {
        !          12632:                                zval_dtor(free_op2.var);
        !          12633:                        }
        !          12634:                } else {
        !          12635:                        zval_dtor(free_op2.var);
        !          12636:                }
        !          12637:        } else {
        !          12638:                zval_dtor(free_op2.var);
        !          12639:        }
        !          12640:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12641: 
        !          12642:        ZEND_VM_NEXT_OPCODE();
        !          12643: }
        !          12644: 
        !          12645: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_TMP(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          12646: {
        !          12647:        zend_op *opline = EX(opline);
        !          12648:        zend_free_op free_op1;
        !          12649:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          12650:        zval **value = NULL;
        !          12651:        int result = 0;
        !          12652: 
        !          12653:        if (IS_VAR != IS_VAR || container) {
        !          12654:                zend_free_op free_op2;
        !          12655:                zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          12656: 
        !          12657:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          12658:                        HashTable *ht;
        !          12659:                        int isset = 0;
        !          12660: 
        !          12661:                        ht = Z_ARRVAL_PP(container);
        !          12662: 
        !          12663:                        switch (Z_TYPE_P(offset)) {
        !          12664:                                case IS_DOUBLE:
        !          12665:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          12666:                                                isset = 1;
        !          12667:                                        }
        !          12668:                                        break;
        !          12669:                                case IS_RESOURCE:
        !          12670:                                case IS_BOOL:
        !          12671:                                case IS_LONG:
        !          12672:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          12673:                                                isset = 1;
        !          12674:                                        }
        !          12675:                                        break;
        !          12676:                                case IS_STRING:
        !          12677:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          12678:                                                isset = 1;
        !          12679:                                        }
        !          12680:                                        break;
        !          12681:                                case IS_NULL:
        !          12682:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          12683:                                                isset = 1;
        !          12684:                                        }
        !          12685:                                        break;
        !          12686:                                default:
        !          12687:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          12688: 
        !          12689:                                        break;
        !          12690:                        }
        !          12691: 
        !          12692:                        switch (opline->extended_value) {
        !          12693:                                case ZEND_ISSET:
        !          12694:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          12695:                                                result = 0;
        !          12696:                                        } else {
        !          12697:                                                result = isset;
        !          12698:                                        }
        !          12699:                                        break;
        !          12700:                                case ZEND_ISEMPTY:
        !          12701:                                        if (!isset || !i_zend_is_true(*value)) {
        !          12702:                                                result = 0;
        !          12703:                                        } else {
        !          12704:                                                result = 1;
        !          12705:                                        }
        !          12706:                                        break;
        !          12707:                        }
        !          12708:                        zval_dtor(free_op2.var);
        !          12709:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          12710:                        if (1) {
        !          12711:                                MAKE_REAL_ZVAL_PTR(offset);
        !          12712:                        }
        !          12713:                        if (prop_dim) {
        !          12714:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          12715:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          12716:                                } else {
        !          12717:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          12718:                                        result = 0;
        !          12719:                                }
        !          12720:                        } else {
        !          12721:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          12722:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          12723:                                } else {
        !          12724:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          12725:                                        result = 0;
        !          12726:                                }
        !          12727:                        }
        !          12728:                        if (1) {
        !          12729:                                zval_ptr_dtor(&offset);
        !          12730:                        } else {
        !          12731:                                zval_dtor(free_op2.var);
        !          12732:                        }
        !          12733:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          12734:                        zval tmp;
        !          12735: 
        !          12736:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          12737:                                tmp = *offset;
        !          12738:                                zval_copy_ctor(&tmp);
        !          12739:                                convert_to_long(&tmp);
        !          12740:                                offset = &tmp;
        !          12741:                        }
        !          12742:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          12743:                                switch (opline->extended_value) {
        !          12744:                                        case ZEND_ISSET:
        !          12745:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          12746:                                                        result = 1;
        !          12747:                                                }
        !          12748:                                                break;
        !          12749:                                        case ZEND_ISEMPTY:
        !          12750:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          12751:                                                        result = 1;
        !          12752:                                                }
        !          12753:                                                break;
        !          12754:                                }
        !          12755:                        }
        !          12756:                        zval_dtor(free_op2.var);
        !          12757:                } else {
        !          12758:                        zval_dtor(free_op2.var);
        !          12759:                }
        !          12760:        }
        !          12761: 
        !          12762:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          12763: 
        !          12764:        switch (opline->extended_value) {
        !          12765:                case ZEND_ISSET:
        !          12766:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          12767:                        break;
        !          12768:                case ZEND_ISEMPTY:
        !          12769:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          12770:                        break;
        !          12771:        }
        !          12772: 
        !          12773:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12774: 
        !          12775:        ZEND_VM_NEXT_OPCODE();
        !          12776: }
        !          12777: 
        !          12778: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12779: {
        !          12780:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_TMP(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          12781: }
        !          12782: 
        !          12783: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12784: {
        !          12785:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_TMP(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          12786: }
        !          12787: 
        !          12788: static int ZEND_FASTCALL  ZEND_ADD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12789: {
        !          12790:        zend_op *opline = EX(opline);
        !          12791:        zend_free_op free_op1, free_op2;
        !          12792: 
        !          12793:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          12794:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12795:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12796:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12797:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12798:        ZEND_VM_NEXT_OPCODE();
        !          12799: }
        !          12800: 
        !          12801: static int ZEND_FASTCALL  ZEND_SUB_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12802: {
        !          12803:        zend_op *opline = EX(opline);
        !          12804:        zend_free_op free_op1, free_op2;
        !          12805: 
        !          12806:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          12807:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12808:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12809:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12810:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12811:        ZEND_VM_NEXT_OPCODE();
        !          12812: }
        !          12813: 
        !          12814: static int ZEND_FASTCALL  ZEND_MUL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12815: {
        !          12816:        zend_op *opline = EX(opline);
        !          12817:        zend_free_op free_op1, free_op2;
        !          12818: 
        !          12819:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          12820:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12821:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12822:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12823:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12824:        ZEND_VM_NEXT_OPCODE();
        !          12825: }
        !          12826: 
        !          12827: static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12828: {
        !          12829:        zend_op *opline = EX(opline);
        !          12830:        zend_free_op free_op1, free_op2;
        !          12831: 
        !          12832:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          12833:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12834:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12835:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12836:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12837:        ZEND_VM_NEXT_OPCODE();
        !          12838: }
        !          12839: 
        !          12840: static int ZEND_FASTCALL  ZEND_MOD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12841: {
        !          12842:        zend_op *opline = EX(opline);
        !          12843:        zend_free_op free_op1, free_op2;
        !          12844: 
        !          12845:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          12846:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12847:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12848:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12849:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12850:        ZEND_VM_NEXT_OPCODE();
        !          12851: }
        !          12852: 
        !          12853: static int ZEND_FASTCALL  ZEND_SL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12854: {
        !          12855:        zend_op *opline = EX(opline);
        !          12856:        zend_free_op free_op1, free_op2;
        !          12857: 
        !          12858:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          12859:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12860:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12861:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12862:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12863:        ZEND_VM_NEXT_OPCODE();
        !          12864: }
        !          12865: 
        !          12866: static int ZEND_FASTCALL  ZEND_SR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12867: {
        !          12868:        zend_op *opline = EX(opline);
        !          12869:        zend_free_op free_op1, free_op2;
        !          12870: 
        !          12871:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          12872:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12873:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12874:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12875:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12876:        ZEND_VM_NEXT_OPCODE();
        !          12877: }
        !          12878: 
        !          12879: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12880: {
        !          12881:        zend_op *opline = EX(opline);
        !          12882:        zend_free_op free_op1, free_op2;
        !          12883: 
        !          12884:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          12885:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12886:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12887:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12888:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12889:        ZEND_VM_NEXT_OPCODE();
        !          12890: }
        !          12891: 
        !          12892: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12893: {
        !          12894:        zend_op *opline = EX(opline);
        !          12895:        zend_free_op free_op1, free_op2;
        !          12896: 
        !          12897:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          12898:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12899:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12900:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12901:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12902:        ZEND_VM_NEXT_OPCODE();
        !          12903: }
        !          12904: 
        !          12905: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12906: {
        !          12907:        zend_op *opline = EX(opline);
        !          12908:        zend_free_op free_op1, free_op2;
        !          12909:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          12910: 
        !          12911:        is_identical_function(result,
        !          12912:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12913:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12914:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          12915:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12916:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12917:        ZEND_VM_NEXT_OPCODE();
        !          12918: }
        !          12919: 
        !          12920: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12921: {
        !          12922:        zend_op *opline = EX(opline);
        !          12923:        zend_free_op free_op1, free_op2;
        !          12924:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          12925: 
        !          12926:        compare_function(result,
        !          12927:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12928:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12929:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          12930:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12931:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12932:        ZEND_VM_NEXT_OPCODE();
        !          12933: }
        !          12934: 
        !          12935: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12936: {
        !          12937:        zend_op *opline = EX(opline);
        !          12938:        zend_free_op free_op1, free_op2;
        !          12939:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          12940: 
        !          12941:        compare_function(result,
        !          12942:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12943:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12944:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          12945:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12946:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12947:        ZEND_VM_NEXT_OPCODE();
        !          12948: }
        !          12949: 
        !          12950: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12951: {
        !          12952:        zend_op *opline = EX(opline);
        !          12953:        zend_free_op free_op1, free_op2;
        !          12954:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          12955: 
        !          12956:        compare_function(result,
        !          12957:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12958:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12959:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          12960:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12961:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12962:        ZEND_VM_NEXT_OPCODE();
        !          12963: }
        !          12964: 
        !          12965: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12966: {
        !          12967:        zend_op *opline = EX(opline);
        !          12968:        zend_free_op free_op1, free_op2;
        !          12969:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          12970: 
        !          12971:        compare_function(result,
        !          12972:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12973:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12974:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          12975:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12976:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12977:        ZEND_VM_NEXT_OPCODE();
        !          12978: }
        !          12979: 
        !          12980: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12981: {
        !          12982:        zend_op *opline = EX(opline);
        !          12983:        zend_free_op free_op1, free_op2;
        !          12984: 
        !          12985:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          12986:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          12987:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          12988:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          12989:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          12990:        ZEND_VM_NEXT_OPCODE();
        !          12991: }
        !          12992: 
        !          12993: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          12994: {
        !          12995:        zend_op *opline = EX(opline);
        !          12996:        zend_free_op free_op1, free_op2;
        !          12997: 
        !          12998:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          12999:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          13000:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          13001:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13002:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13003:        ZEND_VM_NEXT_OPCODE();
        !          13004: }
        !          13005: 
        !          13006: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13007: {
        !          13008:        zend_op *opline = EX(opline);
        !          13009:        zend_free_op free_op1, free_op2;
        !          13010: 
        !          13011:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          13012:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          13013:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          13014:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13015:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13016:        ZEND_VM_NEXT_OPCODE();
        !          13017: }
        !          13018: 
        !          13019: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13020: {
        !          13021:        zend_op *opline = EX(opline);
        !          13022:        zend_free_op free_op1, free_op2;
        !          13023: 
        !          13024:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          13025:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          13026:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          13027:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13028:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13029:        ZEND_VM_NEXT_OPCODE();
        !          13030: }
        !          13031: 
        !          13032: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_VAR(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          13033: {
        !          13034:        zend_op *opline = EX(opline);
        !          13035:        zend_op *op_data = opline+1;
        !          13036:        zend_free_op free_op1, free_op2, free_op_data1;
        !          13037:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13038:        zval *object;
        !          13039:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13040:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          13041:        znode *result = &opline->result;
        !          13042:        int have_get_ptr = 0;
        !          13043: 
        !          13044:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          13045:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          13046:        }
        !          13047: 
        !          13048:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          13049:        make_real_object(object_ptr TSRMLS_CC);
        !          13050:        object = *object_ptr;
        !          13051: 
        !          13052:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          13053:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          13054:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13055:                FREE_OP(free_op_data1);
        !          13056: 
        !          13057:                if (!RETURN_VALUE_UNUSED(result)) {
        !          13058:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          13059:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          13060:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          13061:                }
        !          13062:        } else {
        !          13063:                /* here we are sure we are dealing with an object */
        !          13064:                if (0) {
        !          13065:                        MAKE_REAL_ZVAL_PTR(property);
        !          13066:                }
        !          13067: 
        !          13068:                /* here property is a string */
        !          13069:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          13070:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          13071:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          13072:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          13073:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          13074: 
        !          13075:                                have_get_ptr = 1;
        !          13076:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          13077:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          13078:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          13079:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          13080:                                        PZVAL_LOCK(*zptr);
        !          13081:                                }
        !          13082:                        }
        !          13083:                }
        !          13084: 
        !          13085:                if (!have_get_ptr) {
        !          13086:                        zval *z = NULL;
        !          13087: 
        !          13088:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          13089:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          13090:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          13091:                                }
        !          13092:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          13093:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          13094:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          13095:                                }
        !          13096:                        }
        !          13097:                        if (z) {
        !          13098:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          13099:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          13100: 
        !          13101:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          13102:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          13103:                                                zval_dtor(z);
        !          13104:                                                FREE_ZVAL(z);
        !          13105:                                        }
        !          13106:                                        z = value;
        !          13107:                                }
        !          13108:                                Z_ADDREF_P(z);
        !          13109:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          13110:                                binary_op(z, z, value TSRMLS_CC);
        !          13111:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          13112:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          13113:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          13114:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          13115:                                }
        !          13116:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          13117:                                        EX_T(result->u.var).var.ptr = z;
        !          13118:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          13119:                                        PZVAL_LOCK(z);
        !          13120:                                }
        !          13121:                                zval_ptr_dtor(&z);
        !          13122:                        } else {
        !          13123:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          13124:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          13125:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          13126:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          13127:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          13128:                                }
        !          13129:                        }
        !          13130:                }
        !          13131: 
        !          13132:                if (0) {
        !          13133:                        zval_ptr_dtor(&property);
        !          13134:                } else {
        !          13135:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13136:                }
        !          13137:                FREE_OP(free_op_data1);
        !          13138:        }
        !          13139: 
        !          13140:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13141:        /* assign_obj has two opcodes! */
        !          13142:        ZEND_VM_INC_OPCODE();
        !          13143:        ZEND_VM_NEXT_OPCODE();
        !          13144: }
        !          13145: 
        !          13146: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_VAR_VAR(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          13147: {
        !          13148:        zend_op *opline = EX(opline);
        !          13149:        zend_free_op free_op1, free_op2, free_op_data2, free_op_data1;
        !          13150:        zval **var_ptr;
        !          13151:        zval *value;
        !          13152: 
        !          13153:        switch (opline->extended_value) {
        !          13154:                case ZEND_ASSIGN_OBJ:
        !          13155:                        return zend_binary_assign_op_obj_helper_SPEC_VAR_VAR(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13156:                        break;
        !          13157:                case ZEND_ASSIGN_DIM: {
        !          13158:                                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13159: 
        !          13160:                                if (IS_VAR == IS_VAR && !container) {
        !          13161:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13162:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          13163:                                        if (IS_VAR == IS_VAR && !(free_op1.var != NULL)) {
        !          13164:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          13165:                                        }
        !          13166:                                        return zend_binary_assign_op_obj_helper_SPEC_VAR_VAR(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13167:                                } else {
        !          13168:                                        zend_op *op_data = opline+1;
        !          13169:                                        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13170: 
        !          13171:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          13172:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          13173:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          13174:                                        ZEND_VM_INC_OPCODE();
        !          13175:                                }
        !          13176:                        }
        !          13177:                        break;
        !          13178:                default:
        !          13179:                        value = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13180:                        var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13181:                        /* do nothing */
        !          13182:                        break;
        !          13183:        }
        !          13184: 
        !          13185:        if (!var_ptr) {
        !          13186:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          13187:        }
        !          13188: 
        !          13189:        if (*var_ptr == EG(error_zval_ptr)) {
        !          13190:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13191:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          13192:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          13193:                }
        !          13194:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13195:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13196:                ZEND_VM_NEXT_OPCODE();
        !          13197:        }
        !          13198: 
        !          13199:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          13200: 
        !          13201:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          13202:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          13203:                /* proxy object */
        !          13204:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          13205:                Z_ADDREF_P(objval);
        !          13206:                binary_op(objval, objval, value TSRMLS_CC);
        !          13207:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          13208:                zval_ptr_dtor(&objval);
        !          13209:        } else {
        !          13210:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          13211:        }
        !          13212: 
        !          13213:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13214:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          13215:                PZVAL_LOCK(*var_ptr);
        !          13216:        }
        !          13217:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13218: 
        !          13219:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          13220:                FREE_OP(free_op_data1);
        !          13221:                FREE_OP_VAR_PTR(free_op_data2);
        !          13222:        }
        !          13223:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13224:        ZEND_VM_NEXT_OPCODE();
        !          13225: }
        !          13226: 
        !          13227: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13228: {
        !          13229:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13230: }
        !          13231: 
        !          13232: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13233: {
        !          13234:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13235: }
        !          13236: 
        !          13237: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13238: {
        !          13239:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13240: }
        !          13241: 
        !          13242: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13243: {
        !          13244:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13245: }
        !          13246: 
        !          13247: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13248: {
        !          13249:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13250: }
        !          13251: 
        !          13252: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13253: {
        !          13254:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13255: }
        !          13256: 
        !          13257: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13258: {
        !          13259:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13260: }
        !          13261: 
        !          13262: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13263: {
        !          13264:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13265: }
        !          13266: 
        !          13267: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13268: {
        !          13269:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13270: }
        !          13271: 
        !          13272: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13273: {
        !          13274:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13275: }
        !          13276: 
        !          13277: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13278: {
        !          13279:        return zend_binary_assign_op_helper_SPEC_VAR_VAR(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13280: }
        !          13281: 
        !          13282: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_VAR(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          13283: {
        !          13284:        zend_op *opline = EX(opline);
        !          13285:        zend_free_op free_op1, free_op2;
        !          13286:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13287:        zval *object;
        !          13288:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13289:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          13290:        int have_get_ptr = 0;
        !          13291: 
        !          13292:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          13293:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          13294:        }
        !          13295: 
        !          13296:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          13297:        object = *object_ptr;
        !          13298: 
        !          13299:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          13300:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          13301:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13302:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13303:                        *retval = EG(uninitialized_zval_ptr);
        !          13304:                        PZVAL_LOCK(*retval);
        !          13305:                }
        !          13306:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13307:                ZEND_VM_NEXT_OPCODE();
        !          13308:        }
        !          13309: 
        !          13310:        /* here we are sure we are dealing with an object */
        !          13311: 
        !          13312:        if (0) {
        !          13313:                MAKE_REAL_ZVAL_PTR(property);
        !          13314:        }
        !          13315: 
        !          13316:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          13317:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          13318:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          13319:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          13320: 
        !          13321:                        have_get_ptr = 1;
        !          13322:                        incdec_op(*zptr);
        !          13323:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13324:                                *retval = *zptr;
        !          13325:                                PZVAL_LOCK(*retval);
        !          13326:                        }
        !          13327:                }
        !          13328:        }
        !          13329: 
        !          13330:        if (!have_get_ptr) {
        !          13331:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          13332:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          13333: 
        !          13334:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          13335:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          13336: 
        !          13337:                                if (Z_REFCOUNT_P(z) == 0) {
        !          13338:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          13339:                                        zval_dtor(z);
        !          13340:                                        FREE_ZVAL(z);
        !          13341:                                }
        !          13342:                                z = value;
        !          13343:                        }
        !          13344:                        Z_ADDREF_P(z);
        !          13345:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          13346:                        incdec_op(z);
        !          13347:                        *retval = z;
        !          13348:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          13349:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          13350:                        zval_ptr_dtor(&z);
        !          13351:                } else {
        !          13352:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          13353:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13354:                                *retval = EG(uninitialized_zval_ptr);
        !          13355:                                PZVAL_LOCK(*retval);
        !          13356:                        }
        !          13357:                }
        !          13358:        }
        !          13359: 
        !          13360:        if (0) {
        !          13361:                zval_ptr_dtor(&property);
        !          13362:        } else {
        !          13363:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13364:        }
        !          13365:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13366:        ZEND_VM_NEXT_OPCODE();
        !          13367: }
        !          13368: 
        !          13369: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13370: {
        !          13371:        return zend_pre_incdec_property_helper_SPEC_VAR_VAR(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13372: }
        !          13373: 
        !          13374: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13375: {
        !          13376:        return zend_pre_incdec_property_helper_SPEC_VAR_VAR(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13377: }
        !          13378: 
        !          13379: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_VAR(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          13380: {
        !          13381:        zend_op *opline = EX(opline);
        !          13382:        zend_free_op free_op1, free_op2;
        !          13383:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13384:        zval *object;
        !          13385:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13386:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          13387:        int have_get_ptr = 0;
        !          13388: 
        !          13389:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          13390:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          13391:        }
        !          13392: 
        !          13393:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          13394:        object = *object_ptr;
        !          13395: 
        !          13396:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          13397:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          13398:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13399:                *retval = *EG(uninitialized_zval_ptr);
        !          13400:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13401:                ZEND_VM_NEXT_OPCODE();
        !          13402:        }
        !          13403: 
        !          13404:        /* here we are sure we are dealing with an object */
        !          13405: 
        !          13406:        if (0) {
        !          13407:                MAKE_REAL_ZVAL_PTR(property);
        !          13408:        }
        !          13409: 
        !          13410:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          13411:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          13412:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          13413:                        have_get_ptr = 1;
        !          13414:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          13415: 
        !          13416:                        *retval = **zptr;
        !          13417:                        zendi_zval_copy_ctor(*retval);
        !          13418: 
        !          13419:                        incdec_op(*zptr);
        !          13420: 
        !          13421:                }
        !          13422:        }
        !          13423: 
        !          13424:        if (!have_get_ptr) {
        !          13425:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          13426:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          13427:                        zval *z_copy;
        !          13428: 
        !          13429:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          13430:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          13431: 
        !          13432:                                if (Z_REFCOUNT_P(z) == 0) {
        !          13433:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          13434:                                        zval_dtor(z);
        !          13435:                                        FREE_ZVAL(z);
        !          13436:                                }
        !          13437:                                z = value;
        !          13438:                        }
        !          13439:                        *retval = *z;
        !          13440:                        zendi_zval_copy_ctor(*retval);
        !          13441:                        ALLOC_ZVAL(z_copy);
        !          13442:                        *z_copy = *z;
        !          13443:                        zendi_zval_copy_ctor(*z_copy);
        !          13444:                        INIT_PZVAL(z_copy);
        !          13445:                        incdec_op(z_copy);
        !          13446:                        Z_ADDREF_P(z);
        !          13447:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          13448:                        zval_ptr_dtor(&z_copy);
        !          13449:                        zval_ptr_dtor(&z);
        !          13450:                } else {
        !          13451:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          13452:                        *retval = *EG(uninitialized_zval_ptr);
        !          13453:                }
        !          13454:        }
        !          13455: 
        !          13456:        if (0) {
        !          13457:                zval_ptr_dtor(&property);
        !          13458:        } else {
        !          13459:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13460:        }
        !          13461:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13462:        ZEND_VM_NEXT_OPCODE();
        !          13463: }
        !          13464: 
        !          13465: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13466: {
        !          13467:        return zend_post_incdec_property_helper_SPEC_VAR_VAR(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13468: }
        !          13469: 
        !          13470: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13471: {
        !          13472:        return zend_post_incdec_property_helper_SPEC_VAR_VAR(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13473: }
        !          13474: 
        !          13475: static int ZEND_FASTCALL  ZEND_FETCH_DIM_R_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13476: {
        !          13477:        zend_op *opline = EX(opline);
        !          13478:        zend_free_op free_op1, free_op2;
        !          13479:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13480:        zval **container;
        !          13481: 
        !          13482:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK &&
        !          13483:            IS_VAR != IS_CV &&
        !          13484:            EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          13485:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          13486:        }
        !          13487:        container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13488:        if (IS_VAR == IS_VAR && !container) {
        !          13489:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13490:        }
        !          13491:        zend_fetch_dimension_address_read(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          13492:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13493:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13494:        ZEND_VM_NEXT_OPCODE();
        !          13495: }
        !          13496: 
        !          13497: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13498: {
        !          13499:        zend_op *opline = EX(opline);
        !          13500:        zend_free_op free_op1, free_op2;
        !          13501:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13502:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13503: 
        !          13504:        if (IS_VAR == IS_VAR && !container) {
        !          13505:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13506:        }
        !          13507:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          13508:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13509:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          13510:            READY_TO_DESTROY(free_op1.var)) {
        !          13511:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          13512:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          13513:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          13514:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13515:                }
        !          13516:        }
        !          13517:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13518: 
        !          13519:        /* We are going to assign the result by reference */
        !          13520:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          13521:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13522:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13523:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13524:        }
        !          13525: 
        !          13526:        ZEND_VM_NEXT_OPCODE();
        !          13527: }
        !          13528: 
        !          13529: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13530: {
        !          13531:        zend_op *opline = EX(opline);
        !          13532:        zend_free_op free_op1, free_op2;
        !          13533:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13534:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13535: 
        !          13536:        if (IS_VAR == IS_VAR && !container) {
        !          13537:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13538:        }
        !          13539:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          13540:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13541:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          13542:            READY_TO_DESTROY(free_op1.var)) {
        !          13543:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          13544:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          13545:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          13546:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13547:                }
        !          13548:        }
        !          13549:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13550:        ZEND_VM_NEXT_OPCODE();
        !          13551: }
        !          13552: 
        !          13553: static int ZEND_FASTCALL  ZEND_FETCH_DIM_IS_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13554: {
        !          13555:        zend_op *opline = EX(opline);
        !          13556:        zend_free_op free_op1, free_op2;
        !          13557:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13558:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13559: 
        !          13560:        if (IS_VAR == IS_VAR && !container) {
        !          13561:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13562:        }
        !          13563:        zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_IS TSRMLS_CC);
        !          13564:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13565:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13566:        ZEND_VM_NEXT_OPCODE();
        !          13567: }
        !          13568: 
        !          13569: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13570: {
        !          13571:        zend_op *opline = EX(opline);
        !          13572:        zend_free_op free_op1, free_op2;
        !          13573:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13574:        zval **container;
        !          13575: 
        !          13576:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          13577:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13578:                if (IS_VAR == IS_VAR && !container) {
        !          13579:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13580:                }
        !          13581:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          13582:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          13583:                    READY_TO_DESTROY(free_op1.var)) {
        !          13584:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          13585:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          13586:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          13587:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13588:                        }
        !          13589:                }
        !          13590:        } else {
        !          13591:                if (IS_VAR == IS_UNUSED) {
        !          13592:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          13593:                }
        !          13594:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13595:                if (IS_VAR == IS_VAR && !container) {
        !          13596:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13597:                }
        !          13598:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          13599:        }
        !          13600:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13601:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13602:        ZEND_VM_NEXT_OPCODE();
        !          13603: }
        !          13604: 
        !          13605: static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13606: {
        !          13607:        zend_op *opline = EX(opline);
        !          13608:        zend_free_op free_op1, free_op2;
        !          13609:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13610:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13611: 
        !          13612:        /* Not needed in DIM_UNSET
        !          13613:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
        !          13614:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          13615:        }
        !          13616:        */
        !          13617:        if (IS_VAR == IS_CV) {
        !          13618:                if (container != &EG(uninitialized_zval_ptr)) {
        !          13619:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          13620:                }
        !          13621:        }
        !          13622:        if (IS_VAR == IS_VAR && !container) {
        !          13623:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13624:        }
        !          13625:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC);
        !          13626:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13627:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          13628:            READY_TO_DESTROY(free_op1.var)) {
        !          13629:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          13630:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          13631:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          13632:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13633:                }
        !          13634:        }
        !          13635:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13636:        if (EX_T(opline->result.u.var).var.ptr_ptr == NULL) {
        !          13637:                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          13638:        } else {
        !          13639:                zend_free_op free_res;
        !          13640: 
        !          13641:                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          13642:                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          13643:                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13644:                }
        !          13645:                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          13646:                FREE_OP_VAR_PTR(free_res);
        !          13647:        }
        !          13648:        ZEND_VM_NEXT_OPCODE();
        !          13649: }
        !          13650: 
        !          13651: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_VAR_VAR(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          13652: {
        !          13653:        zend_op *opline = EX(opline);
        !          13654:        zend_free_op free_op1;
        !          13655:        zval *container = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13656:        zend_free_op free_op2;
        !          13657:        zval *offset  = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13658: 
        !          13659:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          13660:                if (type != BP_VAR_IS) {
        !          13661:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          13662:                }
        !          13663:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13664:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          13665:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          13666:                }
        !          13667:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13668:        } else {
        !          13669:                zval *retval;
        !          13670: 
        !          13671:                if (0) {
        !          13672:                        MAKE_REAL_ZVAL_PTR(offset);
        !          13673:                }
        !          13674: 
        !          13675:                /* here we are sure we are dealing with an object */
        !          13676:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          13677: 
        !          13678:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          13679:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          13680:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          13681:                                zval_dtor(retval);
        !          13682:                                FREE_ZVAL(retval);
        !          13683:                        }
        !          13684:                } else {
        !          13685:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          13686:                        PZVAL_LOCK(retval);
        !          13687:                }
        !          13688: 
        !          13689:                if (0) {
        !          13690:                        zval_ptr_dtor(&offset);
        !          13691:                } else {
        !          13692:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13693:                }
        !          13694:        }
        !          13695: 
        !          13696:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13697:        ZEND_VM_NEXT_OPCODE();
        !          13698: }
        !          13699: 
        !          13700: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13701: {
        !          13702:        return zend_fetch_property_address_read_helper_SPEC_VAR_VAR(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13703: }
        !          13704: 
        !          13705: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13706: {
        !          13707:        zend_op *opline = EX(opline);
        !          13708:        zend_free_op free_op1, free_op2;
        !          13709:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13710:        zval **container;
        !          13711: 
        !          13712:        if (IS_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          13713:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          13714:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          13715:        }
        !          13716: 
        !          13717:        if (0) {
        !          13718:                MAKE_REAL_ZVAL_PTR(property);
        !          13719:        }
        !          13720:        container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13721:        if (IS_VAR == IS_VAR && !container) {
        !          13722:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          13723:        }
        !          13724:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          13725:        if (0) {
        !          13726:                zval_ptr_dtor(&property);
        !          13727:        } else {
        !          13728:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13729:        }
        !          13730:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          13731:            READY_TO_DESTROY(free_op1.var)) {
        !          13732:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          13733:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          13734:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          13735:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13736:                }
        !          13737:        }
        !          13738:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13739: 
        !          13740:        /* We are going to assign the result by reference */
        !          13741:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          13742:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13743:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13744:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13745:        }
        !          13746: 
        !          13747:        ZEND_VM_NEXT_OPCODE();
        !          13748: }
        !          13749: 
        !          13750: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13751: {
        !          13752:        zend_op *opline = EX(opline);
        !          13753:        zend_free_op free_op1, free_op2;
        !          13754:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13755:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13756: 
        !          13757:        if (0) {
        !          13758:                MAKE_REAL_ZVAL_PTR(property);
        !          13759:        }
        !          13760:        if (IS_VAR == IS_VAR && !container) {
        !          13761:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          13762:        }
        !          13763:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          13764:        if (0) {
        !          13765:                zval_ptr_dtor(&property);
        !          13766:        } else {
        !          13767:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13768:        }
        !          13769:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          13770:            READY_TO_DESTROY(free_op1.var)) {
        !          13771:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          13772:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          13773:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          13774:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13775:                }
        !          13776:        }
        !          13777:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13778:        ZEND_VM_NEXT_OPCODE();
        !          13779: }
        !          13780: 
        !          13781: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13782: {
        !          13783:        return zend_fetch_property_address_read_helper_SPEC_VAR_VAR(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13784: }
        !          13785: 
        !          13786: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13787: {
        !          13788:        zend_op *opline = EX(opline);
        !          13789: 
        !          13790:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          13791:                /* Behave like FETCH_OBJ_W */
        !          13792:                zend_free_op free_op1, free_op2;
        !          13793:                zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13794:                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13795: 
        !          13796:                if (0) {
        !          13797:                        MAKE_REAL_ZVAL_PTR(property);
        !          13798:                }
        !          13799:                if (IS_VAR == IS_VAR && !container) {
        !          13800:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          13801:                }
        !          13802:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          13803:                if (0) {
        !          13804:                        zval_ptr_dtor(&property);
        !          13805:                } else {
        !          13806:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13807:                }
        !          13808:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          13809:                    READY_TO_DESTROY(free_op1.var)) {
        !          13810:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          13811:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          13812:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          13813:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13814:                        }
        !          13815:                }
        !          13816:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13817:                ZEND_VM_NEXT_OPCODE();
        !          13818:        } else {
        !          13819:                return zend_fetch_property_address_read_helper_SPEC_VAR_VAR(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          13820:        }
        !          13821: }
        !          13822: 
        !          13823: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13824: {
        !          13825:        zend_op *opline = EX(opline);
        !          13826:        zend_free_op free_op1, free_op2, free_res;
        !          13827:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13828:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13829: 
        !          13830:        if (IS_VAR == IS_CV) {
        !          13831:                if (container != &EG(uninitialized_zval_ptr)) {
        !          13832:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          13833:                }
        !          13834:        }
        !          13835:        if (0) {
        !          13836:                MAKE_REAL_ZVAL_PTR(property);
        !          13837:        }
        !          13838:        if (IS_VAR == IS_VAR && !container) {
        !          13839:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          13840:        }
        !          13841:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          13842:        if (0) {
        !          13843:                zval_ptr_dtor(&property);
        !          13844:        } else {
        !          13845:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13846:        }
        !          13847:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          13848:            READY_TO_DESTROY(free_op1.var)) {
        !          13849:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          13850:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          13851:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          13852:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13853:                }
        !          13854:        }
        !          13855:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13856: 
        !          13857:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          13858:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          13859:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          13860:        }
        !          13861:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          13862:        FREE_OP_VAR_PTR(free_res);
        !          13863:        ZEND_VM_NEXT_OPCODE();
        !          13864: }
        !          13865: 
        !          13866: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13867: {
        !          13868:        zend_op *opline = EX(opline);
        !          13869:        zend_op *op_data = opline+1;
        !          13870:        zend_free_op free_op1, free_op2;
        !          13871:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13872:        zval *property_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13873: 
        !          13874:        if (0) {
        !          13875:                MAKE_REAL_ZVAL_PTR(property_name);
        !          13876:        }
        !          13877:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          13878:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13879:        }
        !          13880:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          13881:        if (0) {
        !          13882:                zval_ptr_dtor(&property_name);
        !          13883:        } else {
        !          13884:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13885:        }
        !          13886:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13887:        /* assign_obj has two opcodes! */
        !          13888:        ZEND_VM_INC_OPCODE();
        !          13889:        ZEND_VM_NEXT_OPCODE();
        !          13890: }
        !          13891: 
        !          13892: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13893: {
        !          13894:        zend_op *opline = EX(opline);
        !          13895:        zend_op *op_data = opline+1;
        !          13896:        zend_free_op free_op1;
        !          13897:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13898: 
        !          13899:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          13900:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          13901:        }
        !          13902:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          13903:                zend_free_op free_op2;
        !          13904:                zval *property_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13905: 
        !          13906:                if (0) {
        !          13907:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          13908:                }
        !          13909:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          13910:                if (0) {
        !          13911:                        zval_ptr_dtor(&property_name);
        !          13912:                } else {
        !          13913:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13914:                }
        !          13915:        } else {
        !          13916:                zend_free_op free_op2, free_op_data1, free_op_data2;
        !          13917:                zval *value;
        !          13918:                zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13919:                zval **variable_ptr_ptr;
        !          13920: 
        !          13921:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 0, BP_VAR_W TSRMLS_CC);
        !          13922:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13923: 
        !          13924:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          13925:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          13926:                if (!variable_ptr_ptr) {
        !          13927:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          13928:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13929:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          13930:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          13931:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          13932:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          13933:                                }
        !          13934:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13935:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          13936:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          13937:                        }
        !          13938:                } else {
        !          13939:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          13940:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13941:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          13942:                                PZVAL_LOCK(value);
        !          13943:                        }
        !          13944:                }
        !          13945:                FREE_OP_VAR_PTR(free_op_data2);
        !          13946:                FREE_OP_IF_VAR(free_op_data1);
        !          13947:        }
        !          13948:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13949:        /* assign_dim has two opcodes! */
        !          13950:        ZEND_VM_INC_OPCODE();
        !          13951:        ZEND_VM_NEXT_OPCODE();
        !          13952: }
        !          13953: 
        !          13954: static int ZEND_FASTCALL  ZEND_ASSIGN_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13955: {
        !          13956:        zend_op *opline = EX(opline);
        !          13957:        zend_free_op free_op1, free_op2;
        !          13958:        zval *value = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13959:        zval **variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          13960: 
        !          13961:        if (IS_VAR == IS_VAR && !variable_ptr_ptr) {
        !          13962:                if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_VAR TSRMLS_CC)) {
        !          13963:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13964:                                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          13965:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          13966:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          13967:                                ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
        !          13968:                        }
        !          13969:                } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13970:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          13971:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          13972:                }
        !          13973:        } else {
        !          13974:                value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
        !          13975:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          13976:                        AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          13977:                        PZVAL_LOCK(value);
        !          13978:                }
        !          13979:        }
        !          13980: 
        !          13981:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          13982: 
        !          13983:        /* zend_assign_to_variable() always takes care of op2, never free it! */
        !          13984:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          13985: 
        !          13986:        ZEND_VM_NEXT_OPCODE();
        !          13987: }
        !          13988: 
        !          13989: static int ZEND_FASTCALL  ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          13990: {
        !          13991:        zend_op *opline = EX(opline);
        !          13992:        zend_free_op free_op1, free_op2;
        !          13993:        zval **variable_ptr_ptr;
        !          13994:        zval **value_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          13995: 
        !          13996:        if (IS_VAR == IS_VAR &&
        !          13997:            value_ptr_ptr &&
        !          13998:            !Z_ISREF_PP(value_ptr_ptr) &&
        !          13999:            opline->extended_value == ZEND_RETURNS_FUNCTION &&
        !          14000:            !EX_T(opline->op2.u.var).var.fcall_returned_reference) {
        !          14001:                if (free_op2.var == NULL) {
        !          14002:                        PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
        !          14003:                }
        !          14004:                zend_error(E_STRICT, "Only variables should be assigned by reference");
        !          14005:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          14006:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14007:                        ZEND_VM_NEXT_OPCODE();
        !          14008:                }
        !          14009:                return ZEND_ASSIGN_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14010:        } else if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
        !          14011:                PZVAL_LOCK(*value_ptr_ptr);
        !          14012:        }
        !          14013:        if (IS_VAR == IS_VAR && EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
        !          14014:                zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
        !          14015:        }
        !          14016: 
        !          14017:        variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14018:        if ((IS_VAR == IS_VAR && !value_ptr_ptr) ||
        !          14019:            (IS_VAR == IS_VAR && !variable_ptr_ptr)) {
        !          14020:                zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets nor overloaded objects");
        !          14021:        }
        !          14022:        zend_assign_to_variable_reference(variable_ptr_ptr, value_ptr_ptr TSRMLS_CC);
        !          14023: 
        !          14024:        if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
        !          14025:                Z_DELREF_PP(variable_ptr_ptr);
        !          14026:        }
        !          14027: 
        !          14028:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          14029:                AI_SET_PTR(EX_T(opline->result.u.var).var, *variable_ptr_ptr);
        !          14030:                PZVAL_LOCK(*variable_ptr_ptr);
        !          14031:        }
        !          14032: 
        !          14033:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14034:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14035: 
        !          14036:        ZEND_VM_NEXT_OPCODE();
        !          14037: }
        !          14038: 
        !          14039: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14040: {
        !          14041:        zend_op *opline = EX(opline);
        !          14042:        zval *function_name;
        !          14043:        char *function_name_strval;
        !          14044:        int function_name_strlen;
        !          14045:        zend_free_op free_op1, free_op2;
        !          14046: 
        !          14047:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          14048: 
        !          14049:        function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          14050: 
        !          14051:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          14052:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          14053:        }
        !          14054: 
        !          14055:        function_name_strval = Z_STRVAL_P(function_name);
        !          14056:        function_name_strlen = Z_STRLEN_P(function_name);
        !          14057: 
        !          14058:        EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14059: 
        !          14060:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          14061:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          14062:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          14063:                }
        !          14064: 
        !          14065:                /* First, locate the function. */
        !          14066:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          14067:                if (!EX(fbc)) {
        !          14068:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          14069:                }
        !          14070: 
        !          14071:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          14072:        } else {
        !          14073:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          14074:        }
        !          14075: 
        !          14076:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          14077:                EX(object) = NULL;
        !          14078:        } else {
        !          14079:                if (!PZVAL_IS_REF(EX(object))) {
        !          14080:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          14081:                } else {
        !          14082:                        zval *this_ptr;
        !          14083:                        ALLOC_ZVAL(this_ptr);
        !          14084:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          14085:                        zval_copy_ctor(this_ptr);
        !          14086:                        EX(object) = this_ptr;
        !          14087:                }
        !          14088:        }
        !          14089: 
        !          14090:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14091:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14092: 
        !          14093:        ZEND_VM_NEXT_OPCODE();
        !          14094: }
        !          14095: 
        !          14096: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14097: {
        !          14098:        zend_op *opline = EX(opline);
        !          14099:        zval *function_name;
        !          14100:        zend_class_entry *ce;
        !          14101: 
        !          14102:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          14103: 
        !          14104:        if (IS_VAR == IS_CONST) {
        !          14105:                /* no function found. try a static method in class */
        !          14106:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          14107:                if (!ce) {
        !          14108:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          14109:                }
        !          14110:                EX(called_scope) = ce;
        !          14111:        } else {
        !          14112:                ce = EX_T(opline->op1.u.var).class_entry;
        !          14113: 
        !          14114:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          14115:                        EX(called_scope) = EG(called_scope);
        !          14116:                } else {
        !          14117:                        EX(called_scope) = ce;
        !          14118:                }
        !          14119:        }
        !          14120:        if(IS_VAR != IS_UNUSED) {
        !          14121:                char *function_name_strval = NULL;
        !          14122:                int function_name_strlen = 0;
        !          14123:                zend_free_op free_op2;
        !          14124: 
        !          14125:                if (IS_VAR == IS_CONST) {
        !          14126:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          14127:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          14128:                } else {
        !          14129:                        function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          14130: 
        !          14131:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          14132:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          14133:                        } else {
        !          14134:                                function_name_strval = Z_STRVAL_P(function_name);
        !          14135:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          14136:                        }
        !          14137:                }
        !          14138: 
        !          14139:                if (function_name_strval) {
        !          14140:                        if (ce->get_static_method) {
        !          14141:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          14142:                        } else {
        !          14143:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          14144:                        }
        !          14145:                        if (!EX(fbc)) {
        !          14146:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          14147:                        }
        !          14148:                }
        !          14149: 
        !          14150:                if (IS_VAR != IS_CONST) {
        !          14151:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14152:                }
        !          14153:        } else {
        !          14154:                if(!ce->constructor) {
        !          14155:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          14156:                }
        !          14157:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          14158:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          14159:                }
        !          14160:                EX(fbc) = ce->constructor;
        !          14161:        }
        !          14162: 
        !          14163:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          14164:                EX(object) = NULL;
        !          14165:        } else {
        !          14166:                if (EG(This) &&
        !          14167:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          14168:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          14169:                    /* We are calling method of the other (incompatible) class,
        !          14170:                       but passing $this. This is done for compatibility with php-4. */
        !          14171:                        int severity;
        !          14172:                        char *verb;
        !          14173:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          14174:                                severity = E_STRICT;
        !          14175:                                verb = "should not";
        !          14176:                        } else {
        !          14177:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          14178:                                severity = E_ERROR;
        !          14179:                                verb = "cannot";
        !          14180:                        }
        !          14181:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          14182: 
        !          14183:                }
        !          14184:                if ((EX(object) = EG(This))) {
        !          14185:                        Z_ADDREF_P(EX(object));
        !          14186:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          14187:                }
        !          14188:        }
        !          14189: 
        !          14190:        ZEND_VM_NEXT_OPCODE();
        !          14191: }
        !          14192: 
        !          14193: static int ZEND_FASTCALL  ZEND_CASE_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14194: {
        !          14195:        zend_op *opline = EX(opline);
        !          14196:        int switch_expr_is_overloaded=0;
        !          14197:        zend_free_op free_op1, free_op2;
        !          14198: 
        !          14199:        if (IS_VAR==IS_VAR) {
        !          14200:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          14201:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          14202:                } else {
        !          14203:                        switch_expr_is_overloaded = 1;
        !          14204:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          14205:                }
        !          14206:        }
        !          14207:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          14208:                                 _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          14209:                                 _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          14210: 
        !          14211:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14212:        if (switch_expr_is_overloaded) {
        !          14213:                /* We only free op1 if this is a string offset,
        !          14214:                 * Since if it is a TMP_VAR, it'll be reused by
        !          14215:                 * other CASE opcodes (whereas string offsets
        !          14216:                 * are allocated at each get_zval_ptr())
        !          14217:                 */
        !          14218:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14219:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          14220:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          14221:        }
        !          14222:        ZEND_VM_NEXT_OPCODE();
        !          14223: }
        !          14224: 
        !          14225: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14226: {
        !          14227:        zend_op *opline = EX(opline);
        !          14228:        zend_free_op free_op1, free_op2;
        !          14229:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          14230:        zval *expr_ptr;
        !          14231:        zval *offset=_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          14232: 
        !          14233: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          14234:        zval **expr_ptr_ptr = NULL;
        !          14235: 
        !          14236:        if (opline->extended_value) {
        !          14237:                expr_ptr_ptr=_get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14238:                expr_ptr = *expr_ptr_ptr;
        !          14239:        } else {
        !          14240:                expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14241:        }
        !          14242: #else
        !          14243:        expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14244: #endif
        !          14245: 
        !          14246:        if (0) { /* temporary variable */
        !          14247:                zval *new_expr;
        !          14248: 
        !          14249:                ALLOC_ZVAL(new_expr);
        !          14250:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          14251:                expr_ptr = new_expr;
        !          14252:        } else {
        !          14253: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          14254:                if (opline->extended_value) {
        !          14255:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          14256:                        expr_ptr = *expr_ptr_ptr;
        !          14257:                        Z_ADDREF_P(expr_ptr);
        !          14258:                } else
        !          14259: #endif
        !          14260:                if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          14261:                        zval *new_expr;
        !          14262: 
        !          14263:                        ALLOC_ZVAL(new_expr);
        !          14264:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          14265:                        expr_ptr = new_expr;
        !          14266:                        zendi_zval_copy_ctor(*expr_ptr);
        !          14267:                } else {
        !          14268:                        Z_ADDREF_P(expr_ptr);
        !          14269:                }
        !          14270:        }
        !          14271:        if (offset) {
        !          14272:                switch (Z_TYPE_P(offset)) {
        !          14273:                        case IS_DOUBLE:
        !          14274:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          14275:                                break;
        !          14276:                        case IS_LONG:
        !          14277:                        case IS_BOOL:
        !          14278:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          14279:                                break;
        !          14280:                        case IS_STRING:
        !          14281:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          14282:                                break;
        !          14283:                        case IS_NULL:
        !          14284:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          14285:                                break;
        !          14286:                        default:
        !          14287:                                zend_error(E_WARNING, "Illegal offset type");
        !          14288:                                zval_ptr_dtor(&expr_ptr);
        !          14289:                                /* do nothing */
        !          14290:                                break;
        !          14291:                }
        !          14292:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14293:        } else {
        !          14294:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          14295:        }
        !          14296:        if (opline->extended_value) {
        !          14297:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14298:        } else {
        !          14299:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14300:        }
        !          14301:        ZEND_VM_NEXT_OPCODE();
        !          14302: }
        !          14303: 
        !          14304: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14305: {
        !          14306:        zend_op *opline = EX(opline);
        !          14307: 
        !          14308:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          14309:        if (IS_VAR == IS_UNUSED) {
        !          14310:                ZEND_VM_NEXT_OPCODE();
        !          14311: #if 0 || IS_VAR != IS_UNUSED
        !          14312:        } else {
        !          14313:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14314: #endif
        !          14315:        }
        !          14316: }
        !          14317: 
        !          14318: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14319: {
        !          14320:        zend_op *opline = EX(opline);
        !          14321:        zend_free_op free_op1, free_op2;
        !          14322:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14323:        zval *offset;
        !          14324: 
        !          14325:        if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          14326:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          14327:        }
        !          14328:        offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          14329: 
        !          14330:        if (IS_VAR != IS_VAR || container) {
        !          14331:                switch (Z_TYPE_PP(container)) {
        !          14332:                        case IS_ARRAY: {
        !          14333:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          14334: 
        !          14335:                                switch (Z_TYPE_P(offset)) {
        !          14336:                                        case IS_DOUBLE:
        !          14337:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          14338:                                                break;
        !          14339:                                        case IS_RESOURCE:
        !          14340:                                        case IS_BOOL:
        !          14341:                                        case IS_LONG:
        !          14342:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          14343:                                                break;
        !          14344:                                        case IS_STRING:
        !          14345:                                                if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
        !          14346:                                                        Z_ADDREF_P(offset);
        !          14347:                                                }
        !          14348:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          14349:                                            ht == &EG(symbol_table)) {
        !          14350:                                                        zend_execute_data *ex;
        !          14351:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          14352: 
        !          14353:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          14354:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          14355:                                                                        int i;
        !          14356: 
        !          14357:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          14358:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          14359:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          14360:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          14361:                                                                                        ex->CVs[i] = NULL;
        !          14362:                                                                                        break;
        !          14363:                                                                                }
        !          14364:                                                                        }
        !          14365:                                                                }
        !          14366:                                                        }
        !          14367:                                                }
        !          14368:                                                if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
        !          14369:                                                        zval_ptr_dtor(&offset);
        !          14370:                                                }
        !          14371:                                                break;
        !          14372:                                        case IS_NULL:
        !          14373:                                                zend_hash_del(ht, "", sizeof(""));
        !          14374:                                                break;
        !          14375:                                        default:
        !          14376:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          14377:                                                break;
        !          14378:                                }
        !          14379:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14380:                                break;
        !          14381:                        }
        !          14382:                        case IS_OBJECT:
        !          14383:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          14384:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          14385:                                }
        !          14386:                                if (0) {
        !          14387:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          14388:                                }
        !          14389:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          14390:                                if (0) {
        !          14391:                                        zval_ptr_dtor(&offset);
        !          14392:                                } else {
        !          14393:                                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14394:                                }
        !          14395:                                break;
        !          14396:                        case IS_STRING:
        !          14397:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          14398:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          14399:                        default:
        !          14400:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14401:                                break;
        !          14402:                }
        !          14403:        } else {
        !          14404:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14405:        }
        !          14406:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14407: 
        !          14408:        ZEND_VM_NEXT_OPCODE();
        !          14409: }
        !          14410: 
        !          14411: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14412: {
        !          14413:        zend_op *opline = EX(opline);
        !          14414:        zend_free_op free_op1, free_op2;
        !          14415:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14416:        zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          14417: 
        !          14418:        if (IS_VAR != IS_VAR || container) {
        !          14419:                if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          14420:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          14421:                }
        !          14422:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          14423:                        if (0) {
        !          14424:                                MAKE_REAL_ZVAL_PTR(offset);
        !          14425:                        }
        !          14426:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          14427:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          14428:                        } else {
        !          14429:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          14430:                        }
        !          14431:                        if (0) {
        !          14432:                                zval_ptr_dtor(&offset);
        !          14433:                        } else {
        !          14434:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14435:                        }
        !          14436:                } else {
        !          14437:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14438:                }
        !          14439:        } else {
        !          14440:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14441:        }
        !          14442:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14443: 
        !          14444:        ZEND_VM_NEXT_OPCODE();
        !          14445: }
        !          14446: 
        !          14447: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_VAR(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          14448: {
        !          14449:        zend_op *opline = EX(opline);
        !          14450:        zend_free_op free_op1;
        !          14451:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14452:        zval **value = NULL;
        !          14453:        int result = 0;
        !          14454: 
        !          14455:        if (IS_VAR != IS_VAR || container) {
        !          14456:                zend_free_op free_op2;
        !          14457:                zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          14458: 
        !          14459:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          14460:                        HashTable *ht;
        !          14461:                        int isset = 0;
        !          14462: 
        !          14463:                        ht = Z_ARRVAL_PP(container);
        !          14464: 
        !          14465:                        switch (Z_TYPE_P(offset)) {
        !          14466:                                case IS_DOUBLE:
        !          14467:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          14468:                                                isset = 1;
        !          14469:                                        }
        !          14470:                                        break;
        !          14471:                                case IS_RESOURCE:
        !          14472:                                case IS_BOOL:
        !          14473:                                case IS_LONG:
        !          14474:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          14475:                                                isset = 1;
        !          14476:                                        }
        !          14477:                                        break;
        !          14478:                                case IS_STRING:
        !          14479:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          14480:                                                isset = 1;
        !          14481:                                        }
        !          14482:                                        break;
        !          14483:                                case IS_NULL:
        !          14484:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          14485:                                                isset = 1;
        !          14486:                                        }
        !          14487:                                        break;
        !          14488:                                default:
        !          14489:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          14490: 
        !          14491:                                        break;
        !          14492:                        }
        !          14493: 
        !          14494:                        switch (opline->extended_value) {
        !          14495:                                case ZEND_ISSET:
        !          14496:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          14497:                                                result = 0;
        !          14498:                                        } else {
        !          14499:                                                result = isset;
        !          14500:                                        }
        !          14501:                                        break;
        !          14502:                                case ZEND_ISEMPTY:
        !          14503:                                        if (!isset || !i_zend_is_true(*value)) {
        !          14504:                                                result = 0;
        !          14505:                                        } else {
        !          14506:                                                result = 1;
        !          14507:                                        }
        !          14508:                                        break;
        !          14509:                        }
        !          14510:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14511:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          14512:                        if (0) {
        !          14513:                                MAKE_REAL_ZVAL_PTR(offset);
        !          14514:                        }
        !          14515:                        if (prop_dim) {
        !          14516:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          14517:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          14518:                                } else {
        !          14519:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          14520:                                        result = 0;
        !          14521:                                }
        !          14522:                        } else {
        !          14523:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          14524:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          14525:                                } else {
        !          14526:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          14527:                                        result = 0;
        !          14528:                                }
        !          14529:                        }
        !          14530:                        if (0) {
        !          14531:                                zval_ptr_dtor(&offset);
        !          14532:                        } else {
        !          14533:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14534:                        }
        !          14535:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          14536:                        zval tmp;
        !          14537: 
        !          14538:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          14539:                                tmp = *offset;
        !          14540:                                zval_copy_ctor(&tmp);
        !          14541:                                convert_to_long(&tmp);
        !          14542:                                offset = &tmp;
        !          14543:                        }
        !          14544:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          14545:                                switch (opline->extended_value) {
        !          14546:                                        case ZEND_ISSET:
        !          14547:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          14548:                                                        result = 1;
        !          14549:                                                }
        !          14550:                                                break;
        !          14551:                                        case ZEND_ISEMPTY:
        !          14552:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          14553:                                                        result = 1;
        !          14554:                                                }
        !          14555:                                                break;
        !          14556:                                }
        !          14557:                        }
        !          14558:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14559:                } else {
        !          14560:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          14561:                }
        !          14562:        }
        !          14563: 
        !          14564:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          14565: 
        !          14566:        switch (opline->extended_value) {
        !          14567:                case ZEND_ISSET:
        !          14568:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          14569:                        break;
        !          14570:                case ZEND_ISEMPTY:
        !          14571:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          14572:                        break;
        !          14573:        }
        !          14574: 
        !          14575:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14576: 
        !          14577:        ZEND_VM_NEXT_OPCODE();
        !          14578: }
        !          14579: 
        !          14580: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14581: {
        !          14582:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_VAR(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14583: }
        !          14584: 
        !          14585: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14586: {
        !          14587:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_VAR(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14588: }
        !          14589: 
        !          14590: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          14591: {
        !          14592:        zend_op *opline = EX(opline);
        !          14593:        zend_op *op_data = opline+1;
        !          14594:        zend_free_op free_op1, free_op_data1;
        !          14595:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14596:        zval *object;
        !          14597:        zval *property = NULL;
        !          14598:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          14599:        znode *result = &opline->result;
        !          14600:        int have_get_ptr = 0;
        !          14601: 
        !          14602:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          14603:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          14604:        }
        !          14605: 
        !          14606:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          14607:        make_real_object(object_ptr TSRMLS_CC);
        !          14608:        object = *object_ptr;
        !          14609: 
        !          14610:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          14611:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          14612: 
        !          14613:                FREE_OP(free_op_data1);
        !          14614: 
        !          14615:                if (!RETURN_VALUE_UNUSED(result)) {
        !          14616:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          14617:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          14618:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          14619:                }
        !          14620:        } else {
        !          14621:                /* here we are sure we are dealing with an object */
        !          14622:                if (0) {
        !          14623:                        MAKE_REAL_ZVAL_PTR(property);
        !          14624:                }
        !          14625: 
        !          14626:                /* here property is a string */
        !          14627:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          14628:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          14629:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          14630:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          14631:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          14632: 
        !          14633:                                have_get_ptr = 1;
        !          14634:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          14635:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          14636:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          14637:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          14638:                                        PZVAL_LOCK(*zptr);
        !          14639:                                }
        !          14640:                        }
        !          14641:                }
        !          14642: 
        !          14643:                if (!have_get_ptr) {
        !          14644:                        zval *z = NULL;
        !          14645: 
        !          14646:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          14647:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          14648:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          14649:                                }
        !          14650:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          14651:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          14652:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          14653:                                }
        !          14654:                        }
        !          14655:                        if (z) {
        !          14656:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          14657:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          14658: 
        !          14659:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          14660:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          14661:                                                zval_dtor(z);
        !          14662:                                                FREE_ZVAL(z);
        !          14663:                                        }
        !          14664:                                        z = value;
        !          14665:                                }
        !          14666:                                Z_ADDREF_P(z);
        !          14667:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          14668:                                binary_op(z, z, value TSRMLS_CC);
        !          14669:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          14670:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          14671:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          14672:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          14673:                                }
        !          14674:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          14675:                                        EX_T(result->u.var).var.ptr = z;
        !          14676:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          14677:                                        PZVAL_LOCK(z);
        !          14678:                                }
        !          14679:                                zval_ptr_dtor(&z);
        !          14680:                        } else {
        !          14681:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          14682:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          14683:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          14684:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          14685:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          14686:                                }
        !          14687:                        }
        !          14688:                }
        !          14689: 
        !          14690:                if (0) {
        !          14691:                        zval_ptr_dtor(&property);
        !          14692:                } else {
        !          14693: 
        !          14694:                }
        !          14695:                FREE_OP(free_op_data1);
        !          14696:        }
        !          14697: 
        !          14698:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14699:        /* assign_obj has two opcodes! */
        !          14700:        ZEND_VM_INC_OPCODE();
        !          14701:        ZEND_VM_NEXT_OPCODE();
        !          14702: }
        !          14703: 
        !          14704: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_VAR_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          14705: {
        !          14706:        zend_op *opline = EX(opline);
        !          14707:        zend_free_op free_op1, free_op_data2, free_op_data1;
        !          14708:        zval **var_ptr;
        !          14709:        zval *value;
        !          14710: 
        !          14711:        switch (opline->extended_value) {
        !          14712:                case ZEND_ASSIGN_OBJ:
        !          14713:                        return zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14714:                        break;
        !          14715:                case ZEND_ASSIGN_DIM: {
        !          14716:                                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14717: 
        !          14718:                                if (IS_VAR == IS_VAR && !container) {
        !          14719:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          14720:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          14721:                                        if (IS_VAR == IS_VAR && !(free_op1.var != NULL)) {
        !          14722:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          14723:                                        }
        !          14724:                                        return zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14725:                                } else {
        !          14726:                                        zend_op *op_data = opline+1;
        !          14727:                                        zval *dim = NULL;
        !          14728: 
        !          14729:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          14730:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          14731:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          14732:                                        ZEND_VM_INC_OPCODE();
        !          14733:                                }
        !          14734:                        }
        !          14735:                        break;
        !          14736:                default:
        !          14737:                        value = NULL;
        !          14738:                        var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14739:                        /* do nothing */
        !          14740:                        break;
        !          14741:        }
        !          14742: 
        !          14743:        if (!var_ptr) {
        !          14744:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          14745:        }
        !          14746: 
        !          14747:        if (*var_ptr == EG(error_zval_ptr)) {
        !          14748:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          14749:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          14750:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          14751:                }
        !          14752: 
        !          14753:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14754:                ZEND_VM_NEXT_OPCODE();
        !          14755:        }
        !          14756: 
        !          14757:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          14758: 
        !          14759:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          14760:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          14761:                /* proxy object */
        !          14762:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          14763:                Z_ADDREF_P(objval);
        !          14764:                binary_op(objval, objval, value TSRMLS_CC);
        !          14765:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          14766:                zval_ptr_dtor(&objval);
        !          14767:        } else {
        !          14768:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          14769:        }
        !          14770: 
        !          14771:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          14772:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          14773:                PZVAL_LOCK(*var_ptr);
        !          14774:        }
        !          14775: 
        !          14776:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          14777:                FREE_OP(free_op_data1);
        !          14778:                FREE_OP_VAR_PTR(free_op_data2);
        !          14779:        }
        !          14780:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14781:        ZEND_VM_NEXT_OPCODE();
        !          14782: }
        !          14783: 
        !          14784: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14785: {
        !          14786:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14787: }
        !          14788: 
        !          14789: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14790: {
        !          14791:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14792: }
        !          14793: 
        !          14794: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14795: {
        !          14796:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14797: }
        !          14798: 
        !          14799: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14800: {
        !          14801:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14802: }
        !          14803: 
        !          14804: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14805: {
        !          14806:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14807: }
        !          14808: 
        !          14809: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14810: {
        !          14811:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14812: }
        !          14813: 
        !          14814: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14815: {
        !          14816:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14817: }
        !          14818: 
        !          14819: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14820: {
        !          14821:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14822: }
        !          14823: 
        !          14824: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14825: {
        !          14826:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14827: }
        !          14828: 
        !          14829: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14830: {
        !          14831:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14832: }
        !          14833: 
        !          14834: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14835: {
        !          14836:        return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          14837: }
        !          14838: 
        !          14839: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14840: {
        !          14841:        zend_op *opline = EX(opline);
        !          14842:        zend_free_op free_op1;
        !          14843:        zval *dim = NULL;
        !          14844:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14845: 
        !          14846:        if (IS_VAR == IS_VAR && !container) {
        !          14847:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          14848:        }
        !          14849:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          14850: 
        !          14851:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          14852:            READY_TO_DESTROY(free_op1.var)) {
        !          14853:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          14854:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          14855:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          14856:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          14857:                }
        !          14858:        }
        !          14859:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14860: 
        !          14861:        /* We are going to assign the result by reference */
        !          14862:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          14863:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          14864:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          14865:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          14866:        }
        !          14867: 
        !          14868:        ZEND_VM_NEXT_OPCODE();
        !          14869: }
        !          14870: 
        !          14871: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14872: {
        !          14873:        zend_op *opline = EX(opline);
        !          14874:        zend_free_op free_op1;
        !          14875:        zval *dim = NULL;
        !          14876:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14877: 
        !          14878:        if (IS_VAR == IS_VAR && !container) {
        !          14879:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          14880:        }
        !          14881:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          14882: 
        !          14883:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          14884:            READY_TO_DESTROY(free_op1.var)) {
        !          14885:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          14886:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          14887:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          14888:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          14889:                }
        !          14890:        }
        !          14891:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14892:        ZEND_VM_NEXT_OPCODE();
        !          14893: }
        !          14894: 
        !          14895: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14896: {
        !          14897:        zend_op *opline = EX(opline);
        !          14898:        zend_free_op free_op1;
        !          14899:        zval *dim = NULL;
        !          14900:        zval **container;
        !          14901: 
        !          14902:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          14903:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14904:                if (IS_VAR == IS_VAR && !container) {
        !          14905:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          14906:                }
        !          14907:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          14908:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          14909:                    READY_TO_DESTROY(free_op1.var)) {
        !          14910:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          14911:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          14912:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          14913:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          14914:                        }
        !          14915:                }
        !          14916:        } else {
        !          14917:                if (IS_UNUSED == IS_UNUSED) {
        !          14918:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          14919:                }
        !          14920:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14921:                if (IS_VAR == IS_VAR && !container) {
        !          14922:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          14923:                }
        !          14924:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          14925:        }
        !          14926: 
        !          14927:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14928:        ZEND_VM_NEXT_OPCODE();
        !          14929: }
        !          14930: 
        !          14931: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14932: {
        !          14933:        zend_op *opline = EX(opline);
        !          14934:        zend_op *op_data = opline+1;
        !          14935:        zend_free_op free_op1;
        !          14936:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          14937: 
        !          14938:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          14939:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          14940:        }
        !          14941:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          14942: 
        !          14943:                zval *property_name = NULL;
        !          14944: 
        !          14945:                if (0) {
        !          14946:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          14947:                }
        !          14948:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          14949:                if (0) {
        !          14950:                        zval_ptr_dtor(&property_name);
        !          14951:                } else {
        !          14952: 
        !          14953:                }
        !          14954:        } else {
        !          14955:                zend_free_op free_op_data1, free_op_data2;
        !          14956:                zval *value;
        !          14957:                zval *dim = NULL;
        !          14958:                zval **variable_ptr_ptr;
        !          14959: 
        !          14960:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 0, BP_VAR_W TSRMLS_CC);
        !          14961: 
        !          14962:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          14963:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          14964:                if (!variable_ptr_ptr) {
        !          14965:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          14966:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          14967:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          14968:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          14969:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          14970:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          14971:                                }
        !          14972:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          14973:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          14974:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          14975:                        }
        !          14976:                } else {
        !          14977:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          14978:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          14979:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          14980:                                PZVAL_LOCK(value);
        !          14981:                        }
        !          14982:                }
        !          14983:                FREE_OP_VAR_PTR(free_op_data2);
        !          14984:                FREE_OP_IF_VAR(free_op_data1);
        !          14985:        }
        !          14986:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          14987:        /* assign_dim has two opcodes! */
        !          14988:        ZEND_VM_INC_OPCODE();
        !          14989:        ZEND_VM_NEXT_OPCODE();
        !          14990: }
        !          14991: 
        !          14992: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          14993: {
        !          14994:        zend_op *opline = EX(opline);
        !          14995:        zval *function_name;
        !          14996:        zend_class_entry *ce;
        !          14997: 
        !          14998:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          14999: 
        !          15000:        if (IS_VAR == IS_CONST) {
        !          15001:                /* no function found. try a static method in class */
        !          15002:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          15003:                if (!ce) {
        !          15004:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          15005:                }
        !          15006:                EX(called_scope) = ce;
        !          15007:        } else {
        !          15008:                ce = EX_T(opline->op1.u.var).class_entry;
        !          15009: 
        !          15010:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          15011:                        EX(called_scope) = EG(called_scope);
        !          15012:                } else {
        !          15013:                        EX(called_scope) = ce;
        !          15014:                }
        !          15015:        }
        !          15016:        if(IS_UNUSED != IS_UNUSED) {
        !          15017:                char *function_name_strval = NULL;
        !          15018:                int function_name_strlen = 0;
        !          15019: 
        !          15020: 
        !          15021:                if (IS_UNUSED == IS_CONST) {
        !          15022:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          15023:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          15024:                } else {
        !          15025:                        function_name = NULL;
        !          15026: 
        !          15027:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          15028:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          15029:                        } else {
        !          15030:                                function_name_strval = Z_STRVAL_P(function_name);
        !          15031:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          15032:                        }
        !          15033:                }
        !          15034: 
        !          15035:                if (function_name_strval) {
        !          15036:                        if (ce->get_static_method) {
        !          15037:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          15038:                        } else {
        !          15039:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          15040:                        }
        !          15041:                        if (!EX(fbc)) {
        !          15042:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          15043:                        }
        !          15044:                }
        !          15045: 
        !          15046:                if (IS_UNUSED != IS_CONST) {
        !          15047: 
        !          15048:                }
        !          15049:        } else {
        !          15050:                if(!ce->constructor) {
        !          15051:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          15052:                }
        !          15053:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          15054:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          15055:                }
        !          15056:                EX(fbc) = ce->constructor;
        !          15057:        }
        !          15058: 
        !          15059:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          15060:                EX(object) = NULL;
        !          15061:        } else {
        !          15062:                if (EG(This) &&
        !          15063:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          15064:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          15065:                    /* We are calling method of the other (incompatible) class,
        !          15066:                       but passing $this. This is done for compatibility with php-4. */
        !          15067:                        int severity;
        !          15068:                        char *verb;
        !          15069:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          15070:                                severity = E_STRICT;
        !          15071:                                verb = "should not";
        !          15072:                        } else {
        !          15073:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          15074:                                severity = E_ERROR;
        !          15075:                                verb = "cannot";
        !          15076:                        }
        !          15077:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          15078: 
        !          15079:                }
        !          15080:                if ((EX(object) = EG(This))) {
        !          15081:                        Z_ADDREF_P(EX(object));
        !          15082:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          15083:                }
        !          15084:        }
        !          15085: 
        !          15086:        ZEND_VM_NEXT_OPCODE();
        !          15087: }
        !          15088: 
        !          15089: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15090: {
        !          15091:        zend_op *opline = EX(opline);
        !          15092:        zend_free_op free_op1;
        !          15093:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          15094:        zval *expr_ptr;
        !          15095:        zval *offset=NULL;
        !          15096: 
        !          15097: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          15098:        zval **expr_ptr_ptr = NULL;
        !          15099: 
        !          15100:        if (opline->extended_value) {
        !          15101:                expr_ptr_ptr=_get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15102:                expr_ptr = *expr_ptr_ptr;
        !          15103:        } else {
        !          15104:                expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15105:        }
        !          15106: #else
        !          15107:        expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15108: #endif
        !          15109: 
        !          15110:        if (0) { /* temporary variable */
        !          15111:                zval *new_expr;
        !          15112: 
        !          15113:                ALLOC_ZVAL(new_expr);
        !          15114:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          15115:                expr_ptr = new_expr;
        !          15116:        } else {
        !          15117: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          15118:                if (opline->extended_value) {
        !          15119:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          15120:                        expr_ptr = *expr_ptr_ptr;
        !          15121:                        Z_ADDREF_P(expr_ptr);
        !          15122:                } else
        !          15123: #endif
        !          15124:                if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          15125:                        zval *new_expr;
        !          15126: 
        !          15127:                        ALLOC_ZVAL(new_expr);
        !          15128:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          15129:                        expr_ptr = new_expr;
        !          15130:                        zendi_zval_copy_ctor(*expr_ptr);
        !          15131:                } else {
        !          15132:                        Z_ADDREF_P(expr_ptr);
        !          15133:                }
        !          15134:        }
        !          15135:        if (offset) {
        !          15136:                switch (Z_TYPE_P(offset)) {
        !          15137:                        case IS_DOUBLE:
        !          15138:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          15139:                                break;
        !          15140:                        case IS_LONG:
        !          15141:                        case IS_BOOL:
        !          15142:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          15143:                                break;
        !          15144:                        case IS_STRING:
        !          15145:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          15146:                                break;
        !          15147:                        case IS_NULL:
        !          15148:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          15149:                                break;
        !          15150:                        default:
        !          15151:                                zend_error(E_WARNING, "Illegal offset type");
        !          15152:                                zval_ptr_dtor(&expr_ptr);
        !          15153:                                /* do nothing */
        !          15154:                                break;
        !          15155:                }
        !          15156: 
        !          15157:        } else {
        !          15158:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          15159:        }
        !          15160:        if (opline->extended_value) {
        !          15161:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15162:        } else {
        !          15163:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15164:        }
        !          15165:        ZEND_VM_NEXT_OPCODE();
        !          15166: }
        !          15167: 
        !          15168: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15169: {
        !          15170:        zend_op *opline = EX(opline);
        !          15171: 
        !          15172:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          15173:        if (IS_VAR == IS_UNUSED) {
        !          15174:                ZEND_VM_NEXT_OPCODE();
        !          15175: #if 0 || IS_VAR != IS_UNUSED
        !          15176:        } else {
        !          15177:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15178: #endif
        !          15179:        }
        !          15180: }
        !          15181: 
        !          15182: static int ZEND_FASTCALL  ZEND_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15183: {
        !          15184:        zend_op *opline = EX(opline);
        !          15185:        zend_free_op free_op1;
        !          15186: 
        !          15187:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          15188:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15189:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15190:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15191: 
        !          15192:        ZEND_VM_NEXT_OPCODE();
        !          15193: }
        !          15194: 
        !          15195: static int ZEND_FASTCALL  ZEND_SUB_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15196: {
        !          15197:        zend_op *opline = EX(opline);
        !          15198:        zend_free_op free_op1;
        !          15199: 
        !          15200:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          15201:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15202:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15203:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15204: 
        !          15205:        ZEND_VM_NEXT_OPCODE();
        !          15206: }
        !          15207: 
        !          15208: static int ZEND_FASTCALL  ZEND_MUL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15209: {
        !          15210:        zend_op *opline = EX(opline);
        !          15211:        zend_free_op free_op1;
        !          15212: 
        !          15213:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          15214:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15215:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15216:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15217: 
        !          15218:        ZEND_VM_NEXT_OPCODE();
        !          15219: }
        !          15220: 
        !          15221: static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15222: {
        !          15223:        zend_op *opline = EX(opline);
        !          15224:        zend_free_op free_op1;
        !          15225: 
        !          15226:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          15227:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15228:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15229:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15230: 
        !          15231:        ZEND_VM_NEXT_OPCODE();
        !          15232: }
        !          15233: 
        !          15234: static int ZEND_FASTCALL  ZEND_MOD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15235: {
        !          15236:        zend_op *opline = EX(opline);
        !          15237:        zend_free_op free_op1;
        !          15238: 
        !          15239:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          15240:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15241:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15242:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15243: 
        !          15244:        ZEND_VM_NEXT_OPCODE();
        !          15245: }
        !          15246: 
        !          15247: static int ZEND_FASTCALL  ZEND_SL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15248: {
        !          15249:        zend_op *opline = EX(opline);
        !          15250:        zend_free_op free_op1;
        !          15251: 
        !          15252:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          15253:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15254:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15255:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15256: 
        !          15257:        ZEND_VM_NEXT_OPCODE();
        !          15258: }
        !          15259: 
        !          15260: static int ZEND_FASTCALL  ZEND_SR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15261: {
        !          15262:        zend_op *opline = EX(opline);
        !          15263:        zend_free_op free_op1;
        !          15264: 
        !          15265:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          15266:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15267:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15268:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15269: 
        !          15270:        ZEND_VM_NEXT_OPCODE();
        !          15271: }
        !          15272: 
        !          15273: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15274: {
        !          15275:        zend_op *opline = EX(opline);
        !          15276:        zend_free_op free_op1;
        !          15277: 
        !          15278:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          15279:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15280:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15281:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15282: 
        !          15283:        ZEND_VM_NEXT_OPCODE();
        !          15284: }
        !          15285: 
        !          15286: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15287: {
        !          15288:        zend_op *opline = EX(opline);
        !          15289:        zend_free_op free_op1;
        !          15290: 
        !          15291:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          15292:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15293:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15294:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15295: 
        !          15296:        ZEND_VM_NEXT_OPCODE();
        !          15297: }
        !          15298: 
        !          15299: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15300: {
        !          15301:        zend_op *opline = EX(opline);
        !          15302:        zend_free_op free_op1;
        !          15303:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          15304: 
        !          15305:        is_identical_function(result,
        !          15306:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15307:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15308:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          15309:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15310: 
        !          15311:        ZEND_VM_NEXT_OPCODE();
        !          15312: }
        !          15313: 
        !          15314: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15315: {
        !          15316:        zend_op *opline = EX(opline);
        !          15317:        zend_free_op free_op1;
        !          15318:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          15319: 
        !          15320:        compare_function(result,
        !          15321:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15322:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15323:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          15324:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15325: 
        !          15326:        ZEND_VM_NEXT_OPCODE();
        !          15327: }
        !          15328: 
        !          15329: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15330: {
        !          15331:        zend_op *opline = EX(opline);
        !          15332:        zend_free_op free_op1;
        !          15333:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          15334: 
        !          15335:        compare_function(result,
        !          15336:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15337:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15338:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          15339:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15340: 
        !          15341:        ZEND_VM_NEXT_OPCODE();
        !          15342: }
        !          15343: 
        !          15344: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15345: {
        !          15346:        zend_op *opline = EX(opline);
        !          15347:        zend_free_op free_op1;
        !          15348:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          15349: 
        !          15350:        compare_function(result,
        !          15351:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15352:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15353:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          15354:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15355: 
        !          15356:        ZEND_VM_NEXT_OPCODE();
        !          15357: }
        !          15358: 
        !          15359: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15360: {
        !          15361:        zend_op *opline = EX(opline);
        !          15362:        zend_free_op free_op1;
        !          15363:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          15364: 
        !          15365:        compare_function(result,
        !          15366:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15367:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15368:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          15369:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15370: 
        !          15371:        ZEND_VM_NEXT_OPCODE();
        !          15372: }
        !          15373: 
        !          15374: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15375: {
        !          15376:        zend_op *opline = EX(opline);
        !          15377:        zend_free_op free_op1;
        !          15378: 
        !          15379:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          15380:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15381:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15382:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15383: 
        !          15384:        ZEND_VM_NEXT_OPCODE();
        !          15385: }
        !          15386: 
        !          15387: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15388: {
        !          15389:        zend_op *opline = EX(opline);
        !          15390:        zend_free_op free_op1;
        !          15391: 
        !          15392:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          15393:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15394:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15395:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15396: 
        !          15397:        ZEND_VM_NEXT_OPCODE();
        !          15398: }
        !          15399: 
        !          15400: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15401: {
        !          15402:        zend_op *opline = EX(opline);
        !          15403:        zend_free_op free_op1;
        !          15404: 
        !          15405:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          15406:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15407:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15408:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15409: 
        !          15410:        ZEND_VM_NEXT_OPCODE();
        !          15411: }
        !          15412: 
        !          15413: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15414: {
        !          15415:        zend_op *opline = EX(opline);
        !          15416:        zend_free_op free_op1;
        !          15417: 
        !          15418:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          15419:                _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          15420:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          15421:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15422: 
        !          15423:        ZEND_VM_NEXT_OPCODE();
        !          15424: }
        !          15425: 
        !          15426: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CV(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          15427: {
        !          15428:        zend_op *opline = EX(opline);
        !          15429:        zend_op *op_data = opline+1;
        !          15430:        zend_free_op free_op1, free_op_data1;
        !          15431:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15432:        zval *object;
        !          15433:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15434:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          15435:        znode *result = &opline->result;
        !          15436:        int have_get_ptr = 0;
        !          15437: 
        !          15438:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          15439:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          15440:        }
        !          15441: 
        !          15442:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          15443:        make_real_object(object_ptr TSRMLS_CC);
        !          15444:        object = *object_ptr;
        !          15445: 
        !          15446:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          15447:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          15448: 
        !          15449:                FREE_OP(free_op_data1);
        !          15450: 
        !          15451:                if (!RETURN_VALUE_UNUSED(result)) {
        !          15452:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          15453:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          15454:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          15455:                }
        !          15456:        } else {
        !          15457:                /* here we are sure we are dealing with an object */
        !          15458:                if (0) {
        !          15459:                        MAKE_REAL_ZVAL_PTR(property);
        !          15460:                }
        !          15461: 
        !          15462:                /* here property is a string */
        !          15463:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          15464:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          15465:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          15466:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          15467:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          15468: 
        !          15469:                                have_get_ptr = 1;
        !          15470:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          15471:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          15472:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          15473:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          15474:                                        PZVAL_LOCK(*zptr);
        !          15475:                                }
        !          15476:                        }
        !          15477:                }
        !          15478: 
        !          15479:                if (!have_get_ptr) {
        !          15480:                        zval *z = NULL;
        !          15481: 
        !          15482:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          15483:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          15484:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          15485:                                }
        !          15486:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          15487:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          15488:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          15489:                                }
        !          15490:                        }
        !          15491:                        if (z) {
        !          15492:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          15493:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          15494: 
        !          15495:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          15496:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          15497:                                                zval_dtor(z);
        !          15498:                                                FREE_ZVAL(z);
        !          15499:                                        }
        !          15500:                                        z = value;
        !          15501:                                }
        !          15502:                                Z_ADDREF_P(z);
        !          15503:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          15504:                                binary_op(z, z, value TSRMLS_CC);
        !          15505:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          15506:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          15507:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          15508:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          15509:                                }
        !          15510:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          15511:                                        EX_T(result->u.var).var.ptr = z;
        !          15512:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          15513:                                        PZVAL_LOCK(z);
        !          15514:                                }
        !          15515:                                zval_ptr_dtor(&z);
        !          15516:                        } else {
        !          15517:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          15518:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          15519:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          15520:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          15521:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          15522:                                }
        !          15523:                        }
        !          15524:                }
        !          15525: 
        !          15526:                if (0) {
        !          15527:                        zval_ptr_dtor(&property);
        !          15528:                } else {
        !          15529: 
        !          15530:                }
        !          15531:                FREE_OP(free_op_data1);
        !          15532:        }
        !          15533: 
        !          15534:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15535:        /* assign_obj has two opcodes! */
        !          15536:        ZEND_VM_INC_OPCODE();
        !          15537:        ZEND_VM_NEXT_OPCODE();
        !          15538: }
        !          15539: 
        !          15540: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_VAR_CV(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          15541: {
        !          15542:        zend_op *opline = EX(opline);
        !          15543:        zend_free_op free_op1, free_op_data2, free_op_data1;
        !          15544:        zval **var_ptr;
        !          15545:        zval *value;
        !          15546: 
        !          15547:        switch (opline->extended_value) {
        !          15548:                case ZEND_ASSIGN_OBJ:
        !          15549:                        return zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15550:                        break;
        !          15551:                case ZEND_ASSIGN_DIM: {
        !          15552:                                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15553: 
        !          15554:                                if (IS_VAR == IS_VAR && !container) {
        !          15555:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          15556:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          15557:                                        if (IS_VAR == IS_VAR && !(free_op1.var != NULL)) {
        !          15558:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          15559:                                        }
        !          15560:                                        return zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15561:                                } else {
        !          15562:                                        zend_op *op_data = opline+1;
        !          15563:                                        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15564: 
        !          15565:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          15566:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          15567:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          15568:                                        ZEND_VM_INC_OPCODE();
        !          15569:                                }
        !          15570:                        }
        !          15571:                        break;
        !          15572:                default:
        !          15573:                        value = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15574:                        var_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15575:                        /* do nothing */
        !          15576:                        break;
        !          15577:        }
        !          15578: 
        !          15579:        if (!var_ptr) {
        !          15580:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          15581:        }
        !          15582: 
        !          15583:        if (*var_ptr == EG(error_zval_ptr)) {
        !          15584:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          15585:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          15586:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          15587:                }
        !          15588: 
        !          15589:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15590:                ZEND_VM_NEXT_OPCODE();
        !          15591:        }
        !          15592: 
        !          15593:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          15594: 
        !          15595:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          15596:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          15597:                /* proxy object */
        !          15598:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          15599:                Z_ADDREF_P(objval);
        !          15600:                binary_op(objval, objval, value TSRMLS_CC);
        !          15601:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          15602:                zval_ptr_dtor(&objval);
        !          15603:        } else {
        !          15604:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          15605:        }
        !          15606: 
        !          15607:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          15608:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          15609:                PZVAL_LOCK(*var_ptr);
        !          15610:        }
        !          15611: 
        !          15612:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          15613:                FREE_OP(free_op_data1);
        !          15614:                FREE_OP_VAR_PTR(free_op_data2);
        !          15615:        }
        !          15616:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15617:        ZEND_VM_NEXT_OPCODE();
        !          15618: }
        !          15619: 
        !          15620: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15621: {
        !          15622:        return zend_binary_assign_op_helper_SPEC_VAR_CV(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15623: }
        !          15624: 
        !          15625: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15626: {
        !          15627:        return zend_binary_assign_op_helper_SPEC_VAR_CV(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15628: }
        !          15629: 
        !          15630: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15631: {
        !          15632:        return zend_binary_assign_op_helper_SPEC_VAR_CV(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15633: }
        !          15634: 
        !          15635: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15636: {
        !          15637:        return zend_binary_assign_op_helper_SPEC_VAR_CV(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15638: }
        !          15639: 
        !          15640: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15641: {
        !          15642:        return zend_binary_assign_op_helper_SPEC_VAR_CV(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15643: }
        !          15644: 
        !          15645: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15646: {
        !          15647:        return zend_binary_assign_op_helper_SPEC_VAR_CV(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15648: }
        !          15649: 
        !          15650: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15651: {
        !          15652:        return zend_binary_assign_op_helper_SPEC_VAR_CV(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15653: }
        !          15654: 
        !          15655: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15656: {
        !          15657:        return zend_binary_assign_op_helper_SPEC_VAR_CV(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15658: }
        !          15659: 
        !          15660: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15661: {
        !          15662:        return zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15663: }
        !          15664: 
        !          15665: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15666: {
        !          15667:        return zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15668: }
        !          15669: 
        !          15670: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15671: {
        !          15672:        return zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15673: }
        !          15674: 
        !          15675: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CV(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          15676: {
        !          15677:        zend_op *opline = EX(opline);
        !          15678:        zend_free_op free_op1;
        !          15679:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15680:        zval *object;
        !          15681:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15682:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          15683:        int have_get_ptr = 0;
        !          15684: 
        !          15685:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          15686:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          15687:        }
        !          15688: 
        !          15689:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          15690:        object = *object_ptr;
        !          15691: 
        !          15692:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          15693:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          15694: 
        !          15695:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          15696:                        *retval = EG(uninitialized_zval_ptr);
        !          15697:                        PZVAL_LOCK(*retval);
        !          15698:                }
        !          15699:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15700:                ZEND_VM_NEXT_OPCODE();
        !          15701:        }
        !          15702: 
        !          15703:        /* here we are sure we are dealing with an object */
        !          15704: 
        !          15705:        if (0) {
        !          15706:                MAKE_REAL_ZVAL_PTR(property);
        !          15707:        }
        !          15708: 
        !          15709:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          15710:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          15711:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          15712:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          15713: 
        !          15714:                        have_get_ptr = 1;
        !          15715:                        incdec_op(*zptr);
        !          15716:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          15717:                                *retval = *zptr;
        !          15718:                                PZVAL_LOCK(*retval);
        !          15719:                        }
        !          15720:                }
        !          15721:        }
        !          15722: 
        !          15723:        if (!have_get_ptr) {
        !          15724:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          15725:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          15726: 
        !          15727:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          15728:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          15729: 
        !          15730:                                if (Z_REFCOUNT_P(z) == 0) {
        !          15731:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          15732:                                        zval_dtor(z);
        !          15733:                                        FREE_ZVAL(z);
        !          15734:                                }
        !          15735:                                z = value;
        !          15736:                        }
        !          15737:                        Z_ADDREF_P(z);
        !          15738:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          15739:                        incdec_op(z);
        !          15740:                        *retval = z;
        !          15741:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          15742:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          15743:                        zval_ptr_dtor(&z);
        !          15744:                } else {
        !          15745:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          15746:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          15747:                                *retval = EG(uninitialized_zval_ptr);
        !          15748:                                PZVAL_LOCK(*retval);
        !          15749:                        }
        !          15750:                }
        !          15751:        }
        !          15752: 
        !          15753:        if (0) {
        !          15754:                zval_ptr_dtor(&property);
        !          15755:        } else {
        !          15756: 
        !          15757:        }
        !          15758:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15759:        ZEND_VM_NEXT_OPCODE();
        !          15760: }
        !          15761: 
        !          15762: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15763: {
        !          15764:        return zend_pre_incdec_property_helper_SPEC_VAR_CV(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15765: }
        !          15766: 
        !          15767: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15768: {
        !          15769:        return zend_pre_incdec_property_helper_SPEC_VAR_CV(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15770: }
        !          15771: 
        !          15772: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CV(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          15773: {
        !          15774:        zend_op *opline = EX(opline);
        !          15775:        zend_free_op free_op1;
        !          15776:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15777:        zval *object;
        !          15778:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15779:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          15780:        int have_get_ptr = 0;
        !          15781: 
        !          15782:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          15783:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          15784:        }
        !          15785: 
        !          15786:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          15787:        object = *object_ptr;
        !          15788: 
        !          15789:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          15790:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          15791: 
        !          15792:                *retval = *EG(uninitialized_zval_ptr);
        !          15793:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15794:                ZEND_VM_NEXT_OPCODE();
        !          15795:        }
        !          15796: 
        !          15797:        /* here we are sure we are dealing with an object */
        !          15798: 
        !          15799:        if (0) {
        !          15800:                MAKE_REAL_ZVAL_PTR(property);
        !          15801:        }
        !          15802: 
        !          15803:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          15804:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          15805:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          15806:                        have_get_ptr = 1;
        !          15807:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          15808: 
        !          15809:                        *retval = **zptr;
        !          15810:                        zendi_zval_copy_ctor(*retval);
        !          15811: 
        !          15812:                        incdec_op(*zptr);
        !          15813: 
        !          15814:                }
        !          15815:        }
        !          15816: 
        !          15817:        if (!have_get_ptr) {
        !          15818:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          15819:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          15820:                        zval *z_copy;
        !          15821: 
        !          15822:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          15823:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          15824: 
        !          15825:                                if (Z_REFCOUNT_P(z) == 0) {
        !          15826:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          15827:                                        zval_dtor(z);
        !          15828:                                        FREE_ZVAL(z);
        !          15829:                                }
        !          15830:                                z = value;
        !          15831:                        }
        !          15832:                        *retval = *z;
        !          15833:                        zendi_zval_copy_ctor(*retval);
        !          15834:                        ALLOC_ZVAL(z_copy);
        !          15835:                        *z_copy = *z;
        !          15836:                        zendi_zval_copy_ctor(*z_copy);
        !          15837:                        INIT_PZVAL(z_copy);
        !          15838:                        incdec_op(z_copy);
        !          15839:                        Z_ADDREF_P(z);
        !          15840:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          15841:                        zval_ptr_dtor(&z_copy);
        !          15842:                        zval_ptr_dtor(&z);
        !          15843:                } else {
        !          15844:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          15845:                        *retval = *EG(uninitialized_zval_ptr);
        !          15846:                }
        !          15847:        }
        !          15848: 
        !          15849:        if (0) {
        !          15850:                zval_ptr_dtor(&property);
        !          15851:        } else {
        !          15852: 
        !          15853:        }
        !          15854:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15855:        ZEND_VM_NEXT_OPCODE();
        !          15856: }
        !          15857: 
        !          15858: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15859: {
        !          15860:        return zend_post_incdec_property_helper_SPEC_VAR_CV(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15861: }
        !          15862: 
        !          15863: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15864: {
        !          15865:        return zend_post_incdec_property_helper_SPEC_VAR_CV(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          15866: }
        !          15867: 
        !          15868: static int ZEND_FASTCALL  ZEND_FETCH_DIM_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15869: {
        !          15870:        zend_op *opline = EX(opline);
        !          15871:        zend_free_op free_op1;
        !          15872:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15873:        zval **container;
        !          15874: 
        !          15875:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK &&
        !          15876:            IS_VAR != IS_CV &&
        !          15877:            EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          15878:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          15879:        }
        !          15880:        container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15881:        if (IS_VAR == IS_VAR && !container) {
        !          15882:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          15883:        }
        !          15884:        zend_fetch_dimension_address_read(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          15885: 
        !          15886:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15887:        ZEND_VM_NEXT_OPCODE();
        !          15888: }
        !          15889: 
        !          15890: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15891: {
        !          15892:        zend_op *opline = EX(opline);
        !          15893:        zend_free_op free_op1;
        !          15894:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15895:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15896: 
        !          15897:        if (IS_VAR == IS_VAR && !container) {
        !          15898:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          15899:        }
        !          15900:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          15901: 
        !          15902:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          15903:            READY_TO_DESTROY(free_op1.var)) {
        !          15904:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          15905:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          15906:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          15907:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          15908:                }
        !          15909:        }
        !          15910:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15911: 
        !          15912:        /* We are going to assign the result by reference */
        !          15913:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          15914:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          15915:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          15916:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          15917:        }
        !          15918: 
        !          15919:        ZEND_VM_NEXT_OPCODE();
        !          15920: }
        !          15921: 
        !          15922: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15923: {
        !          15924:        zend_op *opline = EX(opline);
        !          15925:        zend_free_op free_op1;
        !          15926:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15927:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15928: 
        !          15929:        if (IS_VAR == IS_VAR && !container) {
        !          15930:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          15931:        }
        !          15932:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          15933: 
        !          15934:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          15935:            READY_TO_DESTROY(free_op1.var)) {
        !          15936:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          15937:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          15938:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          15939:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          15940:                }
        !          15941:        }
        !          15942:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15943:        ZEND_VM_NEXT_OPCODE();
        !          15944: }
        !          15945: 
        !          15946: static int ZEND_FASTCALL  ZEND_FETCH_DIM_IS_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15947: {
        !          15948:        zend_op *opline = EX(opline);
        !          15949:        zend_free_op free_op1;
        !          15950:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15951:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15952: 
        !          15953:        if (IS_VAR == IS_VAR && !container) {
        !          15954:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          15955:        }
        !          15956:        zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_IS TSRMLS_CC);
        !          15957: 
        !          15958:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15959:        ZEND_VM_NEXT_OPCODE();
        !          15960: }
        !          15961: 
        !          15962: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15963: {
        !          15964:        zend_op *opline = EX(opline);
        !          15965:        zend_free_op free_op1;
        !          15966:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          15967:        zval **container;
        !          15968: 
        !          15969:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          15970:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15971:                if (IS_VAR == IS_VAR && !container) {
        !          15972:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          15973:                }
        !          15974:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          15975:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          15976:                    READY_TO_DESTROY(free_op1.var)) {
        !          15977:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          15978:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          15979:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          15980:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          15981:                        }
        !          15982:                }
        !          15983:        } else {
        !          15984:                if (IS_CV == IS_UNUSED) {
        !          15985:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          15986:                }
        !          15987:                container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          15988:                if (IS_VAR == IS_VAR && !container) {
        !          15989:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          15990:                }
        !          15991:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          15992:        }
        !          15993: 
        !          15994:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          15995:        ZEND_VM_NEXT_OPCODE();
        !          15996: }
        !          15997: 
        !          15998: static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          15999: {
        !          16000:        zend_op *opline = EX(opline);
        !          16001:        zend_free_op free_op1;
        !          16002:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16003:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16004: 
        !          16005:        /* Not needed in DIM_UNSET
        !          16006:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
        !          16007:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          16008:        }
        !          16009:        */
        !          16010:        if (IS_VAR == IS_CV) {
        !          16011:                if (container != &EG(uninitialized_zval_ptr)) {
        !          16012:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          16013:                }
        !          16014:        }
        !          16015:        if (IS_VAR == IS_VAR && !container) {
        !          16016:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          16017:        }
        !          16018:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC);
        !          16019: 
        !          16020:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          16021:            READY_TO_DESTROY(free_op1.var)) {
        !          16022:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          16023:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          16024:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          16025:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16026:                }
        !          16027:        }
        !          16028:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16029:        if (EX_T(opline->result.u.var).var.ptr_ptr == NULL) {
        !          16030:                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          16031:        } else {
        !          16032:                zend_free_op free_res;
        !          16033: 
        !          16034:                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          16035:                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          16036:                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16037:                }
        !          16038:                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          16039:                FREE_OP_VAR_PTR(free_res);
        !          16040:        }
        !          16041:        ZEND_VM_NEXT_OPCODE();
        !          16042: }
        !          16043: 
        !          16044: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_VAR_CV(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          16045: {
        !          16046:        zend_op *opline = EX(opline);
        !          16047:        zend_free_op free_op1;
        !          16048:        zval *container = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16049: 
        !          16050:        zval *offset  = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16051: 
        !          16052:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          16053:                if (type != BP_VAR_IS) {
        !          16054:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          16055:                }
        !          16056:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          16057:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          16058:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          16059:                }
        !          16060: 
        !          16061:        } else {
        !          16062:                zval *retval;
        !          16063: 
        !          16064:                if (0) {
        !          16065:                        MAKE_REAL_ZVAL_PTR(offset);
        !          16066:                }
        !          16067: 
        !          16068:                /* here we are sure we are dealing with an object */
        !          16069:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          16070: 
        !          16071:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          16072:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          16073:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          16074:                                zval_dtor(retval);
        !          16075:                                FREE_ZVAL(retval);
        !          16076:                        }
        !          16077:                } else {
        !          16078:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          16079:                        PZVAL_LOCK(retval);
        !          16080:                }
        !          16081: 
        !          16082:                if (0) {
        !          16083:                        zval_ptr_dtor(&offset);
        !          16084:                } else {
        !          16085: 
        !          16086:                }
        !          16087:        }
        !          16088: 
        !          16089:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16090:        ZEND_VM_NEXT_OPCODE();
        !          16091: }
        !          16092: 
        !          16093: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16094: {
        !          16095:        return zend_fetch_property_address_read_helper_SPEC_VAR_CV(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          16096: }
        !          16097: 
        !          16098: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16099: {
        !          16100:        zend_op *opline = EX(opline);
        !          16101:        zend_free_op free_op1;
        !          16102:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16103:        zval **container;
        !          16104: 
        !          16105:        if (IS_VAR == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          16106:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          16107:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          16108:        }
        !          16109: 
        !          16110:        if (0) {
        !          16111:                MAKE_REAL_ZVAL_PTR(property);
        !          16112:        }
        !          16113:        container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16114:        if (IS_VAR == IS_VAR && !container) {
        !          16115:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          16116:        }
        !          16117:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          16118:        if (0) {
        !          16119:                zval_ptr_dtor(&property);
        !          16120:        } else {
        !          16121: 
        !          16122:        }
        !          16123:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          16124:            READY_TO_DESTROY(free_op1.var)) {
        !          16125:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          16126:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          16127:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          16128:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16129:                }
        !          16130:        }
        !          16131:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16132: 
        !          16133:        /* We are going to assign the result by reference */
        !          16134:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          16135:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16136:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16137:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16138:        }
        !          16139: 
        !          16140:        ZEND_VM_NEXT_OPCODE();
        !          16141: }
        !          16142: 
        !          16143: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16144: {
        !          16145:        zend_op *opline = EX(opline);
        !          16146:        zend_free_op free_op1;
        !          16147:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16148:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16149: 
        !          16150:        if (0) {
        !          16151:                MAKE_REAL_ZVAL_PTR(property);
        !          16152:        }
        !          16153:        if (IS_VAR == IS_VAR && !container) {
        !          16154:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          16155:        }
        !          16156:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          16157:        if (0) {
        !          16158:                zval_ptr_dtor(&property);
        !          16159:        } else {
        !          16160: 
        !          16161:        }
        !          16162:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          16163:            READY_TO_DESTROY(free_op1.var)) {
        !          16164:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          16165:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          16166:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          16167:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16168:                }
        !          16169:        }
        !          16170:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16171:        ZEND_VM_NEXT_OPCODE();
        !          16172: }
        !          16173: 
        !          16174: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16175: {
        !          16176:        return zend_fetch_property_address_read_helper_SPEC_VAR_CV(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          16177: }
        !          16178: 
        !          16179: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16180: {
        !          16181:        zend_op *opline = EX(opline);
        !          16182: 
        !          16183:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          16184:                /* Behave like FETCH_OBJ_W */
        !          16185:                zend_free_op free_op1;
        !          16186:                zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16187:                zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16188: 
        !          16189:                if (0) {
        !          16190:                        MAKE_REAL_ZVAL_PTR(property);
        !          16191:                }
        !          16192:                if (IS_VAR == IS_VAR && !container) {
        !          16193:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          16194:                }
        !          16195:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          16196:                if (0) {
        !          16197:                        zval_ptr_dtor(&property);
        !          16198:                } else {
        !          16199: 
        !          16200:                }
        !          16201:                if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          16202:                    READY_TO_DESTROY(free_op1.var)) {
        !          16203:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          16204:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          16205:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          16206:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16207:                        }
        !          16208:                }
        !          16209:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16210:                ZEND_VM_NEXT_OPCODE();
        !          16211:        } else {
        !          16212:                return zend_fetch_property_address_read_helper_SPEC_VAR_CV(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          16213:        }
        !          16214: }
        !          16215: 
        !          16216: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16217: {
        !          16218:        zend_op *opline = EX(opline);
        !          16219:        zend_free_op free_op1, free_res;
        !          16220:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16221:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16222: 
        !          16223:        if (IS_VAR == IS_CV) {
        !          16224:                if (container != &EG(uninitialized_zval_ptr)) {
        !          16225:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          16226:                }
        !          16227:        }
        !          16228:        if (0) {
        !          16229:                MAKE_REAL_ZVAL_PTR(property);
        !          16230:        }
        !          16231:        if (IS_VAR == IS_VAR && !container) {
        !          16232:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          16233:        }
        !          16234:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          16235:        if (0) {
        !          16236:                zval_ptr_dtor(&property);
        !          16237:        } else {
        !          16238: 
        !          16239:        }
        !          16240:        if (IS_VAR == IS_VAR && (free_op1.var != NULL) &&
        !          16241:            READY_TO_DESTROY(free_op1.var)) {
        !          16242:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          16243:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          16244:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          16245:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16246:                }
        !          16247:        }
        !          16248:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16249: 
        !          16250:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          16251:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          16252:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          16253:        }
        !          16254:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          16255:        FREE_OP_VAR_PTR(free_res);
        !          16256:        ZEND_VM_NEXT_OPCODE();
        !          16257: }
        !          16258: 
        !          16259: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16260: {
        !          16261:        zend_op *opline = EX(opline);
        !          16262:        zend_op *op_data = opline+1;
        !          16263:        zend_free_op free_op1;
        !          16264:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16265:        zval *property_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16266: 
        !          16267:        if (0) {
        !          16268:                MAKE_REAL_ZVAL_PTR(property_name);
        !          16269:        }
        !          16270:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          16271:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          16272:        }
        !          16273:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          16274:        if (0) {
        !          16275:                zval_ptr_dtor(&property_name);
        !          16276:        } else {
        !          16277: 
        !          16278:        }
        !          16279:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16280:        /* assign_obj has two opcodes! */
        !          16281:        ZEND_VM_INC_OPCODE();
        !          16282:        ZEND_VM_NEXT_OPCODE();
        !          16283: }
        !          16284: 
        !          16285: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16286: {
        !          16287:        zend_op *opline = EX(opline);
        !          16288:        zend_op *op_data = opline+1;
        !          16289:        zend_free_op free_op1;
        !          16290:        zval **object_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16291: 
        !          16292:        if (IS_VAR == IS_VAR && !object_ptr) {
        !          16293:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          16294:        }
        !          16295:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          16296: 
        !          16297:                zval *property_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16298: 
        !          16299:                if (0) {
        !          16300:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          16301:                }
        !          16302:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          16303:                if (0) {
        !          16304:                        zval_ptr_dtor(&property_name);
        !          16305:                } else {
        !          16306: 
        !          16307:                }
        !          16308:        } else {
        !          16309:                zend_free_op free_op_data1, free_op_data2;
        !          16310:                zval *value;
        !          16311:                zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16312:                zval **variable_ptr_ptr;
        !          16313: 
        !          16314:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 0, BP_VAR_W TSRMLS_CC);
        !          16315: 
        !          16316:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          16317:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          16318:                if (!variable_ptr_ptr) {
        !          16319:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          16320:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          16321:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          16322:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          16323:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          16324:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          16325:                                }
        !          16326:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          16327:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          16328:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          16329:                        }
        !          16330:                } else {
        !          16331:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          16332:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          16333:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          16334:                                PZVAL_LOCK(value);
        !          16335:                        }
        !          16336:                }
        !          16337:                FREE_OP_VAR_PTR(free_op_data2);
        !          16338:                FREE_OP_IF_VAR(free_op_data1);
        !          16339:        }
        !          16340:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16341:        /* assign_dim has two opcodes! */
        !          16342:        ZEND_VM_INC_OPCODE();
        !          16343:        ZEND_VM_NEXT_OPCODE();
        !          16344: }
        !          16345: 
        !          16346: static int ZEND_FASTCALL  ZEND_ASSIGN_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16347: {
        !          16348:        zend_op *opline = EX(opline);
        !          16349:        zend_free_op free_op1;
        !          16350:        zval *value = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16351:        zval **variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16352: 
        !          16353:        if (IS_VAR == IS_VAR && !variable_ptr_ptr) {
        !          16354:                if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CV TSRMLS_CC)) {
        !          16355:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          16356:                                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          16357:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          16358:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          16359:                                ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
        !          16360:                        }
        !          16361:                } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          16362:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          16363:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          16364:                }
        !          16365:        } else {
        !          16366:                value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
        !          16367:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          16368:                        AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          16369:                        PZVAL_LOCK(value);
        !          16370:                }
        !          16371:        }
        !          16372: 
        !          16373:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16374: 
        !          16375:        /* zend_assign_to_variable() always takes care of op2, never free it! */
        !          16376: 
        !          16377:        ZEND_VM_NEXT_OPCODE();
        !          16378: }
        !          16379: 
        !          16380: static int ZEND_FASTCALL  ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16381: {
        !          16382:        zend_op *opline = EX(opline);
        !          16383:        zend_free_op free_op1, free_op2;
        !          16384:        zval **variable_ptr_ptr;
        !          16385:        zval **value_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op2, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          16386: 
        !          16387:        if (IS_CV == IS_VAR &&
        !          16388:            value_ptr_ptr &&
        !          16389:            !Z_ISREF_PP(value_ptr_ptr) &&
        !          16390:            opline->extended_value == ZEND_RETURNS_FUNCTION &&
        !          16391:            !EX_T(opline->op2.u.var).var.fcall_returned_reference) {
        !          16392:                if (free_op2.var == NULL) {
        !          16393:                        PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
        !          16394:                }
        !          16395:                zend_error(E_STRICT, "Only variables should be assigned by reference");
        !          16396:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          16397: 
        !          16398:                        ZEND_VM_NEXT_OPCODE();
        !          16399:                }
        !          16400:                return ZEND_ASSIGN_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          16401:        } else if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
        !          16402:                PZVAL_LOCK(*value_ptr_ptr);
        !          16403:        }
        !          16404:        if (IS_VAR == IS_VAR && EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
        !          16405:                zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
        !          16406:        }
        !          16407: 
        !          16408:        variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16409:        if ((IS_CV == IS_VAR && !value_ptr_ptr) ||
        !          16410:            (IS_VAR == IS_VAR && !variable_ptr_ptr)) {
        !          16411:                zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets nor overloaded objects");
        !          16412:        }
        !          16413:        zend_assign_to_variable_reference(variable_ptr_ptr, value_ptr_ptr TSRMLS_CC);
        !          16414: 
        !          16415:        if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
        !          16416:                Z_DELREF_PP(variable_ptr_ptr);
        !          16417:        }
        !          16418: 
        !          16419:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          16420:                AI_SET_PTR(EX_T(opline->result.u.var).var, *variable_ptr_ptr);
        !          16421:                PZVAL_LOCK(*variable_ptr_ptr);
        !          16422:        }
        !          16423: 
        !          16424:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16425: 
        !          16426:        ZEND_VM_NEXT_OPCODE();
        !          16427: }
        !          16428: 
        !          16429: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16430: {
        !          16431:        zend_op *opline = EX(opline);
        !          16432:        zval *function_name;
        !          16433:        char *function_name_strval;
        !          16434:        int function_name_strlen;
        !          16435:        zend_free_op free_op1;
        !          16436: 
        !          16437:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          16438: 
        !          16439:        function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16440: 
        !          16441:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          16442:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          16443:        }
        !          16444: 
        !          16445:        function_name_strval = Z_STRVAL_P(function_name);
        !          16446:        function_name_strlen = Z_STRLEN_P(function_name);
        !          16447: 
        !          16448:        EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16449: 
        !          16450:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          16451:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          16452:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          16453:                }
        !          16454: 
        !          16455:                /* First, locate the function. */
        !          16456:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          16457:                if (!EX(fbc)) {
        !          16458:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          16459:                }
        !          16460: 
        !          16461:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          16462:        } else {
        !          16463:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          16464:        }
        !          16465: 
        !          16466:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          16467:                EX(object) = NULL;
        !          16468:        } else {
        !          16469:                if (!PZVAL_IS_REF(EX(object))) {
        !          16470:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          16471:                } else {
        !          16472:                        zval *this_ptr;
        !          16473:                        ALLOC_ZVAL(this_ptr);
        !          16474:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          16475:                        zval_copy_ctor(this_ptr);
        !          16476:                        EX(object) = this_ptr;
        !          16477:                }
        !          16478:        }
        !          16479: 
        !          16480:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16481: 
        !          16482:        ZEND_VM_NEXT_OPCODE();
        !          16483: }
        !          16484: 
        !          16485: static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16486: {
        !          16487:        zend_op *opline = EX(opline);
        !          16488:        zval *function_name;
        !          16489:        zend_class_entry *ce;
        !          16490: 
        !          16491:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          16492: 
        !          16493:        if (IS_VAR == IS_CONST) {
        !          16494:                /* no function found. try a static method in class */
        !          16495:                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          16496:                if (!ce) {
        !          16497:                        zend_error_noreturn(E_ERROR, "Class '%s' not found", Z_STRVAL(opline->op1.u.constant));
        !          16498:                }
        !          16499:                EX(called_scope) = ce;
        !          16500:        } else {
        !          16501:                ce = EX_T(opline->op1.u.var).class_entry;
        !          16502: 
        !          16503:                if (opline->op1.u.EA.type == ZEND_FETCH_CLASS_PARENT || opline->op1.u.EA.type == ZEND_FETCH_CLASS_SELF) {
        !          16504:                        EX(called_scope) = EG(called_scope);
        !          16505:                } else {
        !          16506:                        EX(called_scope) = ce;
        !          16507:                }
        !          16508:        }
        !          16509:        if(IS_CV != IS_UNUSED) {
        !          16510:                char *function_name_strval = NULL;
        !          16511:                int function_name_strlen = 0;
        !          16512: 
        !          16513: 
        !          16514:                if (IS_CV == IS_CONST) {
        !          16515:                        function_name_strval = Z_STRVAL(opline->op2.u.constant);
        !          16516:                        function_name_strlen = Z_STRLEN(opline->op2.u.constant);
        !          16517:                } else {
        !          16518:                        function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16519: 
        !          16520:                        if (Z_TYPE_P(function_name) != IS_STRING) {
        !          16521:                                zend_error_noreturn(E_ERROR, "Function name must be a string");
        !          16522:                        } else {
        !          16523:                                function_name_strval = Z_STRVAL_P(function_name);
        !          16524:                                function_name_strlen = Z_STRLEN_P(function_name);
        !          16525:                        }
        !          16526:                }
        !          16527: 
        !          16528:                if (function_name_strval) {
        !          16529:                        if (ce->get_static_method) {
        !          16530:                                EX(fbc) = ce->get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          16531:                        } else {
        !          16532:                                EX(fbc) = zend_std_get_static_method(ce, function_name_strval, function_name_strlen TSRMLS_CC);
        !          16533:                        }
        !          16534:                        if (!EX(fbc)) {
        !          16535:                                zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", ce->name, function_name_strval);
        !          16536:                        }
        !          16537:                }
        !          16538: 
        !          16539:                if (IS_CV != IS_CONST) {
        !          16540: 
        !          16541:                }
        !          16542:        } else {
        !          16543:                if(!ce->constructor) {
        !          16544:                        zend_error_noreturn(E_ERROR, "Cannot call constructor");
        !          16545:                }
        !          16546:                if (EG(This) && Z_OBJCE_P(EG(This)) != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
        !          16547:                        zend_error(E_COMPILE_ERROR, "Cannot call private %s::__construct()", ce->name);
        !          16548:                }
        !          16549:                EX(fbc) = ce->constructor;
        !          16550:        }
        !          16551: 
        !          16552:        if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
        !          16553:                EX(object) = NULL;
        !          16554:        } else {
        !          16555:                if (EG(This) &&
        !          16556:                    Z_OBJ_HT_P(EG(This))->get_class_entry &&
        !          16557:                    !instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
        !          16558:                    /* We are calling method of the other (incompatible) class,
        !          16559:                       but passing $this. This is done for compatibility with php-4. */
        !          16560:                        int severity;
        !          16561:                        char *verb;
        !          16562:                        if (EX(fbc)->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
        !          16563:                                severity = E_STRICT;
        !          16564:                                verb = "should not";
        !          16565:                        } else {
        !          16566:                                /* An internal function assumes $this is present and won't check that. So PHP would crash by allowing the call. */
        !          16567:                                severity = E_ERROR;
        !          16568:                                verb = "cannot";
        !          16569:                        }
        !          16570:                        zend_error(severity, "Non-static method %s::%s() %s be called statically, assuming $this from incompatible context", EX(fbc)->common.scope->name, EX(fbc)->common.function_name, verb);
        !          16571: 
        !          16572:                }
        !          16573:                if ((EX(object) = EG(This))) {
        !          16574:                        Z_ADDREF_P(EX(object));
        !          16575:                        EX(called_scope) = Z_OBJCE_P(EX(object));
        !          16576:                }
        !          16577:        }
        !          16578: 
        !          16579:        ZEND_VM_NEXT_OPCODE();
        !          16580: }
        !          16581: 
        !          16582: static int ZEND_FASTCALL  ZEND_CASE_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16583: {
        !          16584:        zend_op *opline = EX(opline);
        !          16585:        int switch_expr_is_overloaded=0;
        !          16586:        zend_free_op free_op1;
        !          16587: 
        !          16588:        if (IS_VAR==IS_VAR) {
        !          16589:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          16590:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          16591:                } else {
        !          16592:                        switch_expr_is_overloaded = 1;
        !          16593:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          16594:                }
        !          16595:        }
        !          16596:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          16597:                                 _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
        !          16598:                                 _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          16599: 
        !          16600:        if (switch_expr_is_overloaded) {
        !          16601:                /* We only free op1 if this is a string offset,
        !          16602:                 * Since if it is a TMP_VAR, it'll be reused by
        !          16603:                 * other CASE opcodes (whereas string offsets
        !          16604:                 * are allocated at each get_zval_ptr())
        !          16605:                 */
        !          16606:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16607:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          16608:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          16609:        }
        !          16610:        ZEND_VM_NEXT_OPCODE();
        !          16611: }
        !          16612: 
        !          16613: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16614: {
        !          16615:        zend_op *opline = EX(opline);
        !          16616:        zend_free_op free_op1;
        !          16617:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          16618:        zval *expr_ptr;
        !          16619:        zval *offset=_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16620: 
        !          16621: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          16622:        zval **expr_ptr_ptr = NULL;
        !          16623: 
        !          16624:        if (opline->extended_value) {
        !          16625:                expr_ptr_ptr=_get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16626:                expr_ptr = *expr_ptr_ptr;
        !          16627:        } else {
        !          16628:                expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16629:        }
        !          16630: #else
        !          16631:        expr_ptr=_get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16632: #endif
        !          16633: 
        !          16634:        if (0) { /* temporary variable */
        !          16635:                zval *new_expr;
        !          16636: 
        !          16637:                ALLOC_ZVAL(new_expr);
        !          16638:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          16639:                expr_ptr = new_expr;
        !          16640:        } else {
        !          16641: #if 0 || IS_VAR == IS_VAR || IS_VAR == IS_CV
        !          16642:                if (opline->extended_value) {
        !          16643:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          16644:                        expr_ptr = *expr_ptr_ptr;
        !          16645:                        Z_ADDREF_P(expr_ptr);
        !          16646:                } else
        !          16647: #endif
        !          16648:                if (IS_VAR == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          16649:                        zval *new_expr;
        !          16650: 
        !          16651:                        ALLOC_ZVAL(new_expr);
        !          16652:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          16653:                        expr_ptr = new_expr;
        !          16654:                        zendi_zval_copy_ctor(*expr_ptr);
        !          16655:                } else {
        !          16656:                        Z_ADDREF_P(expr_ptr);
        !          16657:                }
        !          16658:        }
        !          16659:        if (offset) {
        !          16660:                switch (Z_TYPE_P(offset)) {
        !          16661:                        case IS_DOUBLE:
        !          16662:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          16663:                                break;
        !          16664:                        case IS_LONG:
        !          16665:                        case IS_BOOL:
        !          16666:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          16667:                                break;
        !          16668:                        case IS_STRING:
        !          16669:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          16670:                                break;
        !          16671:                        case IS_NULL:
        !          16672:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          16673:                                break;
        !          16674:                        default:
        !          16675:                                zend_error(E_WARNING, "Illegal offset type");
        !          16676:                                zval_ptr_dtor(&expr_ptr);
        !          16677:                                /* do nothing */
        !          16678:                                break;
        !          16679:                }
        !          16680: 
        !          16681:        } else {
        !          16682:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          16683:        }
        !          16684:        if (opline->extended_value) {
        !          16685:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16686:        } else {
        !          16687:                if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16688:        }
        !          16689:        ZEND_VM_NEXT_OPCODE();
        !          16690: }
        !          16691: 
        !          16692: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16693: {
        !          16694:        zend_op *opline = EX(opline);
        !          16695: 
        !          16696:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          16697:        if (IS_VAR == IS_UNUSED) {
        !          16698:                ZEND_VM_NEXT_OPCODE();
        !          16699: #if 0 || IS_VAR != IS_UNUSED
        !          16700:        } else {
        !          16701:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          16702: #endif
        !          16703:        }
        !          16704: }
        !          16705: 
        !          16706: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16707: {
        !          16708:        zend_op *opline = EX(opline);
        !          16709:        zend_free_op free_op1;
        !          16710:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16711:        zval *offset;
        !          16712: 
        !          16713:        if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          16714:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          16715:        }
        !          16716:        offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16717: 
        !          16718:        if (IS_VAR != IS_VAR || container) {
        !          16719:                switch (Z_TYPE_PP(container)) {
        !          16720:                        case IS_ARRAY: {
        !          16721:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          16722: 
        !          16723:                                switch (Z_TYPE_P(offset)) {
        !          16724:                                        case IS_DOUBLE:
        !          16725:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          16726:                                                break;
        !          16727:                                        case IS_RESOURCE:
        !          16728:                                        case IS_BOOL:
        !          16729:                                        case IS_LONG:
        !          16730:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          16731:                                                break;
        !          16732:                                        case IS_STRING:
        !          16733:                                                if (IS_CV == IS_CV || IS_CV == IS_VAR) {
        !          16734:                                                        Z_ADDREF_P(offset);
        !          16735:                                                }
        !          16736:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          16737:                                            ht == &EG(symbol_table)) {
        !          16738:                                                        zend_execute_data *ex;
        !          16739:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          16740: 
        !          16741:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          16742:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          16743:                                                                        int i;
        !          16744: 
        !          16745:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          16746:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          16747:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          16748:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          16749:                                                                                        ex->CVs[i] = NULL;
        !          16750:                                                                                        break;
        !          16751:                                                                                }
        !          16752:                                                                        }
        !          16753:                                                                }
        !          16754:                                                        }
        !          16755:                                                }
        !          16756:                                                if (IS_CV == IS_CV || IS_CV == IS_VAR) {
        !          16757:                                                        zval_ptr_dtor(&offset);
        !          16758:                                                }
        !          16759:                                                break;
        !          16760:                                        case IS_NULL:
        !          16761:                                                zend_hash_del(ht, "", sizeof(""));
        !          16762:                                                break;
        !          16763:                                        default:
        !          16764:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          16765:                                                break;
        !          16766:                                }
        !          16767: 
        !          16768:                                break;
        !          16769:                        }
        !          16770:                        case IS_OBJECT:
        !          16771:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          16772:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          16773:                                }
        !          16774:                                if (0) {
        !          16775:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          16776:                                }
        !          16777:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          16778:                                if (0) {
        !          16779:                                        zval_ptr_dtor(&offset);
        !          16780:                                } else {
        !          16781: 
        !          16782:                                }
        !          16783:                                break;
        !          16784:                        case IS_STRING:
        !          16785:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          16786:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          16787:                        default:
        !          16788: 
        !          16789:                                break;
        !          16790:                }
        !          16791:        } else {
        !          16792: 
        !          16793:        }
        !          16794:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16795: 
        !          16796:        ZEND_VM_NEXT_OPCODE();
        !          16797: }
        !          16798: 
        !          16799: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16800: {
        !          16801:        zend_op *opline = EX(opline);
        !          16802:        zend_free_op free_op1;
        !          16803:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16804:        zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16805: 
        !          16806:        if (IS_VAR != IS_VAR || container) {
        !          16807:                if (IS_VAR == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          16808:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          16809:                }
        !          16810:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          16811:                        if (0) {
        !          16812:                                MAKE_REAL_ZVAL_PTR(offset);
        !          16813:                        }
        !          16814:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          16815:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          16816:                        } else {
        !          16817:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          16818:                        }
        !          16819:                        if (0) {
        !          16820:                                zval_ptr_dtor(&offset);
        !          16821:                        } else {
        !          16822: 
        !          16823:                        }
        !          16824:                } else {
        !          16825: 
        !          16826:                }
        !          16827:        } else {
        !          16828: 
        !          16829:        }
        !          16830:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16831: 
        !          16832:        ZEND_VM_NEXT_OPCODE();
        !          16833: }
        !          16834: 
        !          16835: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CV(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          16836: {
        !          16837:        zend_op *opline = EX(opline);
        !          16838:        zend_free_op free_op1;
        !          16839:        zval **container = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
        !          16840:        zval **value = NULL;
        !          16841:        int result = 0;
        !          16842: 
        !          16843:        if (IS_VAR != IS_VAR || container) {
        !          16844: 
        !          16845:                zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          16846: 
        !          16847:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          16848:                        HashTable *ht;
        !          16849:                        int isset = 0;
        !          16850: 
        !          16851:                        ht = Z_ARRVAL_PP(container);
        !          16852: 
        !          16853:                        switch (Z_TYPE_P(offset)) {
        !          16854:                                case IS_DOUBLE:
        !          16855:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          16856:                                                isset = 1;
        !          16857:                                        }
        !          16858:                                        break;
        !          16859:                                case IS_RESOURCE:
        !          16860:                                case IS_BOOL:
        !          16861:                                case IS_LONG:
        !          16862:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          16863:                                                isset = 1;
        !          16864:                                        }
        !          16865:                                        break;
        !          16866:                                case IS_STRING:
        !          16867:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          16868:                                                isset = 1;
        !          16869:                                        }
        !          16870:                                        break;
        !          16871:                                case IS_NULL:
        !          16872:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          16873:                                                isset = 1;
        !          16874:                                        }
        !          16875:                                        break;
        !          16876:                                default:
        !          16877:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          16878: 
        !          16879:                                        break;
        !          16880:                        }
        !          16881: 
        !          16882:                        switch (opline->extended_value) {
        !          16883:                                case ZEND_ISSET:
        !          16884:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          16885:                                                result = 0;
        !          16886:                                        } else {
        !          16887:                                                result = isset;
        !          16888:                                        }
        !          16889:                                        break;
        !          16890:                                case ZEND_ISEMPTY:
        !          16891:                                        if (!isset || !i_zend_is_true(*value)) {
        !          16892:                                                result = 0;
        !          16893:                                        } else {
        !          16894:                                                result = 1;
        !          16895:                                        }
        !          16896:                                        break;
        !          16897:                        }
        !          16898: 
        !          16899:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          16900:                        if (0) {
        !          16901:                                MAKE_REAL_ZVAL_PTR(offset);
        !          16902:                        }
        !          16903:                        if (prop_dim) {
        !          16904:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          16905:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          16906:                                } else {
        !          16907:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          16908:                                        result = 0;
        !          16909:                                }
        !          16910:                        } else {
        !          16911:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          16912:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          16913:                                } else {
        !          16914:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          16915:                                        result = 0;
        !          16916:                                }
        !          16917:                        }
        !          16918:                        if (0) {
        !          16919:                                zval_ptr_dtor(&offset);
        !          16920:                        } else {
        !          16921: 
        !          16922:                        }
        !          16923:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          16924:                        zval tmp;
        !          16925: 
        !          16926:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          16927:                                tmp = *offset;
        !          16928:                                zval_copy_ctor(&tmp);
        !          16929:                                convert_to_long(&tmp);
        !          16930:                                offset = &tmp;
        !          16931:                        }
        !          16932:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          16933:                                switch (opline->extended_value) {
        !          16934:                                        case ZEND_ISSET:
        !          16935:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          16936:                                                        result = 1;
        !          16937:                                                }
        !          16938:                                                break;
        !          16939:                                        case ZEND_ISEMPTY:
        !          16940:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          16941:                                                        result = 1;
        !          16942:                                                }
        !          16943:                                                break;
        !          16944:                                }
        !          16945:                        }
        !          16946: 
        !          16947:                } else {
        !          16948: 
        !          16949:                }
        !          16950:        }
        !          16951: 
        !          16952:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          16953: 
        !          16954:        switch (opline->extended_value) {
        !          16955:                case ZEND_ISSET:
        !          16956:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          16957:                        break;
        !          16958:                case ZEND_ISEMPTY:
        !          16959:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          16960:                        break;
        !          16961:        }
        !          16962: 
        !          16963:        if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        !          16964: 
        !          16965:        ZEND_VM_NEXT_OPCODE();
        !          16966: }
        !          16967: 
        !          16968: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16969: {
        !          16970:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CV(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          16971: }
        !          16972: 
        !          16973: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16974: {
        !          16975:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_VAR_CV(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          16976: }
        !          16977: 
        !          16978: static int ZEND_FASTCALL  ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          16979: {
        !          16980:        zend_op *opline = EX(opline);
        !          16981: 
        !          16982:        zval *obj = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          16983:        zend_class_entry *ce;
        !          16984:        zend_function *clone;
        !          16985:        zend_object_clone_obj_t clone_call;
        !          16986: 
        !          16987:        if (IS_UNUSED == IS_CONST ||
        !          16988:            (IS_UNUSED == IS_VAR && !obj) ||
        !          16989:            Z_TYPE_P(obj) != IS_OBJECT) {
        !          16990:                zend_error_noreturn(E_ERROR, "__clone method called on non-object");
        !          16991:        }
        !          16992: 
        !          16993:        ce = Z_OBJCE_P(obj);
        !          16994:        clone = ce ? ce->clone : NULL;
        !          16995:        clone_call =  Z_OBJ_HT_P(obj)->clone_obj;
        !          16996:        if (!clone_call) {
        !          16997:                if (ce) {
        !          16998:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object of class %s", ce->name);
        !          16999:                } else {
        !          17000:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object");
        !          17001:                }
        !          17002:        }
        !          17003: 
        !          17004:        if (ce && clone) {
        !          17005:                if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
        !          17006:                        /* Ensure that if we're calling a private function, we're allowed to do so.
        !          17007:                         */
        !          17008:                        if (ce != EG(scope)) {
        !          17009:                                zend_error_noreturn(E_ERROR, "Call to private %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          17010:                        }
        !          17011:                } else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
        !          17012:                        /* Ensure that if we're calling a protected function, we're allowed to do so.
        !          17013:                         */
        !          17014:                        if (!zend_check_protected(clone->common.scope, EG(scope))) {
        !          17015:                                zend_error_noreturn(E_ERROR, "Call to protected %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          17016:                        }
        !          17017:                }
        !          17018:        }
        !          17019: 
        !          17020:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          17021:        if (!EG(exception)) {
        !          17022:                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          17023:                Z_OBJVAL_P(EX_T(opline->result.u.var).var.ptr) = clone_call(obj TSRMLS_CC);
        !          17024:                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_OBJECT;
        !          17025:                Z_SET_REFCOUNT_P(EX_T(opline->result.u.var).var.ptr, 1);
        !          17026:                Z_SET_ISREF_P(EX_T(opline->result.u.var).var.ptr);
        !          17027:                if (!RETURN_VALUE_USED(opline) || EG(exception)) {
        !          17028:                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
        !          17029:                }
        !          17030:        }
        !          17031: 
        !          17032:        ZEND_VM_NEXT_OPCODE();
        !          17033: }
        !          17034: 
        !          17035: static int ZEND_FASTCALL  ZEND_EXIT_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17036: {
        !          17037: #if 0 || (IS_UNUSED != IS_UNUSED)
        !          17038:        zend_op *opline = EX(opline);
        !          17039:        if (IS_UNUSED != IS_UNUSED) {
        !          17040: 
        !          17041:                zval *ptr = NULL;
        !          17042: 
        !          17043:                if (Z_TYPE_P(ptr) == IS_LONG) {
        !          17044:                        EG(exit_status) = Z_LVAL_P(ptr);
        !          17045:                } else {
        !          17046:                        zend_print_variable(ptr);
        !          17047:                }
        !          17048: 
        !          17049:        }
        !          17050: #endif
        !          17051:        zend_bailout();
        !          17052:        ZEND_VM_NEXT_OPCODE();
        !          17053: }
        !          17054: 
        !          17055: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          17056: {
        !          17057:        zend_op *opline = EX(opline);
        !          17058:        zend_op *op_data = opline+1;
        !          17059:        zend_free_op free_op_data1;
        !          17060:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17061:        zval *object;
        !          17062:        zval *property = &opline->op2.u.constant;
        !          17063:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          17064:        znode *result = &opline->result;
        !          17065:        int have_get_ptr = 0;
        !          17066: 
        !          17067:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          17068:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          17069:        }
        !          17070: 
        !          17071:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          17072:        make_real_object(object_ptr TSRMLS_CC);
        !          17073:        object = *object_ptr;
        !          17074: 
        !          17075:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          17076:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          17077: 
        !          17078:                FREE_OP(free_op_data1);
        !          17079: 
        !          17080:                if (!RETURN_VALUE_UNUSED(result)) {
        !          17081:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          17082:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          17083:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          17084:                }
        !          17085:        } else {
        !          17086:                /* here we are sure we are dealing with an object */
        !          17087:                if (0) {
        !          17088:                        MAKE_REAL_ZVAL_PTR(property);
        !          17089:                }
        !          17090: 
        !          17091:                /* here property is a string */
        !          17092:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          17093:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          17094:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          17095:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          17096:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          17097: 
        !          17098:                                have_get_ptr = 1;
        !          17099:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          17100:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          17101:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          17102:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          17103:                                        PZVAL_LOCK(*zptr);
        !          17104:                                }
        !          17105:                        }
        !          17106:                }
        !          17107: 
        !          17108:                if (!have_get_ptr) {
        !          17109:                        zval *z = NULL;
        !          17110: 
        !          17111:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          17112:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          17113:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          17114:                                }
        !          17115:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          17116:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          17117:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          17118:                                }
        !          17119:                        }
        !          17120:                        if (z) {
        !          17121:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          17122:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          17123: 
        !          17124:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          17125:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          17126:                                                zval_dtor(z);
        !          17127:                                                FREE_ZVAL(z);
        !          17128:                                        }
        !          17129:                                        z = value;
        !          17130:                                }
        !          17131:                                Z_ADDREF_P(z);
        !          17132:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          17133:                                binary_op(z, z, value TSRMLS_CC);
        !          17134:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          17135:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          17136:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          17137:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          17138:                                }
        !          17139:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          17140:                                        EX_T(result->u.var).var.ptr = z;
        !          17141:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          17142:                                        PZVAL_LOCK(z);
        !          17143:                                }
        !          17144:                                zval_ptr_dtor(&z);
        !          17145:                        } else {
        !          17146:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          17147:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          17148:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          17149:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          17150:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          17151:                                }
        !          17152:                        }
        !          17153:                }
        !          17154: 
        !          17155:                if (0) {
        !          17156:                        zval_ptr_dtor(&property);
        !          17157:                } else {
        !          17158: 
        !          17159:                }
        !          17160:                FREE_OP(free_op_data1);
        !          17161:        }
        !          17162: 
        !          17163:        /* assign_obj has two opcodes! */
        !          17164:        ZEND_VM_INC_OPCODE();
        !          17165:        ZEND_VM_NEXT_OPCODE();
        !          17166: }
        !          17167: 
        !          17168: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_UNUSED_CONST(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          17169: {
        !          17170:        zend_op *opline = EX(opline);
        !          17171:        zend_free_op free_op_data2, free_op_data1;
        !          17172:        zval **var_ptr;
        !          17173:        zval *value;
        !          17174: 
        !          17175:        switch (opline->extended_value) {
        !          17176:                case ZEND_ASSIGN_OBJ:
        !          17177:                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17178:                        break;
        !          17179:                case ZEND_ASSIGN_DIM: {
        !          17180:                                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17181: 
        !          17182:                                if (IS_UNUSED == IS_VAR && !container) {
        !          17183:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          17184:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          17185:                                        if (IS_UNUSED == IS_VAR && !0) {
        !          17186:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          17187:                                        }
        !          17188:                                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17189:                                } else {
        !          17190:                                        zend_op *op_data = opline+1;
        !          17191:                                        zval *dim = &opline->op2.u.constant;
        !          17192: 
        !          17193:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          17194:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          17195:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          17196:                                        ZEND_VM_INC_OPCODE();
        !          17197:                                }
        !          17198:                        }
        !          17199:                        break;
        !          17200:                default:
        !          17201:                        value = &opline->op2.u.constant;
        !          17202:                        var_ptr = NULL;
        !          17203:                        /* do nothing */
        !          17204:                        break;
        !          17205:        }
        !          17206: 
        !          17207:        if (!var_ptr) {
        !          17208:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          17209:        }
        !          17210: 
        !          17211:        if (*var_ptr == EG(error_zval_ptr)) {
        !          17212:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          17213:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          17214:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          17215:                }
        !          17216: 
        !          17217: 
        !          17218:                ZEND_VM_NEXT_OPCODE();
        !          17219:        }
        !          17220: 
        !          17221:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          17222: 
        !          17223:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          17224:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          17225:                /* proxy object */
        !          17226:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          17227:                Z_ADDREF_P(objval);
        !          17228:                binary_op(objval, objval, value TSRMLS_CC);
        !          17229:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          17230:                zval_ptr_dtor(&objval);
        !          17231:        } else {
        !          17232:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          17233:        }
        !          17234: 
        !          17235:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          17236:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          17237:                PZVAL_LOCK(*var_ptr);
        !          17238:        }
        !          17239: 
        !          17240:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          17241:                FREE_OP(free_op_data1);
        !          17242:                FREE_OP_VAR_PTR(free_op_data2);
        !          17243:        }
        !          17244: 
        !          17245:        ZEND_VM_NEXT_OPCODE();
        !          17246: }
        !          17247: 
        !          17248: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17249: {
        !          17250:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17251: }
        !          17252: 
        !          17253: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17254: {
        !          17255:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17256: }
        !          17257: 
        !          17258: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17259: {
        !          17260:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17261: }
        !          17262: 
        !          17263: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17264: {
        !          17265:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17266: }
        !          17267: 
        !          17268: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17269: {
        !          17270:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17271: }
        !          17272: 
        !          17273: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17274: {
        !          17275:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17276: }
        !          17277: 
        !          17278: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17279: {
        !          17280:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17281: }
        !          17282: 
        !          17283: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17284: {
        !          17285:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17286: }
        !          17287: 
        !          17288: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17289: {
        !          17290:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17291: }
        !          17292: 
        !          17293: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17294: {
        !          17295:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17296: }
        !          17297: 
        !          17298: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17299: {
        !          17300:        return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17301: }
        !          17302: 
        !          17303: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          17304: {
        !          17305:        zend_op *opline = EX(opline);
        !          17306: 
        !          17307:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17308:        zval *object;
        !          17309:        zval *property = &opline->op2.u.constant;
        !          17310:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          17311:        int have_get_ptr = 0;
        !          17312: 
        !          17313:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          17314:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          17315:        }
        !          17316: 
        !          17317:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          17318:        object = *object_ptr;
        !          17319: 
        !          17320:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          17321:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          17322: 
        !          17323:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          17324:                        *retval = EG(uninitialized_zval_ptr);
        !          17325:                        PZVAL_LOCK(*retval);
        !          17326:                }
        !          17327: 
        !          17328:                ZEND_VM_NEXT_OPCODE();
        !          17329:        }
        !          17330: 
        !          17331:        /* here we are sure we are dealing with an object */
        !          17332: 
        !          17333:        if (0) {
        !          17334:                MAKE_REAL_ZVAL_PTR(property);
        !          17335:        }
        !          17336: 
        !          17337:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          17338:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          17339:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          17340:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          17341: 
        !          17342:                        have_get_ptr = 1;
        !          17343:                        incdec_op(*zptr);
        !          17344:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          17345:                                *retval = *zptr;
        !          17346:                                PZVAL_LOCK(*retval);
        !          17347:                        }
        !          17348:                }
        !          17349:        }
        !          17350: 
        !          17351:        if (!have_get_ptr) {
        !          17352:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          17353:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          17354: 
        !          17355:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          17356:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          17357: 
        !          17358:                                if (Z_REFCOUNT_P(z) == 0) {
        !          17359:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          17360:                                        zval_dtor(z);
        !          17361:                                        FREE_ZVAL(z);
        !          17362:                                }
        !          17363:                                z = value;
        !          17364:                        }
        !          17365:                        Z_ADDREF_P(z);
        !          17366:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          17367:                        incdec_op(z);
        !          17368:                        *retval = z;
        !          17369:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          17370:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          17371:                        zval_ptr_dtor(&z);
        !          17372:                } else {
        !          17373:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          17374:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          17375:                                *retval = EG(uninitialized_zval_ptr);
        !          17376:                                PZVAL_LOCK(*retval);
        !          17377:                        }
        !          17378:                }
        !          17379:        }
        !          17380: 
        !          17381:        if (0) {
        !          17382:                zval_ptr_dtor(&property);
        !          17383:        } else {
        !          17384: 
        !          17385:        }
        !          17386: 
        !          17387:        ZEND_VM_NEXT_OPCODE();
        !          17388: }
        !          17389: 
        !          17390: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17391: {
        !          17392:        return zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17393: }
        !          17394: 
        !          17395: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17396: {
        !          17397:        return zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17398: }
        !          17399: 
        !          17400: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          17401: {
        !          17402:        zend_op *opline = EX(opline);
        !          17403: 
        !          17404:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17405:        zval *object;
        !          17406:        zval *property = &opline->op2.u.constant;
        !          17407:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          17408:        int have_get_ptr = 0;
        !          17409: 
        !          17410:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          17411:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          17412:        }
        !          17413: 
        !          17414:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          17415:        object = *object_ptr;
        !          17416: 
        !          17417:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          17418:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          17419: 
        !          17420:                *retval = *EG(uninitialized_zval_ptr);
        !          17421: 
        !          17422:                ZEND_VM_NEXT_OPCODE();
        !          17423:        }
        !          17424: 
        !          17425:        /* here we are sure we are dealing with an object */
        !          17426: 
        !          17427:        if (0) {
        !          17428:                MAKE_REAL_ZVAL_PTR(property);
        !          17429:        }
        !          17430: 
        !          17431:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          17432:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          17433:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          17434:                        have_get_ptr = 1;
        !          17435:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          17436: 
        !          17437:                        *retval = **zptr;
        !          17438:                        zendi_zval_copy_ctor(*retval);
        !          17439: 
        !          17440:                        incdec_op(*zptr);
        !          17441: 
        !          17442:                }
        !          17443:        }
        !          17444: 
        !          17445:        if (!have_get_ptr) {
        !          17446:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          17447:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          17448:                        zval *z_copy;
        !          17449: 
        !          17450:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          17451:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          17452: 
        !          17453:                                if (Z_REFCOUNT_P(z) == 0) {
        !          17454:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          17455:                                        zval_dtor(z);
        !          17456:                                        FREE_ZVAL(z);
        !          17457:                                }
        !          17458:                                z = value;
        !          17459:                        }
        !          17460:                        *retval = *z;
        !          17461:                        zendi_zval_copy_ctor(*retval);
        !          17462:                        ALLOC_ZVAL(z_copy);
        !          17463:                        *z_copy = *z;
        !          17464:                        zendi_zval_copy_ctor(*z_copy);
        !          17465:                        INIT_PZVAL(z_copy);
        !          17466:                        incdec_op(z_copy);
        !          17467:                        Z_ADDREF_P(z);
        !          17468:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          17469:                        zval_ptr_dtor(&z_copy);
        !          17470:                        zval_ptr_dtor(&z);
        !          17471:                } else {
        !          17472:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          17473:                        *retval = *EG(uninitialized_zval_ptr);
        !          17474:                }
        !          17475:        }
        !          17476: 
        !          17477:        if (0) {
        !          17478:                zval_ptr_dtor(&property);
        !          17479:        } else {
        !          17480: 
        !          17481:        }
        !          17482: 
        !          17483:        ZEND_VM_NEXT_OPCODE();
        !          17484: }
        !          17485: 
        !          17486: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17487: {
        !          17488:        return zend_post_incdec_property_helper_SPEC_UNUSED_CONST(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17489: }
        !          17490: 
        !          17491: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17492: {
        !          17493:        return zend_post_incdec_property_helper_SPEC_UNUSED_CONST(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17494: }
        !          17495: 
        !          17496: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_UNUSED_CONST(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          17497: {
        !          17498:        zend_op *opline = EX(opline);
        !          17499: 
        !          17500:        zval *container = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          17501: 
        !          17502:        zval *offset  = &opline->op2.u.constant;
        !          17503: 
        !          17504:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          17505:                if (type != BP_VAR_IS) {
        !          17506:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          17507:                }
        !          17508:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          17509:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          17510:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          17511:                }
        !          17512: 
        !          17513:        } else {
        !          17514:                zval *retval;
        !          17515: 
        !          17516:                if (0) {
        !          17517:                        MAKE_REAL_ZVAL_PTR(offset);
        !          17518:                }
        !          17519: 
        !          17520:                /* here we are sure we are dealing with an object */
        !          17521:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          17522: 
        !          17523:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          17524:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          17525:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          17526:                                zval_dtor(retval);
        !          17527:                                FREE_ZVAL(retval);
        !          17528:                        }
        !          17529:                } else {
        !          17530:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          17531:                        PZVAL_LOCK(retval);
        !          17532:                }
        !          17533: 
        !          17534:                if (0) {
        !          17535:                        zval_ptr_dtor(&offset);
        !          17536:                } else {
        !          17537: 
        !          17538:                }
        !          17539:        }
        !          17540: 
        !          17541:        ZEND_VM_NEXT_OPCODE();
        !          17542: }
        !          17543: 
        !          17544: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17545: {
        !          17546:        return zend_fetch_property_address_read_helper_SPEC_UNUSED_CONST(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17547: }
        !          17548: 
        !          17549: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17550: {
        !          17551:        zend_op *opline = EX(opline);
        !          17552:        zend_free_op free_op1;
        !          17553:        zval *property = &opline->op2.u.constant;
        !          17554:        zval **container;
        !          17555: 
        !          17556:        if (IS_UNUSED == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          17557:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          17558:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          17559:        }
        !          17560: 
        !          17561:        if (0) {
        !          17562:                MAKE_REAL_ZVAL_PTR(property);
        !          17563:        }
        !          17564:        container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17565:        if (IS_UNUSED == IS_VAR && !container) {
        !          17566:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          17567:        }
        !          17568:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          17569:        if (0) {
        !          17570:                zval_ptr_dtor(&property);
        !          17571:        } else {
        !          17572: 
        !          17573:        }
        !          17574:        if (IS_UNUSED == IS_VAR && 0 &&
        !          17575:            READY_TO_DESTROY(free_op1.var)) {
        !          17576:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          17577:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          17578:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          17579:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          17580:                }
        !          17581:        }
        !          17582: 
        !          17583:        /* We are going to assign the result by reference */
        !          17584:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          17585:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          17586:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          17587:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          17588:        }
        !          17589: 
        !          17590:        ZEND_VM_NEXT_OPCODE();
        !          17591: }
        !          17592: 
        !          17593: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17594: {
        !          17595:        zend_op *opline = EX(opline);
        !          17596:        zend_free_op free_op1;
        !          17597:        zval *property = &opline->op2.u.constant;
        !          17598:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17599: 
        !          17600:        if (0) {
        !          17601:                MAKE_REAL_ZVAL_PTR(property);
        !          17602:        }
        !          17603:        if (IS_UNUSED == IS_VAR && !container) {
        !          17604:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          17605:        }
        !          17606:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          17607:        if (0) {
        !          17608:                zval_ptr_dtor(&property);
        !          17609:        } else {
        !          17610: 
        !          17611:        }
        !          17612:        if (IS_UNUSED == IS_VAR && 0 &&
        !          17613:            READY_TO_DESTROY(free_op1.var)) {
        !          17614:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          17615:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          17616:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          17617:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          17618:                }
        !          17619:        }
        !          17620: 
        !          17621:        ZEND_VM_NEXT_OPCODE();
        !          17622: }
        !          17623: 
        !          17624: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17625: {
        !          17626:        return zend_fetch_property_address_read_helper_SPEC_UNUSED_CONST(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17627: }
        !          17628: 
        !          17629: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17630: {
        !          17631:        zend_op *opline = EX(opline);
        !          17632: 
        !          17633:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          17634:                /* Behave like FETCH_OBJ_W */
        !          17635:                zend_free_op free_op1;
        !          17636:                zval *property = &opline->op2.u.constant;
        !          17637:                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17638: 
        !          17639:                if (0) {
        !          17640:                        MAKE_REAL_ZVAL_PTR(property);
        !          17641:                }
        !          17642:                if (IS_UNUSED == IS_VAR && !container) {
        !          17643:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          17644:                }
        !          17645:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          17646:                if (0) {
        !          17647:                        zval_ptr_dtor(&property);
        !          17648:                } else {
        !          17649: 
        !          17650:                }
        !          17651:                if (IS_UNUSED == IS_VAR && 0 &&
        !          17652:                    READY_TO_DESTROY(free_op1.var)) {
        !          17653:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          17654:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          17655:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          17656:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          17657:                        }
        !          17658:                }
        !          17659: 
        !          17660:                ZEND_VM_NEXT_OPCODE();
        !          17661:        } else {
        !          17662:                return zend_fetch_property_address_read_helper_SPEC_UNUSED_CONST(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17663:        }
        !          17664: }
        !          17665: 
        !          17666: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17667: {
        !          17668:        zend_op *opline = EX(opline);
        !          17669:        zend_free_op free_op1, free_res;
        !          17670:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17671:        zval *property = &opline->op2.u.constant;
        !          17672: 
        !          17673:        if (IS_UNUSED == IS_CV) {
        !          17674:                if (container != &EG(uninitialized_zval_ptr)) {
        !          17675:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          17676:                }
        !          17677:        }
        !          17678:        if (0) {
        !          17679:                MAKE_REAL_ZVAL_PTR(property);
        !          17680:        }
        !          17681:        if (IS_UNUSED == IS_VAR && !container) {
        !          17682:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          17683:        }
        !          17684:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          17685:        if (0) {
        !          17686:                zval_ptr_dtor(&property);
        !          17687:        } else {
        !          17688: 
        !          17689:        }
        !          17690:        if (IS_UNUSED == IS_VAR && 0 &&
        !          17691:            READY_TO_DESTROY(free_op1.var)) {
        !          17692:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          17693:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          17694:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          17695:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          17696:                }
        !          17697:        }
        !          17698: 
        !          17699:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          17700:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          17701:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          17702:        }
        !          17703:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          17704:        FREE_OP_VAR_PTR(free_res);
        !          17705:        ZEND_VM_NEXT_OPCODE();
        !          17706: }
        !          17707: 
        !          17708: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17709: {
        !          17710:        zend_op *opline = EX(opline);
        !          17711:        zend_op *op_data = opline+1;
        !          17712: 
        !          17713:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17714:        zval *property_name = &opline->op2.u.constant;
        !          17715: 
        !          17716:        if (0) {
        !          17717:                MAKE_REAL_ZVAL_PTR(property_name);
        !          17718:        }
        !          17719:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          17720:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          17721:        }
        !          17722:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          17723:        if (0) {
        !          17724:                zval_ptr_dtor(&property_name);
        !          17725:        } else {
        !          17726: 
        !          17727:        }
        !          17728: 
        !          17729:        /* assign_obj has two opcodes! */
        !          17730:        ZEND_VM_INC_OPCODE();
        !          17731:        ZEND_VM_NEXT_OPCODE();
        !          17732: }
        !          17733: 
        !          17734: static int ZEND_FASTCALL  ZEND_ADD_CHAR_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17735: {
        !          17736:        zend_op *opline = EX(opline);
        !          17737:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          17738: 
        !          17739:        if (IS_UNUSED == IS_UNUSED) {
        !          17740:                /* Initialize for erealloc in add_char_to_string */
        !          17741:                Z_STRVAL_P(str) = NULL;
        !          17742:                Z_STRLEN_P(str) = 0;
        !          17743:                Z_TYPE_P(str) = IS_STRING;
        !          17744: 
        !          17745:                INIT_PZVAL(str);
        !          17746:        }
        !          17747: 
        !          17748:        add_char_to_string(str, str, &opline->op2.u.constant);
        !          17749: 
        !          17750:        /* FREE_OP is missing intentionally here - we're always working on the same temporary variable */
        !          17751:        ZEND_VM_NEXT_OPCODE();
        !          17752: }
        !          17753: 
        !          17754: static int ZEND_FASTCALL  ZEND_ADD_STRING_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17755: {
        !          17756:        zend_op *opline = EX(opline);
        !          17757:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          17758: 
        !          17759:        if (IS_UNUSED == IS_UNUSED) {
        !          17760:                /* Initialize for erealloc in add_string_to_string */
        !          17761:                Z_STRVAL_P(str) = NULL;
        !          17762:                Z_STRLEN_P(str) = 0;
        !          17763:                Z_TYPE_P(str) = IS_STRING;
        !          17764: 
        !          17765:                INIT_PZVAL(str);
        !          17766:        }
        !          17767: 
        !          17768:        add_string_to_string(str, str, &opline->op2.u.constant);
        !          17769: 
        !          17770:        /* FREE_OP is missing intentionally here - we're always working on the same temporary variable */
        !          17771:        ZEND_VM_NEXT_OPCODE();
        !          17772: }
        !          17773: 
        !          17774: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17775: {
        !          17776:        zend_op *opline = EX(opline);
        !          17777:        zval *function_name;
        !          17778:        char *function_name_strval;
        !          17779:        int function_name_strlen;
        !          17780: 
        !          17781: 
        !          17782:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          17783: 
        !          17784:        function_name = &opline->op2.u.constant;
        !          17785: 
        !          17786:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          17787:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          17788:        }
        !          17789: 
        !          17790:        function_name_strval = Z_STRVAL_P(function_name);
        !          17791:        function_name_strlen = Z_STRLEN_P(function_name);
        !          17792: 
        !          17793:        EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          17794: 
        !          17795:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          17796:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          17797:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          17798:                }
        !          17799: 
        !          17800:                /* First, locate the function. */
        !          17801:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          17802:                if (!EX(fbc)) {
        !          17803:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          17804:                }
        !          17805: 
        !          17806:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          17807:        } else {
        !          17808:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          17809:        }
        !          17810: 
        !          17811:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          17812:                EX(object) = NULL;
        !          17813:        } else {
        !          17814:                if (!PZVAL_IS_REF(EX(object))) {
        !          17815:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          17816:                } else {
        !          17817:                        zval *this_ptr;
        !          17818:                        ALLOC_ZVAL(this_ptr);
        !          17819:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          17820:                        zval_copy_ctor(this_ptr);
        !          17821:                        EX(object) = this_ptr;
        !          17822:                }
        !          17823:        }
        !          17824: 
        !          17825: 
        !          17826:        ZEND_VM_NEXT_OPCODE();
        !          17827: }
        !          17828: 
        !          17829: static int ZEND_FASTCALL  ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17830: {
        !          17831:        zend_op *opline = EX(opline);
        !          17832: 
        !          17833:        if (IS_UNUSED == IS_UNUSED) {
        !          17834:                /* namespaced constant */
        !          17835:                if (!zend_get_constant_ex(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) {
        !          17836:                        if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
        !          17837:                                char *actual = (char *)zend_memrchr(Z_STRVAL(opline->op2.u.constant), '\\', Z_STRLEN(opline->op2.u.constant));
        !          17838:                                if(!actual) {
        !          17839:                                        actual = Z_STRVAL(opline->op2.u.constant);
        !          17840:                                } else {
        !          17841:                                        actual++;
        !          17842:                                }
        !          17843:                                /* non-qualified constant - allow text substitution */
        !          17844:                                zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", actual, actual);
        !          17845:                                ZVAL_STRINGL(&EX_T(opline->result.u.var).tmp_var, actual, Z_STRLEN(opline->op2.u.constant)-(actual - Z_STRVAL(opline->op2.u.constant)), 1);
        !          17846:                        } else {
        !          17847:                                zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
        !          17848:                                                        Z_STRVAL(opline->op2.u.constant), Z_STRVAL(opline->op2.u.constant));
        !          17849:                        }
        !          17850:                }
        !          17851:                ZEND_VM_NEXT_OPCODE();
        !          17852:        } else {
        !          17853:                /* class constant */
        !          17854:                zend_class_entry *ce;
        !          17855:                zval **value;
        !          17856: 
        !          17857:                if (IS_UNUSED == IS_CONST) {
        !          17858: 
        !          17859:                        ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
        !          17860:                        if (!ce) {
        !          17861:                                zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
        !          17862:                        }
        !          17863:                } else {
        !          17864:                        ce = EX_T(opline->op1.u.var).class_entry;
        !          17865:                }
        !          17866: 
        !          17867:                if (zend_hash_find(&ce->constants_table, Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void **) &value) == SUCCESS) {
        !          17868:                        if (Z_TYPE_PP(value) == IS_CONSTANT_ARRAY ||
        !          17869:                            (Z_TYPE_PP(value) & IS_CONSTANT_TYPE_MASK) == IS_CONSTANT) {
        !          17870:                                zend_class_entry *old_scope = EG(scope);
        !          17871: 
        !          17872:                                EG(scope) = ce;
        !          17873:                                zval_update_constant(value, (void *) 1 TSRMLS_CC);
        !          17874:                                EG(scope) = old_scope;
        !          17875:                        }
        !          17876:                        EX_T(opline->result.u.var).tmp_var = **value;
        !          17877:                        zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var);
        !          17878:                } else {
        !          17879:                        zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
        !          17880:                }
        !          17881: 
        !          17882:                ZEND_VM_NEXT_OPCODE();
        !          17883:        }
        !          17884: }
        !          17885: 
        !          17886: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17887: {
        !          17888:        zend_op *opline = EX(opline);
        !          17889: 
        !          17890:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          17891:        if (IS_UNUSED == IS_UNUSED) {
        !          17892:                ZEND_VM_NEXT_OPCODE();
        !          17893: #if 0 || IS_UNUSED != IS_UNUSED
        !          17894:        } else {
        !          17895:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          17896: #endif
        !          17897:        }
        !          17898: }
        !          17899: 
        !          17900: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17901: {
        !          17902:        zend_op *opline = EX(opline);
        !          17903: 
        !          17904:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17905:        zval *offset;
        !          17906: 
        !          17907:        if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          17908:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          17909:        }
        !          17910:        offset = &opline->op2.u.constant;
        !          17911: 
        !          17912:        if (IS_UNUSED != IS_VAR || container) {
        !          17913:                switch (Z_TYPE_PP(container)) {
        !          17914:                        case IS_ARRAY: {
        !          17915:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          17916: 
        !          17917:                                switch (Z_TYPE_P(offset)) {
        !          17918:                                        case IS_DOUBLE:
        !          17919:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          17920:                                                break;
        !          17921:                                        case IS_RESOURCE:
        !          17922:                                        case IS_BOOL:
        !          17923:                                        case IS_LONG:
        !          17924:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          17925:                                                break;
        !          17926:                                        case IS_STRING:
        !          17927:                                                if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
        !          17928:                                                        Z_ADDREF_P(offset);
        !          17929:                                                }
        !          17930:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          17931:                                            ht == &EG(symbol_table)) {
        !          17932:                                                        zend_execute_data *ex;
        !          17933:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          17934: 
        !          17935:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          17936:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          17937:                                                                        int i;
        !          17938: 
        !          17939:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          17940:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          17941:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          17942:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          17943:                                                                                        ex->CVs[i] = NULL;
        !          17944:                                                                                        break;
        !          17945:                                                                                }
        !          17946:                                                                        }
        !          17947:                                                                }
        !          17948:                                                        }
        !          17949:                                                }
        !          17950:                                                if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
        !          17951:                                                        zval_ptr_dtor(&offset);
        !          17952:                                                }
        !          17953:                                                break;
        !          17954:                                        case IS_NULL:
        !          17955:                                                zend_hash_del(ht, "", sizeof(""));
        !          17956:                                                break;
        !          17957:                                        default:
        !          17958:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          17959:                                                break;
        !          17960:                                }
        !          17961: 
        !          17962:                                break;
        !          17963:                        }
        !          17964:                        case IS_OBJECT:
        !          17965:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          17966:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          17967:                                }
        !          17968:                                if (0) {
        !          17969:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          17970:                                }
        !          17971:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          17972:                                if (0) {
        !          17973:                                        zval_ptr_dtor(&offset);
        !          17974:                                } else {
        !          17975: 
        !          17976:                                }
        !          17977:                                break;
        !          17978:                        case IS_STRING:
        !          17979:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          17980:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          17981:                        default:
        !          17982: 
        !          17983:                                break;
        !          17984:                }
        !          17985:        } else {
        !          17986: 
        !          17987:        }
        !          17988: 
        !          17989:        ZEND_VM_NEXT_OPCODE();
        !          17990: }
        !          17991: 
        !          17992: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          17993: {
        !          17994:        zend_op *opline = EX(opline);
        !          17995: 
        !          17996:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          17997:        zval *offset = &opline->op2.u.constant;
        !          17998: 
        !          17999:        if (IS_UNUSED != IS_VAR || container) {
        !          18000:                if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          18001:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          18002:                }
        !          18003:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          18004:                        if (0) {
        !          18005:                                MAKE_REAL_ZVAL_PTR(offset);
        !          18006:                        }
        !          18007:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          18008:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          18009:                        } else {
        !          18010:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          18011:                        }
        !          18012:                        if (0) {
        !          18013:                                zval_ptr_dtor(&offset);
        !          18014:                        } else {
        !          18015: 
        !          18016:                        }
        !          18017:                } else {
        !          18018: 
        !          18019:                }
        !          18020:        } else {
        !          18021: 
        !          18022:        }
        !          18023: 
        !          18024:        ZEND_VM_NEXT_OPCODE();
        !          18025: }
        !          18026: 
        !          18027: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CONST(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          18028: {
        !          18029:        zend_op *opline = EX(opline);
        !          18030: 
        !          18031:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18032:        zval **value = NULL;
        !          18033:        int result = 0;
        !          18034: 
        !          18035:        if (IS_UNUSED != IS_VAR || container) {
        !          18036: 
        !          18037:                zval *offset = &opline->op2.u.constant;
        !          18038: 
        !          18039:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          18040:                        HashTable *ht;
        !          18041:                        int isset = 0;
        !          18042: 
        !          18043:                        ht = Z_ARRVAL_PP(container);
        !          18044: 
        !          18045:                        switch (Z_TYPE_P(offset)) {
        !          18046:                                case IS_DOUBLE:
        !          18047:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          18048:                                                isset = 1;
        !          18049:                                        }
        !          18050:                                        break;
        !          18051:                                case IS_RESOURCE:
        !          18052:                                case IS_BOOL:
        !          18053:                                case IS_LONG:
        !          18054:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          18055:                                                isset = 1;
        !          18056:                                        }
        !          18057:                                        break;
        !          18058:                                case IS_STRING:
        !          18059:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          18060:                                                isset = 1;
        !          18061:                                        }
        !          18062:                                        break;
        !          18063:                                case IS_NULL:
        !          18064:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          18065:                                                isset = 1;
        !          18066:                                        }
        !          18067:                                        break;
        !          18068:                                default:
        !          18069:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          18070: 
        !          18071:                                        break;
        !          18072:                        }
        !          18073: 
        !          18074:                        switch (opline->extended_value) {
        !          18075:                                case ZEND_ISSET:
        !          18076:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          18077:                                                result = 0;
        !          18078:                                        } else {
        !          18079:                                                result = isset;
        !          18080:                                        }
        !          18081:                                        break;
        !          18082:                                case ZEND_ISEMPTY:
        !          18083:                                        if (!isset || !i_zend_is_true(*value)) {
        !          18084:                                                result = 0;
        !          18085:                                        } else {
        !          18086:                                                result = 1;
        !          18087:                                        }
        !          18088:                                        break;
        !          18089:                        }
        !          18090: 
        !          18091:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          18092:                        if (0) {
        !          18093:                                MAKE_REAL_ZVAL_PTR(offset);
        !          18094:                        }
        !          18095:                        if (prop_dim) {
        !          18096:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          18097:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          18098:                                } else {
        !          18099:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          18100:                                        result = 0;
        !          18101:                                }
        !          18102:                        } else {
        !          18103:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          18104:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          18105:                                } else {
        !          18106:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          18107:                                        result = 0;
        !          18108:                                }
        !          18109:                        }
        !          18110:                        if (0) {
        !          18111:                                zval_ptr_dtor(&offset);
        !          18112:                        } else {
        !          18113: 
        !          18114:                        }
        !          18115:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          18116:                        zval tmp;
        !          18117: 
        !          18118:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          18119:                                tmp = *offset;
        !          18120:                                zval_copy_ctor(&tmp);
        !          18121:                                convert_to_long(&tmp);
        !          18122:                                offset = &tmp;
        !          18123:                        }
        !          18124:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          18125:                                switch (opline->extended_value) {
        !          18126:                                        case ZEND_ISSET:
        !          18127:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          18128:                                                        result = 1;
        !          18129:                                                }
        !          18130:                                                break;
        !          18131:                                        case ZEND_ISEMPTY:
        !          18132:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          18133:                                                        result = 1;
        !          18134:                                                }
        !          18135:                                                break;
        !          18136:                                }
        !          18137:                        }
        !          18138: 
        !          18139:                } else {
        !          18140: 
        !          18141:                }
        !          18142:        }
        !          18143: 
        !          18144:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          18145: 
        !          18146:        switch (opline->extended_value) {
        !          18147:                case ZEND_ISSET:
        !          18148:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          18149:                        break;
        !          18150:                case ZEND_ISEMPTY:
        !          18151:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          18152:                        break;
        !          18153:        }
        !          18154: 
        !          18155:        ZEND_VM_NEXT_OPCODE();
        !          18156: }
        !          18157: 
        !          18158: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18159: {
        !          18160:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CONST(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18161: }
        !          18162: 
        !          18163: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18164: {
        !          18165:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CONST(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18166: }
        !          18167: 
        !          18168: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMP(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          18169: {
        !          18170:        zend_op *opline = EX(opline);
        !          18171:        zend_op *op_data = opline+1;
        !          18172:        zend_free_op free_op2, free_op_data1;
        !          18173:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18174:        zval *object;
        !          18175:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18176:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          18177:        znode *result = &opline->result;
        !          18178:        int have_get_ptr = 0;
        !          18179: 
        !          18180:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          18181:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          18182:        }
        !          18183: 
        !          18184:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          18185:        make_real_object(object_ptr TSRMLS_CC);
        !          18186:        object = *object_ptr;
        !          18187: 
        !          18188:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          18189:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          18190:                zval_dtor(free_op2.var);
        !          18191:                FREE_OP(free_op_data1);
        !          18192: 
        !          18193:                if (!RETURN_VALUE_UNUSED(result)) {
        !          18194:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          18195:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          18196:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          18197:                }
        !          18198:        } else {
        !          18199:                /* here we are sure we are dealing with an object */
        !          18200:                if (1) {
        !          18201:                        MAKE_REAL_ZVAL_PTR(property);
        !          18202:                }
        !          18203: 
        !          18204:                /* here property is a string */
        !          18205:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          18206:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          18207:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          18208:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          18209:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          18210: 
        !          18211:                                have_get_ptr = 1;
        !          18212:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          18213:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          18214:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          18215:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          18216:                                        PZVAL_LOCK(*zptr);
        !          18217:                                }
        !          18218:                        }
        !          18219:                }
        !          18220: 
        !          18221:                if (!have_get_ptr) {
        !          18222:                        zval *z = NULL;
        !          18223: 
        !          18224:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          18225:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          18226:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          18227:                                }
        !          18228:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          18229:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          18230:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          18231:                                }
        !          18232:                        }
        !          18233:                        if (z) {
        !          18234:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          18235:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          18236: 
        !          18237:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          18238:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          18239:                                                zval_dtor(z);
        !          18240:                                                FREE_ZVAL(z);
        !          18241:                                        }
        !          18242:                                        z = value;
        !          18243:                                }
        !          18244:                                Z_ADDREF_P(z);
        !          18245:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          18246:                                binary_op(z, z, value TSRMLS_CC);
        !          18247:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          18248:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          18249:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          18250:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          18251:                                }
        !          18252:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          18253:                                        EX_T(result->u.var).var.ptr = z;
        !          18254:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          18255:                                        PZVAL_LOCK(z);
        !          18256:                                }
        !          18257:                                zval_ptr_dtor(&z);
        !          18258:                        } else {
        !          18259:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          18260:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          18261:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          18262:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          18263:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          18264:                                }
        !          18265:                        }
        !          18266:                }
        !          18267: 
        !          18268:                if (1) {
        !          18269:                        zval_ptr_dtor(&property);
        !          18270:                } else {
        !          18271:                        zval_dtor(free_op2.var);
        !          18272:                }
        !          18273:                FREE_OP(free_op_data1);
        !          18274:        }
        !          18275: 
        !          18276:        /* assign_obj has two opcodes! */
        !          18277:        ZEND_VM_INC_OPCODE();
        !          18278:        ZEND_VM_NEXT_OPCODE();
        !          18279: }
        !          18280: 
        !          18281: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_UNUSED_TMP(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          18282: {
        !          18283:        zend_op *opline = EX(opline);
        !          18284:        zend_free_op free_op2, free_op_data2, free_op_data1;
        !          18285:        zval **var_ptr;
        !          18286:        zval *value;
        !          18287: 
        !          18288:        switch (opline->extended_value) {
        !          18289:                case ZEND_ASSIGN_OBJ:
        !          18290:                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMP(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18291:                        break;
        !          18292:                case ZEND_ASSIGN_DIM: {
        !          18293:                                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18294: 
        !          18295:                                if (IS_UNUSED == IS_VAR && !container) {
        !          18296:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          18297:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          18298:                                        if (IS_UNUSED == IS_VAR && !0) {
        !          18299:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          18300:                                        }
        !          18301:                                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMP(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18302:                                } else {
        !          18303:                                        zend_op *op_data = opline+1;
        !          18304:                                        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18305: 
        !          18306:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 1, BP_VAR_RW TSRMLS_CC);
        !          18307:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          18308:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          18309:                                        ZEND_VM_INC_OPCODE();
        !          18310:                                }
        !          18311:                        }
        !          18312:                        break;
        !          18313:                default:
        !          18314:                        value = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18315:                        var_ptr = NULL;
        !          18316:                        /* do nothing */
        !          18317:                        break;
        !          18318:        }
        !          18319: 
        !          18320:        if (!var_ptr) {
        !          18321:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          18322:        }
        !          18323: 
        !          18324:        if (*var_ptr == EG(error_zval_ptr)) {
        !          18325:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          18326:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          18327:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          18328:                }
        !          18329:                zval_dtor(free_op2.var);
        !          18330: 
        !          18331:                ZEND_VM_NEXT_OPCODE();
        !          18332:        }
        !          18333: 
        !          18334:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          18335: 
        !          18336:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          18337:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          18338:                /* proxy object */
        !          18339:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          18340:                Z_ADDREF_P(objval);
        !          18341:                binary_op(objval, objval, value TSRMLS_CC);
        !          18342:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          18343:                zval_ptr_dtor(&objval);
        !          18344:        } else {
        !          18345:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          18346:        }
        !          18347: 
        !          18348:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          18349:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          18350:                PZVAL_LOCK(*var_ptr);
        !          18351:        }
        !          18352:        zval_dtor(free_op2.var);
        !          18353: 
        !          18354:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          18355:                FREE_OP(free_op_data1);
        !          18356:                FREE_OP_VAR_PTR(free_op_data2);
        !          18357:        }
        !          18358: 
        !          18359:        ZEND_VM_NEXT_OPCODE();
        !          18360: }
        !          18361: 
        !          18362: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18363: {
        !          18364:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18365: }
        !          18366: 
        !          18367: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18368: {
        !          18369:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18370: }
        !          18371: 
        !          18372: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18373: {
        !          18374:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18375: }
        !          18376: 
        !          18377: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18378: {
        !          18379:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18380: }
        !          18381: 
        !          18382: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18383: {
        !          18384:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18385: }
        !          18386: 
        !          18387: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18388: {
        !          18389:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18390: }
        !          18391: 
        !          18392: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18393: {
        !          18394:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18395: }
        !          18396: 
        !          18397: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18398: {
        !          18399:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18400: }
        !          18401: 
        !          18402: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18403: {
        !          18404:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18405: }
        !          18406: 
        !          18407: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18408: {
        !          18409:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18410: }
        !          18411: 
        !          18412: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18413: {
        !          18414:        return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18415: }
        !          18416: 
        !          18417: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_TMP(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          18418: {
        !          18419:        zend_op *opline = EX(opline);
        !          18420:        zend_free_op free_op2;
        !          18421:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18422:        zval *object;
        !          18423:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18424:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          18425:        int have_get_ptr = 0;
        !          18426: 
        !          18427:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          18428:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          18429:        }
        !          18430: 
        !          18431:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          18432:        object = *object_ptr;
        !          18433: 
        !          18434:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          18435:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          18436:                zval_dtor(free_op2.var);
        !          18437:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          18438:                        *retval = EG(uninitialized_zval_ptr);
        !          18439:                        PZVAL_LOCK(*retval);
        !          18440:                }
        !          18441: 
        !          18442:                ZEND_VM_NEXT_OPCODE();
        !          18443:        }
        !          18444: 
        !          18445:        /* here we are sure we are dealing with an object */
        !          18446: 
        !          18447:        if (1) {
        !          18448:                MAKE_REAL_ZVAL_PTR(property);
        !          18449:        }
        !          18450: 
        !          18451:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          18452:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          18453:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          18454:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          18455: 
        !          18456:                        have_get_ptr = 1;
        !          18457:                        incdec_op(*zptr);
        !          18458:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          18459:                                *retval = *zptr;
        !          18460:                                PZVAL_LOCK(*retval);
        !          18461:                        }
        !          18462:                }
        !          18463:        }
        !          18464: 
        !          18465:        if (!have_get_ptr) {
        !          18466:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          18467:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          18468: 
        !          18469:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          18470:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          18471: 
        !          18472:                                if (Z_REFCOUNT_P(z) == 0) {
        !          18473:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          18474:                                        zval_dtor(z);
        !          18475:                                        FREE_ZVAL(z);
        !          18476:                                }
        !          18477:                                z = value;
        !          18478:                        }
        !          18479:                        Z_ADDREF_P(z);
        !          18480:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          18481:                        incdec_op(z);
        !          18482:                        *retval = z;
        !          18483:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          18484:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          18485:                        zval_ptr_dtor(&z);
        !          18486:                } else {
        !          18487:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          18488:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          18489:                                *retval = EG(uninitialized_zval_ptr);
        !          18490:                                PZVAL_LOCK(*retval);
        !          18491:                        }
        !          18492:                }
        !          18493:        }
        !          18494: 
        !          18495:        if (1) {
        !          18496:                zval_ptr_dtor(&property);
        !          18497:        } else {
        !          18498:                zval_dtor(free_op2.var);
        !          18499:        }
        !          18500: 
        !          18501:        ZEND_VM_NEXT_OPCODE();
        !          18502: }
        !          18503: 
        !          18504: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18505: {
        !          18506:        return zend_pre_incdec_property_helper_SPEC_UNUSED_TMP(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18507: }
        !          18508: 
        !          18509: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18510: {
        !          18511:        return zend_pre_incdec_property_helper_SPEC_UNUSED_TMP(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18512: }
        !          18513: 
        !          18514: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_TMP(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          18515: {
        !          18516:        zend_op *opline = EX(opline);
        !          18517:        zend_free_op free_op2;
        !          18518:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18519:        zval *object;
        !          18520:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18521:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          18522:        int have_get_ptr = 0;
        !          18523: 
        !          18524:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          18525:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          18526:        }
        !          18527: 
        !          18528:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          18529:        object = *object_ptr;
        !          18530: 
        !          18531:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          18532:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          18533:                zval_dtor(free_op2.var);
        !          18534:                *retval = *EG(uninitialized_zval_ptr);
        !          18535: 
        !          18536:                ZEND_VM_NEXT_OPCODE();
        !          18537:        }
        !          18538: 
        !          18539:        /* here we are sure we are dealing with an object */
        !          18540: 
        !          18541:        if (1) {
        !          18542:                MAKE_REAL_ZVAL_PTR(property);
        !          18543:        }
        !          18544: 
        !          18545:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          18546:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          18547:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          18548:                        have_get_ptr = 1;
        !          18549:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          18550: 
        !          18551:                        *retval = **zptr;
        !          18552:                        zendi_zval_copy_ctor(*retval);
        !          18553: 
        !          18554:                        incdec_op(*zptr);
        !          18555: 
        !          18556:                }
        !          18557:        }
        !          18558: 
        !          18559:        if (!have_get_ptr) {
        !          18560:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          18561:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          18562:                        zval *z_copy;
        !          18563: 
        !          18564:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          18565:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          18566: 
        !          18567:                                if (Z_REFCOUNT_P(z) == 0) {
        !          18568:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          18569:                                        zval_dtor(z);
        !          18570:                                        FREE_ZVAL(z);
        !          18571:                                }
        !          18572:                                z = value;
        !          18573:                        }
        !          18574:                        *retval = *z;
        !          18575:                        zendi_zval_copy_ctor(*retval);
        !          18576:                        ALLOC_ZVAL(z_copy);
        !          18577:                        *z_copy = *z;
        !          18578:                        zendi_zval_copy_ctor(*z_copy);
        !          18579:                        INIT_PZVAL(z_copy);
        !          18580:                        incdec_op(z_copy);
        !          18581:                        Z_ADDREF_P(z);
        !          18582:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          18583:                        zval_ptr_dtor(&z_copy);
        !          18584:                        zval_ptr_dtor(&z);
        !          18585:                } else {
        !          18586:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          18587:                        *retval = *EG(uninitialized_zval_ptr);
        !          18588:                }
        !          18589:        }
        !          18590: 
        !          18591:        if (1) {
        !          18592:                zval_ptr_dtor(&property);
        !          18593:        } else {
        !          18594:                zval_dtor(free_op2.var);
        !          18595:        }
        !          18596: 
        !          18597:        ZEND_VM_NEXT_OPCODE();
        !          18598: }
        !          18599: 
        !          18600: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18601: {
        !          18602:        return zend_post_incdec_property_helper_SPEC_UNUSED_TMP(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18603: }
        !          18604: 
        !          18605: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18606: {
        !          18607:        return zend_post_incdec_property_helper_SPEC_UNUSED_TMP(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18608: }
        !          18609: 
        !          18610: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_UNUSED_TMP(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          18611: {
        !          18612:        zend_op *opline = EX(opline);
        !          18613: 
        !          18614:        zval *container = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          18615:        zend_free_op free_op2;
        !          18616:        zval *offset  = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18617: 
        !          18618:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          18619:                if (type != BP_VAR_IS) {
        !          18620:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          18621:                }
        !          18622:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          18623:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          18624:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          18625:                }
        !          18626:                zval_dtor(free_op2.var);
        !          18627:        } else {
        !          18628:                zval *retval;
        !          18629: 
        !          18630:                if (1) {
        !          18631:                        MAKE_REAL_ZVAL_PTR(offset);
        !          18632:                }
        !          18633: 
        !          18634:                /* here we are sure we are dealing with an object */
        !          18635:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          18636: 
        !          18637:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          18638:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          18639:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          18640:                                zval_dtor(retval);
        !          18641:                                FREE_ZVAL(retval);
        !          18642:                        }
        !          18643:                } else {
        !          18644:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          18645:                        PZVAL_LOCK(retval);
        !          18646:                }
        !          18647: 
        !          18648:                if (1) {
        !          18649:                        zval_ptr_dtor(&offset);
        !          18650:                } else {
        !          18651:                        zval_dtor(free_op2.var);
        !          18652:                }
        !          18653:        }
        !          18654: 
        !          18655:        ZEND_VM_NEXT_OPCODE();
        !          18656: }
        !          18657: 
        !          18658: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18659: {
        !          18660:        return zend_fetch_property_address_read_helper_SPEC_UNUSED_TMP(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18661: }
        !          18662: 
        !          18663: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18664: {
        !          18665:        zend_op *opline = EX(opline);
        !          18666:        zend_free_op free_op1, free_op2;
        !          18667:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18668:        zval **container;
        !          18669: 
        !          18670:        if (IS_UNUSED == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          18671:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          18672:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          18673:        }
        !          18674: 
        !          18675:        if (1) {
        !          18676:                MAKE_REAL_ZVAL_PTR(property);
        !          18677:        }
        !          18678:        container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18679:        if (IS_UNUSED == IS_VAR && !container) {
        !          18680:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          18681:        }
        !          18682:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          18683:        if (1) {
        !          18684:                zval_ptr_dtor(&property);
        !          18685:        } else {
        !          18686:                zval_dtor(free_op2.var);
        !          18687:        }
        !          18688:        if (IS_UNUSED == IS_VAR && 0 &&
        !          18689:            READY_TO_DESTROY(free_op1.var)) {
        !          18690:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          18691:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          18692:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          18693:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          18694:                }
        !          18695:        }
        !          18696: 
        !          18697:        /* We are going to assign the result by reference */
        !          18698:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          18699:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          18700:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          18701:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          18702:        }
        !          18703: 
        !          18704:        ZEND_VM_NEXT_OPCODE();
        !          18705: }
        !          18706: 
        !          18707: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18708: {
        !          18709:        zend_op *opline = EX(opline);
        !          18710:        zend_free_op free_op1, free_op2;
        !          18711:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18712:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18713: 
        !          18714:        if (1) {
        !          18715:                MAKE_REAL_ZVAL_PTR(property);
        !          18716:        }
        !          18717:        if (IS_UNUSED == IS_VAR && !container) {
        !          18718:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          18719:        }
        !          18720:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          18721:        if (1) {
        !          18722:                zval_ptr_dtor(&property);
        !          18723:        } else {
        !          18724:                zval_dtor(free_op2.var);
        !          18725:        }
        !          18726:        if (IS_UNUSED == IS_VAR && 0 &&
        !          18727:            READY_TO_DESTROY(free_op1.var)) {
        !          18728:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          18729:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          18730:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          18731:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          18732:                }
        !          18733:        }
        !          18734: 
        !          18735:        ZEND_VM_NEXT_OPCODE();
        !          18736: }
        !          18737: 
        !          18738: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18739: {
        !          18740:        return zend_fetch_property_address_read_helper_SPEC_UNUSED_TMP(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18741: }
        !          18742: 
        !          18743: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18744: {
        !          18745:        zend_op *opline = EX(opline);
        !          18746: 
        !          18747:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          18748:                /* Behave like FETCH_OBJ_W */
        !          18749:                zend_free_op free_op1, free_op2;
        !          18750:                zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18751:                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18752: 
        !          18753:                if (1) {
        !          18754:                        MAKE_REAL_ZVAL_PTR(property);
        !          18755:                }
        !          18756:                if (IS_UNUSED == IS_VAR && !container) {
        !          18757:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          18758:                }
        !          18759:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          18760:                if (1) {
        !          18761:                        zval_ptr_dtor(&property);
        !          18762:                } else {
        !          18763:                        zval_dtor(free_op2.var);
        !          18764:                }
        !          18765:                if (IS_UNUSED == IS_VAR && 0 &&
        !          18766:                    READY_TO_DESTROY(free_op1.var)) {
        !          18767:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          18768:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          18769:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          18770:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          18771:                        }
        !          18772:                }
        !          18773: 
        !          18774:                ZEND_VM_NEXT_OPCODE();
        !          18775:        } else {
        !          18776:                return zend_fetch_property_address_read_helper_SPEC_UNUSED_TMP(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18777:        }
        !          18778: }
        !          18779: 
        !          18780: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18781: {
        !          18782:        zend_op *opline = EX(opline);
        !          18783:        zend_free_op free_op1, free_op2, free_res;
        !          18784:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18785:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18786: 
        !          18787:        if (IS_UNUSED == IS_CV) {
        !          18788:                if (container != &EG(uninitialized_zval_ptr)) {
        !          18789:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          18790:                }
        !          18791:        }
        !          18792:        if (1) {
        !          18793:                MAKE_REAL_ZVAL_PTR(property);
        !          18794:        }
        !          18795:        if (IS_UNUSED == IS_VAR && !container) {
        !          18796:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          18797:        }
        !          18798:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          18799:        if (1) {
        !          18800:                zval_ptr_dtor(&property);
        !          18801:        } else {
        !          18802:                zval_dtor(free_op2.var);
        !          18803:        }
        !          18804:        if (IS_UNUSED == IS_VAR && 0 &&
        !          18805:            READY_TO_DESTROY(free_op1.var)) {
        !          18806:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          18807:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          18808:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          18809:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          18810:                }
        !          18811:        }
        !          18812: 
        !          18813:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          18814:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          18815:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          18816:        }
        !          18817:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          18818:        FREE_OP_VAR_PTR(free_res);
        !          18819:        ZEND_VM_NEXT_OPCODE();
        !          18820: }
        !          18821: 
        !          18822: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18823: {
        !          18824:        zend_op *opline = EX(opline);
        !          18825:        zend_op *op_data = opline+1;
        !          18826:        zend_free_op free_op2;
        !          18827:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18828:        zval *property_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18829: 
        !          18830:        if (1) {
        !          18831:                MAKE_REAL_ZVAL_PTR(property_name);
        !          18832:        }
        !          18833:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          18834:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          18835:        }
        !          18836:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          18837:        if (1) {
        !          18838:                zval_ptr_dtor(&property_name);
        !          18839:        } else {
        !          18840:                zval_dtor(free_op2.var);
        !          18841:        }
        !          18842: 
        !          18843:        /* assign_obj has two opcodes! */
        !          18844:        ZEND_VM_INC_OPCODE();
        !          18845:        ZEND_VM_NEXT_OPCODE();
        !          18846: }
        !          18847: 
        !          18848: static int ZEND_FASTCALL  ZEND_ADD_VAR_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18849: {
        !          18850:        zend_op *opline = EX(opline);
        !          18851:        zend_free_op free_op2;
        !          18852:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          18853:        zval *var = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18854:        zval var_copy;
        !          18855:        int use_copy = 0;
        !          18856: 
        !          18857:        if (IS_UNUSED == IS_UNUSED) {
        !          18858:                /* Initialize for erealloc in add_string_to_string */
        !          18859:                Z_STRVAL_P(str) = NULL;
        !          18860:                Z_STRLEN_P(str) = 0;
        !          18861:                Z_TYPE_P(str) = IS_STRING;
        !          18862: 
        !          18863:                INIT_PZVAL(str);
        !          18864:        }
        !          18865: 
        !          18866:        if (Z_TYPE_P(var) != IS_STRING) {
        !          18867:                zend_make_printable_zval(var, &var_copy, &use_copy);
        !          18868: 
        !          18869:                if (use_copy) {
        !          18870:                        var = &var_copy;
        !          18871:                }
        !          18872:        }
        !          18873:        add_string_to_string(str, str, var);
        !          18874: 
        !          18875:        if (use_copy) {
        !          18876:                zval_dtor(var);
        !          18877:        }
        !          18878:        /* original comment, possibly problematic:
        !          18879:         * FREE_OP is missing intentionally here - we're always working on the same temporary variable
        !          18880:         * (Zeev):  I don't think it's problematic, we only use variables
        !          18881:         * which aren't affected by FREE_OP(Ts, )'s anyway, unless they're
        !          18882:         * string offsets or overloaded objects
        !          18883:         */
        !          18884:        zval_dtor(free_op2.var);
        !          18885: 
        !          18886:        ZEND_VM_NEXT_OPCODE();
        !          18887: }
        !          18888: 
        !          18889: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18890: {
        !          18891:        zend_op *opline = EX(opline);
        !          18892:        zval *function_name;
        !          18893:        char *function_name_strval;
        !          18894:        int function_name_strlen;
        !          18895:        zend_free_op free_op2;
        !          18896: 
        !          18897:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          18898: 
        !          18899:        function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18900: 
        !          18901:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          18902:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          18903:        }
        !          18904: 
        !          18905:        function_name_strval = Z_STRVAL_P(function_name);
        !          18906:        function_name_strlen = Z_STRLEN_P(function_name);
        !          18907: 
        !          18908:        EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          18909: 
        !          18910:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          18911:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          18912:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          18913:                }
        !          18914: 
        !          18915:                /* First, locate the function. */
        !          18916:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          18917:                if (!EX(fbc)) {
        !          18918:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          18919:                }
        !          18920: 
        !          18921:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          18922:        } else {
        !          18923:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          18924:        }
        !          18925: 
        !          18926:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          18927:                EX(object) = NULL;
        !          18928:        } else {
        !          18929:                if (!PZVAL_IS_REF(EX(object))) {
        !          18930:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          18931:                } else {
        !          18932:                        zval *this_ptr;
        !          18933:                        ALLOC_ZVAL(this_ptr);
        !          18934:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          18935:                        zval_copy_ctor(this_ptr);
        !          18936:                        EX(object) = this_ptr;
        !          18937:                }
        !          18938:        }
        !          18939: 
        !          18940:        zval_dtor(free_op2.var);
        !          18941: 
        !          18942:        ZEND_VM_NEXT_OPCODE();
        !          18943: }
        !          18944: 
        !          18945: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18946: {
        !          18947:        zend_op *opline = EX(opline);
        !          18948: 
        !          18949:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          18950:        if (IS_UNUSED == IS_UNUSED) {
        !          18951:                ZEND_VM_NEXT_OPCODE();
        !          18952: #if 0 || IS_UNUSED != IS_UNUSED
        !          18953:        } else {
        !          18954:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          18955: #endif
        !          18956:        }
        !          18957: }
        !          18958: 
        !          18959: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          18960: {
        !          18961:        zend_op *opline = EX(opline);
        !          18962:        zend_free_op free_op2;
        !          18963:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          18964:        zval *offset;
        !          18965: 
        !          18966:        if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          18967:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          18968:        }
        !          18969:        offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          18970: 
        !          18971:        if (IS_UNUSED != IS_VAR || container) {
        !          18972:                switch (Z_TYPE_PP(container)) {
        !          18973:                        case IS_ARRAY: {
        !          18974:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          18975: 
        !          18976:                                switch (Z_TYPE_P(offset)) {
        !          18977:                                        case IS_DOUBLE:
        !          18978:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          18979:                                                break;
        !          18980:                                        case IS_RESOURCE:
        !          18981:                                        case IS_BOOL:
        !          18982:                                        case IS_LONG:
        !          18983:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          18984:                                                break;
        !          18985:                                        case IS_STRING:
        !          18986:                                                if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
        !          18987:                                                        Z_ADDREF_P(offset);
        !          18988:                                                }
        !          18989:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          18990:                                            ht == &EG(symbol_table)) {
        !          18991:                                                        zend_execute_data *ex;
        !          18992:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          18993: 
        !          18994:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          18995:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          18996:                                                                        int i;
        !          18997: 
        !          18998:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          18999:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          19000:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          19001:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          19002:                                                                                        ex->CVs[i] = NULL;
        !          19003:                                                                                        break;
        !          19004:                                                                                }
        !          19005:                                                                        }
        !          19006:                                                                }
        !          19007:                                                        }
        !          19008:                                                }
        !          19009:                                                if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
        !          19010:                                                        zval_ptr_dtor(&offset);
        !          19011:                                                }
        !          19012:                                                break;
        !          19013:                                        case IS_NULL:
        !          19014:                                                zend_hash_del(ht, "", sizeof(""));
        !          19015:                                                break;
        !          19016:                                        default:
        !          19017:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          19018:                                                break;
        !          19019:                                }
        !          19020:                                zval_dtor(free_op2.var);
        !          19021:                                break;
        !          19022:                        }
        !          19023:                        case IS_OBJECT:
        !          19024:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          19025:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          19026:                                }
        !          19027:                                if (1) {
        !          19028:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          19029:                                }
        !          19030:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          19031:                                if (1) {
        !          19032:                                        zval_ptr_dtor(&offset);
        !          19033:                                } else {
        !          19034:                                        zval_dtor(free_op2.var);
        !          19035:                                }
        !          19036:                                break;
        !          19037:                        case IS_STRING:
        !          19038:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          19039:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          19040:                        default:
        !          19041:                                zval_dtor(free_op2.var);
        !          19042:                                break;
        !          19043:                }
        !          19044:        } else {
        !          19045:                zval_dtor(free_op2.var);
        !          19046:        }
        !          19047: 
        !          19048:        ZEND_VM_NEXT_OPCODE();
        !          19049: }
        !          19050: 
        !          19051: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19052: {
        !          19053:        zend_op *opline = EX(opline);
        !          19054:        zend_free_op free_op2;
        !          19055:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19056:        zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19057: 
        !          19058:        if (IS_UNUSED != IS_VAR || container) {
        !          19059:                if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          19060:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          19061:                }
        !          19062:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          19063:                        if (1) {
        !          19064:                                MAKE_REAL_ZVAL_PTR(offset);
        !          19065:                        }
        !          19066:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          19067:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          19068:                        } else {
        !          19069:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          19070:                        }
        !          19071:                        if (1) {
        !          19072:                                zval_ptr_dtor(&offset);
        !          19073:                        } else {
        !          19074:                                zval_dtor(free_op2.var);
        !          19075:                        }
        !          19076:                } else {
        !          19077:                        zval_dtor(free_op2.var);
        !          19078:                }
        !          19079:        } else {
        !          19080:                zval_dtor(free_op2.var);
        !          19081:        }
        !          19082: 
        !          19083:        ZEND_VM_NEXT_OPCODE();
        !          19084: }
        !          19085: 
        !          19086: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_TMP(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          19087: {
        !          19088:        zend_op *opline = EX(opline);
        !          19089: 
        !          19090:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19091:        zval **value = NULL;
        !          19092:        int result = 0;
        !          19093: 
        !          19094:        if (IS_UNUSED != IS_VAR || container) {
        !          19095:                zend_free_op free_op2;
        !          19096:                zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19097: 
        !          19098:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          19099:                        HashTable *ht;
        !          19100:                        int isset = 0;
        !          19101: 
        !          19102:                        ht = Z_ARRVAL_PP(container);
        !          19103: 
        !          19104:                        switch (Z_TYPE_P(offset)) {
        !          19105:                                case IS_DOUBLE:
        !          19106:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          19107:                                                isset = 1;
        !          19108:                                        }
        !          19109:                                        break;
        !          19110:                                case IS_RESOURCE:
        !          19111:                                case IS_BOOL:
        !          19112:                                case IS_LONG:
        !          19113:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          19114:                                                isset = 1;
        !          19115:                                        }
        !          19116:                                        break;
        !          19117:                                case IS_STRING:
        !          19118:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          19119:                                                isset = 1;
        !          19120:                                        }
        !          19121:                                        break;
        !          19122:                                case IS_NULL:
        !          19123:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          19124:                                                isset = 1;
        !          19125:                                        }
        !          19126:                                        break;
        !          19127:                                default:
        !          19128:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          19129: 
        !          19130:                                        break;
        !          19131:                        }
        !          19132: 
        !          19133:                        switch (opline->extended_value) {
        !          19134:                                case ZEND_ISSET:
        !          19135:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          19136:                                                result = 0;
        !          19137:                                        } else {
        !          19138:                                                result = isset;
        !          19139:                                        }
        !          19140:                                        break;
        !          19141:                                case ZEND_ISEMPTY:
        !          19142:                                        if (!isset || !i_zend_is_true(*value)) {
        !          19143:                                                result = 0;
        !          19144:                                        } else {
        !          19145:                                                result = 1;
        !          19146:                                        }
        !          19147:                                        break;
        !          19148:                        }
        !          19149:                        zval_dtor(free_op2.var);
        !          19150:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          19151:                        if (1) {
        !          19152:                                MAKE_REAL_ZVAL_PTR(offset);
        !          19153:                        }
        !          19154:                        if (prop_dim) {
        !          19155:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          19156:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          19157:                                } else {
        !          19158:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          19159:                                        result = 0;
        !          19160:                                }
        !          19161:                        } else {
        !          19162:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          19163:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          19164:                                } else {
        !          19165:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          19166:                                        result = 0;
        !          19167:                                }
        !          19168:                        }
        !          19169:                        if (1) {
        !          19170:                                zval_ptr_dtor(&offset);
        !          19171:                        } else {
        !          19172:                                zval_dtor(free_op2.var);
        !          19173:                        }
        !          19174:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          19175:                        zval tmp;
        !          19176: 
        !          19177:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          19178:                                tmp = *offset;
        !          19179:                                zval_copy_ctor(&tmp);
        !          19180:                                convert_to_long(&tmp);
        !          19181:                                offset = &tmp;
        !          19182:                        }
        !          19183:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          19184:                                switch (opline->extended_value) {
        !          19185:                                        case ZEND_ISSET:
        !          19186:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          19187:                                                        result = 1;
        !          19188:                                                }
        !          19189:                                                break;
        !          19190:                                        case ZEND_ISEMPTY:
        !          19191:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          19192:                                                        result = 1;
        !          19193:                                                }
        !          19194:                                                break;
        !          19195:                                }
        !          19196:                        }
        !          19197:                        zval_dtor(free_op2.var);
        !          19198:                } else {
        !          19199:                        zval_dtor(free_op2.var);
        !          19200:                }
        !          19201:        }
        !          19202: 
        !          19203:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          19204: 
        !          19205:        switch (opline->extended_value) {
        !          19206:                case ZEND_ISSET:
        !          19207:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          19208:                        break;
        !          19209:                case ZEND_ISEMPTY:
        !          19210:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          19211:                        break;
        !          19212:        }
        !          19213: 
        !          19214:        ZEND_VM_NEXT_OPCODE();
        !          19215: }
        !          19216: 
        !          19217: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19218: {
        !          19219:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_TMP(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19220: }
        !          19221: 
        !          19222: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19223: {
        !          19224:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_TMP(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19225: }
        !          19226: 
        !          19227: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_VAR(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          19228: {
        !          19229:        zend_op *opline = EX(opline);
        !          19230:        zend_op *op_data = opline+1;
        !          19231:        zend_free_op free_op2, free_op_data1;
        !          19232:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19233:        zval *object;
        !          19234:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19235:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          19236:        znode *result = &opline->result;
        !          19237:        int have_get_ptr = 0;
        !          19238: 
        !          19239:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          19240:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          19241:        }
        !          19242: 
        !          19243:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          19244:        make_real_object(object_ptr TSRMLS_CC);
        !          19245:        object = *object_ptr;
        !          19246: 
        !          19247:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          19248:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          19249:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19250:                FREE_OP(free_op_data1);
        !          19251: 
        !          19252:                if (!RETURN_VALUE_UNUSED(result)) {
        !          19253:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          19254:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          19255:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          19256:                }
        !          19257:        } else {
        !          19258:                /* here we are sure we are dealing with an object */
        !          19259:                if (0) {
        !          19260:                        MAKE_REAL_ZVAL_PTR(property);
        !          19261:                }
        !          19262: 
        !          19263:                /* here property is a string */
        !          19264:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          19265:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          19266:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          19267:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          19268:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          19269: 
        !          19270:                                have_get_ptr = 1;
        !          19271:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          19272:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          19273:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          19274:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          19275:                                        PZVAL_LOCK(*zptr);
        !          19276:                                }
        !          19277:                        }
        !          19278:                }
        !          19279: 
        !          19280:                if (!have_get_ptr) {
        !          19281:                        zval *z = NULL;
        !          19282: 
        !          19283:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          19284:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          19285:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          19286:                                }
        !          19287:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          19288:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          19289:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          19290:                                }
        !          19291:                        }
        !          19292:                        if (z) {
        !          19293:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          19294:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          19295: 
        !          19296:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          19297:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          19298:                                                zval_dtor(z);
        !          19299:                                                FREE_ZVAL(z);
        !          19300:                                        }
        !          19301:                                        z = value;
        !          19302:                                }
        !          19303:                                Z_ADDREF_P(z);
        !          19304:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          19305:                                binary_op(z, z, value TSRMLS_CC);
        !          19306:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          19307:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          19308:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          19309:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          19310:                                }
        !          19311:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          19312:                                        EX_T(result->u.var).var.ptr = z;
        !          19313:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          19314:                                        PZVAL_LOCK(z);
        !          19315:                                }
        !          19316:                                zval_ptr_dtor(&z);
        !          19317:                        } else {
        !          19318:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          19319:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          19320:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          19321:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          19322:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          19323:                                }
        !          19324:                        }
        !          19325:                }
        !          19326: 
        !          19327:                if (0) {
        !          19328:                        zval_ptr_dtor(&property);
        !          19329:                } else {
        !          19330:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19331:                }
        !          19332:                FREE_OP(free_op_data1);
        !          19333:        }
        !          19334: 
        !          19335:        /* assign_obj has two opcodes! */
        !          19336:        ZEND_VM_INC_OPCODE();
        !          19337:        ZEND_VM_NEXT_OPCODE();
        !          19338: }
        !          19339: 
        !          19340: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_UNUSED_VAR(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          19341: {
        !          19342:        zend_op *opline = EX(opline);
        !          19343:        zend_free_op free_op2, free_op_data2, free_op_data1;
        !          19344:        zval **var_ptr;
        !          19345:        zval *value;
        !          19346: 
        !          19347:        switch (opline->extended_value) {
        !          19348:                case ZEND_ASSIGN_OBJ:
        !          19349:                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_VAR(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19350:                        break;
        !          19351:                case ZEND_ASSIGN_DIM: {
        !          19352:                                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19353: 
        !          19354:                                if (IS_UNUSED == IS_VAR && !container) {
        !          19355:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          19356:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          19357:                                        if (IS_UNUSED == IS_VAR && !0) {
        !          19358:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          19359:                                        }
        !          19360:                                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_VAR(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19361:                                } else {
        !          19362:                                        zend_op *op_data = opline+1;
        !          19363:                                        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19364: 
        !          19365:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          19366:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          19367:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          19368:                                        ZEND_VM_INC_OPCODE();
        !          19369:                                }
        !          19370:                        }
        !          19371:                        break;
        !          19372:                default:
        !          19373:                        value = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19374:                        var_ptr = NULL;
        !          19375:                        /* do nothing */
        !          19376:                        break;
        !          19377:        }
        !          19378: 
        !          19379:        if (!var_ptr) {
        !          19380:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          19381:        }
        !          19382: 
        !          19383:        if (*var_ptr == EG(error_zval_ptr)) {
        !          19384:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          19385:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          19386:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          19387:                }
        !          19388:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19389: 
        !          19390:                ZEND_VM_NEXT_OPCODE();
        !          19391:        }
        !          19392: 
        !          19393:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          19394: 
        !          19395:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          19396:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          19397:                /* proxy object */
        !          19398:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          19399:                Z_ADDREF_P(objval);
        !          19400:                binary_op(objval, objval, value TSRMLS_CC);
        !          19401:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          19402:                zval_ptr_dtor(&objval);
        !          19403:        } else {
        !          19404:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          19405:        }
        !          19406: 
        !          19407:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          19408:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          19409:                PZVAL_LOCK(*var_ptr);
        !          19410:        }
        !          19411:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19412: 
        !          19413:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          19414:                FREE_OP(free_op_data1);
        !          19415:                FREE_OP_VAR_PTR(free_op_data2);
        !          19416:        }
        !          19417: 
        !          19418:        ZEND_VM_NEXT_OPCODE();
        !          19419: }
        !          19420: 
        !          19421: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19422: {
        !          19423:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19424: }
        !          19425: 
        !          19426: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19427: {
        !          19428:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19429: }
        !          19430: 
        !          19431: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19432: {
        !          19433:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19434: }
        !          19435: 
        !          19436: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19437: {
        !          19438:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19439: }
        !          19440: 
        !          19441: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19442: {
        !          19443:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19444: }
        !          19445: 
        !          19446: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19447: {
        !          19448:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19449: }
        !          19450: 
        !          19451: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19452: {
        !          19453:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19454: }
        !          19455: 
        !          19456: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19457: {
        !          19458:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19459: }
        !          19460: 
        !          19461: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19462: {
        !          19463:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19464: }
        !          19465: 
        !          19466: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19467: {
        !          19468:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19469: }
        !          19470: 
        !          19471: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19472: {
        !          19473:        return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19474: }
        !          19475: 
        !          19476: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_VAR(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          19477: {
        !          19478:        zend_op *opline = EX(opline);
        !          19479:        zend_free_op free_op2;
        !          19480:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19481:        zval *object;
        !          19482:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19483:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          19484:        int have_get_ptr = 0;
        !          19485: 
        !          19486:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          19487:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          19488:        }
        !          19489: 
        !          19490:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          19491:        object = *object_ptr;
        !          19492: 
        !          19493:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          19494:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          19495:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19496:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          19497:                        *retval = EG(uninitialized_zval_ptr);
        !          19498:                        PZVAL_LOCK(*retval);
        !          19499:                }
        !          19500: 
        !          19501:                ZEND_VM_NEXT_OPCODE();
        !          19502:        }
        !          19503: 
        !          19504:        /* here we are sure we are dealing with an object */
        !          19505: 
        !          19506:        if (0) {
        !          19507:                MAKE_REAL_ZVAL_PTR(property);
        !          19508:        }
        !          19509: 
        !          19510:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          19511:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          19512:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          19513:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          19514: 
        !          19515:                        have_get_ptr = 1;
        !          19516:                        incdec_op(*zptr);
        !          19517:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          19518:                                *retval = *zptr;
        !          19519:                                PZVAL_LOCK(*retval);
        !          19520:                        }
        !          19521:                }
        !          19522:        }
        !          19523: 
        !          19524:        if (!have_get_ptr) {
        !          19525:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          19526:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          19527: 
        !          19528:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          19529:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          19530: 
        !          19531:                                if (Z_REFCOUNT_P(z) == 0) {
        !          19532:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          19533:                                        zval_dtor(z);
        !          19534:                                        FREE_ZVAL(z);
        !          19535:                                }
        !          19536:                                z = value;
        !          19537:                        }
        !          19538:                        Z_ADDREF_P(z);
        !          19539:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          19540:                        incdec_op(z);
        !          19541:                        *retval = z;
        !          19542:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          19543:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          19544:                        zval_ptr_dtor(&z);
        !          19545:                } else {
        !          19546:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          19547:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          19548:                                *retval = EG(uninitialized_zval_ptr);
        !          19549:                                PZVAL_LOCK(*retval);
        !          19550:                        }
        !          19551:                }
        !          19552:        }
        !          19553: 
        !          19554:        if (0) {
        !          19555:                zval_ptr_dtor(&property);
        !          19556:        } else {
        !          19557:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19558:        }
        !          19559: 
        !          19560:        ZEND_VM_NEXT_OPCODE();
        !          19561: }
        !          19562: 
        !          19563: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19564: {
        !          19565:        return zend_pre_incdec_property_helper_SPEC_UNUSED_VAR(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19566: }
        !          19567: 
        !          19568: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19569: {
        !          19570:        return zend_pre_incdec_property_helper_SPEC_UNUSED_VAR(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19571: }
        !          19572: 
        !          19573: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_VAR(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          19574: {
        !          19575:        zend_op *opline = EX(opline);
        !          19576:        zend_free_op free_op2;
        !          19577:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19578:        zval *object;
        !          19579:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19580:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          19581:        int have_get_ptr = 0;
        !          19582: 
        !          19583:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          19584:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          19585:        }
        !          19586: 
        !          19587:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          19588:        object = *object_ptr;
        !          19589: 
        !          19590:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          19591:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          19592:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19593:                *retval = *EG(uninitialized_zval_ptr);
        !          19594: 
        !          19595:                ZEND_VM_NEXT_OPCODE();
        !          19596:        }
        !          19597: 
        !          19598:        /* here we are sure we are dealing with an object */
        !          19599: 
        !          19600:        if (0) {
        !          19601:                MAKE_REAL_ZVAL_PTR(property);
        !          19602:        }
        !          19603: 
        !          19604:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          19605:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          19606:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          19607:                        have_get_ptr = 1;
        !          19608:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          19609: 
        !          19610:                        *retval = **zptr;
        !          19611:                        zendi_zval_copy_ctor(*retval);
        !          19612: 
        !          19613:                        incdec_op(*zptr);
        !          19614: 
        !          19615:                }
        !          19616:        }
        !          19617: 
        !          19618:        if (!have_get_ptr) {
        !          19619:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          19620:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          19621:                        zval *z_copy;
        !          19622: 
        !          19623:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          19624:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          19625: 
        !          19626:                                if (Z_REFCOUNT_P(z) == 0) {
        !          19627:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          19628:                                        zval_dtor(z);
        !          19629:                                        FREE_ZVAL(z);
        !          19630:                                }
        !          19631:                                z = value;
        !          19632:                        }
        !          19633:                        *retval = *z;
        !          19634:                        zendi_zval_copy_ctor(*retval);
        !          19635:                        ALLOC_ZVAL(z_copy);
        !          19636:                        *z_copy = *z;
        !          19637:                        zendi_zval_copy_ctor(*z_copy);
        !          19638:                        INIT_PZVAL(z_copy);
        !          19639:                        incdec_op(z_copy);
        !          19640:                        Z_ADDREF_P(z);
        !          19641:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          19642:                        zval_ptr_dtor(&z_copy);
        !          19643:                        zval_ptr_dtor(&z);
        !          19644:                } else {
        !          19645:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          19646:                        *retval = *EG(uninitialized_zval_ptr);
        !          19647:                }
        !          19648:        }
        !          19649: 
        !          19650:        if (0) {
        !          19651:                zval_ptr_dtor(&property);
        !          19652:        } else {
        !          19653:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19654:        }
        !          19655: 
        !          19656:        ZEND_VM_NEXT_OPCODE();
        !          19657: }
        !          19658: 
        !          19659: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19660: {
        !          19661:        return zend_post_incdec_property_helper_SPEC_UNUSED_VAR(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19662: }
        !          19663: 
        !          19664: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19665: {
        !          19666:        return zend_post_incdec_property_helper_SPEC_UNUSED_VAR(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19667: }
        !          19668: 
        !          19669: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_UNUSED_VAR(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          19670: {
        !          19671:        zend_op *opline = EX(opline);
        !          19672: 
        !          19673:        zval *container = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          19674:        zend_free_op free_op2;
        !          19675:        zval *offset  = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19676: 
        !          19677:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          19678:                if (type != BP_VAR_IS) {
        !          19679:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          19680:                }
        !          19681:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          19682:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          19683:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          19684:                }
        !          19685:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19686:        } else {
        !          19687:                zval *retval;
        !          19688: 
        !          19689:                if (0) {
        !          19690:                        MAKE_REAL_ZVAL_PTR(offset);
        !          19691:                }
        !          19692: 
        !          19693:                /* here we are sure we are dealing with an object */
        !          19694:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          19695: 
        !          19696:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          19697:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          19698:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          19699:                                zval_dtor(retval);
        !          19700:                                FREE_ZVAL(retval);
        !          19701:                        }
        !          19702:                } else {
        !          19703:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          19704:                        PZVAL_LOCK(retval);
        !          19705:                }
        !          19706: 
        !          19707:                if (0) {
        !          19708:                        zval_ptr_dtor(&offset);
        !          19709:                } else {
        !          19710:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19711:                }
        !          19712:        }
        !          19713: 
        !          19714:        ZEND_VM_NEXT_OPCODE();
        !          19715: }
        !          19716: 
        !          19717: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19718: {
        !          19719:        return zend_fetch_property_address_read_helper_SPEC_UNUSED_VAR(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19720: }
        !          19721: 
        !          19722: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19723: {
        !          19724:        zend_op *opline = EX(opline);
        !          19725:        zend_free_op free_op1, free_op2;
        !          19726:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19727:        zval **container;
        !          19728: 
        !          19729:        if (IS_UNUSED == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          19730:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          19731:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          19732:        }
        !          19733: 
        !          19734:        if (0) {
        !          19735:                MAKE_REAL_ZVAL_PTR(property);
        !          19736:        }
        !          19737:        container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19738:        if (IS_UNUSED == IS_VAR && !container) {
        !          19739:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          19740:        }
        !          19741:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          19742:        if (0) {
        !          19743:                zval_ptr_dtor(&property);
        !          19744:        } else {
        !          19745:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19746:        }
        !          19747:        if (IS_UNUSED == IS_VAR && 0 &&
        !          19748:            READY_TO_DESTROY(free_op1.var)) {
        !          19749:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          19750:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          19751:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          19752:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          19753:                }
        !          19754:        }
        !          19755: 
        !          19756:        /* We are going to assign the result by reference */
        !          19757:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          19758:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          19759:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          19760:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          19761:        }
        !          19762: 
        !          19763:        ZEND_VM_NEXT_OPCODE();
        !          19764: }
        !          19765: 
        !          19766: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19767: {
        !          19768:        zend_op *opline = EX(opline);
        !          19769:        zend_free_op free_op1, free_op2;
        !          19770:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19771:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19772: 
        !          19773:        if (0) {
        !          19774:                MAKE_REAL_ZVAL_PTR(property);
        !          19775:        }
        !          19776:        if (IS_UNUSED == IS_VAR && !container) {
        !          19777:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          19778:        }
        !          19779:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          19780:        if (0) {
        !          19781:                zval_ptr_dtor(&property);
        !          19782:        } else {
        !          19783:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19784:        }
        !          19785:        if (IS_UNUSED == IS_VAR && 0 &&
        !          19786:            READY_TO_DESTROY(free_op1.var)) {
        !          19787:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          19788:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          19789:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          19790:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          19791:                }
        !          19792:        }
        !          19793: 
        !          19794:        ZEND_VM_NEXT_OPCODE();
        !          19795: }
        !          19796: 
        !          19797: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19798: {
        !          19799:        return zend_fetch_property_address_read_helper_SPEC_UNUSED_VAR(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19800: }
        !          19801: 
        !          19802: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19803: {
        !          19804:        zend_op *opline = EX(opline);
        !          19805: 
        !          19806:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          19807:                /* Behave like FETCH_OBJ_W */
        !          19808:                zend_free_op free_op1, free_op2;
        !          19809:                zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19810:                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19811: 
        !          19812:                if (0) {
        !          19813:                        MAKE_REAL_ZVAL_PTR(property);
        !          19814:                }
        !          19815:                if (IS_UNUSED == IS_VAR && !container) {
        !          19816:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          19817:                }
        !          19818:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          19819:                if (0) {
        !          19820:                        zval_ptr_dtor(&property);
        !          19821:                } else {
        !          19822:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19823:                }
        !          19824:                if (IS_UNUSED == IS_VAR && 0 &&
        !          19825:                    READY_TO_DESTROY(free_op1.var)) {
        !          19826:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          19827:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          19828:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          19829:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          19830:                        }
        !          19831:                }
        !          19832: 
        !          19833:                ZEND_VM_NEXT_OPCODE();
        !          19834:        } else {
        !          19835:                return zend_fetch_property_address_read_helper_SPEC_UNUSED_VAR(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          19836:        }
        !          19837: }
        !          19838: 
        !          19839: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19840: {
        !          19841:        zend_op *opline = EX(opline);
        !          19842:        zend_free_op free_op1, free_op2, free_res;
        !          19843:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19844:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19845: 
        !          19846:        if (IS_UNUSED == IS_CV) {
        !          19847:                if (container != &EG(uninitialized_zval_ptr)) {
        !          19848:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          19849:                }
        !          19850:        }
        !          19851:        if (0) {
        !          19852:                MAKE_REAL_ZVAL_PTR(property);
        !          19853:        }
        !          19854:        if (IS_UNUSED == IS_VAR && !container) {
        !          19855:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          19856:        }
        !          19857:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          19858:        if (0) {
        !          19859:                zval_ptr_dtor(&property);
        !          19860:        } else {
        !          19861:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19862:        }
        !          19863:        if (IS_UNUSED == IS_VAR && 0 &&
        !          19864:            READY_TO_DESTROY(free_op1.var)) {
        !          19865:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          19866:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          19867:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          19868:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          19869:                }
        !          19870:        }
        !          19871: 
        !          19872:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          19873:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          19874:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          19875:        }
        !          19876:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          19877:        FREE_OP_VAR_PTR(free_res);
        !          19878:        ZEND_VM_NEXT_OPCODE();
        !          19879: }
        !          19880: 
        !          19881: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19882: {
        !          19883:        zend_op *opline = EX(opline);
        !          19884:        zend_op *op_data = opline+1;
        !          19885:        zend_free_op free_op2;
        !          19886:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          19887:        zval *property_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19888: 
        !          19889:        if (0) {
        !          19890:                MAKE_REAL_ZVAL_PTR(property_name);
        !          19891:        }
        !          19892:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          19893:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          19894:        }
        !          19895:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          19896:        if (0) {
        !          19897:                zval_ptr_dtor(&property_name);
        !          19898:        } else {
        !          19899:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19900:        }
        !          19901: 
        !          19902:        /* assign_obj has two opcodes! */
        !          19903:        ZEND_VM_INC_OPCODE();
        !          19904:        ZEND_VM_NEXT_OPCODE();
        !          19905: }
        !          19906: 
        !          19907: static int ZEND_FASTCALL  ZEND_ADD_VAR_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19908: {
        !          19909:        zend_op *opline = EX(opline);
        !          19910:        zend_free_op free_op2;
        !          19911:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          19912:        zval *var = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19913:        zval var_copy;
        !          19914:        int use_copy = 0;
        !          19915: 
        !          19916:        if (IS_UNUSED == IS_UNUSED) {
        !          19917:                /* Initialize for erealloc in add_string_to_string */
        !          19918:                Z_STRVAL_P(str) = NULL;
        !          19919:                Z_STRLEN_P(str) = 0;
        !          19920:                Z_TYPE_P(str) = IS_STRING;
        !          19921: 
        !          19922:                INIT_PZVAL(str);
        !          19923:        }
        !          19924: 
        !          19925:        if (Z_TYPE_P(var) != IS_STRING) {
        !          19926:                zend_make_printable_zval(var, &var_copy, &use_copy);
        !          19927: 
        !          19928:                if (use_copy) {
        !          19929:                        var = &var_copy;
        !          19930:                }
        !          19931:        }
        !          19932:        add_string_to_string(str, str, var);
        !          19933: 
        !          19934:        if (use_copy) {
        !          19935:                zval_dtor(var);
        !          19936:        }
        !          19937:        /* original comment, possibly problematic:
        !          19938:         * FREE_OP is missing intentionally here - we're always working on the same temporary variable
        !          19939:         * (Zeev):  I don't think it's problematic, we only use variables
        !          19940:         * which aren't affected by FREE_OP(Ts, )'s anyway, unless they're
        !          19941:         * string offsets or overloaded objects
        !          19942:         */
        !          19943:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          19944: 
        !          19945:        ZEND_VM_NEXT_OPCODE();
        !          19946: }
        !          19947: 
        !          19948: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          19949: {
        !          19950:        zend_op *opline = EX(opline);
        !          19951:        zval *function_name;
        !          19952:        char *function_name_strval;
        !          19953:        int function_name_strlen;
        !          19954:        zend_free_op free_op2;
        !          19955: 
        !          19956:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          19957: 
        !          19958:        function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          19959: 
        !          19960:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          19961:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          19962:        }
        !          19963: 
        !          19964:        function_name_strval = Z_STRVAL_P(function_name);
        !          19965:        function_name_strlen = Z_STRLEN_P(function_name);
        !          19966: 
        !          19967:        EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          19968: 
        !          19969:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          19970:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          19971:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          19972:                }
        !          19973: 
        !          19974:                /* First, locate the function. */
        !          19975:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          19976:                if (!EX(fbc)) {
        !          19977:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          19978:                }
        !          19979: 
        !          19980:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          19981:        } else {
        !          19982:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          19983:        }
        !          19984: 
        !          19985:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          19986:                EX(object) = NULL;
        !          19987:        } else {
        !          19988:                if (!PZVAL_IS_REF(EX(object))) {
        !          19989:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          19990:                } else {
        !          19991:                        zval *this_ptr;
        !          19992:                        ALLOC_ZVAL(this_ptr);
        !          19993:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          19994:                        zval_copy_ctor(this_ptr);
        !          19995:                        EX(object) = this_ptr;
        !          19996:                }
        !          19997:        }
        !          19998: 
        !          19999:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20000: 
        !          20001:        ZEND_VM_NEXT_OPCODE();
        !          20002: }
        !          20003: 
        !          20004: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20005: {
        !          20006:        zend_op *opline = EX(opline);
        !          20007: 
        !          20008:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          20009:        if (IS_UNUSED == IS_UNUSED) {
        !          20010:                ZEND_VM_NEXT_OPCODE();
        !          20011: #if 0 || IS_UNUSED != IS_UNUSED
        !          20012:        } else {
        !          20013:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20014: #endif
        !          20015:        }
        !          20016: }
        !          20017: 
        !          20018: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20019: {
        !          20020:        zend_op *opline = EX(opline);
        !          20021:        zend_free_op free_op2;
        !          20022:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20023:        zval *offset;
        !          20024: 
        !          20025:        if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          20026:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          20027:        }
        !          20028:        offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          20029: 
        !          20030:        if (IS_UNUSED != IS_VAR || container) {
        !          20031:                switch (Z_TYPE_PP(container)) {
        !          20032:                        case IS_ARRAY: {
        !          20033:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          20034: 
        !          20035:                                switch (Z_TYPE_P(offset)) {
        !          20036:                                        case IS_DOUBLE:
        !          20037:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          20038:                                                break;
        !          20039:                                        case IS_RESOURCE:
        !          20040:                                        case IS_BOOL:
        !          20041:                                        case IS_LONG:
        !          20042:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          20043:                                                break;
        !          20044:                                        case IS_STRING:
        !          20045:                                                if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
        !          20046:                                                        Z_ADDREF_P(offset);
        !          20047:                                                }
        !          20048:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          20049:                                            ht == &EG(symbol_table)) {
        !          20050:                                                        zend_execute_data *ex;
        !          20051:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          20052: 
        !          20053:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          20054:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          20055:                                                                        int i;
        !          20056: 
        !          20057:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          20058:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          20059:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          20060:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          20061:                                                                                        ex->CVs[i] = NULL;
        !          20062:                                                                                        break;
        !          20063:                                                                                }
        !          20064:                                                                        }
        !          20065:                                                                }
        !          20066:                                                        }
        !          20067:                                                }
        !          20068:                                                if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
        !          20069:                                                        zval_ptr_dtor(&offset);
        !          20070:                                                }
        !          20071:                                                break;
        !          20072:                                        case IS_NULL:
        !          20073:                                                zend_hash_del(ht, "", sizeof(""));
        !          20074:                                                break;
        !          20075:                                        default:
        !          20076:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          20077:                                                break;
        !          20078:                                }
        !          20079:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20080:                                break;
        !          20081:                        }
        !          20082:                        case IS_OBJECT:
        !          20083:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          20084:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          20085:                                }
        !          20086:                                if (0) {
        !          20087:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          20088:                                }
        !          20089:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          20090:                                if (0) {
        !          20091:                                        zval_ptr_dtor(&offset);
        !          20092:                                } else {
        !          20093:                                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20094:                                }
        !          20095:                                break;
        !          20096:                        case IS_STRING:
        !          20097:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          20098:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          20099:                        default:
        !          20100:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20101:                                break;
        !          20102:                }
        !          20103:        } else {
        !          20104:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20105:        }
        !          20106: 
        !          20107:        ZEND_VM_NEXT_OPCODE();
        !          20108: }
        !          20109: 
        !          20110: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20111: {
        !          20112:        zend_op *opline = EX(opline);
        !          20113:        zend_free_op free_op2;
        !          20114:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20115:        zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          20116: 
        !          20117:        if (IS_UNUSED != IS_VAR || container) {
        !          20118:                if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          20119:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          20120:                }
        !          20121:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          20122:                        if (0) {
        !          20123:                                MAKE_REAL_ZVAL_PTR(offset);
        !          20124:                        }
        !          20125:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          20126:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          20127:                        } else {
        !          20128:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          20129:                        }
        !          20130:                        if (0) {
        !          20131:                                zval_ptr_dtor(&offset);
        !          20132:                        } else {
        !          20133:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20134:                        }
        !          20135:                } else {
        !          20136:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20137:                }
        !          20138:        } else {
        !          20139:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20140:        }
        !          20141: 
        !          20142:        ZEND_VM_NEXT_OPCODE();
        !          20143: }
        !          20144: 
        !          20145: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_VAR(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          20146: {
        !          20147:        zend_op *opline = EX(opline);
        !          20148: 
        !          20149:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20150:        zval **value = NULL;
        !          20151:        int result = 0;
        !          20152: 
        !          20153:        if (IS_UNUSED != IS_VAR || container) {
        !          20154:                zend_free_op free_op2;
        !          20155:                zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          20156: 
        !          20157:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          20158:                        HashTable *ht;
        !          20159:                        int isset = 0;
        !          20160: 
        !          20161:                        ht = Z_ARRVAL_PP(container);
        !          20162: 
        !          20163:                        switch (Z_TYPE_P(offset)) {
        !          20164:                                case IS_DOUBLE:
        !          20165:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          20166:                                                isset = 1;
        !          20167:                                        }
        !          20168:                                        break;
        !          20169:                                case IS_RESOURCE:
        !          20170:                                case IS_BOOL:
        !          20171:                                case IS_LONG:
        !          20172:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          20173:                                                isset = 1;
        !          20174:                                        }
        !          20175:                                        break;
        !          20176:                                case IS_STRING:
        !          20177:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          20178:                                                isset = 1;
        !          20179:                                        }
        !          20180:                                        break;
        !          20181:                                case IS_NULL:
        !          20182:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          20183:                                                isset = 1;
        !          20184:                                        }
        !          20185:                                        break;
        !          20186:                                default:
        !          20187:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          20188: 
        !          20189:                                        break;
        !          20190:                        }
        !          20191: 
        !          20192:                        switch (opline->extended_value) {
        !          20193:                                case ZEND_ISSET:
        !          20194:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          20195:                                                result = 0;
        !          20196:                                        } else {
        !          20197:                                                result = isset;
        !          20198:                                        }
        !          20199:                                        break;
        !          20200:                                case ZEND_ISEMPTY:
        !          20201:                                        if (!isset || !i_zend_is_true(*value)) {
        !          20202:                                                result = 0;
        !          20203:                                        } else {
        !          20204:                                                result = 1;
        !          20205:                                        }
        !          20206:                                        break;
        !          20207:                        }
        !          20208:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20209:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          20210:                        if (0) {
        !          20211:                                MAKE_REAL_ZVAL_PTR(offset);
        !          20212:                        }
        !          20213:                        if (prop_dim) {
        !          20214:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          20215:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          20216:                                } else {
        !          20217:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          20218:                                        result = 0;
        !          20219:                                }
        !          20220:                        } else {
        !          20221:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          20222:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          20223:                                } else {
        !          20224:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          20225:                                        result = 0;
        !          20226:                                }
        !          20227:                        }
        !          20228:                        if (0) {
        !          20229:                                zval_ptr_dtor(&offset);
        !          20230:                        } else {
        !          20231:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20232:                        }
        !          20233:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          20234:                        zval tmp;
        !          20235: 
        !          20236:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          20237:                                tmp = *offset;
        !          20238:                                zval_copy_ctor(&tmp);
        !          20239:                                convert_to_long(&tmp);
        !          20240:                                offset = &tmp;
        !          20241:                        }
        !          20242:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          20243:                                switch (opline->extended_value) {
        !          20244:                                        case ZEND_ISSET:
        !          20245:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          20246:                                                        result = 1;
        !          20247:                                                }
        !          20248:                                                break;
        !          20249:                                        case ZEND_ISEMPTY:
        !          20250:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          20251:                                                        result = 1;
        !          20252:                                                }
        !          20253:                                                break;
        !          20254:                                }
        !          20255:                        }
        !          20256:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20257:                } else {
        !          20258:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          20259:                }
        !          20260:        }
        !          20261: 
        !          20262:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          20263: 
        !          20264:        switch (opline->extended_value) {
        !          20265:                case ZEND_ISSET:
        !          20266:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          20267:                        break;
        !          20268:                case ZEND_ISEMPTY:
        !          20269:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          20270:                        break;
        !          20271:        }
        !          20272: 
        !          20273:        ZEND_VM_NEXT_OPCODE();
        !          20274: }
        !          20275: 
        !          20276: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20277: {
        !          20278:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_VAR(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20279: }
        !          20280: 
        !          20281: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20282: {
        !          20283:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_VAR(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20284: }
        !          20285: 
        !          20286: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          20287: {
        !          20288:        zend_op *opline = EX(opline);
        !          20289:        zend_op *op_data = opline+1;
        !          20290:        zend_free_op free_op_data1;
        !          20291:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20292:        zval *object;
        !          20293:        zval *property = NULL;
        !          20294:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          20295:        znode *result = &opline->result;
        !          20296:        int have_get_ptr = 0;
        !          20297: 
        !          20298:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          20299:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          20300:        }
        !          20301: 
        !          20302:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20303:        make_real_object(object_ptr TSRMLS_CC);
        !          20304:        object = *object_ptr;
        !          20305: 
        !          20306:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          20307:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          20308: 
        !          20309:                FREE_OP(free_op_data1);
        !          20310: 
        !          20311:                if (!RETURN_VALUE_UNUSED(result)) {
        !          20312:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          20313:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20314:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          20315:                }
        !          20316:        } else {
        !          20317:                /* here we are sure we are dealing with an object */
        !          20318:                if (0) {
        !          20319:                        MAKE_REAL_ZVAL_PTR(property);
        !          20320:                }
        !          20321: 
        !          20322:                /* here property is a string */
        !          20323:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          20324:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          20325:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          20326:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          20327:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          20328: 
        !          20329:                                have_get_ptr = 1;
        !          20330:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          20331:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          20332:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          20333:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20334:                                        PZVAL_LOCK(*zptr);
        !          20335:                                }
        !          20336:                        }
        !          20337:                }
        !          20338: 
        !          20339:                if (!have_get_ptr) {
        !          20340:                        zval *z = NULL;
        !          20341: 
        !          20342:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          20343:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          20344:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          20345:                                }
        !          20346:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          20347:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          20348:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          20349:                                }
        !          20350:                        }
        !          20351:                        if (z) {
        !          20352:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          20353:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          20354: 
        !          20355:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          20356:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          20357:                                                zval_dtor(z);
        !          20358:                                                FREE_ZVAL(z);
        !          20359:                                        }
        !          20360:                                        z = value;
        !          20361:                                }
        !          20362:                                Z_ADDREF_P(z);
        !          20363:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          20364:                                binary_op(z, z, value TSRMLS_CC);
        !          20365:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          20366:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          20367:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          20368:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          20369:                                }
        !          20370:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          20371:                                        EX_T(result->u.var).var.ptr = z;
        !          20372:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20373:                                        PZVAL_LOCK(z);
        !          20374:                                }
        !          20375:                                zval_ptr_dtor(&z);
        !          20376:                        } else {
        !          20377:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          20378:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          20379:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          20380:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20381:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          20382:                                }
        !          20383:                        }
        !          20384:                }
        !          20385: 
        !          20386:                if (0) {
        !          20387:                        zval_ptr_dtor(&property);
        !          20388:                } else {
        !          20389: 
        !          20390:                }
        !          20391:                FREE_OP(free_op_data1);
        !          20392:        }
        !          20393: 
        !          20394:        /* assign_obj has two opcodes! */
        !          20395:        ZEND_VM_INC_OPCODE();
        !          20396:        ZEND_VM_NEXT_OPCODE();
        !          20397: }
        !          20398: 
        !          20399: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          20400: {
        !          20401:        zend_op *opline = EX(opline);
        !          20402:        zend_free_op free_op_data2, free_op_data1;
        !          20403:        zval **var_ptr;
        !          20404:        zval *value;
        !          20405: 
        !          20406:        switch (opline->extended_value) {
        !          20407:                case ZEND_ASSIGN_OBJ:
        !          20408:                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_UNUSED(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20409:                        break;
        !          20410:                case ZEND_ASSIGN_DIM: {
        !          20411:                                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20412: 
        !          20413:                                if (IS_UNUSED == IS_VAR && !container) {
        !          20414:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          20415:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          20416:                                        if (IS_UNUSED == IS_VAR && !0) {
        !          20417:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          20418:                                        }
        !          20419:                                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_UNUSED(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20420:                                } else {
        !          20421:                                        zend_op *op_data = opline+1;
        !          20422:                                        zval *dim = NULL;
        !          20423: 
        !          20424:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          20425:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          20426:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          20427:                                        ZEND_VM_INC_OPCODE();
        !          20428:                                }
        !          20429:                        }
        !          20430:                        break;
        !          20431:                default:
        !          20432:                        value = NULL;
        !          20433:                        var_ptr = NULL;
        !          20434:                        /* do nothing */
        !          20435:                        break;
        !          20436:        }
        !          20437: 
        !          20438:        if (!var_ptr) {
        !          20439:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          20440:        }
        !          20441: 
        !          20442:        if (*var_ptr == EG(error_zval_ptr)) {
        !          20443:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          20444:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          20445:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          20446:                }
        !          20447: 
        !          20448: 
        !          20449:                ZEND_VM_NEXT_OPCODE();
        !          20450:        }
        !          20451: 
        !          20452:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          20453: 
        !          20454:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          20455:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          20456:                /* proxy object */
        !          20457:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          20458:                Z_ADDREF_P(objval);
        !          20459:                binary_op(objval, objval, value TSRMLS_CC);
        !          20460:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          20461:                zval_ptr_dtor(&objval);
        !          20462:        } else {
        !          20463:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          20464:        }
        !          20465: 
        !          20466:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          20467:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          20468:                PZVAL_LOCK(*var_ptr);
        !          20469:        }
        !          20470: 
        !          20471:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          20472:                FREE_OP(free_op_data1);
        !          20473:                FREE_OP_VAR_PTR(free_op_data2);
        !          20474:        }
        !          20475: 
        !          20476:        ZEND_VM_NEXT_OPCODE();
        !          20477: }
        !          20478: 
        !          20479: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20480: {
        !          20481:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20482: }
        !          20483: 
        !          20484: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20485: {
        !          20486:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20487: }
        !          20488: 
        !          20489: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20490: {
        !          20491:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20492: }
        !          20493: 
        !          20494: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20495: {
        !          20496:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20497: }
        !          20498: 
        !          20499: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20500: {
        !          20501:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20502: }
        !          20503: 
        !          20504: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20505: {
        !          20506:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20507: }
        !          20508: 
        !          20509: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20510: {
        !          20511:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20512: }
        !          20513: 
        !          20514: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20515: {
        !          20516:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20517: }
        !          20518: 
        !          20519: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20520: {
        !          20521:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20522: }
        !          20523: 
        !          20524: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20525: {
        !          20526:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20527: }
        !          20528: 
        !          20529: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20530: {
        !          20531:        return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20532: }
        !          20533: 
        !          20534: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20535: {
        !          20536:        zend_op *opline = EX(opline);
        !          20537: 
        !          20538:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          20539:        if (IS_UNUSED == IS_UNUSED) {
        !          20540:                ZEND_VM_NEXT_OPCODE();
        !          20541: #if 0 || IS_UNUSED != IS_UNUSED
        !          20542:        } else {
        !          20543:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20544: #endif
        !          20545:        }
        !          20546: }
        !          20547: 
        !          20548: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          20549: {
        !          20550:        zend_op *opline = EX(opline);
        !          20551:        zend_op *op_data = opline+1;
        !          20552:        zend_free_op free_op_data1;
        !          20553:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20554:        zval *object;
        !          20555:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          20556:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          20557:        znode *result = &opline->result;
        !          20558:        int have_get_ptr = 0;
        !          20559: 
        !          20560:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          20561:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          20562:        }
        !          20563: 
        !          20564:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20565:        make_real_object(object_ptr TSRMLS_CC);
        !          20566:        object = *object_ptr;
        !          20567: 
        !          20568:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          20569:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          20570: 
        !          20571:                FREE_OP(free_op_data1);
        !          20572: 
        !          20573:                if (!RETURN_VALUE_UNUSED(result)) {
        !          20574:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          20575:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20576:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          20577:                }
        !          20578:        } else {
        !          20579:                /* here we are sure we are dealing with an object */
        !          20580:                if (0) {
        !          20581:                        MAKE_REAL_ZVAL_PTR(property);
        !          20582:                }
        !          20583: 
        !          20584:                /* here property is a string */
        !          20585:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          20586:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          20587:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          20588:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          20589:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          20590: 
        !          20591:                                have_get_ptr = 1;
        !          20592:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          20593:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          20594:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          20595:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20596:                                        PZVAL_LOCK(*zptr);
        !          20597:                                }
        !          20598:                        }
        !          20599:                }
        !          20600: 
        !          20601:                if (!have_get_ptr) {
        !          20602:                        zval *z = NULL;
        !          20603: 
        !          20604:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          20605:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          20606:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          20607:                                }
        !          20608:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          20609:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          20610:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          20611:                                }
        !          20612:                        }
        !          20613:                        if (z) {
        !          20614:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          20615:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          20616: 
        !          20617:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          20618:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          20619:                                                zval_dtor(z);
        !          20620:                                                FREE_ZVAL(z);
        !          20621:                                        }
        !          20622:                                        z = value;
        !          20623:                                }
        !          20624:                                Z_ADDREF_P(z);
        !          20625:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          20626:                                binary_op(z, z, value TSRMLS_CC);
        !          20627:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          20628:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          20629:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          20630:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          20631:                                }
        !          20632:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          20633:                                        EX_T(result->u.var).var.ptr = z;
        !          20634:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20635:                                        PZVAL_LOCK(z);
        !          20636:                                }
        !          20637:                                zval_ptr_dtor(&z);
        !          20638:                        } else {
        !          20639:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          20640:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          20641:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          20642:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          20643:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          20644:                                }
        !          20645:                        }
        !          20646:                }
        !          20647: 
        !          20648:                if (0) {
        !          20649:                        zval_ptr_dtor(&property);
        !          20650:                } else {
        !          20651: 
        !          20652:                }
        !          20653:                FREE_OP(free_op_data1);
        !          20654:        }
        !          20655: 
        !          20656:        /* assign_obj has two opcodes! */
        !          20657:        ZEND_VM_INC_OPCODE();
        !          20658:        ZEND_VM_NEXT_OPCODE();
        !          20659: }
        !          20660: 
        !          20661: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_UNUSED_CV(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          20662: {
        !          20663:        zend_op *opline = EX(opline);
        !          20664:        zend_free_op free_op_data2, free_op_data1;
        !          20665:        zval **var_ptr;
        !          20666:        zval *value;
        !          20667: 
        !          20668:        switch (opline->extended_value) {
        !          20669:                case ZEND_ASSIGN_OBJ:
        !          20670:                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20671:                        break;
        !          20672:                case ZEND_ASSIGN_DIM: {
        !          20673:                                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20674: 
        !          20675:                                if (IS_UNUSED == IS_VAR && !container) {
        !          20676:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          20677:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          20678:                                        if (IS_UNUSED == IS_VAR && !0) {
        !          20679:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          20680:                                        }
        !          20681:                                        return zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20682:                                } else {
        !          20683:                                        zend_op *op_data = opline+1;
        !          20684:                                        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          20685: 
        !          20686:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          20687:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          20688:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          20689:                                        ZEND_VM_INC_OPCODE();
        !          20690:                                }
        !          20691:                        }
        !          20692:                        break;
        !          20693:                default:
        !          20694:                        value = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          20695:                        var_ptr = NULL;
        !          20696:                        /* do nothing */
        !          20697:                        break;
        !          20698:        }
        !          20699: 
        !          20700:        if (!var_ptr) {
        !          20701:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          20702:        }
        !          20703: 
        !          20704:        if (*var_ptr == EG(error_zval_ptr)) {
        !          20705:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          20706:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          20707:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          20708:                }
        !          20709: 
        !          20710: 
        !          20711:                ZEND_VM_NEXT_OPCODE();
        !          20712:        }
        !          20713: 
        !          20714:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          20715: 
        !          20716:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          20717:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          20718:                /* proxy object */
        !          20719:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          20720:                Z_ADDREF_P(objval);
        !          20721:                binary_op(objval, objval, value TSRMLS_CC);
        !          20722:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          20723:                zval_ptr_dtor(&objval);
        !          20724:        } else {
        !          20725:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          20726:        }
        !          20727: 
        !          20728:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          20729:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          20730:                PZVAL_LOCK(*var_ptr);
        !          20731:        }
        !          20732: 
        !          20733:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          20734:                FREE_OP(free_op_data1);
        !          20735:                FREE_OP_VAR_PTR(free_op_data2);
        !          20736:        }
        !          20737: 
        !          20738:        ZEND_VM_NEXT_OPCODE();
        !          20739: }
        !          20740: 
        !          20741: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20742: {
        !          20743:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20744: }
        !          20745: 
        !          20746: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20747: {
        !          20748:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20749: }
        !          20750: 
        !          20751: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20752: {
        !          20753:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20754: }
        !          20755: 
        !          20756: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20757: {
        !          20758:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20759: }
        !          20760: 
        !          20761: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20762: {
        !          20763:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20764: }
        !          20765: 
        !          20766: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20767: {
        !          20768:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20769: }
        !          20770: 
        !          20771: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20772: {
        !          20773:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20774: }
        !          20775: 
        !          20776: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20777: {
        !          20778:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20779: }
        !          20780: 
        !          20781: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20782: {
        !          20783:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20784: }
        !          20785: 
        !          20786: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20787: {
        !          20788:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20789: }
        !          20790: 
        !          20791: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20792: {
        !          20793:        return zend_binary_assign_op_helper_SPEC_UNUSED_CV(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20794: }
        !          20795: 
        !          20796: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CV(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          20797: {
        !          20798:        zend_op *opline = EX(opline);
        !          20799: 
        !          20800:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20801:        zval *object;
        !          20802:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          20803:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          20804:        int have_get_ptr = 0;
        !          20805: 
        !          20806:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          20807:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          20808:        }
        !          20809: 
        !          20810:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          20811:        object = *object_ptr;
        !          20812: 
        !          20813:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          20814:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          20815: 
        !          20816:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          20817:                        *retval = EG(uninitialized_zval_ptr);
        !          20818:                        PZVAL_LOCK(*retval);
        !          20819:                }
        !          20820: 
        !          20821:                ZEND_VM_NEXT_OPCODE();
        !          20822:        }
        !          20823: 
        !          20824:        /* here we are sure we are dealing with an object */
        !          20825: 
        !          20826:        if (0) {
        !          20827:                MAKE_REAL_ZVAL_PTR(property);
        !          20828:        }
        !          20829: 
        !          20830:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          20831:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          20832:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          20833:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          20834: 
        !          20835:                        have_get_ptr = 1;
        !          20836:                        incdec_op(*zptr);
        !          20837:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          20838:                                *retval = *zptr;
        !          20839:                                PZVAL_LOCK(*retval);
        !          20840:                        }
        !          20841:                }
        !          20842:        }
        !          20843: 
        !          20844:        if (!have_get_ptr) {
        !          20845:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          20846:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          20847: 
        !          20848:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          20849:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          20850: 
        !          20851:                                if (Z_REFCOUNT_P(z) == 0) {
        !          20852:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          20853:                                        zval_dtor(z);
        !          20854:                                        FREE_ZVAL(z);
        !          20855:                                }
        !          20856:                                z = value;
        !          20857:                        }
        !          20858:                        Z_ADDREF_P(z);
        !          20859:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          20860:                        incdec_op(z);
        !          20861:                        *retval = z;
        !          20862:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          20863:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          20864:                        zval_ptr_dtor(&z);
        !          20865:                } else {
        !          20866:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          20867:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          20868:                                *retval = EG(uninitialized_zval_ptr);
        !          20869:                                PZVAL_LOCK(*retval);
        !          20870:                        }
        !          20871:                }
        !          20872:        }
        !          20873: 
        !          20874:        if (0) {
        !          20875:                zval_ptr_dtor(&property);
        !          20876:        } else {
        !          20877: 
        !          20878:        }
        !          20879: 
        !          20880:        ZEND_VM_NEXT_OPCODE();
        !          20881: }
        !          20882: 
        !          20883: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20884: {
        !          20885:        return zend_pre_incdec_property_helper_SPEC_UNUSED_CV(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20886: }
        !          20887: 
        !          20888: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20889: {
        !          20890:        return zend_pre_incdec_property_helper_SPEC_UNUSED_CV(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20891: }
        !          20892: 
        !          20893: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CV(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          20894: {
        !          20895:        zend_op *opline = EX(opline);
        !          20896: 
        !          20897:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          20898:        zval *object;
        !          20899:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          20900:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          20901:        int have_get_ptr = 0;
        !          20902: 
        !          20903:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          20904:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          20905:        }
        !          20906: 
        !          20907:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          20908:        object = *object_ptr;
        !          20909: 
        !          20910:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          20911:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          20912: 
        !          20913:                *retval = *EG(uninitialized_zval_ptr);
        !          20914: 
        !          20915:                ZEND_VM_NEXT_OPCODE();
        !          20916:        }
        !          20917: 
        !          20918:        /* here we are sure we are dealing with an object */
        !          20919: 
        !          20920:        if (0) {
        !          20921:                MAKE_REAL_ZVAL_PTR(property);
        !          20922:        }
        !          20923: 
        !          20924:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          20925:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          20926:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          20927:                        have_get_ptr = 1;
        !          20928:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          20929: 
        !          20930:                        *retval = **zptr;
        !          20931:                        zendi_zval_copy_ctor(*retval);
        !          20932: 
        !          20933:                        incdec_op(*zptr);
        !          20934: 
        !          20935:                }
        !          20936:        }
        !          20937: 
        !          20938:        if (!have_get_ptr) {
        !          20939:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          20940:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          20941:                        zval *z_copy;
        !          20942: 
        !          20943:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          20944:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          20945: 
        !          20946:                                if (Z_REFCOUNT_P(z) == 0) {
        !          20947:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          20948:                                        zval_dtor(z);
        !          20949:                                        FREE_ZVAL(z);
        !          20950:                                }
        !          20951:                                z = value;
        !          20952:                        }
        !          20953:                        *retval = *z;
        !          20954:                        zendi_zval_copy_ctor(*retval);
        !          20955:                        ALLOC_ZVAL(z_copy);
        !          20956:                        *z_copy = *z;
        !          20957:                        zendi_zval_copy_ctor(*z_copy);
        !          20958:                        INIT_PZVAL(z_copy);
        !          20959:                        incdec_op(z_copy);
        !          20960:                        Z_ADDREF_P(z);
        !          20961:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          20962:                        zval_ptr_dtor(&z_copy);
        !          20963:                        zval_ptr_dtor(&z);
        !          20964:                } else {
        !          20965:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          20966:                        *retval = *EG(uninitialized_zval_ptr);
        !          20967:                }
        !          20968:        }
        !          20969: 
        !          20970:        if (0) {
        !          20971:                zval_ptr_dtor(&property);
        !          20972:        } else {
        !          20973: 
        !          20974:        }
        !          20975: 
        !          20976:        ZEND_VM_NEXT_OPCODE();
        !          20977: }
        !          20978: 
        !          20979: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20980: {
        !          20981:        return zend_post_incdec_property_helper_SPEC_UNUSED_CV(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20982: }
        !          20983: 
        !          20984: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          20985: {
        !          20986:        return zend_post_incdec_property_helper_SPEC_UNUSED_CV(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          20987: }
        !          20988: 
        !          20989: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_UNUSED_CV(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          20990: {
        !          20991:        zend_op *opline = EX(opline);
        !          20992: 
        !          20993:        zval *container = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          20994: 
        !          20995:        zval *offset  = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          20996: 
        !          20997:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          20998:                if (type != BP_VAR_IS) {
        !          20999:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          21000:                }
        !          21001:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          21002:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          21003:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          21004:                }
        !          21005: 
        !          21006:        } else {
        !          21007:                zval *retval;
        !          21008: 
        !          21009:                if (0) {
        !          21010:                        MAKE_REAL_ZVAL_PTR(offset);
        !          21011:                }
        !          21012: 
        !          21013:                /* here we are sure we are dealing with an object */
        !          21014:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          21015: 
        !          21016:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          21017:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          21018:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          21019:                                zval_dtor(retval);
        !          21020:                                FREE_ZVAL(retval);
        !          21021:                        }
        !          21022:                } else {
        !          21023:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          21024:                        PZVAL_LOCK(retval);
        !          21025:                }
        !          21026: 
        !          21027:                if (0) {
        !          21028:                        zval_ptr_dtor(&offset);
        !          21029:                } else {
        !          21030: 
        !          21031:                }
        !          21032:        }
        !          21033: 
        !          21034:        ZEND_VM_NEXT_OPCODE();
        !          21035: }
        !          21036: 
        !          21037: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21038: {
        !          21039:        return zend_fetch_property_address_read_helper_SPEC_UNUSED_CV(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21040: }
        !          21041: 
        !          21042: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21043: {
        !          21044:        zend_op *opline = EX(opline);
        !          21045:        zend_free_op free_op1;
        !          21046:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21047:        zval **container;
        !          21048: 
        !          21049:        if (IS_UNUSED == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          21050:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          21051:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          21052:        }
        !          21053: 
        !          21054:        if (0) {
        !          21055:                MAKE_REAL_ZVAL_PTR(property);
        !          21056:        }
        !          21057:        container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          21058:        if (IS_UNUSED == IS_VAR && !container) {
        !          21059:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          21060:        }
        !          21061:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          21062:        if (0) {
        !          21063:                zval_ptr_dtor(&property);
        !          21064:        } else {
        !          21065: 
        !          21066:        }
        !          21067:        if (IS_UNUSED == IS_VAR && 0 &&
        !          21068:            READY_TO_DESTROY(free_op1.var)) {
        !          21069:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          21070:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          21071:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          21072:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21073:                }
        !          21074:        }
        !          21075: 
        !          21076:        /* We are going to assign the result by reference */
        !          21077:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          21078:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21079:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21080:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21081:        }
        !          21082: 
        !          21083:        ZEND_VM_NEXT_OPCODE();
        !          21084: }
        !          21085: 
        !          21086: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21087: {
        !          21088:        zend_op *opline = EX(opline);
        !          21089:        zend_free_op free_op1;
        !          21090:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21091:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          21092: 
        !          21093:        if (0) {
        !          21094:                MAKE_REAL_ZVAL_PTR(property);
        !          21095:        }
        !          21096:        if (IS_UNUSED == IS_VAR && !container) {
        !          21097:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          21098:        }
        !          21099:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          21100:        if (0) {
        !          21101:                zval_ptr_dtor(&property);
        !          21102:        } else {
        !          21103: 
        !          21104:        }
        !          21105:        if (IS_UNUSED == IS_VAR && 0 &&
        !          21106:            READY_TO_DESTROY(free_op1.var)) {
        !          21107:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          21108:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          21109:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          21110:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21111:                }
        !          21112:        }
        !          21113: 
        !          21114:        ZEND_VM_NEXT_OPCODE();
        !          21115: }
        !          21116: 
        !          21117: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21118: {
        !          21119:        return zend_fetch_property_address_read_helper_SPEC_UNUSED_CV(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21120: }
        !          21121: 
        !          21122: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21123: {
        !          21124:        zend_op *opline = EX(opline);
        !          21125: 
        !          21126:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          21127:                /* Behave like FETCH_OBJ_W */
        !          21128:                zend_free_op free_op1;
        !          21129:                zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21130:                zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          21131: 
        !          21132:                if (0) {
        !          21133:                        MAKE_REAL_ZVAL_PTR(property);
        !          21134:                }
        !          21135:                if (IS_UNUSED == IS_VAR && !container) {
        !          21136:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          21137:                }
        !          21138:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          21139:                if (0) {
        !          21140:                        zval_ptr_dtor(&property);
        !          21141:                } else {
        !          21142: 
        !          21143:                }
        !          21144:                if (IS_UNUSED == IS_VAR && 0 &&
        !          21145:                    READY_TO_DESTROY(free_op1.var)) {
        !          21146:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          21147:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          21148:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          21149:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21150:                        }
        !          21151:                }
        !          21152: 
        !          21153:                ZEND_VM_NEXT_OPCODE();
        !          21154:        } else {
        !          21155:                return zend_fetch_property_address_read_helper_SPEC_UNUSED_CV(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21156:        }
        !          21157: }
        !          21158: 
        !          21159: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21160: {
        !          21161:        zend_op *opline = EX(opline);
        !          21162:        zend_free_op free_op1, free_res;
        !          21163:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          21164:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21165: 
        !          21166:        if (IS_UNUSED == IS_CV) {
        !          21167:                if (container != &EG(uninitialized_zval_ptr)) {
        !          21168:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          21169:                }
        !          21170:        }
        !          21171:        if (0) {
        !          21172:                MAKE_REAL_ZVAL_PTR(property);
        !          21173:        }
        !          21174:        if (IS_UNUSED == IS_VAR && !container) {
        !          21175:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          21176:        }
        !          21177:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          21178:        if (0) {
        !          21179:                zval_ptr_dtor(&property);
        !          21180:        } else {
        !          21181: 
        !          21182:        }
        !          21183:        if (IS_UNUSED == IS_VAR && 0 &&
        !          21184:            READY_TO_DESTROY(free_op1.var)) {
        !          21185:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          21186:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          21187:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          21188:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21189:                }
        !          21190:        }
        !          21191: 
        !          21192:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          21193:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          21194:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21195:        }
        !          21196:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          21197:        FREE_OP_VAR_PTR(free_res);
        !          21198:        ZEND_VM_NEXT_OPCODE();
        !          21199: }
        !          21200: 
        !          21201: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21202: {
        !          21203:        zend_op *opline = EX(opline);
        !          21204:        zend_op *op_data = opline+1;
        !          21205: 
        !          21206:        zval **object_ptr = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          21207:        zval *property_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21208: 
        !          21209:        if (0) {
        !          21210:                MAKE_REAL_ZVAL_PTR(property_name);
        !          21211:        }
        !          21212:        if (IS_UNUSED == IS_VAR && !object_ptr) {
        !          21213:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          21214:        }
        !          21215:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          21216:        if (0) {
        !          21217:                zval_ptr_dtor(&property_name);
        !          21218:        } else {
        !          21219: 
        !          21220:        }
        !          21221: 
        !          21222:        /* assign_obj has two opcodes! */
        !          21223:        ZEND_VM_INC_OPCODE();
        !          21224:        ZEND_VM_NEXT_OPCODE();
        !          21225: }
        !          21226: 
        !          21227: static int ZEND_FASTCALL  ZEND_ADD_VAR_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21228: {
        !          21229:        zend_op *opline = EX(opline);
        !          21230: 
        !          21231:        zval *str = &EX_T(opline->result.u.var).tmp_var;
        !          21232:        zval *var = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21233:        zval var_copy;
        !          21234:        int use_copy = 0;
        !          21235: 
        !          21236:        if (IS_UNUSED == IS_UNUSED) {
        !          21237:                /* Initialize for erealloc in add_string_to_string */
        !          21238:                Z_STRVAL_P(str) = NULL;
        !          21239:                Z_STRLEN_P(str) = 0;
        !          21240:                Z_TYPE_P(str) = IS_STRING;
        !          21241: 
        !          21242:                INIT_PZVAL(str);
        !          21243:        }
        !          21244: 
        !          21245:        if (Z_TYPE_P(var) != IS_STRING) {
        !          21246:                zend_make_printable_zval(var, &var_copy, &use_copy);
        !          21247: 
        !          21248:                if (use_copy) {
        !          21249:                        var = &var_copy;
        !          21250:                }
        !          21251:        }
        !          21252:        add_string_to_string(str, str, var);
        !          21253: 
        !          21254:        if (use_copy) {
        !          21255:                zval_dtor(var);
        !          21256:        }
        !          21257:        /* original comment, possibly problematic:
        !          21258:         * FREE_OP is missing intentionally here - we're always working on the same temporary variable
        !          21259:         * (Zeev):  I don't think it's problematic, we only use variables
        !          21260:         * which aren't affected by FREE_OP(Ts, )'s anyway, unless they're
        !          21261:         * string offsets or overloaded objects
        !          21262:         */
        !          21263: 
        !          21264:        ZEND_VM_NEXT_OPCODE();
        !          21265: }
        !          21266: 
        !          21267: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21268: {
        !          21269:        zend_op *opline = EX(opline);
        !          21270:        zval *function_name;
        !          21271:        char *function_name_strval;
        !          21272:        int function_name_strlen;
        !          21273: 
        !          21274: 
        !          21275:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          21276: 
        !          21277:        function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21278: 
        !          21279:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          21280:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          21281:        }
        !          21282: 
        !          21283:        function_name_strval = Z_STRVAL_P(function_name);
        !          21284:        function_name_strlen = Z_STRLEN_P(function_name);
        !          21285: 
        !          21286:        EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
        !          21287: 
        !          21288:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          21289:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          21290:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          21291:                }
        !          21292: 
        !          21293:                /* First, locate the function. */
        !          21294:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          21295:                if (!EX(fbc)) {
        !          21296:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          21297:                }
        !          21298: 
        !          21299:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          21300:        } else {
        !          21301:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          21302:        }
        !          21303: 
        !          21304:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          21305:                EX(object) = NULL;
        !          21306:        } else {
        !          21307:                if (!PZVAL_IS_REF(EX(object))) {
        !          21308:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          21309:                } else {
        !          21310:                        zval *this_ptr;
        !          21311:                        ALLOC_ZVAL(this_ptr);
        !          21312:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          21313:                        zval_copy_ctor(this_ptr);
        !          21314:                        EX(object) = this_ptr;
        !          21315:                }
        !          21316:        }
        !          21317: 
        !          21318: 
        !          21319:        ZEND_VM_NEXT_OPCODE();
        !          21320: }
        !          21321: 
        !          21322: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21323: {
        !          21324:        zend_op *opline = EX(opline);
        !          21325: 
        !          21326:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          21327:        if (IS_UNUSED == IS_UNUSED) {
        !          21328:                ZEND_VM_NEXT_OPCODE();
        !          21329: #if 0 || IS_UNUSED != IS_UNUSED
        !          21330:        } else {
        !          21331:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21332: #endif
        !          21333:        }
        !          21334: }
        !          21335: 
        !          21336: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21337: {
        !          21338:        zend_op *opline = EX(opline);
        !          21339: 
        !          21340:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          21341:        zval *offset;
        !          21342: 
        !          21343:        if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          21344:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          21345:        }
        !          21346:        offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21347: 
        !          21348:        if (IS_UNUSED != IS_VAR || container) {
        !          21349:                switch (Z_TYPE_PP(container)) {
        !          21350:                        case IS_ARRAY: {
        !          21351:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          21352: 
        !          21353:                                switch (Z_TYPE_P(offset)) {
        !          21354:                                        case IS_DOUBLE:
        !          21355:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          21356:                                                break;
        !          21357:                                        case IS_RESOURCE:
        !          21358:                                        case IS_BOOL:
        !          21359:                                        case IS_LONG:
        !          21360:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          21361:                                                break;
        !          21362:                                        case IS_STRING:
        !          21363:                                                if (IS_CV == IS_CV || IS_CV == IS_VAR) {
        !          21364:                                                        Z_ADDREF_P(offset);
        !          21365:                                                }
        !          21366:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          21367:                                            ht == &EG(symbol_table)) {
        !          21368:                                                        zend_execute_data *ex;
        !          21369:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          21370: 
        !          21371:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          21372:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          21373:                                                                        int i;
        !          21374: 
        !          21375:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          21376:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          21377:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          21378:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          21379:                                                                                        ex->CVs[i] = NULL;
        !          21380:                                                                                        break;
        !          21381:                                                                                }
        !          21382:                                                                        }
        !          21383:                                                                }
        !          21384:                                                        }
        !          21385:                                                }
        !          21386:                                                if (IS_CV == IS_CV || IS_CV == IS_VAR) {
        !          21387:                                                        zval_ptr_dtor(&offset);
        !          21388:                                                }
        !          21389:                                                break;
        !          21390:                                        case IS_NULL:
        !          21391:                                                zend_hash_del(ht, "", sizeof(""));
        !          21392:                                                break;
        !          21393:                                        default:
        !          21394:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          21395:                                                break;
        !          21396:                                }
        !          21397: 
        !          21398:                                break;
        !          21399:                        }
        !          21400:                        case IS_OBJECT:
        !          21401:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          21402:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          21403:                                }
        !          21404:                                if (0) {
        !          21405:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          21406:                                }
        !          21407:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          21408:                                if (0) {
        !          21409:                                        zval_ptr_dtor(&offset);
        !          21410:                                } else {
        !          21411: 
        !          21412:                                }
        !          21413:                                break;
        !          21414:                        case IS_STRING:
        !          21415:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          21416:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          21417:                        default:
        !          21418: 
        !          21419:                                break;
        !          21420:                }
        !          21421:        } else {
        !          21422: 
        !          21423:        }
        !          21424: 
        !          21425:        ZEND_VM_NEXT_OPCODE();
        !          21426: }
        !          21427: 
        !          21428: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21429: {
        !          21430:        zend_op *opline = EX(opline);
        !          21431: 
        !          21432:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          21433:        zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21434: 
        !          21435:        if (IS_UNUSED != IS_VAR || container) {
        !          21436:                if (IS_UNUSED == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          21437:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          21438:                }
        !          21439:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          21440:                        if (0) {
        !          21441:                                MAKE_REAL_ZVAL_PTR(offset);
        !          21442:                        }
        !          21443:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          21444:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          21445:                        } else {
        !          21446:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          21447:                        }
        !          21448:                        if (0) {
        !          21449:                                zval_ptr_dtor(&offset);
        !          21450:                        } else {
        !          21451: 
        !          21452:                        }
        !          21453:                } else {
        !          21454: 
        !          21455:                }
        !          21456:        } else {
        !          21457: 
        !          21458:        }
        !          21459: 
        !          21460:        ZEND_VM_NEXT_OPCODE();
        !          21461: }
        !          21462: 
        !          21463: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CV(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          21464: {
        !          21465:        zend_op *opline = EX(opline);
        !          21466: 
        !          21467:        zval **container = _get_obj_zval_ptr_ptr_unused(TSRMLS_C);
        !          21468:        zval **value = NULL;
        !          21469:        int result = 0;
        !          21470: 
        !          21471:        if (IS_UNUSED != IS_VAR || container) {
        !          21472: 
        !          21473:                zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21474: 
        !          21475:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          21476:                        HashTable *ht;
        !          21477:                        int isset = 0;
        !          21478: 
        !          21479:                        ht = Z_ARRVAL_PP(container);
        !          21480: 
        !          21481:                        switch (Z_TYPE_P(offset)) {
        !          21482:                                case IS_DOUBLE:
        !          21483:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          21484:                                                isset = 1;
        !          21485:                                        }
        !          21486:                                        break;
        !          21487:                                case IS_RESOURCE:
        !          21488:                                case IS_BOOL:
        !          21489:                                case IS_LONG:
        !          21490:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          21491:                                                isset = 1;
        !          21492:                                        }
        !          21493:                                        break;
        !          21494:                                case IS_STRING:
        !          21495:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          21496:                                                isset = 1;
        !          21497:                                        }
        !          21498:                                        break;
        !          21499:                                case IS_NULL:
        !          21500:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          21501:                                                isset = 1;
        !          21502:                                        }
        !          21503:                                        break;
        !          21504:                                default:
        !          21505:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          21506: 
        !          21507:                                        break;
        !          21508:                        }
        !          21509: 
        !          21510:                        switch (opline->extended_value) {
        !          21511:                                case ZEND_ISSET:
        !          21512:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          21513:                                                result = 0;
        !          21514:                                        } else {
        !          21515:                                                result = isset;
        !          21516:                                        }
        !          21517:                                        break;
        !          21518:                                case ZEND_ISEMPTY:
        !          21519:                                        if (!isset || !i_zend_is_true(*value)) {
        !          21520:                                                result = 0;
        !          21521:                                        } else {
        !          21522:                                                result = 1;
        !          21523:                                        }
        !          21524:                                        break;
        !          21525:                        }
        !          21526: 
        !          21527:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          21528:                        if (0) {
        !          21529:                                MAKE_REAL_ZVAL_PTR(offset);
        !          21530:                        }
        !          21531:                        if (prop_dim) {
        !          21532:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          21533:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          21534:                                } else {
        !          21535:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          21536:                                        result = 0;
        !          21537:                                }
        !          21538:                        } else {
        !          21539:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          21540:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          21541:                                } else {
        !          21542:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          21543:                                        result = 0;
        !          21544:                                }
        !          21545:                        }
        !          21546:                        if (0) {
        !          21547:                                zval_ptr_dtor(&offset);
        !          21548:                        } else {
        !          21549: 
        !          21550:                        }
        !          21551:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          21552:                        zval tmp;
        !          21553: 
        !          21554:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          21555:                                tmp = *offset;
        !          21556:                                zval_copy_ctor(&tmp);
        !          21557:                                convert_to_long(&tmp);
        !          21558:                                offset = &tmp;
        !          21559:                        }
        !          21560:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          21561:                                switch (opline->extended_value) {
        !          21562:                                        case ZEND_ISSET:
        !          21563:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          21564:                                                        result = 1;
        !          21565:                                                }
        !          21566:                                                break;
        !          21567:                                        case ZEND_ISEMPTY:
        !          21568:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          21569:                                                        result = 1;
        !          21570:                                                }
        !          21571:                                                break;
        !          21572:                                }
        !          21573:                        }
        !          21574: 
        !          21575:                } else {
        !          21576: 
        !          21577:                }
        !          21578:        }
        !          21579: 
        !          21580:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          21581: 
        !          21582:        switch (opline->extended_value) {
        !          21583:                case ZEND_ISSET:
        !          21584:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          21585:                        break;
        !          21586:                case ZEND_ISEMPTY:
        !          21587:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          21588:                        break;
        !          21589:        }
        !          21590: 
        !          21591:        ZEND_VM_NEXT_OPCODE();
        !          21592: }
        !          21593: 
        !          21594: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21595: {
        !          21596:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CV(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21597: }
        !          21598: 
        !          21599: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21600: {
        !          21601:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_UNUSED_CV(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21602: }
        !          21603: 
        !          21604: static int ZEND_FASTCALL  ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21605: {
        !          21606:        zend_op *opline = EX(opline);
        !          21607: 
        !          21608: 
        !          21609:        bitwise_not_function(&EX_T(opline->result.u.var).tmp_var,
        !          21610:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          21611: 
        !          21612:        ZEND_VM_NEXT_OPCODE();
        !          21613: }
        !          21614: 
        !          21615: static int ZEND_FASTCALL  ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21616: {
        !          21617:        zend_op *opline = EX(opline);
        !          21618: 
        !          21619: 
        !          21620:        boolean_not_function(&EX_T(opline->result.u.var).tmp_var,
        !          21621:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          21622: 
        !          21623:        ZEND_VM_NEXT_OPCODE();
        !          21624: }
        !          21625: 
        !          21626: static int ZEND_FASTCALL  ZEND_PRE_INC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21627: {
        !          21628:        zend_op *opline = EX(opline);
        !          21629: 
        !          21630:        zval **var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          21631: 
        !          21632:        if (IS_CV == IS_VAR && !var_ptr) {
        !          21633:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          21634:        }
        !          21635:        if (IS_CV == IS_VAR && *var_ptr == EG(error_zval_ptr)) {
        !          21636:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          21637:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          21638:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          21639:                }
        !          21640: 
        !          21641:                ZEND_VM_NEXT_OPCODE();
        !          21642:        }
        !          21643: 
        !          21644:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          21645: 
        !          21646:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          21647:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          21648:                /* proxy object */
        !          21649:                zval *val = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          21650:                Z_ADDREF_P(val);
        !          21651:                increment_function(val);
        !          21652:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, val TSRMLS_CC);
        !          21653:                zval_ptr_dtor(&val);
        !          21654:        } else {
        !          21655:                increment_function(*var_ptr);
        !          21656:        }
        !          21657: 
        !          21658:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          21659:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          21660:                PZVAL_LOCK(*var_ptr);
        !          21661:        }
        !          21662: 
        !          21663:        ZEND_VM_NEXT_OPCODE();
        !          21664: }
        !          21665: 
        !          21666: static int ZEND_FASTCALL  ZEND_PRE_DEC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21667: {
        !          21668:        zend_op *opline = EX(opline);
        !          21669: 
        !          21670:        zval **var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          21671: 
        !          21672:        if (IS_CV == IS_VAR && !var_ptr) {
        !          21673:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          21674:        }
        !          21675:        if (IS_CV == IS_VAR && *var_ptr == EG(error_zval_ptr)) {
        !          21676:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          21677:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          21678:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          21679:                }
        !          21680: 
        !          21681:                ZEND_VM_NEXT_OPCODE();
        !          21682:        }
        !          21683: 
        !          21684:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          21685: 
        !          21686:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          21687:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          21688:                /* proxy object */
        !          21689:                zval *val = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          21690:                Z_ADDREF_P(val);
        !          21691:                decrement_function(val);
        !          21692:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, val TSRMLS_CC);
        !          21693:                zval_ptr_dtor(&val);
        !          21694:        } else {
        !          21695:                decrement_function(*var_ptr);
        !          21696:        }
        !          21697: 
        !          21698:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          21699:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          21700:                PZVAL_LOCK(*var_ptr);
        !          21701:        }
        !          21702: 
        !          21703:        ZEND_VM_NEXT_OPCODE();
        !          21704: }
        !          21705: 
        !          21706: static int ZEND_FASTCALL  ZEND_POST_INC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21707: {
        !          21708:        zend_op *opline = EX(opline);
        !          21709: 
        !          21710:        zval **var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          21711: 
        !          21712:        if (IS_CV == IS_VAR && !var_ptr) {
        !          21713:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          21714:        }
        !          21715:        if (IS_CV == IS_VAR && *var_ptr == EG(error_zval_ptr)) {
        !          21716:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          21717:                        EX_T(opline->result.u.var).tmp_var = *EG(uninitialized_zval_ptr);
        !          21718:                }
        !          21719: 
        !          21720:                ZEND_VM_NEXT_OPCODE();
        !          21721:        }
        !          21722: 
        !          21723:        EX_T(opline->result.u.var).tmp_var = **var_ptr;
        !          21724:        zendi_zval_copy_ctor(EX_T(opline->result.u.var).tmp_var);
        !          21725: 
        !          21726:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          21727: 
        !          21728:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          21729:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          21730:                /* proxy object */
        !          21731:                zval *val = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          21732:                Z_ADDREF_P(val);
        !          21733:                increment_function(val);
        !          21734:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, val TSRMLS_CC);
        !          21735:                zval_ptr_dtor(&val);
        !          21736:        } else {
        !          21737:                increment_function(*var_ptr);
        !          21738:        }
        !          21739: 
        !          21740:        ZEND_VM_NEXT_OPCODE();
        !          21741: }
        !          21742: 
        !          21743: static int ZEND_FASTCALL  ZEND_POST_DEC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21744: {
        !          21745:        zend_op *opline = EX(opline);
        !          21746: 
        !          21747:        zval **var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          21748: 
        !          21749:        if (IS_CV == IS_VAR && !var_ptr) {
        !          21750:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          21751:        }
        !          21752:        if (IS_CV == IS_VAR && *var_ptr == EG(error_zval_ptr)) {
        !          21753:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          21754:                        EX_T(opline->result.u.var).tmp_var = *EG(uninitialized_zval_ptr);
        !          21755:                }
        !          21756: 
        !          21757:                ZEND_VM_NEXT_OPCODE();
        !          21758:        }
        !          21759: 
        !          21760:        EX_T(opline->result.u.var).tmp_var = **var_ptr;
        !          21761:        zendi_zval_copy_ctor(EX_T(opline->result.u.var).tmp_var);
        !          21762: 
        !          21763:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          21764: 
        !          21765:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          21766:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          21767:                /* proxy object */
        !          21768:                zval *val = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          21769:                Z_ADDREF_P(val);
        !          21770:                decrement_function(val);
        !          21771:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, val TSRMLS_CC);
        !          21772:                zval_ptr_dtor(&val);
        !          21773:        } else {
        !          21774:                decrement_function(*var_ptr);
        !          21775:        }
        !          21776: 
        !          21777:        ZEND_VM_NEXT_OPCODE();
        !          21778: }
        !          21779: 
        !          21780: static int ZEND_FASTCALL  ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21781: {
        !          21782:        zend_op *opline = EX(opline);
        !          21783: 
        !          21784:        zval z_copy;
        !          21785:        zval *z = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21786: 
        !          21787:        if (IS_CV != IS_CONST &&
        !          21788:            Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get_method != NULL) {
        !          21789:            if (IS_CV == IS_TMP_VAR) {
        !          21790:                INIT_PZVAL(z);
        !          21791:            }
        !          21792:                if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) {
        !          21793:                        zend_print_variable(&z_copy);
        !          21794:                        zval_dtor(&z_copy);
        !          21795:                } else {
        !          21796:                        zend_print_variable(z);
        !          21797:                }
        !          21798:        } else {
        !          21799:                zend_print_variable(z);
        !          21800:        }
        !          21801: 
        !          21802:        ZEND_VM_NEXT_OPCODE();
        !          21803: }
        !          21804: 
        !          21805: static int ZEND_FASTCALL  ZEND_PRINT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21806: {
        !          21807:        zend_op *opline = EX(opline);
        !          21808: 
        !          21809:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 1;
        !          21810:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_LONG;
        !          21811: 
        !          21812:        return ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21813: }
        !          21814: 
        !          21815: static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          21816: {
        !          21817:        zend_op *opline = EX(opline);
        !          21818:        zend_free_op free_op1;
        !          21819:        zval *varname = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21820:        zval **retval;
        !          21821:        zval tmp_varname;
        !          21822:        HashTable *target_symbol_table;
        !          21823: 
        !          21824:        if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
        !          21825:                tmp_varname = *varname;
        !          21826:                zval_copy_ctor(&tmp_varname);
        !          21827:                convert_to_string(&tmp_varname);
        !          21828:                varname = &tmp_varname;
        !          21829:        }
        !          21830: 
        !          21831:        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          21832:                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
        !          21833: 
        !          21834:        } else {
        !          21835:                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
        !          21836: /*
        !          21837:                if (!target_symbol_table) {
        !          21838:                        ZEND_VM_NEXT_OPCODE();
        !          21839:                }
        !          21840: */
        !          21841:                if (zend_hash_find(target_symbol_table, varname->value.str.val, varname->value.str.len+1, (void **) &retval) == FAILURE) {
        !          21842:                        switch (type) {
        !          21843:                                case BP_VAR_R:
        !          21844:                                case BP_VAR_UNSET:
        !          21845:                                        zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
        !          21846:                                        /* break missing intentionally */
        !          21847:                                case BP_VAR_IS:
        !          21848:                                        retval = &EG(uninitialized_zval_ptr);
        !          21849:                                        break;
        !          21850:                                case BP_VAR_RW:
        !          21851:                                        zend_error(E_NOTICE,"Undefined variable: %s", Z_STRVAL_P(varname));
        !          21852:                                        /* break missing intentionally */
        !          21853:                                case BP_VAR_W: {
        !          21854:                                                zval *new_zval = &EG(uninitialized_zval);
        !          21855: 
        !          21856:                                                Z_ADDREF_P(new_zval);
        !          21857:                                                zend_hash_update(target_symbol_table, varname->value.str.val, varname->value.str.len+1, &new_zval, sizeof(zval *), (void **) &retval);
        !          21858:                                        }
        !          21859:                                        break;
        !          21860:                                EMPTY_SWITCH_DEFAULT_CASE()
        !          21861:                        }
        !          21862:                }
        !          21863:                switch (opline->op2.u.EA.type) {
        !          21864:                        case ZEND_FETCH_GLOBAL:
        !          21865:                                if (IS_CV != IS_TMP_VAR) {
        !          21866: 
        !          21867:                                }
        !          21868:                                break;
        !          21869:                        case ZEND_FETCH_LOCAL:
        !          21870: 
        !          21871:                                break;
        !          21872:                        case ZEND_FETCH_STATIC:
        !          21873:                                zval_update_constant(retval, (void*) 1 TSRMLS_CC);
        !          21874:                                break;
        !          21875:                        case ZEND_FETCH_GLOBAL_LOCK:
        !          21876:                                if (IS_CV == IS_VAR && !free_op1.var) {
        !          21877:                                        PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          21878:                                }
        !          21879:                                break;
        !          21880:                }
        !          21881:        }
        !          21882: 
        !          21883: 
        !          21884:        if (IS_CV != IS_CONST && varname == &tmp_varname) {
        !          21885:                zval_dtor(varname);
        !          21886:        }
        !          21887:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          21888:                if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          21889:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(retval);
        !          21890:                }
        !          21891:                PZVAL_LOCK(*retval);
        !          21892:                switch (type) {
        !          21893:                        case BP_VAR_R:
        !          21894:                        case BP_VAR_IS:
        !          21895:                                AI_SET_PTR(EX_T(opline->result.u.var).var, *retval);
        !          21896:                                break;
        !          21897:                        case BP_VAR_UNSET: {
        !          21898:                                zend_free_op free_res;
        !          21899: 
        !          21900:                                EX_T(opline->result.u.var).var.ptr_ptr = retval;
        !          21901:                                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          21902:                                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          21903:                                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          21904:                                }
        !          21905:                                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          21906:                                FREE_OP_VAR_PTR(free_res);
        !          21907:                                break;
        !          21908:                        default:
        !          21909:                                EX_T(opline->result.u.var).var.ptr_ptr = retval;
        !          21910:                                break;
        !          21911:                        }
        !          21912:                }
        !          21913:        }
        !          21914:        ZEND_VM_NEXT_OPCODE();
        !          21915: }
        !          21916: 
        !          21917: static int ZEND_FASTCALL  ZEND_FETCH_R_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21918: {
        !          21919:        return zend_fetch_var_address_helper_SPEC_CV(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21920: }
        !          21921: 
        !          21922: static int ZEND_FASTCALL  ZEND_FETCH_W_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21923: {
        !          21924:        return zend_fetch_var_address_helper_SPEC_CV(BP_VAR_W, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21925: }
        !          21926: 
        !          21927: static int ZEND_FASTCALL  ZEND_FETCH_RW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21928: {
        !          21929:        return zend_fetch_var_address_helper_SPEC_CV(BP_VAR_RW, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21930: }
        !          21931: 
        !          21932: static int ZEND_FASTCALL  ZEND_FETCH_FUNC_ARG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21933: {
        !          21934:        return zend_fetch_var_address_helper_SPEC_CV(ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), EX(opline)->extended_value)?BP_VAR_W:BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21935: }
        !          21936: 
        !          21937: static int ZEND_FASTCALL  ZEND_FETCH_UNSET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21938: {
        !          21939:        return zend_fetch_var_address_helper_SPEC_CV(BP_VAR_UNSET, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21940: }
        !          21941: 
        !          21942: static int ZEND_FASTCALL  ZEND_FETCH_IS_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21943: {
        !          21944:        return zend_fetch_var_address_helper_SPEC_CV(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          21945: }
        !          21946: 
        !          21947: static int ZEND_FASTCALL  ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21948: {
        !          21949:        zend_op *opline = EX(opline);
        !          21950: 
        !          21951:        zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21952:        int ret;
        !          21953: 
        !          21954:        if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          21955:                ret = Z_LVAL_P(val);
        !          21956:        } else {
        !          21957:                ret = i_zend_is_true(val);
        !          21958: 
        !          21959:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          21960:                        ZEND_VM_CONTINUE();
        !          21961:                }
        !          21962:        }
        !          21963:        if (!ret) {
        !          21964: #if DEBUG_ZEND>=2
        !          21965:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          21966: #endif
        !          21967:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          21968:                ZEND_VM_CONTINUE();
        !          21969:        }
        !          21970: 
        !          21971:        ZEND_VM_NEXT_OPCODE();
        !          21972: }
        !          21973: 
        !          21974: static int ZEND_FASTCALL  ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          21975: {
        !          21976:        zend_op *opline = EX(opline);
        !          21977: 
        !          21978:        zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          21979:        int ret;
        !          21980: 
        !          21981:        if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          21982:                ret = Z_LVAL_P(val);
        !          21983:        } else {
        !          21984:                ret = i_zend_is_true(val);
        !          21985: 
        !          21986:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          21987:                        ZEND_VM_CONTINUE();
        !          21988:                }
        !          21989:        }
        !          21990:        if (ret) {
        !          21991: #if DEBUG_ZEND>=2
        !          21992:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          21993: #endif
        !          21994:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          21995:                ZEND_VM_CONTINUE();
        !          21996:        }
        !          21997: 
        !          21998:        ZEND_VM_NEXT_OPCODE();
        !          21999: }
        !          22000: 
        !          22001: static int ZEND_FASTCALL  ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22002: {
        !          22003:        zend_op *opline = EX(opline);
        !          22004: 
        !          22005:        zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22006:        int retval;
        !          22007: 
        !          22008:        if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          22009:                retval = Z_LVAL_P(val);
        !          22010:        } else {
        !          22011:                retval = i_zend_is_true(val);
        !          22012: 
        !          22013:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          22014:                        ZEND_VM_CONTINUE();
        !          22015:                }
        !          22016:        }
        !          22017:        if (EXPECTED(retval != 0)) {
        !          22018: #if DEBUG_ZEND>=2
        !          22019:                printf("Conditional jmp on true to %d\n", opline->extended_value);
        !          22020: #endif
        !          22021:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->extended_value]);
        !          22022:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          22023:        } else {
        !          22024: #if DEBUG_ZEND>=2
        !          22025:                printf("Conditional jmp on false to %d\n", opline->op2.u.opline_num);
        !          22026: #endif
        !          22027:                ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[opline->op2.u.opline_num]);
        !          22028:                ZEND_VM_CONTINUE(); /* CHECK_ME */
        !          22029:        }
        !          22030: }
        !          22031: 
        !          22032: static int ZEND_FASTCALL  ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22033: {
        !          22034:        zend_op *opline = EX(opline);
        !          22035: 
        !          22036:        zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22037:        int retval;
        !          22038: 
        !          22039:        if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          22040:                retval = Z_LVAL_P(val);
        !          22041:        } else {
        !          22042:                retval = i_zend_is_true(val);
        !          22043: 
        !          22044:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          22045:                        ZEND_VM_CONTINUE();
        !          22046:                }
        !          22047:        }
        !          22048:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
        !          22049:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          22050:        if (!retval) {
        !          22051: #if DEBUG_ZEND>=2
        !          22052:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          22053: #endif
        !          22054:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          22055:                ZEND_VM_CONTINUE();
        !          22056:        }
        !          22057:        ZEND_VM_NEXT_OPCODE();
        !          22058: }
        !          22059: 
        !          22060: static int ZEND_FASTCALL  ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22061: {
        !          22062:        zend_op *opline = EX(opline);
        !          22063: 
        !          22064:        zval *val = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22065:        int retval;
        !          22066: 
        !          22067:        if (IS_CV == IS_TMP_VAR && Z_TYPE_P(val) == IS_BOOL) {
        !          22068:                retval = Z_LVAL_P(val);
        !          22069:        } else {
        !          22070:                retval = i_zend_is_true(val);
        !          22071: 
        !          22072:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          22073:                        ZEND_VM_CONTINUE();
        !          22074:                }
        !          22075:        }
        !          22076:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = retval;
        !          22077:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          22078:        if (retval) {
        !          22079: #if DEBUG_ZEND>=2
        !          22080:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          22081: #endif
        !          22082:                ZEND_VM_SET_OPCODE(opline->op2.u.jmp_addr);
        !          22083:                ZEND_VM_CONTINUE();
        !          22084:        }
        !          22085:        ZEND_VM_NEXT_OPCODE();
        !          22086: }
        !          22087: 
        !          22088: static int ZEND_FASTCALL  ZEND_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22089: {
        !          22090:        zend_op *opline = EX(opline);
        !          22091:        zval *retval_ptr;
        !          22092:        zval **retval_ptr_ptr;
        !          22093: 
        !          22094: 
        !          22095:        if (EG(active_op_array)->return_reference == ZEND_RETURN_REF) {
        !          22096: 
        !          22097:                if (IS_CV == IS_CONST || IS_CV == IS_TMP_VAR) {
        !          22098:                        /* Not supposed to happen, but we'll allow it */
        !          22099:                        zend_error(E_NOTICE, "Only variable references should be returned by reference");
        !          22100:                        goto return_by_value;
        !          22101:                }
        !          22102: 
        !          22103:                retval_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          22104: 
        !          22105:                if (IS_CV == IS_VAR && !retval_ptr_ptr) {
        !          22106:                        zend_error_noreturn(E_ERROR, "Cannot return string offsets by reference");
        !          22107:                }
        !          22108: 
        !          22109:                if (IS_CV == IS_VAR && !Z_ISREF_PP(retval_ptr_ptr)) {
        !          22110:                        if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
        !          22111:                            EX_T(opline->op1.u.var).var.fcall_returned_reference) {
        !          22112:                        } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
        !          22113:                                if (IS_CV == IS_VAR && !0) {
        !          22114:                                        PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
        !          22115:                                }
        !          22116:                                zend_error(E_NOTICE, "Only variable references should be returned by reference");
        !          22117:                                goto return_by_value;
        !          22118:                        }
        !          22119:                }
        !          22120: 
        !          22121:                if (EG(return_value_ptr_ptr)) {
        !          22122:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr_ptr);
        !          22123:                        Z_ADDREF_PP(retval_ptr_ptr);
        !          22124: 
        !          22125:                        (*EG(return_value_ptr_ptr)) = (*retval_ptr_ptr);
        !          22126:                }
        !          22127:        } else {
        !          22128: return_by_value:
        !          22129: 
        !          22130:                retval_ptr = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22131: 
        !          22132:                if (!EG(return_value_ptr_ptr)) {
        !          22133:                        if (IS_CV == IS_TMP_VAR) {
        !          22134: 
        !          22135:                        }
        !          22136:                } else if (!0) { /* Not a temp var */
        !          22137:                        if (IS_CV == IS_CONST ||
        !          22138:                            EG(active_op_array)->return_reference == ZEND_RETURN_REF ||
        !          22139:                            (PZVAL_IS_REF(retval_ptr) && Z_REFCOUNT_P(retval_ptr) > 0)) {
        !          22140:                                zval *ret;
        !          22141: 
        !          22142:                                ALLOC_ZVAL(ret);
        !          22143:                                INIT_PZVAL_COPY(ret, retval_ptr);
        !          22144:                                zval_copy_ctor(ret);
        !          22145:                                *EG(return_value_ptr_ptr) = ret;
        !          22146:                        } else if ((IS_CV == IS_CV || IS_CV == IS_VAR) &&
        !          22147:                                   retval_ptr == &EG(uninitialized_zval)) {
        !          22148:                                zval *ret;
        !          22149: 
        !          22150:                                ALLOC_INIT_ZVAL(ret);
        !          22151:                                *EG(return_value_ptr_ptr) = ret;
        !          22152:                        } else {
        !          22153:                                *EG(return_value_ptr_ptr) = retval_ptr;
        !          22154:                                Z_ADDREF_P(retval_ptr);
        !          22155:                        }
        !          22156:                } else {
        !          22157:                        zval *ret;
        !          22158: 
        !          22159:                        ALLOC_ZVAL(ret);
        !          22160:                        INIT_PZVAL_COPY(ret, retval_ptr);
        !          22161:                        *EG(return_value_ptr_ptr) = ret;
        !          22162:                }
        !          22163:        }
        !          22164: 
        !          22165:        return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          22166: }
        !          22167: 
        !          22168: static int ZEND_FASTCALL  ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22169: {
        !          22170:        zend_op *opline = EX(opline);
        !          22171:        zval *value;
        !          22172:        zval *exception;
        !          22173: 
        !          22174: 
        !          22175:        value = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22176: 
        !          22177:        if (IS_CV == IS_CONST || Z_TYPE_P(value) != IS_OBJECT) {
        !          22178:                zend_error_noreturn(E_ERROR, "Can only throw objects");
        !          22179:        }
        !          22180:        zend_exception_save(TSRMLS_C);
        !          22181:        /* Not sure if a complete copy is what we want here */
        !          22182:        ALLOC_ZVAL(exception);
        !          22183:        INIT_PZVAL_COPY(exception, value);
        !          22184:        if (!0) {
        !          22185:                zval_copy_ctor(exception);
        !          22186:        }
        !          22187: 
        !          22188:        zend_throw_exception_object(exception TSRMLS_CC);
        !          22189:        zend_exception_restore(TSRMLS_C);
        !          22190: 
        !          22191:        ZEND_VM_NEXT_OPCODE();
        !          22192: }
        !          22193: 
        !          22194: static int ZEND_FASTCALL  ZEND_SEND_VAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22195: {
        !          22196:        zend_op *opline = EX(opline);
        !          22197:        if (opline->extended_value==ZEND_DO_FCALL_BY_NAME
        !          22198:                && ARG_MUST_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          22199:                        zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.u.opline_num);
        !          22200:        }
        !          22201:        {
        !          22202:                zval *valptr;
        !          22203:                zval *value;
        !          22204: 
        !          22205: 
        !          22206:                value = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22207: 
        !          22208:                ALLOC_ZVAL(valptr);
        !          22209:                INIT_PZVAL_COPY(valptr, value);
        !          22210:                if (!0) {
        !          22211:                        zval_copy_ctor(valptr);
        !          22212:                }
        !          22213:                zend_vm_stack_push(valptr TSRMLS_CC);
        !          22214: 
        !          22215:        }
        !          22216:        ZEND_VM_NEXT_OPCODE();
        !          22217: }
        !          22218: 
        !          22219: static int ZEND_FASTCALL zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS)
        !          22220: {
        !          22221:        zend_op *opline = EX(opline);
        !          22222:        zval *varptr;
        !          22223: 
        !          22224:        varptr = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22225: 
        !          22226:        if (varptr == &EG(uninitialized_zval)) {
        !          22227:                ALLOC_ZVAL(varptr);
        !          22228:                INIT_ZVAL(*varptr);
        !          22229:                Z_SET_REFCOUNT_P(varptr, 0);
        !          22230:        } else if (PZVAL_IS_REF(varptr)) {
        !          22231:                zval *original_var = varptr;
        !          22232: 
        !          22233:                ALLOC_ZVAL(varptr);
        !          22234:                *varptr = *original_var;
        !          22235:                Z_UNSET_ISREF_P(varptr);
        !          22236:                Z_SET_REFCOUNT_P(varptr, 0);
        !          22237:                zval_copy_ctor(varptr);
        !          22238:        }
        !          22239:        Z_ADDREF_P(varptr);
        !          22240:        zend_vm_stack_push(varptr TSRMLS_CC);
        !          22241:        ;  /* for string offsets */
        !          22242: 
        !          22243:        ZEND_VM_NEXT_OPCODE();
        !          22244: }
        !          22245: 
        !          22246: static int ZEND_FASTCALL  ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22247: {
        !          22248:        zend_op *opline = EX(opline);
        !          22249:        zend_free_op free_op1;
        !          22250:        zval *varptr;
        !          22251: 
        !          22252:        if (opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) { /* Had function_ptr at compile_time */
        !          22253:                if (!(opline->extended_value & ZEND_ARG_SEND_BY_REF)) {
        !          22254:                        return zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          22255:                }
        !          22256:        } else if (!ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          22257:                return zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          22258:        }
        !          22259: 
        !          22260:        if (IS_CV == IS_VAR &&
        !          22261:                (opline->extended_value & ZEND_ARG_SEND_FUNCTION) &&
        !          22262:                EX_T(opline->op1.u.var).var.fcall_returned_reference &&
        !          22263:                EX_T(opline->op1.u.var).var.ptr) {
        !          22264:                varptr = EX_T(opline->op1.u.var).var.ptr;
        !          22265:                PZVAL_UNLOCK_EX(varptr, &free_op1, 0);
        !          22266:        } else {
        !          22267:                varptr = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22268:        }
        !          22269:        if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
        !          22270:             EX_T(opline->op1.u.var).var.fcall_returned_reference) &&
        !          22271:            varptr != &EG(uninitialized_zval) &&
        !          22272:            (PZVAL_IS_REF(varptr) ||
        !          22273:             (Z_REFCOUNT_P(varptr) == 1 && (IS_CV == IS_CV || free_op1.var)))) {
        !          22274:                Z_SET_ISREF_P(varptr);
        !          22275:                Z_ADDREF_P(varptr);
        !          22276:                zend_vm_stack_push(varptr TSRMLS_CC);
        !          22277:        } else {
        !          22278:                zval *valptr;
        !          22279: 
        !          22280:                if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ?
        !          22281:                        !(opline->extended_value & ZEND_ARG_SEND_SILENT) :
        !          22282:                        !ARG_MAY_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          22283:                        zend_error(E_STRICT, "Only variables should be passed by reference");
        !          22284:                }
        !          22285:                ALLOC_ZVAL(valptr);
        !          22286:                INIT_PZVAL_COPY(valptr, varptr);
        !          22287:                if (!0) {
        !          22288:                        zval_copy_ctor(valptr);
        !          22289:                }
        !          22290:                zend_vm_stack_push(valptr TSRMLS_CC);
        !          22291:        }
        !          22292: 
        !          22293:        ZEND_VM_NEXT_OPCODE();
        !          22294: }
        !          22295: 
        !          22296: static int ZEND_FASTCALL  ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22297: {
        !          22298:        zend_op *opline = EX(opline);
        !          22299: 
        !          22300:        zval **varptr_ptr;
        !          22301:        zval *varptr;
        !          22302:        varptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          22303: 
        !          22304:        if (IS_CV == IS_VAR && !varptr_ptr) {
        !          22305:                zend_error_noreturn(E_ERROR, "Only variables can be passed by reference");
        !          22306:        }
        !          22307: 
        !          22308:        if (IS_CV == IS_VAR && *varptr_ptr == EG(error_zval_ptr)) {
        !          22309:                ALLOC_INIT_ZVAL(varptr);
        !          22310:                zend_vm_stack_push(varptr TSRMLS_CC);
        !          22311:                ZEND_VM_NEXT_OPCODE();
        !          22312:        }
        !          22313: 
        !          22314:        if (EX(function_state).function->type == ZEND_INTERNAL_FUNCTION && !ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          22315:                return zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          22316:        }
        !          22317: 
        !          22318:        SEPARATE_ZVAL_TO_MAKE_IS_REF(varptr_ptr);
        !          22319:        varptr = *varptr_ptr;
        !          22320:        Z_ADDREF_P(varptr);
        !          22321:        zend_vm_stack_push(varptr TSRMLS_CC);
        !          22322: 
        !          22323:        ZEND_VM_NEXT_OPCODE();
        !          22324: }
        !          22325: 
        !          22326: static int ZEND_FASTCALL  ZEND_SEND_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22327: {
        !          22328:        zend_op *opline = EX(opline);
        !          22329: 
        !          22330:        if ((opline->extended_value == ZEND_DO_FCALL_BY_NAME)
        !          22331:                && ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) {
        !          22332:                return ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          22333:        }
        !          22334:        return zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          22335: }
        !          22336: 
        !          22337: static int ZEND_FASTCALL  ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22338: {
        !          22339:        zend_op *opline = EX(opline);
        !          22340: 
        !          22341: 
        !          22342:        /* PHP 3.0 returned "" for false and 1 for true, here we use 0 and 1 for now */
        !          22343:        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = i_zend_is_true(_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC));
        !          22344:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          22345: 
        !          22346:        ZEND_VM_NEXT_OPCODE();
        !          22347: }
        !          22348: 
        !          22349: static int ZEND_FASTCALL  ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22350: {
        !          22351:        zend_op *opline = EX(opline);
        !          22352: 
        !          22353:        zval *obj = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22354:        zend_class_entry *ce;
        !          22355:        zend_function *clone;
        !          22356:        zend_object_clone_obj_t clone_call;
        !          22357: 
        !          22358:        if (IS_CV == IS_CONST ||
        !          22359:            (IS_CV == IS_VAR && !obj) ||
        !          22360:            Z_TYPE_P(obj) != IS_OBJECT) {
        !          22361:                zend_error_noreturn(E_ERROR, "__clone method called on non-object");
        !          22362:        }
        !          22363: 
        !          22364:        ce = Z_OBJCE_P(obj);
        !          22365:        clone = ce ? ce->clone : NULL;
        !          22366:        clone_call =  Z_OBJ_HT_P(obj)->clone_obj;
        !          22367:        if (!clone_call) {
        !          22368:                if (ce) {
        !          22369:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object of class %s", ce->name);
        !          22370:                } else {
        !          22371:                        zend_error_noreturn(E_ERROR, "Trying to clone an uncloneable object");
        !          22372:                }
        !          22373:        }
        !          22374: 
        !          22375:        if (ce && clone) {
        !          22376:                if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
        !          22377:                        /* Ensure that if we're calling a private function, we're allowed to do so.
        !          22378:                         */
        !          22379:                        if (ce != EG(scope)) {
        !          22380:                                zend_error_noreturn(E_ERROR, "Call to private %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          22381:                        }
        !          22382:                } else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
        !          22383:                        /* Ensure that if we're calling a protected function, we're allowed to do so.
        !          22384:                         */
        !          22385:                        if (!zend_check_protected(clone->common.scope, EG(scope))) {
        !          22386:                                zend_error_noreturn(E_ERROR, "Call to protected %s::__clone() from context '%s'", ce->name, EG(scope) ? EG(scope)->name : "");
        !          22387:                        }
        !          22388:                }
        !          22389:        }
        !          22390: 
        !          22391:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          22392:        if (!EG(exception)) {
        !          22393:                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          22394:                Z_OBJVAL_P(EX_T(opline->result.u.var).var.ptr) = clone_call(obj TSRMLS_CC);
        !          22395:                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_OBJECT;
        !          22396:                Z_SET_REFCOUNT_P(EX_T(opline->result.u.var).var.ptr, 1);
        !          22397:                Z_SET_ISREF_P(EX_T(opline->result.u.var).var.ptr);
        !          22398:                if (!RETURN_VALUE_USED(opline) || EG(exception)) {
        !          22399:                        zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr);
        !          22400:                }
        !          22401:        }
        !          22402: 
        !          22403:        ZEND_VM_NEXT_OPCODE();
        !          22404: }
        !          22405: 
        !          22406: static int ZEND_FASTCALL  ZEND_CAST_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22407: {
        !          22408:        zend_op *opline = EX(opline);
        !          22409: 
        !          22410:        zval *expr = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22411:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          22412: 
        !          22413:        if (opline->extended_value != IS_STRING) {
        !          22414:                *result = *expr;
        !          22415:                if (!0) {
        !          22416:                        zendi_zval_copy_ctor(*result);
        !          22417:                }
        !          22418:        }
        !          22419:        switch (opline->extended_value) {
        !          22420:                case IS_NULL:
        !          22421:                        convert_to_null(result);
        !          22422:                        break;
        !          22423:                case IS_BOOL:
        !          22424:                        convert_to_boolean(result);
        !          22425:                        break;
        !          22426:                case IS_LONG:
        !          22427:                        convert_to_long(result);
        !          22428:                        break;
        !          22429:                case IS_DOUBLE:
        !          22430:                        convert_to_double(result);
        !          22431:                        break;
        !          22432:                case IS_STRING: {
        !          22433:                        zval var_copy;
        !          22434:                        int use_copy;
        !          22435: 
        !          22436:                        zend_make_printable_zval(expr, &var_copy, &use_copy);
        !          22437:                        if (use_copy) {
        !          22438:                                *result = var_copy;
        !          22439:                                if (0) {
        !          22440: 
        !          22441:                                }
        !          22442:                        } else {
        !          22443:                                *result = *expr;
        !          22444:                                if (!0) {
        !          22445:                                        zendi_zval_copy_ctor(*result);
        !          22446:                                }
        !          22447:                        }
        !          22448:                        break;
        !          22449:                }
        !          22450:                case IS_ARRAY:
        !          22451:                        convert_to_array(result);
        !          22452:                        break;
        !          22453:                case IS_OBJECT:
        !          22454:                        convert_to_object(result);
        !          22455:                        break;
        !          22456:        }
        !          22457: 
        !          22458:        ZEND_VM_NEXT_OPCODE();
        !          22459: }
        !          22460: 
        !          22461: static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22462: {
        !          22463:        zend_op *opline = EX(opline);
        !          22464:        zend_op_array *new_op_array=NULL;
        !          22465:        int return_value_used;
        !          22466: 
        !          22467:        zval *inc_filename = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22468:        zval tmp_inc_filename;
        !          22469:        zend_bool failure_retval=0;
        !          22470: 
        !          22471:        if (inc_filename->type!=IS_STRING) {
        !          22472:                tmp_inc_filename = *inc_filename;
        !          22473:                zval_copy_ctor(&tmp_inc_filename);
        !          22474:                convert_to_string(&tmp_inc_filename);
        !          22475:                inc_filename = &tmp_inc_filename;
        !          22476:        }
        !          22477: 
        !          22478:        return_value_used = RETURN_VALUE_USED(opline);
        !          22479: 
        !          22480:        if (Z_LVAL(opline->op2.u.constant) != ZEND_EVAL && strlen(Z_STRVAL_P(inc_filename)) != Z_STRLEN_P(inc_filename)) {
        !          22481:                if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE || Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE) {
        !          22482:                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          22483:                } else {
        !          22484:                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          22485:                }
        !          22486:        } else {
        !          22487:                switch (Z_LVAL(opline->op2.u.constant)) {
        !          22488:                        case ZEND_INCLUDE_ONCE:
        !          22489:                        case ZEND_REQUIRE_ONCE: {
        !          22490:                                        zend_file_handle file_handle;
        !          22491:                                        char *resolved_path;
        !          22492: 
        !          22493:                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), Z_STRLEN_P(inc_filename) TSRMLS_CC);
        !          22494:                                        if (resolved_path) {
        !          22495:                                                failure_retval = zend_hash_exists(&EG(included_files), resolved_path, strlen(resolved_path)+1);
        !          22496:                                        } else {
        !          22497:                                                resolved_path = Z_STRVAL_P(inc_filename);
        !          22498:                                        }
        !          22499: 
        !          22500:                                        if (failure_retval) {
        !          22501:                                                /* do nothing, file already included */
        !          22502:                                        } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle TSRMLS_CC)) {
        !          22503: 
        !          22504:                                                if (!file_handle.opened_path) {
        !          22505:                                                        file_handle.opened_path = estrdup(resolved_path);
        !          22506:                                                }
        !          22507: 
        !          22508:                                                if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1)==SUCCESS) {
        !          22509:                                                        new_op_array = zend_compile_file(&file_handle, (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE) TSRMLS_CC);
        !          22510:                                                        zend_destroy_file_handle(&file_handle TSRMLS_CC);
        !          22511:                                                } else {
        !          22512:                                                        zend_file_handle_dtor(&file_handle TSRMLS_CC);
        !          22513:                                                        failure_retval=1;
        !          22514:                                                }
        !          22515:                                        } else {
        !          22516:                                                if (Z_LVAL(opline->op2.u.constant)==ZEND_INCLUDE_ONCE) {
        !          22517:                                                        zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          22518:                                                } else {
        !          22519:                                                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename) TSRMLS_CC);
        !          22520:                                                }
        !          22521:                                        }
        !          22522:                                        if (resolved_path != Z_STRVAL_P(inc_filename)) {
        !          22523:                                                efree(resolved_path);
        !          22524:                                        }
        !          22525:                                }
        !          22526:                                break;
        !          22527:                        case ZEND_INCLUDE:
        !          22528:                        case ZEND_REQUIRE:
        !          22529:                                new_op_array = compile_filename(Z_LVAL(opline->op2.u.constant), inc_filename TSRMLS_CC);
        !          22530:                                break;
        !          22531:                        case ZEND_EVAL: {
        !          22532:                                        char *eval_desc = zend_make_compiled_string_description("eval()'d code" TSRMLS_CC);
        !          22533: 
        !          22534:                                        new_op_array = zend_compile_string(inc_filename, eval_desc TSRMLS_CC);
        !          22535:                                        efree(eval_desc);
        !          22536:                                }
        !          22537:                                break;
        !          22538:                        EMPTY_SWITCH_DEFAULT_CASE()
        !          22539:                }
        !          22540:        }
        !          22541:        if (inc_filename==&tmp_inc_filename) {
        !          22542:                zval_dtor(&tmp_inc_filename);
        !          22543:        }
        !          22544: 
        !          22545:        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          22546:        if (new_op_array && !EG(exception)) {
        !          22547:                EX(original_return_value) = EG(return_value_ptr_ptr);
        !          22548:                EG(return_value_ptr_ptr) = return_value_used ? EX_T(opline->result.u.var).var.ptr_ptr : NULL;
        !          22549:                EG(active_op_array) = new_op_array;
        !          22550:                EX_T(opline->result.u.var).var.ptr = NULL;
        !          22551: 
        !          22552:                EX(current_object) = EX(object);
        !          22553: 
        !          22554:                EX(function_state).function = (zend_function *) new_op_array;
        !          22555:                EX(object) = NULL;
        !          22556: 
        !          22557:                if (!EG(active_symbol_table)) {
        !          22558:                        zend_rebuild_symbol_table(TSRMLS_C);
        !          22559:                }
        !          22560: 
        !          22561:                if (zend_execute == execute) {
        !          22562:                        EX(call_opline) = opline;
        !          22563:                        ZEND_VM_ENTER();
        !          22564:                } else {
        !          22565:                        zend_execute(new_op_array TSRMLS_CC);
        !          22566:                }
        !          22567: 
        !          22568:                EX(function_state).function = (zend_function *) EX(op_array);
        !          22569:                EX(object) = EX(current_object);
        !          22570: 
        !          22571:                if (return_value_used) {
        !          22572:                        if (!EX_T(opline->result.u.var).var.ptr) { /* there was no return statement */
        !          22573:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          22574:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          22575:                                Z_LVAL_P(EX_T(opline->result.u.var).var.ptr) = 1;
        !          22576:                                Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_BOOL;
        !          22577:                        }
        !          22578:                }
        !          22579: 
        !          22580:                EG(opline_ptr) = &EX(opline);
        !          22581:                EG(active_op_array) = EX(op_array);
        !          22582:                EG(return_value_ptr_ptr) = EX(original_return_value);
        !          22583:                destroy_op_array(new_op_array TSRMLS_CC);
        !          22584:                efree(new_op_array);
        !          22585:                if (EG(exception)) {
        !          22586:                        zend_throw_exception_internal(NULL TSRMLS_CC);
        !          22587:                }
        !          22588:        } else {
        !          22589:                if (return_value_used) {
        !          22590:                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          22591:                        INIT_ZVAL(*EX_T(opline->result.u.var).var.ptr);
        !          22592:                        Z_LVAL_P(EX_T(opline->result.u.var).var.ptr) = failure_retval;
        !          22593:                        Z_TYPE_P(EX_T(opline->result.u.var).var.ptr) = IS_BOOL;
        !          22594:                }
        !          22595:        }
        !          22596:        ZEND_VM_NEXT_OPCODE();
        !          22597: }
        !          22598: 
        !          22599: static int ZEND_FASTCALL  ZEND_UNSET_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22600: {
        !          22601:        zend_op *opline = EX(opline);
        !          22602:        zval tmp, *varname;
        !          22603:        HashTable *target_symbol_table;
        !          22604: 
        !          22605: 
        !          22606:        if (IS_CV == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) {
        !          22607:                if (EG(active_symbol_table)) {
        !          22608:                        zend_execute_data *ex = EX(prev_execute_data);
        !          22609:                        zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.u.var);
        !          22610: 
        !          22611:                        if (zend_hash_quick_del(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value) == SUCCESS) {
        !          22612:                                while (ex && ex->symbol_table == EG(active_symbol_table)) {
        !          22613:                                        int i;
        !          22614: 
        !          22615:                                        if (ex->op_array) {
        !          22616:                                                for (i = 0; i < ex->op_array->last_var; i++) {
        !          22617:                                                        if (ex->op_array->vars[i].hash_value == cv->hash_value &&
        !          22618:                                                                ex->op_array->vars[i].name_len == cv->name_len &&
        !          22619:                                                                !memcmp(ex->op_array->vars[i].name, cv->name, cv->name_len)) {
        !          22620:                                                                ex->CVs[i] = NULL;
        !          22621:                                                                break;
        !          22622:                                                        }
        !          22623:                                                }
        !          22624:                                        }
        !          22625:                                        ex = ex->prev_execute_data;
        !          22626:                                }
        !          22627:                        }
        !          22628:                        EX(CVs)[opline->op1.u.var] = NULL;
        !          22629:                } else if (EX(CVs)[opline->op1.u.var]) {
        !          22630:                        zval_ptr_dtor(EX(CVs)[opline->op1.u.var]);
        !          22631:                        EX(CVs)[opline->op1.u.var] = NULL;
        !          22632:                }
        !          22633:                ZEND_VM_NEXT_OPCODE();
        !          22634:        }
        !          22635: 
        !          22636:        varname = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22637: 
        !          22638:        if (Z_TYPE_P(varname) != IS_STRING) {
        !          22639:                tmp = *varname;
        !          22640:                zval_copy_ctor(&tmp);
        !          22641:                convert_to_string(&tmp);
        !          22642:                varname = &tmp;
        !          22643:        } else if (IS_CV == IS_VAR || IS_CV == IS_CV) {
        !          22644:                Z_ADDREF_P(varname);
        !          22645:        }
        !          22646: 
        !          22647:        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          22648:                zend_std_unset_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname) TSRMLS_CC);
        !          22649:        } else {
        !          22650:                ulong hash_value = zend_inline_hash_func(varname->value.str.val, varname->value.str.len+1);
        !          22651: 
        !          22652:                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC);
        !          22653:                if (zend_hash_quick_del(target_symbol_table, varname->value.str.val, varname->value.str.len+1, hash_value) == SUCCESS) {
        !          22654:                        zend_execute_data *ex = execute_data;
        !          22655: 
        !          22656:                        do {
        !          22657:                                int i;
        !          22658: 
        !          22659:                                if (ex->op_array) {
        !          22660:                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          22661:                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          22662:                                                        ex->op_array->vars[i].name_len == varname->value.str.len &&
        !          22663:                                                        !memcmp(ex->op_array->vars[i].name, varname->value.str.val, varname->value.str.len)) {
        !          22664:                                                        ex->CVs[i] = NULL;
        !          22665:                                                        break;
        !          22666:                                                }
        !          22667:                                        }
        !          22668:                                }
        !          22669:                                ex = ex->prev_execute_data;
        !          22670:                        } while (ex && ex->symbol_table == target_symbol_table);
        !          22671:                }
        !          22672:        }
        !          22673: 
        !          22674:        if (varname == &tmp) {
        !          22675:                zval_dtor(&tmp);
        !          22676:        } else if (IS_CV == IS_VAR || IS_CV == IS_CV) {
        !          22677:                zval_ptr_dtor(&varname);
        !          22678:        }
        !          22679: 
        !          22680:        ZEND_VM_NEXT_OPCODE();
        !          22681: }
        !          22682: 
        !          22683: static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22684: {
        !          22685:        zend_op *opline = EX(opline);
        !          22686: 
        !          22687:        zval *array_ptr, **array_ptr_ptr;
        !          22688:        HashTable *fe_ht;
        !          22689:        zend_object_iterator *iter = NULL;
        !          22690:        zend_class_entry *ce = NULL;
        !          22691:        zend_bool is_empty = 0;
        !          22692: 
        !          22693:        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          22694:                array_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22695:                if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
        !          22696:                        ALLOC_INIT_ZVAL(array_ptr);
        !          22697:                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
        !          22698:                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
        !          22699:                                zend_error(E_WARNING, "foreach() cannot iterate over objects without PHP class");
        !          22700:                                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          22701:                        }
        !          22702: 
        !          22703:                        ce = Z_OBJCE_PP(array_ptr_ptr);
        !          22704:                        if (!ce || ce->get_iterator == NULL) {
        !          22705:                                SEPARATE_ZVAL_IF_NOT_REF(array_ptr_ptr);
        !          22706:                                Z_ADDREF_PP(array_ptr_ptr);
        !          22707:                        }
        !          22708:                        array_ptr = *array_ptr_ptr;
        !          22709:                } else {
        !          22710:                        if (Z_TYPE_PP(array_ptr_ptr) == IS_ARRAY) {
        !          22711:                                SEPARATE_ZVAL_IF_NOT_REF(array_ptr_ptr);
        !          22712:                                if (opline->extended_value & ZEND_FE_FETCH_BYREF) {
        !          22713:                                        Z_SET_ISREF_PP(array_ptr_ptr);
        !          22714:                                }
        !          22715:                        }
        !          22716:                        array_ptr = *array_ptr_ptr;
        !          22717:                        Z_ADDREF_P(array_ptr);
        !          22718:                }
        !          22719:        } else {
        !          22720:                array_ptr = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22721:                if (0) { /* IS_TMP_VAR */
        !          22722:                        zval *tmp;
        !          22723: 
        !          22724:                        ALLOC_ZVAL(tmp);
        !          22725:                        INIT_PZVAL_COPY(tmp, array_ptr);
        !          22726:                        array_ptr = tmp;
        !          22727:                        if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
        !          22728:                                ce = Z_OBJCE_P(array_ptr);
        !          22729:                                if (ce && ce->get_iterator) {
        !          22730:                                        Z_DELREF_P(array_ptr);
        !          22731:                                }
        !          22732:                        }
        !          22733:                } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) {
        !          22734:                        ce = Z_OBJCE_P(array_ptr);
        !          22735:                        if (!ce || !ce->get_iterator) {
        !          22736:                                Z_ADDREF_P(array_ptr);
        !          22737:                        }
        !          22738:                } else if (IS_CV == IS_CONST ||
        !          22739:                           ((IS_CV == IS_CV || IS_CV == IS_VAR) &&
        !          22740:                            !Z_ISREF_P(array_ptr) &&
        !          22741:                            Z_REFCOUNT_P(array_ptr) > 1)) {
        !          22742:                        zval *tmp;
        !          22743: 
        !          22744:                        ALLOC_ZVAL(tmp);
        !          22745:                        INIT_PZVAL_COPY(tmp, array_ptr);
        !          22746:                        zval_copy_ctor(tmp);
        !          22747:                        array_ptr = tmp;
        !          22748:                } else {
        !          22749:                        Z_ADDREF_P(array_ptr);
        !          22750:                }
        !          22751:        }
        !          22752: 
        !          22753:        if (ce && ce->get_iterator) {
        !          22754:                iter = ce->get_iterator(ce, array_ptr, opline->extended_value & ZEND_FE_RESET_REFERENCE TSRMLS_CC);
        !          22755: 
        !          22756:                if (iter && !EG(exception)) {
        !          22757:                        array_ptr = zend_iterator_wrap(iter TSRMLS_CC);
        !          22758:                } else {
        !          22759:                        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          22760: 
        !          22761:                        } else {
        !          22762: 
        !          22763:                        }
        !          22764:                        if (!EG(exception)) {
        !          22765:                                zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "Object of type %s did not create an Iterator", ce->name);
        !          22766:                        }
        !          22767:                        zend_throw_exception_internal(NULL TSRMLS_CC);
        !          22768:                        ZEND_VM_NEXT_OPCODE();
        !          22769:                }
        !          22770:        }
        !          22771: 
        !          22772:        AI_SET_PTR(EX_T(opline->result.u.var).var, array_ptr);
        !          22773:        PZVAL_LOCK(array_ptr);
        !          22774: 
        !          22775:        if (iter) {
        !          22776:                iter->index = 0;
        !          22777:                if (iter->funcs->rewind) {
        !          22778:                        iter->funcs->rewind(iter TSRMLS_CC);
        !          22779:                        if (EG(exception)) {
        !          22780:                                Z_DELREF_P(array_ptr);
        !          22781:                                zval_ptr_dtor(&array_ptr);
        !          22782:                                if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          22783: 
        !          22784:                                } else {
        !          22785: 
        !          22786:                                }
        !          22787:                                ZEND_VM_NEXT_OPCODE();
        !          22788:                        }
        !          22789:                }
        !          22790:                is_empty = iter->funcs->valid(iter TSRMLS_CC) != SUCCESS;
        !          22791:                if (EG(exception)) {
        !          22792:                        Z_DELREF_P(array_ptr);
        !          22793:                        zval_ptr_dtor(&array_ptr);
        !          22794:                        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          22795: 
        !          22796:                        } else {
        !          22797: 
        !          22798:                        }
        !          22799:                        ZEND_VM_NEXT_OPCODE();
        !          22800:                }
        !          22801:                iter->index = -1; /* will be set to 0 before using next handler */
        !          22802:        } else if ((fe_ht = HASH_OF(array_ptr)) != NULL) {
        !          22803:                zend_hash_internal_pointer_reset(fe_ht);
        !          22804:                if (ce) {
        !          22805:                        zend_object *zobj = zend_objects_get_address(array_ptr TSRMLS_CC);
        !          22806:                        while (zend_hash_has_more_elements(fe_ht) == SUCCESS) {
        !          22807:                                char *str_key;
        !          22808:                                uint str_key_len;
        !          22809:                                ulong int_key;
        !          22810:                                zend_uchar key_type;
        !          22811: 
        !          22812:                                key_type = zend_hash_get_current_key_ex(fe_ht, &str_key, &str_key_len, &int_key, 0, NULL);
        !          22813:                                if (key_type != HASH_KEY_NON_EXISTANT &&
        !          22814:                                        (key_type == HASH_KEY_IS_LONG ||
        !          22815:                                     zend_check_property_access(zobj, str_key, str_key_len-1 TSRMLS_CC) == SUCCESS)) {
        !          22816:                                        break;
        !          22817:                                }
        !          22818:                                zend_hash_move_forward(fe_ht);
        !          22819:                        }
        !          22820:                }
        !          22821:                is_empty = zend_hash_has_more_elements(fe_ht) != SUCCESS;
        !          22822:                zend_hash_get_pointer(fe_ht, &EX_T(opline->result.u.var).fe.fe_pos);
        !          22823:        } else {
        !          22824:                zend_error(E_WARNING, "Invalid argument supplied for foreach()");
        !          22825:                is_empty = 1;
        !          22826:        }
        !          22827: 
        !          22828:        if (opline->extended_value & ZEND_FE_RESET_VARIABLE) {
        !          22829: 
        !          22830:        } else {
        !          22831: 
        !          22832:        }
        !          22833:        if (is_empty) {
        !          22834:                ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);
        !          22835:        } else {
        !          22836:                ZEND_VM_NEXT_OPCODE();
        !          22837:        }
        !          22838: }
        !          22839: 
        !          22840: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22841: {
        !          22842:        zend_op *opline = EX(opline);
        !          22843:        zval **value;
        !          22844:        zend_bool isset = 1;
        !          22845: 
        !          22846:        if (IS_CV == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) {
        !          22847:                if (EX(CVs)[opline->op1.u.var]) {
        !          22848:                        value = EX(CVs)[opline->op1.u.var];
        !          22849:                } else if (EG(active_symbol_table)) {
        !          22850:                        zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.u.var);
        !          22851: 
        !          22852:                        if (zend_hash_quick_find(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value, (void **) &value) == FAILURE) {
        !          22853:                                isset = 0;
        !          22854:                        }
        !          22855:                } else {
        !          22856:                        isset = 0;
        !          22857:                }
        !          22858:        } else {
        !          22859:                HashTable *target_symbol_table;
        !          22860: 
        !          22861:                zval tmp, *varname = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          22862: 
        !          22863:                if (Z_TYPE_P(varname) != IS_STRING) {
        !          22864:                        tmp = *varname;
        !          22865:                        zval_copy_ctor(&tmp);
        !          22866:                        convert_to_string(&tmp);
        !          22867:                        varname = &tmp;
        !          22868:                }
        !          22869: 
        !          22870:                if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
        !          22871:                        value = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 1 TSRMLS_CC);
        !          22872:                        if (!value) {
        !          22873:                                isset = 0;
        !          22874:                        }
        !          22875:                } else {
        !          22876:                        target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC);
        !          22877:                        if (zend_hash_find(target_symbol_table, varname->value.str.val, varname->value.str.len+1, (void **) &value) == FAILURE) {
        !          22878:                                isset = 0;
        !          22879:                        }
        !          22880:                }
        !          22881: 
        !          22882:                if (varname == &tmp) {
        !          22883:                        zval_dtor(&tmp);
        !          22884:                }
        !          22885: 
        !          22886:        }
        !          22887: 
        !          22888:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          22889: 
        !          22890:        switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
        !          22891:                case ZEND_ISSET:
        !          22892:                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          22893:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
        !          22894:                        } else {
        !          22895:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
        !          22896:                        }
        !          22897:                        break;
        !          22898:                case ZEND_ISEMPTY:
        !          22899:                        if (!isset || !i_zend_is_true(*value)) {
        !          22900:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 1;
        !          22901:                        } else {
        !          22902:                                Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
        !          22903:                        }
        !          22904:                        break;
        !          22905:        }
        !          22906: 
        !          22907:        ZEND_VM_NEXT_OPCODE();
        !          22908: }
        !          22909: 
        !          22910: static int ZEND_FASTCALL  ZEND_EXIT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22911: {
        !          22912: #if 0 || (IS_CV != IS_UNUSED)
        !          22913:        zend_op *opline = EX(opline);
        !          22914:        if (IS_CV != IS_UNUSED) {
        !          22915: 
        !          22916:                zval *ptr = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22917: 
        !          22918:                if (Z_TYPE_P(ptr) == IS_LONG) {
        !          22919:                        EG(exit_status) = Z_LVAL_P(ptr);
        !          22920:                } else {
        !          22921:                        zend_print_variable(ptr);
        !          22922:                }
        !          22923: 
        !          22924:        }
        !          22925: #endif
        !          22926:        zend_bailout();
        !          22927:        ZEND_VM_NEXT_OPCODE();
        !          22928: }
        !          22929: 
        !          22930: static int ZEND_FASTCALL  ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22931: {
        !          22932:        zend_op *opline = EX(opline);
        !          22933: 
        !          22934:        zval *value = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22935: 
        !          22936:        if (i_zend_is_true(value)) {
        !          22937:                EX_T(opline->result.u.var).tmp_var = *value;
        !          22938:                zendi_zval_copy_ctor(EX_T(opline->result.u.var).tmp_var);
        !          22939: 
        !          22940: #if DEBUG_ZEND>=2
        !          22941:                printf("Conditional jmp to %d\n", opline->op2.u.opline_num);
        !          22942: #endif
        !          22943:                ZEND_VM_JMP(opline->op2.u.jmp_addr);
        !          22944:        }
        !          22945: 
        !          22946:        ZEND_VM_NEXT_OPCODE();
        !          22947: }
        !          22948: 
        !          22949: static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22950: {
        !          22951:        zend_op *opline = EX(opline);
        !          22952: 
        !          22953:        zval *value = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22954: 
        !          22955:        EX_T(opline->result.u.var).tmp_var = *value;
        !          22956:        if (!0) {
        !          22957:                zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var);
        !          22958:        }
        !          22959: 
        !          22960:        ZEND_VM_NEXT_OPCODE();
        !          22961: }
        !          22962: 
        !          22963: static int ZEND_FASTCALL  ZEND_INSTANCEOF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22964: {
        !          22965:        zend_op *opline = EX(opline);
        !          22966: 
        !          22967:        zval *expr = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          22968:        zend_bool result;
        !          22969: 
        !          22970:        if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->get_class_entry) {
        !          22971:                result = instanceof_function(Z_OBJCE_P(expr), EX_T(opline->op2.u.var).class_entry TSRMLS_CC);
        !          22972:        } else {
        !          22973:                result = 0;
        !          22974:        }
        !          22975:        ZVAL_BOOL(&EX_T(opline->result.u.var).tmp_var, result);
        !          22976: 
        !          22977:        ZEND_VM_NEXT_OPCODE();
        !          22978: }
        !          22979: 
        !          22980: static int ZEND_FASTCALL  ZEND_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22981: {
        !          22982:        zend_op *opline = EX(opline);
        !          22983: 
        !          22984: 
        !          22985:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          22986:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          22987:                &opline->op2.u.constant TSRMLS_CC);
        !          22988: 
        !          22989: 
        !          22990:        ZEND_VM_NEXT_OPCODE();
        !          22991: }
        !          22992: 
        !          22993: static int ZEND_FASTCALL  ZEND_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          22994: {
        !          22995:        zend_op *opline = EX(opline);
        !          22996: 
        !          22997: 
        !          22998:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          22999:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23000:                &opline->op2.u.constant TSRMLS_CC);
        !          23001: 
        !          23002: 
        !          23003:        ZEND_VM_NEXT_OPCODE();
        !          23004: }
        !          23005: 
        !          23006: static int ZEND_FASTCALL  ZEND_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23007: {
        !          23008:        zend_op *opline = EX(opline);
        !          23009: 
        !          23010: 
        !          23011:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          23012:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23013:                &opline->op2.u.constant TSRMLS_CC);
        !          23014: 
        !          23015: 
        !          23016:        ZEND_VM_NEXT_OPCODE();
        !          23017: }
        !          23018: 
        !          23019: static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23020: {
        !          23021:        zend_op *opline = EX(opline);
        !          23022: 
        !          23023: 
        !          23024:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          23025:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23026:                &opline->op2.u.constant TSRMLS_CC);
        !          23027: 
        !          23028: 
        !          23029:        ZEND_VM_NEXT_OPCODE();
        !          23030: }
        !          23031: 
        !          23032: static int ZEND_FASTCALL  ZEND_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23033: {
        !          23034:        zend_op *opline = EX(opline);
        !          23035: 
        !          23036: 
        !          23037:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          23038:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23039:                &opline->op2.u.constant TSRMLS_CC);
        !          23040: 
        !          23041: 
        !          23042:        ZEND_VM_NEXT_OPCODE();
        !          23043: }
        !          23044: 
        !          23045: static int ZEND_FASTCALL  ZEND_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23046: {
        !          23047:        zend_op *opline = EX(opline);
        !          23048: 
        !          23049: 
        !          23050:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          23051:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23052:                &opline->op2.u.constant TSRMLS_CC);
        !          23053: 
        !          23054: 
        !          23055:        ZEND_VM_NEXT_OPCODE();
        !          23056: }
        !          23057: 
        !          23058: static int ZEND_FASTCALL  ZEND_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23059: {
        !          23060:        zend_op *opline = EX(opline);
        !          23061: 
        !          23062: 
        !          23063:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          23064:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23065:                &opline->op2.u.constant TSRMLS_CC);
        !          23066: 
        !          23067: 
        !          23068:        ZEND_VM_NEXT_OPCODE();
        !          23069: }
        !          23070: 
        !          23071: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23072: {
        !          23073:        zend_op *opline = EX(opline);
        !          23074: 
        !          23075: 
        !          23076:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          23077:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23078:                &opline->op2.u.constant TSRMLS_CC);
        !          23079: 
        !          23080: 
        !          23081:        ZEND_VM_NEXT_OPCODE();
        !          23082: }
        !          23083: 
        !          23084: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23085: {
        !          23086:        zend_op *opline = EX(opline);
        !          23087: 
        !          23088: 
        !          23089:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          23090:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23091:                &opline->op2.u.constant TSRMLS_CC);
        !          23092: 
        !          23093: 
        !          23094:        ZEND_VM_NEXT_OPCODE();
        !          23095: }
        !          23096: 
        !          23097: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23098: {
        !          23099:        zend_op *opline = EX(opline);
        !          23100: 
        !          23101:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          23102: 
        !          23103:        is_identical_function(result,
        !          23104:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23105:                &opline->op2.u.constant TSRMLS_CC);
        !          23106:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          23107: 
        !          23108: 
        !          23109:        ZEND_VM_NEXT_OPCODE();
        !          23110: }
        !          23111: 
        !          23112: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23113: {
        !          23114:        zend_op *opline = EX(opline);
        !          23115: 
        !          23116:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          23117: 
        !          23118:        compare_function(result,
        !          23119:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23120:                &opline->op2.u.constant TSRMLS_CC);
        !          23121:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          23122: 
        !          23123: 
        !          23124:        ZEND_VM_NEXT_OPCODE();
        !          23125: }
        !          23126: 
        !          23127: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23128: {
        !          23129:        zend_op *opline = EX(opline);
        !          23130: 
        !          23131:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          23132: 
        !          23133:        compare_function(result,
        !          23134:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23135:                &opline->op2.u.constant TSRMLS_CC);
        !          23136:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          23137: 
        !          23138: 
        !          23139:        ZEND_VM_NEXT_OPCODE();
        !          23140: }
        !          23141: 
        !          23142: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23143: {
        !          23144:        zend_op *opline = EX(opline);
        !          23145: 
        !          23146:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          23147: 
        !          23148:        compare_function(result,
        !          23149:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23150:                &opline->op2.u.constant TSRMLS_CC);
        !          23151:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          23152: 
        !          23153: 
        !          23154:        ZEND_VM_NEXT_OPCODE();
        !          23155: }
        !          23156: 
        !          23157: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23158: {
        !          23159:        zend_op *opline = EX(opline);
        !          23160: 
        !          23161:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          23162: 
        !          23163:        compare_function(result,
        !          23164:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23165:                &opline->op2.u.constant TSRMLS_CC);
        !          23166:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          23167: 
        !          23168: 
        !          23169:        ZEND_VM_NEXT_OPCODE();
        !          23170: }
        !          23171: 
        !          23172: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23173: {
        !          23174:        zend_op *opline = EX(opline);
        !          23175: 
        !          23176: 
        !          23177:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          23178:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23179:                &opline->op2.u.constant TSRMLS_CC);
        !          23180: 
        !          23181: 
        !          23182:        ZEND_VM_NEXT_OPCODE();
        !          23183: }
        !          23184: 
        !          23185: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23186: {
        !          23187:        zend_op *opline = EX(opline);
        !          23188: 
        !          23189: 
        !          23190:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          23191:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23192:                &opline->op2.u.constant TSRMLS_CC);
        !          23193: 
        !          23194: 
        !          23195:        ZEND_VM_NEXT_OPCODE();
        !          23196: }
        !          23197: 
        !          23198: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23199: {
        !          23200:        zend_op *opline = EX(opline);
        !          23201: 
        !          23202: 
        !          23203:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          23204:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23205:                &opline->op2.u.constant TSRMLS_CC);
        !          23206: 
        !          23207: 
        !          23208:        ZEND_VM_NEXT_OPCODE();
        !          23209: }
        !          23210: 
        !          23211: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23212: {
        !          23213:        zend_op *opline = EX(opline);
        !          23214: 
        !          23215: 
        !          23216:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          23217:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          23218:                &opline->op2.u.constant TSRMLS_CC);
        !          23219: 
        !          23220: 
        !          23221:        ZEND_VM_NEXT_OPCODE();
        !          23222: }
        !          23223: 
        !          23224: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CONST(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          23225: {
        !          23226:        zend_op *opline = EX(opline);
        !          23227:        zend_op *op_data = opline+1;
        !          23228:        zend_free_op free_op_data1;
        !          23229:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          23230:        zval *object;
        !          23231:        zval *property = &opline->op2.u.constant;
        !          23232:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          23233:        znode *result = &opline->result;
        !          23234:        int have_get_ptr = 0;
        !          23235: 
        !          23236:        if (IS_CV == IS_VAR && !object_ptr) {
        !          23237:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          23238:        }
        !          23239: 
        !          23240:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          23241:        make_real_object(object_ptr TSRMLS_CC);
        !          23242:        object = *object_ptr;
        !          23243: 
        !          23244:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          23245:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          23246: 
        !          23247:                FREE_OP(free_op_data1);
        !          23248: 
        !          23249:                if (!RETURN_VALUE_UNUSED(result)) {
        !          23250:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          23251:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          23252:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          23253:                }
        !          23254:        } else {
        !          23255:                /* here we are sure we are dealing with an object */
        !          23256:                if (0) {
        !          23257:                        MAKE_REAL_ZVAL_PTR(property);
        !          23258:                }
        !          23259: 
        !          23260:                /* here property is a string */
        !          23261:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          23262:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          23263:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          23264:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          23265:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          23266: 
        !          23267:                                have_get_ptr = 1;
        !          23268:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          23269:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          23270:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          23271:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          23272:                                        PZVAL_LOCK(*zptr);
        !          23273:                                }
        !          23274:                        }
        !          23275:                }
        !          23276: 
        !          23277:                if (!have_get_ptr) {
        !          23278:                        zval *z = NULL;
        !          23279: 
        !          23280:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          23281:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          23282:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          23283:                                }
        !          23284:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          23285:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          23286:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          23287:                                }
        !          23288:                        }
        !          23289:                        if (z) {
        !          23290:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          23291:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          23292: 
        !          23293:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          23294:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          23295:                                                zval_dtor(z);
        !          23296:                                                FREE_ZVAL(z);
        !          23297:                                        }
        !          23298:                                        z = value;
        !          23299:                                }
        !          23300:                                Z_ADDREF_P(z);
        !          23301:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          23302:                                binary_op(z, z, value TSRMLS_CC);
        !          23303:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          23304:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          23305:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          23306:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          23307:                                }
        !          23308:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          23309:                                        EX_T(result->u.var).var.ptr = z;
        !          23310:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          23311:                                        PZVAL_LOCK(z);
        !          23312:                                }
        !          23313:                                zval_ptr_dtor(&z);
        !          23314:                        } else {
        !          23315:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          23316:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          23317:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          23318:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          23319:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          23320:                                }
        !          23321:                        }
        !          23322:                }
        !          23323: 
        !          23324:                if (0) {
        !          23325:                        zval_ptr_dtor(&property);
        !          23326:                } else {
        !          23327: 
        !          23328:                }
        !          23329:                FREE_OP(free_op_data1);
        !          23330:        }
        !          23331: 
        !          23332:        /* assign_obj has two opcodes! */
        !          23333:        ZEND_VM_INC_OPCODE();
        !          23334:        ZEND_VM_NEXT_OPCODE();
        !          23335: }
        !          23336: 
        !          23337: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_CV_CONST(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          23338: {
        !          23339:        zend_op *opline = EX(opline);
        !          23340:        zend_free_op free_op_data2, free_op_data1;
        !          23341:        zval **var_ptr;
        !          23342:        zval *value;
        !          23343: 
        !          23344:        switch (opline->extended_value) {
        !          23345:                case ZEND_ASSIGN_OBJ:
        !          23346:                        return zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23347:                        break;
        !          23348:                case ZEND_ASSIGN_DIM: {
        !          23349:                                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          23350: 
        !          23351:                                if (IS_CV == IS_VAR && !container) {
        !          23352:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          23353:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          23354:                                        if (IS_CV == IS_VAR && !0) {
        !          23355:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          23356:                                        }
        !          23357:                                        return zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23358:                                } else {
        !          23359:                                        zend_op *op_data = opline+1;
        !          23360:                                        zval *dim = &opline->op2.u.constant;
        !          23361: 
        !          23362:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          23363:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          23364:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          23365:                                        ZEND_VM_INC_OPCODE();
        !          23366:                                }
        !          23367:                        }
        !          23368:                        break;
        !          23369:                default:
        !          23370:                        value = &opline->op2.u.constant;
        !          23371:                        var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          23372:                        /* do nothing */
        !          23373:                        break;
        !          23374:        }
        !          23375: 
        !          23376:        if (!var_ptr) {
        !          23377:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          23378:        }
        !          23379: 
        !          23380:        if (*var_ptr == EG(error_zval_ptr)) {
        !          23381:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          23382:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          23383:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          23384:                }
        !          23385: 
        !          23386: 
        !          23387:                ZEND_VM_NEXT_OPCODE();
        !          23388:        }
        !          23389: 
        !          23390:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          23391: 
        !          23392:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          23393:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          23394:                /* proxy object */
        !          23395:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          23396:                Z_ADDREF_P(objval);
        !          23397:                binary_op(objval, objval, value TSRMLS_CC);
        !          23398:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          23399:                zval_ptr_dtor(&objval);
        !          23400:        } else {
        !          23401:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          23402:        }
        !          23403: 
        !          23404:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          23405:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          23406:                PZVAL_LOCK(*var_ptr);
        !          23407:        }
        !          23408: 
        !          23409:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          23410:                FREE_OP(free_op_data1);
        !          23411:                FREE_OP_VAR_PTR(free_op_data2);
        !          23412:        }
        !          23413: 
        !          23414:        ZEND_VM_NEXT_OPCODE();
        !          23415: }
        !          23416: 
        !          23417: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23418: {
        !          23419:        return zend_binary_assign_op_helper_SPEC_CV_CONST(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23420: }
        !          23421: 
        !          23422: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23423: {
        !          23424:        return zend_binary_assign_op_helper_SPEC_CV_CONST(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23425: }
        !          23426: 
        !          23427: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23428: {
        !          23429:        return zend_binary_assign_op_helper_SPEC_CV_CONST(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23430: }
        !          23431: 
        !          23432: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23433: {
        !          23434:        return zend_binary_assign_op_helper_SPEC_CV_CONST(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23435: }
        !          23436: 
        !          23437: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23438: {
        !          23439:        return zend_binary_assign_op_helper_SPEC_CV_CONST(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23440: }
        !          23441: 
        !          23442: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23443: {
        !          23444:        return zend_binary_assign_op_helper_SPEC_CV_CONST(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23445: }
        !          23446: 
        !          23447: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23448: {
        !          23449:        return zend_binary_assign_op_helper_SPEC_CV_CONST(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23450: }
        !          23451: 
        !          23452: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23453: {
        !          23454:        return zend_binary_assign_op_helper_SPEC_CV_CONST(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23455: }
        !          23456: 
        !          23457: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23458: {
        !          23459:        return zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23460: }
        !          23461: 
        !          23462: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23463: {
        !          23464:        return zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23465: }
        !          23466: 
        !          23467: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23468: {
        !          23469:        return zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23470: }
        !          23471: 
        !          23472: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          23473: {
        !          23474:        zend_op *opline = EX(opline);
        !          23475: 
        !          23476:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          23477:        zval *object;
        !          23478:        zval *property = &opline->op2.u.constant;
        !          23479:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          23480:        int have_get_ptr = 0;
        !          23481: 
        !          23482:        if (IS_CV == IS_VAR && !object_ptr) {
        !          23483:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          23484:        }
        !          23485: 
        !          23486:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          23487:        object = *object_ptr;
        !          23488: 
        !          23489:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          23490:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          23491: 
        !          23492:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          23493:                        *retval = EG(uninitialized_zval_ptr);
        !          23494:                        PZVAL_LOCK(*retval);
        !          23495:                }
        !          23496: 
        !          23497:                ZEND_VM_NEXT_OPCODE();
        !          23498:        }
        !          23499: 
        !          23500:        /* here we are sure we are dealing with an object */
        !          23501: 
        !          23502:        if (0) {
        !          23503:                MAKE_REAL_ZVAL_PTR(property);
        !          23504:        }
        !          23505: 
        !          23506:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          23507:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          23508:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          23509:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          23510: 
        !          23511:                        have_get_ptr = 1;
        !          23512:                        incdec_op(*zptr);
        !          23513:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          23514:                                *retval = *zptr;
        !          23515:                                PZVAL_LOCK(*retval);
        !          23516:                        }
        !          23517:                }
        !          23518:        }
        !          23519: 
        !          23520:        if (!have_get_ptr) {
        !          23521:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          23522:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          23523: 
        !          23524:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          23525:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          23526: 
        !          23527:                                if (Z_REFCOUNT_P(z) == 0) {
        !          23528:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          23529:                                        zval_dtor(z);
        !          23530:                                        FREE_ZVAL(z);
        !          23531:                                }
        !          23532:                                z = value;
        !          23533:                        }
        !          23534:                        Z_ADDREF_P(z);
        !          23535:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          23536:                        incdec_op(z);
        !          23537:                        *retval = z;
        !          23538:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          23539:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          23540:                        zval_ptr_dtor(&z);
        !          23541:                } else {
        !          23542:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          23543:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          23544:                                *retval = EG(uninitialized_zval_ptr);
        !          23545:                                PZVAL_LOCK(*retval);
        !          23546:                        }
        !          23547:                }
        !          23548:        }
        !          23549: 
        !          23550:        if (0) {
        !          23551:                zval_ptr_dtor(&property);
        !          23552:        } else {
        !          23553: 
        !          23554:        }
        !          23555: 
        !          23556:        ZEND_VM_NEXT_OPCODE();
        !          23557: }
        !          23558: 
        !          23559: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23560: {
        !          23561:        return zend_pre_incdec_property_helper_SPEC_CV_CONST(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23562: }
        !          23563: 
        !          23564: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23565: {
        !          23566:        return zend_pre_incdec_property_helper_SPEC_CV_CONST(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23567: }
        !          23568: 
        !          23569: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          23570: {
        !          23571:        zend_op *opline = EX(opline);
        !          23572: 
        !          23573:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          23574:        zval *object;
        !          23575:        zval *property = &opline->op2.u.constant;
        !          23576:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          23577:        int have_get_ptr = 0;
        !          23578: 
        !          23579:        if (IS_CV == IS_VAR && !object_ptr) {
        !          23580:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          23581:        }
        !          23582: 
        !          23583:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          23584:        object = *object_ptr;
        !          23585: 
        !          23586:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          23587:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          23588: 
        !          23589:                *retval = *EG(uninitialized_zval_ptr);
        !          23590: 
        !          23591:                ZEND_VM_NEXT_OPCODE();
        !          23592:        }
        !          23593: 
        !          23594:        /* here we are sure we are dealing with an object */
        !          23595: 
        !          23596:        if (0) {
        !          23597:                MAKE_REAL_ZVAL_PTR(property);
        !          23598:        }
        !          23599: 
        !          23600:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          23601:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          23602:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          23603:                        have_get_ptr = 1;
        !          23604:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          23605: 
        !          23606:                        *retval = **zptr;
        !          23607:                        zendi_zval_copy_ctor(*retval);
        !          23608: 
        !          23609:                        incdec_op(*zptr);
        !          23610: 
        !          23611:                }
        !          23612:        }
        !          23613: 
        !          23614:        if (!have_get_ptr) {
        !          23615:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          23616:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          23617:                        zval *z_copy;
        !          23618: 
        !          23619:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          23620:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          23621: 
        !          23622:                                if (Z_REFCOUNT_P(z) == 0) {
        !          23623:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          23624:                                        zval_dtor(z);
        !          23625:                                        FREE_ZVAL(z);
        !          23626:                                }
        !          23627:                                z = value;
        !          23628:                        }
        !          23629:                        *retval = *z;
        !          23630:                        zendi_zval_copy_ctor(*retval);
        !          23631:                        ALLOC_ZVAL(z_copy);
        !          23632:                        *z_copy = *z;
        !          23633:                        zendi_zval_copy_ctor(*z_copy);
        !          23634:                        INIT_PZVAL(z_copy);
        !          23635:                        incdec_op(z_copy);
        !          23636:                        Z_ADDREF_P(z);
        !          23637:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          23638:                        zval_ptr_dtor(&z_copy);
        !          23639:                        zval_ptr_dtor(&z);
        !          23640:                } else {
        !          23641:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          23642:                        *retval = *EG(uninitialized_zval_ptr);
        !          23643:                }
        !          23644:        }
        !          23645: 
        !          23646:        if (0) {
        !          23647:                zval_ptr_dtor(&property);
        !          23648:        } else {
        !          23649: 
        !          23650:        }
        !          23651: 
        !          23652:        ZEND_VM_NEXT_OPCODE();
        !          23653: }
        !          23654: 
        !          23655: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23656: {
        !          23657:        return zend_post_incdec_property_helper_SPEC_CV_CONST(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23658: }
        !          23659: 
        !          23660: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23661: {
        !          23662:        return zend_post_incdec_property_helper_SPEC_CV_CONST(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23663: }
        !          23664: 
        !          23665: static int ZEND_FASTCALL  ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23666: {
        !          23667:        zend_op *opline = EX(opline);
        !          23668: 
        !          23669:        zval *dim = &opline->op2.u.constant;
        !          23670:        zval **container;
        !          23671: 
        !          23672:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK &&
        !          23673:            IS_CV != IS_CV &&
        !          23674:            EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          23675:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          23676:        }
        !          23677:        container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          23678:        if (IS_CV == IS_VAR && !container) {
        !          23679:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          23680:        }
        !          23681:        zend_fetch_dimension_address_read(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          23682: 
        !          23683: 
        !          23684:        ZEND_VM_NEXT_OPCODE();
        !          23685: }
        !          23686: 
        !          23687: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23688: {
        !          23689:        zend_op *opline = EX(opline);
        !          23690:        zend_free_op free_op1;
        !          23691:        zval *dim = &opline->op2.u.constant;
        !          23692:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          23693: 
        !          23694:        if (IS_CV == IS_VAR && !container) {
        !          23695:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          23696:        }
        !          23697:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          23698: 
        !          23699:        if (IS_CV == IS_VAR && 0 &&
        !          23700:            READY_TO_DESTROY(free_op1.var)) {
        !          23701:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          23702:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          23703:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          23704:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23705:                }
        !          23706:        }
        !          23707: 
        !          23708:        /* We are going to assign the result by reference */
        !          23709:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          23710:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23711:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23712:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23713:        }
        !          23714: 
        !          23715:        ZEND_VM_NEXT_OPCODE();
        !          23716: }
        !          23717: 
        !          23718: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23719: {
        !          23720:        zend_op *opline = EX(opline);
        !          23721:        zend_free_op free_op1;
        !          23722:        zval *dim = &opline->op2.u.constant;
        !          23723:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          23724: 
        !          23725:        if (IS_CV == IS_VAR && !container) {
        !          23726:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          23727:        }
        !          23728:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          23729: 
        !          23730:        if (IS_CV == IS_VAR && 0 &&
        !          23731:            READY_TO_DESTROY(free_op1.var)) {
        !          23732:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          23733:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          23734:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          23735:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23736:                }
        !          23737:        }
        !          23738: 
        !          23739:        ZEND_VM_NEXT_OPCODE();
        !          23740: }
        !          23741: 
        !          23742: static int ZEND_FASTCALL  ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23743: {
        !          23744:        zend_op *opline = EX(opline);
        !          23745: 
        !          23746:        zval *dim = &opline->op2.u.constant;
        !          23747:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          23748: 
        !          23749:        if (IS_CV == IS_VAR && !container) {
        !          23750:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          23751:        }
        !          23752:        zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_IS TSRMLS_CC);
        !          23753: 
        !          23754: 
        !          23755:        ZEND_VM_NEXT_OPCODE();
        !          23756: }
        !          23757: 
        !          23758: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23759: {
        !          23760:        zend_op *opline = EX(opline);
        !          23761:        zend_free_op free_op1;
        !          23762:        zval *dim = &opline->op2.u.constant;
        !          23763:        zval **container;
        !          23764: 
        !          23765:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          23766:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          23767:                if (IS_CV == IS_VAR && !container) {
        !          23768:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          23769:                }
        !          23770:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          23771:                if (IS_CV == IS_VAR && 0 &&
        !          23772:                    READY_TO_DESTROY(free_op1.var)) {
        !          23773:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          23774:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          23775:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          23776:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23777:                        }
        !          23778:                }
        !          23779:        } else {
        !          23780:                if (IS_CONST == IS_UNUSED) {
        !          23781:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          23782:                }
        !          23783:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          23784:                if (IS_CV == IS_VAR && !container) {
        !          23785:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          23786:                }
        !          23787:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          23788:        }
        !          23789: 
        !          23790: 
        !          23791:        ZEND_VM_NEXT_OPCODE();
        !          23792: }
        !          23793: 
        !          23794: static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23795: {
        !          23796:        zend_op *opline = EX(opline);
        !          23797:        zend_free_op free_op1;
        !          23798:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          23799:        zval *dim = &opline->op2.u.constant;
        !          23800: 
        !          23801:        /* Not needed in DIM_UNSET
        !          23802:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
        !          23803:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          23804:        }
        !          23805:        */
        !          23806:        if (IS_CV == IS_CV) {
        !          23807:                if (container != &EG(uninitialized_zval_ptr)) {
        !          23808:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          23809:                }
        !          23810:        }
        !          23811:        if (IS_CV == IS_VAR && !container) {
        !          23812:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          23813:        }
        !          23814:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC);
        !          23815: 
        !          23816:        if (IS_CV == IS_VAR && 0 &&
        !          23817:            READY_TO_DESTROY(free_op1.var)) {
        !          23818:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          23819:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          23820:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          23821:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23822:                }
        !          23823:        }
        !          23824: 
        !          23825:        if (EX_T(opline->result.u.var).var.ptr_ptr == NULL) {
        !          23826:                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          23827:        } else {
        !          23828:                zend_free_op free_res;
        !          23829: 
        !          23830:                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          23831:                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          23832:                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23833:                }
        !          23834:                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          23835:                FREE_OP_VAR_PTR(free_res);
        !          23836:        }
        !          23837:        ZEND_VM_NEXT_OPCODE();
        !          23838: }
        !          23839: 
        !          23840: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_CV_CONST(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          23841: {
        !          23842:        zend_op *opline = EX(opline);
        !          23843: 
        !          23844:        zval *container = _get_zval_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC);
        !          23845: 
        !          23846:        zval *offset  = &opline->op2.u.constant;
        !          23847: 
        !          23848:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          23849:                if (type != BP_VAR_IS) {
        !          23850:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          23851:                }
        !          23852:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          23853:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          23854:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          23855:                }
        !          23856: 
        !          23857:        } else {
        !          23858:                zval *retval;
        !          23859: 
        !          23860:                if (0) {
        !          23861:                        MAKE_REAL_ZVAL_PTR(offset);
        !          23862:                }
        !          23863: 
        !          23864:                /* here we are sure we are dealing with an object */
        !          23865:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          23866: 
        !          23867:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          23868:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          23869:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          23870:                                zval_dtor(retval);
        !          23871:                                FREE_ZVAL(retval);
        !          23872:                        }
        !          23873:                } else {
        !          23874:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          23875:                        PZVAL_LOCK(retval);
        !          23876:                }
        !          23877: 
        !          23878:                if (0) {
        !          23879:                        zval_ptr_dtor(&offset);
        !          23880:                } else {
        !          23881: 
        !          23882:                }
        !          23883:        }
        !          23884: 
        !          23885:        ZEND_VM_NEXT_OPCODE();
        !          23886: }
        !          23887: 
        !          23888: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23889: {
        !          23890:        return zend_fetch_property_address_read_helper_SPEC_CV_CONST(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23891: }
        !          23892: 
        !          23893: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23894: {
        !          23895:        zend_op *opline = EX(opline);
        !          23896:        zend_free_op free_op1;
        !          23897:        zval *property = &opline->op2.u.constant;
        !          23898:        zval **container;
        !          23899: 
        !          23900:        if (IS_CV == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          23901:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          23902:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          23903:        }
        !          23904: 
        !          23905:        if (0) {
        !          23906:                MAKE_REAL_ZVAL_PTR(property);
        !          23907:        }
        !          23908:        container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          23909:        if (IS_CV == IS_VAR && !container) {
        !          23910:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          23911:        }
        !          23912:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          23913:        if (0) {
        !          23914:                zval_ptr_dtor(&property);
        !          23915:        } else {
        !          23916: 
        !          23917:        }
        !          23918:        if (IS_CV == IS_VAR && 0 &&
        !          23919:            READY_TO_DESTROY(free_op1.var)) {
        !          23920:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          23921:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          23922:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          23923:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23924:                }
        !          23925:        }
        !          23926: 
        !          23927:        /* We are going to assign the result by reference */
        !          23928:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          23929:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23930:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23931:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23932:        }
        !          23933: 
        !          23934:        ZEND_VM_NEXT_OPCODE();
        !          23935: }
        !          23936: 
        !          23937: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23938: {
        !          23939:        zend_op *opline = EX(opline);
        !          23940:        zend_free_op free_op1;
        !          23941:        zval *property = &opline->op2.u.constant;
        !          23942:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          23943: 
        !          23944:        if (0) {
        !          23945:                MAKE_REAL_ZVAL_PTR(property);
        !          23946:        }
        !          23947:        if (IS_CV == IS_VAR && !container) {
        !          23948:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          23949:        }
        !          23950:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          23951:        if (0) {
        !          23952:                zval_ptr_dtor(&property);
        !          23953:        } else {
        !          23954: 
        !          23955:        }
        !          23956:        if (IS_CV == IS_VAR && 0 &&
        !          23957:            READY_TO_DESTROY(free_op1.var)) {
        !          23958:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          23959:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          23960:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          23961:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          23962:                }
        !          23963:        }
        !          23964: 
        !          23965:        ZEND_VM_NEXT_OPCODE();
        !          23966: }
        !          23967: 
        !          23968: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23969: {
        !          23970:        return zend_fetch_property_address_read_helper_SPEC_CV_CONST(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          23971: }
        !          23972: 
        !          23973: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          23974: {
        !          23975:        zend_op *opline = EX(opline);
        !          23976: 
        !          23977:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          23978:                /* Behave like FETCH_OBJ_W */
        !          23979:                zend_free_op free_op1;
        !          23980:                zval *property = &opline->op2.u.constant;
        !          23981:                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          23982: 
        !          23983:                if (0) {
        !          23984:                        MAKE_REAL_ZVAL_PTR(property);
        !          23985:                }
        !          23986:                if (IS_CV == IS_VAR && !container) {
        !          23987:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          23988:                }
        !          23989:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          23990:                if (0) {
        !          23991:                        zval_ptr_dtor(&property);
        !          23992:                } else {
        !          23993: 
        !          23994:                }
        !          23995:                if (IS_CV == IS_VAR && 0 &&
        !          23996:                    READY_TO_DESTROY(free_op1.var)) {
        !          23997:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          23998:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          23999:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          24000:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          24001:                        }
        !          24002:                }
        !          24003: 
        !          24004:                ZEND_VM_NEXT_OPCODE();
        !          24005:        } else {
        !          24006:                return zend_fetch_property_address_read_helper_SPEC_CV_CONST(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          24007:        }
        !          24008: }
        !          24009: 
        !          24010: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24011: {
        !          24012:        zend_op *opline = EX(opline);
        !          24013:        zend_free_op free_op1, free_res;
        !          24014:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          24015:        zval *property = &opline->op2.u.constant;
        !          24016: 
        !          24017:        if (IS_CV == IS_CV) {
        !          24018:                if (container != &EG(uninitialized_zval_ptr)) {
        !          24019:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          24020:                }
        !          24021:        }
        !          24022:        if (0) {
        !          24023:                MAKE_REAL_ZVAL_PTR(property);
        !          24024:        }
        !          24025:        if (IS_CV == IS_VAR && !container) {
        !          24026:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          24027:        }
        !          24028:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          24029:        if (0) {
        !          24030:                zval_ptr_dtor(&property);
        !          24031:        } else {
        !          24032: 
        !          24033:        }
        !          24034:        if (IS_CV == IS_VAR && 0 &&
        !          24035:            READY_TO_DESTROY(free_op1.var)) {
        !          24036:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          24037:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          24038:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          24039:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          24040:                }
        !          24041:        }
        !          24042: 
        !          24043:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          24044:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          24045:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          24046:        }
        !          24047:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          24048:        FREE_OP_VAR_PTR(free_res);
        !          24049:        ZEND_VM_NEXT_OPCODE();
        !          24050: }
        !          24051: 
        !          24052: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24053: {
        !          24054:        zend_op *opline = EX(opline);
        !          24055:        zend_op *op_data = opline+1;
        !          24056: 
        !          24057:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          24058:        zval *property_name = &opline->op2.u.constant;
        !          24059: 
        !          24060:        if (0) {
        !          24061:                MAKE_REAL_ZVAL_PTR(property_name);
        !          24062:        }
        !          24063:        if (IS_CV == IS_VAR && !object_ptr) {
        !          24064:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          24065:        }
        !          24066:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          24067:        if (0) {
        !          24068:                zval_ptr_dtor(&property_name);
        !          24069:        } else {
        !          24070: 
        !          24071:        }
        !          24072: 
        !          24073:        /* assign_obj has two opcodes! */
        !          24074:        ZEND_VM_INC_OPCODE();
        !          24075:        ZEND_VM_NEXT_OPCODE();
        !          24076: }
        !          24077: 
        !          24078: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24079: {
        !          24080:        zend_op *opline = EX(opline);
        !          24081:        zend_op *op_data = opline+1;
        !          24082: 
        !          24083:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          24084: 
        !          24085:        if (IS_CV == IS_VAR && !object_ptr) {
        !          24086:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          24087:        }
        !          24088:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          24089: 
        !          24090:                zval *property_name = &opline->op2.u.constant;
        !          24091: 
        !          24092:                if (0) {
        !          24093:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          24094:                }
        !          24095:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          24096:                if (0) {
        !          24097:                        zval_ptr_dtor(&property_name);
        !          24098:                } else {
        !          24099: 
        !          24100:                }
        !          24101:        } else {
        !          24102:                zend_free_op free_op_data1, free_op_data2;
        !          24103:                zval *value;
        !          24104:                zval *dim = &opline->op2.u.constant;
        !          24105:                zval **variable_ptr_ptr;
        !          24106: 
        !          24107:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 0, BP_VAR_W TSRMLS_CC);
        !          24108: 
        !          24109:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          24110:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          24111:                if (!variable_ptr_ptr) {
        !          24112:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          24113:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          24114:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          24115:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          24116:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          24117:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          24118:                                }
        !          24119:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          24120:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          24121:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          24122:                        }
        !          24123:                } else {
        !          24124:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          24125:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          24126:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          24127:                                PZVAL_LOCK(value);
        !          24128:                        }
        !          24129:                }
        !          24130:                FREE_OP_VAR_PTR(free_op_data2);
        !          24131:                FREE_OP_IF_VAR(free_op_data1);
        !          24132:        }
        !          24133: 
        !          24134:        /* assign_dim has two opcodes! */
        !          24135:        ZEND_VM_INC_OPCODE();
        !          24136:        ZEND_VM_NEXT_OPCODE();
        !          24137: }
        !          24138: 
        !          24139: static int ZEND_FASTCALL  ZEND_ASSIGN_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24140: {
        !          24141:        zend_op *opline = EX(opline);
        !          24142: 
        !          24143:        zval *value = &opline->op2.u.constant;
        !          24144:        zval **variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          24145: 
        !          24146:        if (IS_CV == IS_VAR && !variable_ptr_ptr) {
        !          24147:                if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CONST TSRMLS_CC)) {
        !          24148:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          24149:                                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          24150:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          24151:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          24152:                                ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
        !          24153:                        }
        !          24154:                } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          24155:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          24156:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          24157:                }
        !          24158:        } else {
        !          24159:                value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
        !          24160:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          24161:                        AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          24162:                        PZVAL_LOCK(value);
        !          24163:                }
        !          24164:        }
        !          24165: 
        !          24166:        /* zend_assign_to_variable() always takes care of op2, never free it! */
        !          24167: 
        !          24168:        ZEND_VM_NEXT_OPCODE();
        !          24169: }
        !          24170: 
        !          24171: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24172: {
        !          24173:        zend_op *opline = EX(opline);
        !          24174:        zval *function_name;
        !          24175:        char *function_name_strval;
        !          24176:        int function_name_strlen;
        !          24177: 
        !          24178: 
        !          24179:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          24180: 
        !          24181:        function_name = &opline->op2.u.constant;
        !          24182: 
        !          24183:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          24184:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          24185:        }
        !          24186: 
        !          24187:        function_name_strval = Z_STRVAL_P(function_name);
        !          24188:        function_name_strlen = Z_STRLEN_P(function_name);
        !          24189: 
        !          24190:        EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          24191: 
        !          24192:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          24193:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          24194:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          24195:                }
        !          24196: 
        !          24197:                /* First, locate the function. */
        !          24198:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          24199:                if (!EX(fbc)) {
        !          24200:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          24201:                }
        !          24202: 
        !          24203:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          24204:        } else {
        !          24205:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          24206:        }
        !          24207: 
        !          24208:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          24209:                EX(object) = NULL;
        !          24210:        } else {
        !          24211:                if (!PZVAL_IS_REF(EX(object))) {
        !          24212:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          24213:                } else {
        !          24214:                        zval *this_ptr;
        !          24215:                        ALLOC_ZVAL(this_ptr);
        !          24216:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          24217:                        zval_copy_ctor(this_ptr);
        !          24218:                        EX(object) = this_ptr;
        !          24219:                }
        !          24220:        }
        !          24221: 
        !          24222: 
        !          24223:        ZEND_VM_NEXT_OPCODE();
        !          24224: }
        !          24225: 
        !          24226: static int ZEND_FASTCALL  ZEND_CASE_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24227: {
        !          24228:        zend_op *opline = EX(opline);
        !          24229:        int switch_expr_is_overloaded=0;
        !          24230: 
        !          24231: 
        !          24232:        if (IS_CV==IS_VAR) {
        !          24233:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          24234:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          24235:                } else {
        !          24236:                        switch_expr_is_overloaded = 1;
        !          24237:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          24238:                }
        !          24239:        }
        !          24240:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          24241:                                 _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24242:                                 &opline->op2.u.constant TSRMLS_CC);
        !          24243: 
        !          24244:        if (switch_expr_is_overloaded) {
        !          24245:                /* We only free op1 if this is a string offset,
        !          24246:                 * Since if it is a TMP_VAR, it'll be reused by
        !          24247:                 * other CASE opcodes (whereas string offsets
        !          24248:                 * are allocated at each get_zval_ptr())
        !          24249:                 */
        !          24250: 
        !          24251:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          24252:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          24253:        }
        !          24254:        ZEND_VM_NEXT_OPCODE();
        !          24255: }
        !          24256: 
        !          24257: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24258: {
        !          24259:        zend_op *opline = EX(opline);
        !          24260: 
        !          24261:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          24262:        zval *expr_ptr;
        !          24263:        zval *offset=&opline->op2.u.constant;
        !          24264: 
        !          24265: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          24266:        zval **expr_ptr_ptr = NULL;
        !          24267: 
        !          24268:        if (opline->extended_value) {
        !          24269:                expr_ptr_ptr=_get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          24270:                expr_ptr = *expr_ptr_ptr;
        !          24271:        } else {
        !          24272:                expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          24273:        }
        !          24274: #else
        !          24275:        expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          24276: #endif
        !          24277: 
        !          24278:        if (0) { /* temporary variable */
        !          24279:                zval *new_expr;
        !          24280: 
        !          24281:                ALLOC_ZVAL(new_expr);
        !          24282:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          24283:                expr_ptr = new_expr;
        !          24284:        } else {
        !          24285: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          24286:                if (opline->extended_value) {
        !          24287:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          24288:                        expr_ptr = *expr_ptr_ptr;
        !          24289:                        Z_ADDREF_P(expr_ptr);
        !          24290:                } else
        !          24291: #endif
        !          24292:                if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          24293:                        zval *new_expr;
        !          24294: 
        !          24295:                        ALLOC_ZVAL(new_expr);
        !          24296:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          24297:                        expr_ptr = new_expr;
        !          24298:                        zendi_zval_copy_ctor(*expr_ptr);
        !          24299:                } else {
        !          24300:                        Z_ADDREF_P(expr_ptr);
        !          24301:                }
        !          24302:        }
        !          24303:        if (offset) {
        !          24304:                switch (Z_TYPE_P(offset)) {
        !          24305:                        case IS_DOUBLE:
        !          24306:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          24307:                                break;
        !          24308:                        case IS_LONG:
        !          24309:                        case IS_BOOL:
        !          24310:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          24311:                                break;
        !          24312:                        case IS_STRING:
        !          24313:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          24314:                                break;
        !          24315:                        case IS_NULL:
        !          24316:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          24317:                                break;
        !          24318:                        default:
        !          24319:                                zend_error(E_WARNING, "Illegal offset type");
        !          24320:                                zval_ptr_dtor(&expr_ptr);
        !          24321:                                /* do nothing */
        !          24322:                                break;
        !          24323:                }
        !          24324: 
        !          24325:        } else {
        !          24326:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          24327:        }
        !          24328:        if (opline->extended_value) {
        !          24329: 
        !          24330:        } else {
        !          24331: 
        !          24332:        }
        !          24333:        ZEND_VM_NEXT_OPCODE();
        !          24334: }
        !          24335: 
        !          24336: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24337: {
        !          24338:        zend_op *opline = EX(opline);
        !          24339: 
        !          24340:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          24341:        if (IS_CV == IS_UNUSED) {
        !          24342:                ZEND_VM_NEXT_OPCODE();
        !          24343: #if 0 || IS_CV != IS_UNUSED
        !          24344:        } else {
        !          24345:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          24346: #endif
        !          24347:        }
        !          24348: }
        !          24349: 
        !          24350: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24351: {
        !          24352:        zend_op *opline = EX(opline);
        !          24353: 
        !          24354:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          24355:        zval *offset;
        !          24356: 
        !          24357:        if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          24358:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          24359:        }
        !          24360:        offset = &opline->op2.u.constant;
        !          24361: 
        !          24362:        if (IS_CV != IS_VAR || container) {
        !          24363:                switch (Z_TYPE_PP(container)) {
        !          24364:                        case IS_ARRAY: {
        !          24365:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          24366: 
        !          24367:                                switch (Z_TYPE_P(offset)) {
        !          24368:                                        case IS_DOUBLE:
        !          24369:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          24370:                                                break;
        !          24371:                                        case IS_RESOURCE:
        !          24372:                                        case IS_BOOL:
        !          24373:                                        case IS_LONG:
        !          24374:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          24375:                                                break;
        !          24376:                                        case IS_STRING:
        !          24377:                                                if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
        !          24378:                                                        Z_ADDREF_P(offset);
        !          24379:                                                }
        !          24380:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          24381:                                            ht == &EG(symbol_table)) {
        !          24382:                                                        zend_execute_data *ex;
        !          24383:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          24384: 
        !          24385:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          24386:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          24387:                                                                        int i;
        !          24388: 
        !          24389:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          24390:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          24391:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          24392:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          24393:                                                                                        ex->CVs[i] = NULL;
        !          24394:                                                                                        break;
        !          24395:                                                                                }
        !          24396:                                                                        }
        !          24397:                                                                }
        !          24398:                                                        }
        !          24399:                                                }
        !          24400:                                                if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
        !          24401:                                                        zval_ptr_dtor(&offset);
        !          24402:                                                }
        !          24403:                                                break;
        !          24404:                                        case IS_NULL:
        !          24405:                                                zend_hash_del(ht, "", sizeof(""));
        !          24406:                                                break;
        !          24407:                                        default:
        !          24408:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          24409:                                                break;
        !          24410:                                }
        !          24411: 
        !          24412:                                break;
        !          24413:                        }
        !          24414:                        case IS_OBJECT:
        !          24415:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          24416:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          24417:                                }
        !          24418:                                if (0) {
        !          24419:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          24420:                                }
        !          24421:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          24422:                                if (0) {
        !          24423:                                        zval_ptr_dtor(&offset);
        !          24424:                                } else {
        !          24425: 
        !          24426:                                }
        !          24427:                                break;
        !          24428:                        case IS_STRING:
        !          24429:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          24430:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          24431:                        default:
        !          24432: 
        !          24433:                                break;
        !          24434:                }
        !          24435:        } else {
        !          24436: 
        !          24437:        }
        !          24438: 
        !          24439:        ZEND_VM_NEXT_OPCODE();
        !          24440: }
        !          24441: 
        !          24442: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24443: {
        !          24444:        zend_op *opline = EX(opline);
        !          24445: 
        !          24446:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          24447:        zval *offset = &opline->op2.u.constant;
        !          24448: 
        !          24449:        if (IS_CV != IS_VAR || container) {
        !          24450:                if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          24451:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          24452:                }
        !          24453:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          24454:                        if (0) {
        !          24455:                                MAKE_REAL_ZVAL_PTR(offset);
        !          24456:                        }
        !          24457:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          24458:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          24459:                        } else {
        !          24460:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          24461:                        }
        !          24462:                        if (0) {
        !          24463:                                zval_ptr_dtor(&offset);
        !          24464:                        } else {
        !          24465: 
        !          24466:                        }
        !          24467:                } else {
        !          24468: 
        !          24469:                }
        !          24470:        } else {
        !          24471: 
        !          24472:        }
        !          24473: 
        !          24474:        ZEND_VM_NEXT_OPCODE();
        !          24475: }
        !          24476: 
        !          24477: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CONST(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          24478: {
        !          24479:        zend_op *opline = EX(opline);
        !          24480: 
        !          24481:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          24482:        zval **value = NULL;
        !          24483:        int result = 0;
        !          24484: 
        !          24485:        if (IS_CV != IS_VAR || container) {
        !          24486: 
        !          24487:                zval *offset = &opline->op2.u.constant;
        !          24488: 
        !          24489:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          24490:                        HashTable *ht;
        !          24491:                        int isset = 0;
        !          24492: 
        !          24493:                        ht = Z_ARRVAL_PP(container);
        !          24494: 
        !          24495:                        switch (Z_TYPE_P(offset)) {
        !          24496:                                case IS_DOUBLE:
        !          24497:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          24498:                                                isset = 1;
        !          24499:                                        }
        !          24500:                                        break;
        !          24501:                                case IS_RESOURCE:
        !          24502:                                case IS_BOOL:
        !          24503:                                case IS_LONG:
        !          24504:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          24505:                                                isset = 1;
        !          24506:                                        }
        !          24507:                                        break;
        !          24508:                                case IS_STRING:
        !          24509:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          24510:                                                isset = 1;
        !          24511:                                        }
        !          24512:                                        break;
        !          24513:                                case IS_NULL:
        !          24514:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          24515:                                                isset = 1;
        !          24516:                                        }
        !          24517:                                        break;
        !          24518:                                default:
        !          24519:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          24520: 
        !          24521:                                        break;
        !          24522:                        }
        !          24523: 
        !          24524:                        switch (opline->extended_value) {
        !          24525:                                case ZEND_ISSET:
        !          24526:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          24527:                                                result = 0;
        !          24528:                                        } else {
        !          24529:                                                result = isset;
        !          24530:                                        }
        !          24531:                                        break;
        !          24532:                                case ZEND_ISEMPTY:
        !          24533:                                        if (!isset || !i_zend_is_true(*value)) {
        !          24534:                                                result = 0;
        !          24535:                                        } else {
        !          24536:                                                result = 1;
        !          24537:                                        }
        !          24538:                                        break;
        !          24539:                        }
        !          24540: 
        !          24541:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          24542:                        if (0) {
        !          24543:                                MAKE_REAL_ZVAL_PTR(offset);
        !          24544:                        }
        !          24545:                        if (prop_dim) {
        !          24546:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          24547:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          24548:                                } else {
        !          24549:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          24550:                                        result = 0;
        !          24551:                                }
        !          24552:                        } else {
        !          24553:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          24554:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          24555:                                } else {
        !          24556:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          24557:                                        result = 0;
        !          24558:                                }
        !          24559:                        }
        !          24560:                        if (0) {
        !          24561:                                zval_ptr_dtor(&offset);
        !          24562:                        } else {
        !          24563: 
        !          24564:                        }
        !          24565:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          24566:                        zval tmp;
        !          24567: 
        !          24568:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          24569:                                tmp = *offset;
        !          24570:                                zval_copy_ctor(&tmp);
        !          24571:                                convert_to_long(&tmp);
        !          24572:                                offset = &tmp;
        !          24573:                        }
        !          24574:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          24575:                                switch (opline->extended_value) {
        !          24576:                                        case ZEND_ISSET:
        !          24577:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          24578:                                                        result = 1;
        !          24579:                                                }
        !          24580:                                                break;
        !          24581:                                        case ZEND_ISEMPTY:
        !          24582:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          24583:                                                        result = 1;
        !          24584:                                                }
        !          24585:                                                break;
        !          24586:                                }
        !          24587:                        }
        !          24588: 
        !          24589:                } else {
        !          24590: 
        !          24591:                }
        !          24592:        }
        !          24593: 
        !          24594:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          24595: 
        !          24596:        switch (opline->extended_value) {
        !          24597:                case ZEND_ISSET:
        !          24598:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          24599:                        break;
        !          24600:                case ZEND_ISEMPTY:
        !          24601:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          24602:                        break;
        !          24603:        }
        !          24604: 
        !          24605:        ZEND_VM_NEXT_OPCODE();
        !          24606: }
        !          24607: 
        !          24608: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24609: {
        !          24610:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CONST(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          24611: }
        !          24612: 
        !          24613: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24614: {
        !          24615:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CONST(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          24616: }
        !          24617: 
        !          24618: static int ZEND_FASTCALL  ZEND_ADD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24619: {
        !          24620:        zend_op *opline = EX(opline);
        !          24621:        zend_free_op free_op2;
        !          24622: 
        !          24623:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          24624:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24625:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24626: 
        !          24627:        zval_dtor(free_op2.var);
        !          24628:        ZEND_VM_NEXT_OPCODE();
        !          24629: }
        !          24630: 
        !          24631: static int ZEND_FASTCALL  ZEND_SUB_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24632: {
        !          24633:        zend_op *opline = EX(opline);
        !          24634:        zend_free_op free_op2;
        !          24635: 
        !          24636:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          24637:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24638:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24639: 
        !          24640:        zval_dtor(free_op2.var);
        !          24641:        ZEND_VM_NEXT_OPCODE();
        !          24642: }
        !          24643: 
        !          24644: static int ZEND_FASTCALL  ZEND_MUL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24645: {
        !          24646:        zend_op *opline = EX(opline);
        !          24647:        zend_free_op free_op2;
        !          24648: 
        !          24649:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          24650:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24651:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24652: 
        !          24653:        zval_dtor(free_op2.var);
        !          24654:        ZEND_VM_NEXT_OPCODE();
        !          24655: }
        !          24656: 
        !          24657: static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24658: {
        !          24659:        zend_op *opline = EX(opline);
        !          24660:        zend_free_op free_op2;
        !          24661: 
        !          24662:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          24663:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24664:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24665: 
        !          24666:        zval_dtor(free_op2.var);
        !          24667:        ZEND_VM_NEXT_OPCODE();
        !          24668: }
        !          24669: 
        !          24670: static int ZEND_FASTCALL  ZEND_MOD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24671: {
        !          24672:        zend_op *opline = EX(opline);
        !          24673:        zend_free_op free_op2;
        !          24674: 
        !          24675:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          24676:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24677:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24678: 
        !          24679:        zval_dtor(free_op2.var);
        !          24680:        ZEND_VM_NEXT_OPCODE();
        !          24681: }
        !          24682: 
        !          24683: static int ZEND_FASTCALL  ZEND_SL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24684: {
        !          24685:        zend_op *opline = EX(opline);
        !          24686:        zend_free_op free_op2;
        !          24687: 
        !          24688:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          24689:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24690:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24691: 
        !          24692:        zval_dtor(free_op2.var);
        !          24693:        ZEND_VM_NEXT_OPCODE();
        !          24694: }
        !          24695: 
        !          24696: static int ZEND_FASTCALL  ZEND_SR_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24697: {
        !          24698:        zend_op *opline = EX(opline);
        !          24699:        zend_free_op free_op2;
        !          24700: 
        !          24701:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          24702:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24703:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24704: 
        !          24705:        zval_dtor(free_op2.var);
        !          24706:        ZEND_VM_NEXT_OPCODE();
        !          24707: }
        !          24708: 
        !          24709: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24710: {
        !          24711:        zend_op *opline = EX(opline);
        !          24712:        zend_free_op free_op2;
        !          24713: 
        !          24714:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          24715:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24716:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24717: 
        !          24718:        zval_dtor(free_op2.var);
        !          24719:        ZEND_VM_NEXT_OPCODE();
        !          24720: }
        !          24721: 
        !          24722: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24723: {
        !          24724:        zend_op *opline = EX(opline);
        !          24725:        zend_free_op free_op2;
        !          24726: 
        !          24727:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          24728:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24729:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24730: 
        !          24731:        zval_dtor(free_op2.var);
        !          24732:        ZEND_VM_NEXT_OPCODE();
        !          24733: }
        !          24734: 
        !          24735: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24736: {
        !          24737:        zend_op *opline = EX(opline);
        !          24738:        zend_free_op free_op2;
        !          24739:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          24740: 
        !          24741:        is_identical_function(result,
        !          24742:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24743:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24744:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          24745: 
        !          24746:        zval_dtor(free_op2.var);
        !          24747:        ZEND_VM_NEXT_OPCODE();
        !          24748: }
        !          24749: 
        !          24750: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24751: {
        !          24752:        zend_op *opline = EX(opline);
        !          24753:        zend_free_op free_op2;
        !          24754:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          24755: 
        !          24756:        compare_function(result,
        !          24757:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24758:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24759:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          24760: 
        !          24761:        zval_dtor(free_op2.var);
        !          24762:        ZEND_VM_NEXT_OPCODE();
        !          24763: }
        !          24764: 
        !          24765: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24766: {
        !          24767:        zend_op *opline = EX(opline);
        !          24768:        zend_free_op free_op2;
        !          24769:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          24770: 
        !          24771:        compare_function(result,
        !          24772:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24773:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24774:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          24775: 
        !          24776:        zval_dtor(free_op2.var);
        !          24777:        ZEND_VM_NEXT_OPCODE();
        !          24778: }
        !          24779: 
        !          24780: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24781: {
        !          24782:        zend_op *opline = EX(opline);
        !          24783:        zend_free_op free_op2;
        !          24784:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          24785: 
        !          24786:        compare_function(result,
        !          24787:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24788:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24789:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          24790: 
        !          24791:        zval_dtor(free_op2.var);
        !          24792:        ZEND_VM_NEXT_OPCODE();
        !          24793: }
        !          24794: 
        !          24795: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24796: {
        !          24797:        zend_op *opline = EX(opline);
        !          24798:        zend_free_op free_op2;
        !          24799:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          24800: 
        !          24801:        compare_function(result,
        !          24802:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24803:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24804:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          24805: 
        !          24806:        zval_dtor(free_op2.var);
        !          24807:        ZEND_VM_NEXT_OPCODE();
        !          24808: }
        !          24809: 
        !          24810: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24811: {
        !          24812:        zend_op *opline = EX(opline);
        !          24813:        zend_free_op free_op2;
        !          24814: 
        !          24815:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          24816:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24817:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24818: 
        !          24819:        zval_dtor(free_op2.var);
        !          24820:        ZEND_VM_NEXT_OPCODE();
        !          24821: }
        !          24822: 
        !          24823: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24824: {
        !          24825:        zend_op *opline = EX(opline);
        !          24826:        zend_free_op free_op2;
        !          24827: 
        !          24828:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          24829:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24830:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24831: 
        !          24832:        zval_dtor(free_op2.var);
        !          24833:        ZEND_VM_NEXT_OPCODE();
        !          24834: }
        !          24835: 
        !          24836: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24837: {
        !          24838:        zend_op *opline = EX(opline);
        !          24839:        zend_free_op free_op2;
        !          24840: 
        !          24841:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          24842:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24843:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24844: 
        !          24845:        zval_dtor(free_op2.var);
        !          24846:        ZEND_VM_NEXT_OPCODE();
        !          24847: }
        !          24848: 
        !          24849: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          24850: {
        !          24851:        zend_op *opline = EX(opline);
        !          24852:        zend_free_op free_op2;
        !          24853: 
        !          24854:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          24855:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          24856:                _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          24857: 
        !          24858:        zval_dtor(free_op2.var);
        !          24859:        ZEND_VM_NEXT_OPCODE();
        !          24860: }
        !          24861: 
        !          24862: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_TMP(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          24863: {
        !          24864:        zend_op *opline = EX(opline);
        !          24865:        zend_op *op_data = opline+1;
        !          24866:        zend_free_op free_op2, free_op_data1;
        !          24867:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          24868:        zval *object;
        !          24869:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          24870:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          24871:        znode *result = &opline->result;
        !          24872:        int have_get_ptr = 0;
        !          24873: 
        !          24874:        if (IS_CV == IS_VAR && !object_ptr) {
        !          24875:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          24876:        }
        !          24877: 
        !          24878:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          24879:        make_real_object(object_ptr TSRMLS_CC);
        !          24880:        object = *object_ptr;
        !          24881: 
        !          24882:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          24883:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          24884:                zval_dtor(free_op2.var);
        !          24885:                FREE_OP(free_op_data1);
        !          24886: 
        !          24887:                if (!RETURN_VALUE_UNUSED(result)) {
        !          24888:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          24889:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          24890:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          24891:                }
        !          24892:        } else {
        !          24893:                /* here we are sure we are dealing with an object */
        !          24894:                if (1) {
        !          24895:                        MAKE_REAL_ZVAL_PTR(property);
        !          24896:                }
        !          24897: 
        !          24898:                /* here property is a string */
        !          24899:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          24900:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          24901:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          24902:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          24903:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          24904: 
        !          24905:                                have_get_ptr = 1;
        !          24906:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          24907:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          24908:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          24909:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          24910:                                        PZVAL_LOCK(*zptr);
        !          24911:                                }
        !          24912:                        }
        !          24913:                }
        !          24914: 
        !          24915:                if (!have_get_ptr) {
        !          24916:                        zval *z = NULL;
        !          24917: 
        !          24918:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          24919:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          24920:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          24921:                                }
        !          24922:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          24923:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          24924:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          24925:                                }
        !          24926:                        }
        !          24927:                        if (z) {
        !          24928:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          24929:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          24930: 
        !          24931:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          24932:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          24933:                                                zval_dtor(z);
        !          24934:                                                FREE_ZVAL(z);
        !          24935:                                        }
        !          24936:                                        z = value;
        !          24937:                                }
        !          24938:                                Z_ADDREF_P(z);
        !          24939:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          24940:                                binary_op(z, z, value TSRMLS_CC);
        !          24941:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          24942:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          24943:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          24944:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          24945:                                }
        !          24946:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          24947:                                        EX_T(result->u.var).var.ptr = z;
        !          24948:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          24949:                                        PZVAL_LOCK(z);
        !          24950:                                }
        !          24951:                                zval_ptr_dtor(&z);
        !          24952:                        } else {
        !          24953:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          24954:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          24955:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          24956:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          24957:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          24958:                                }
        !          24959:                        }
        !          24960:                }
        !          24961: 
        !          24962:                if (1) {
        !          24963:                        zval_ptr_dtor(&property);
        !          24964:                } else {
        !          24965:                        zval_dtor(free_op2.var);
        !          24966:                }
        !          24967:                FREE_OP(free_op_data1);
        !          24968:        }
        !          24969: 
        !          24970:        /* assign_obj has two opcodes! */
        !          24971:        ZEND_VM_INC_OPCODE();
        !          24972:        ZEND_VM_NEXT_OPCODE();
        !          24973: }
        !          24974: 
        !          24975: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_CV_TMP(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          24976: {
        !          24977:        zend_op *opline = EX(opline);
        !          24978:        zend_free_op free_op2, free_op_data2, free_op_data1;
        !          24979:        zval **var_ptr;
        !          24980:        zval *value;
        !          24981: 
        !          24982:        switch (opline->extended_value) {
        !          24983:                case ZEND_ASSIGN_OBJ:
        !          24984:                        return zend_binary_assign_op_obj_helper_SPEC_CV_TMP(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          24985:                        break;
        !          24986:                case ZEND_ASSIGN_DIM: {
        !          24987:                                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          24988: 
        !          24989:                                if (IS_CV == IS_VAR && !container) {
        !          24990:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          24991:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          24992:                                        if (IS_CV == IS_VAR && !0) {
        !          24993:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          24994:                                        }
        !          24995:                                        return zend_binary_assign_op_obj_helper_SPEC_CV_TMP(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          24996:                                } else {
        !          24997:                                        zend_op *op_data = opline+1;
        !          24998:                                        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          24999: 
        !          25000:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 1, BP_VAR_RW TSRMLS_CC);
        !          25001:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          25002:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          25003:                                        ZEND_VM_INC_OPCODE();
        !          25004:                                }
        !          25005:                        }
        !          25006:                        break;
        !          25007:                default:
        !          25008:                        value = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25009:                        var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          25010:                        /* do nothing */
        !          25011:                        break;
        !          25012:        }
        !          25013: 
        !          25014:        if (!var_ptr) {
        !          25015:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          25016:        }
        !          25017: 
        !          25018:        if (*var_ptr == EG(error_zval_ptr)) {
        !          25019:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25020:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          25021:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          25022:                }
        !          25023:                zval_dtor(free_op2.var);
        !          25024: 
        !          25025:                ZEND_VM_NEXT_OPCODE();
        !          25026:        }
        !          25027: 
        !          25028:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          25029: 
        !          25030:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          25031:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          25032:                /* proxy object */
        !          25033:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          25034:                Z_ADDREF_P(objval);
        !          25035:                binary_op(objval, objval, value TSRMLS_CC);
        !          25036:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          25037:                zval_ptr_dtor(&objval);
        !          25038:        } else {
        !          25039:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          25040:        }
        !          25041: 
        !          25042:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25043:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          25044:                PZVAL_LOCK(*var_ptr);
        !          25045:        }
        !          25046:        zval_dtor(free_op2.var);
        !          25047: 
        !          25048:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          25049:                FREE_OP(free_op_data1);
        !          25050:                FREE_OP_VAR_PTR(free_op_data2);
        !          25051:        }
        !          25052: 
        !          25053:        ZEND_VM_NEXT_OPCODE();
        !          25054: }
        !          25055: 
        !          25056: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25057: {
        !          25058:        return zend_binary_assign_op_helper_SPEC_CV_TMP(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25059: }
        !          25060: 
        !          25061: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25062: {
        !          25063:        return zend_binary_assign_op_helper_SPEC_CV_TMP(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25064: }
        !          25065: 
        !          25066: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25067: {
        !          25068:        return zend_binary_assign_op_helper_SPEC_CV_TMP(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25069: }
        !          25070: 
        !          25071: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25072: {
        !          25073:        return zend_binary_assign_op_helper_SPEC_CV_TMP(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25074: }
        !          25075: 
        !          25076: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25077: {
        !          25078:        return zend_binary_assign_op_helper_SPEC_CV_TMP(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25079: }
        !          25080: 
        !          25081: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25082: {
        !          25083:        return zend_binary_assign_op_helper_SPEC_CV_TMP(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25084: }
        !          25085: 
        !          25086: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25087: {
        !          25088:        return zend_binary_assign_op_helper_SPEC_CV_TMP(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25089: }
        !          25090: 
        !          25091: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25092: {
        !          25093:        return zend_binary_assign_op_helper_SPEC_CV_TMP(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25094: }
        !          25095: 
        !          25096: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25097: {
        !          25098:        return zend_binary_assign_op_helper_SPEC_CV_TMP(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25099: }
        !          25100: 
        !          25101: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25102: {
        !          25103:        return zend_binary_assign_op_helper_SPEC_CV_TMP(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25104: }
        !          25105: 
        !          25106: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25107: {
        !          25108:        return zend_binary_assign_op_helper_SPEC_CV_TMP(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25109: }
        !          25110: 
        !          25111: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_TMP(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          25112: {
        !          25113:        zend_op *opline = EX(opline);
        !          25114:        zend_free_op free_op2;
        !          25115:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25116:        zval *object;
        !          25117:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25118:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          25119:        int have_get_ptr = 0;
        !          25120: 
        !          25121:        if (IS_CV == IS_VAR && !object_ptr) {
        !          25122:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          25123:        }
        !          25124: 
        !          25125:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          25126:        object = *object_ptr;
        !          25127: 
        !          25128:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          25129:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          25130:                zval_dtor(free_op2.var);
        !          25131:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25132:                        *retval = EG(uninitialized_zval_ptr);
        !          25133:                        PZVAL_LOCK(*retval);
        !          25134:                }
        !          25135: 
        !          25136:                ZEND_VM_NEXT_OPCODE();
        !          25137:        }
        !          25138: 
        !          25139:        /* here we are sure we are dealing with an object */
        !          25140: 
        !          25141:        if (1) {
        !          25142:                MAKE_REAL_ZVAL_PTR(property);
        !          25143:        }
        !          25144: 
        !          25145:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          25146:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          25147:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          25148:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          25149: 
        !          25150:                        have_get_ptr = 1;
        !          25151:                        incdec_op(*zptr);
        !          25152:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25153:                                *retval = *zptr;
        !          25154:                                PZVAL_LOCK(*retval);
        !          25155:                        }
        !          25156:                }
        !          25157:        }
        !          25158: 
        !          25159:        if (!have_get_ptr) {
        !          25160:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          25161:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          25162: 
        !          25163:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          25164:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          25165: 
        !          25166:                                if (Z_REFCOUNT_P(z) == 0) {
        !          25167:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          25168:                                        zval_dtor(z);
        !          25169:                                        FREE_ZVAL(z);
        !          25170:                                }
        !          25171:                                z = value;
        !          25172:                        }
        !          25173:                        Z_ADDREF_P(z);
        !          25174:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          25175:                        incdec_op(z);
        !          25176:                        *retval = z;
        !          25177:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          25178:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          25179:                        zval_ptr_dtor(&z);
        !          25180:                } else {
        !          25181:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          25182:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25183:                                *retval = EG(uninitialized_zval_ptr);
        !          25184:                                PZVAL_LOCK(*retval);
        !          25185:                        }
        !          25186:                }
        !          25187:        }
        !          25188: 
        !          25189:        if (1) {
        !          25190:                zval_ptr_dtor(&property);
        !          25191:        } else {
        !          25192:                zval_dtor(free_op2.var);
        !          25193:        }
        !          25194: 
        !          25195:        ZEND_VM_NEXT_OPCODE();
        !          25196: }
        !          25197: 
        !          25198: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25199: {
        !          25200:        return zend_pre_incdec_property_helper_SPEC_CV_TMP(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25201: }
        !          25202: 
        !          25203: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25204: {
        !          25205:        return zend_pre_incdec_property_helper_SPEC_CV_TMP(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25206: }
        !          25207: 
        !          25208: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_TMP(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          25209: {
        !          25210:        zend_op *opline = EX(opline);
        !          25211:        zend_free_op free_op2;
        !          25212:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25213:        zval *object;
        !          25214:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25215:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          25216:        int have_get_ptr = 0;
        !          25217: 
        !          25218:        if (IS_CV == IS_VAR && !object_ptr) {
        !          25219:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          25220:        }
        !          25221: 
        !          25222:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          25223:        object = *object_ptr;
        !          25224: 
        !          25225:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          25226:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          25227:                zval_dtor(free_op2.var);
        !          25228:                *retval = *EG(uninitialized_zval_ptr);
        !          25229: 
        !          25230:                ZEND_VM_NEXT_OPCODE();
        !          25231:        }
        !          25232: 
        !          25233:        /* here we are sure we are dealing with an object */
        !          25234: 
        !          25235:        if (1) {
        !          25236:                MAKE_REAL_ZVAL_PTR(property);
        !          25237:        }
        !          25238: 
        !          25239:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          25240:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          25241:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          25242:                        have_get_ptr = 1;
        !          25243:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          25244: 
        !          25245:                        *retval = **zptr;
        !          25246:                        zendi_zval_copy_ctor(*retval);
        !          25247: 
        !          25248:                        incdec_op(*zptr);
        !          25249: 
        !          25250:                }
        !          25251:        }
        !          25252: 
        !          25253:        if (!have_get_ptr) {
        !          25254:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          25255:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          25256:                        zval *z_copy;
        !          25257: 
        !          25258:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          25259:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          25260: 
        !          25261:                                if (Z_REFCOUNT_P(z) == 0) {
        !          25262:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          25263:                                        zval_dtor(z);
        !          25264:                                        FREE_ZVAL(z);
        !          25265:                                }
        !          25266:                                z = value;
        !          25267:                        }
        !          25268:                        *retval = *z;
        !          25269:                        zendi_zval_copy_ctor(*retval);
        !          25270:                        ALLOC_ZVAL(z_copy);
        !          25271:                        *z_copy = *z;
        !          25272:                        zendi_zval_copy_ctor(*z_copy);
        !          25273:                        INIT_PZVAL(z_copy);
        !          25274:                        incdec_op(z_copy);
        !          25275:                        Z_ADDREF_P(z);
        !          25276:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          25277:                        zval_ptr_dtor(&z_copy);
        !          25278:                        zval_ptr_dtor(&z);
        !          25279:                } else {
        !          25280:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          25281:                        *retval = *EG(uninitialized_zval_ptr);
        !          25282:                }
        !          25283:        }
        !          25284: 
        !          25285:        if (1) {
        !          25286:                zval_ptr_dtor(&property);
        !          25287:        } else {
        !          25288:                zval_dtor(free_op2.var);
        !          25289:        }
        !          25290: 
        !          25291:        ZEND_VM_NEXT_OPCODE();
        !          25292: }
        !          25293: 
        !          25294: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25295: {
        !          25296:        return zend_post_incdec_property_helper_SPEC_CV_TMP(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25297: }
        !          25298: 
        !          25299: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25300: {
        !          25301:        return zend_post_incdec_property_helper_SPEC_CV_TMP(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25302: }
        !          25303: 
        !          25304: static int ZEND_FASTCALL  ZEND_FETCH_DIM_R_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25305: {
        !          25306:        zend_op *opline = EX(opline);
        !          25307:        zend_free_op free_op2;
        !          25308:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25309:        zval **container;
        !          25310: 
        !          25311:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK &&
        !          25312:            IS_CV != IS_CV &&
        !          25313:            EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          25314:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          25315:        }
        !          25316:        container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          25317:        if (IS_CV == IS_VAR && !container) {
        !          25318:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25319:        }
        !          25320:        zend_fetch_dimension_address_read(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_R TSRMLS_CC);
        !          25321:        zval_dtor(free_op2.var);
        !          25322: 
        !          25323:        ZEND_VM_NEXT_OPCODE();
        !          25324: }
        !          25325: 
        !          25326: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25327: {
        !          25328:        zend_op *opline = EX(opline);
        !          25329:        zend_free_op free_op1, free_op2;
        !          25330:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25331:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25332: 
        !          25333:        if (IS_CV == IS_VAR && !container) {
        !          25334:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25335:        }
        !          25336:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_W TSRMLS_CC);
        !          25337:        zval_dtor(free_op2.var);
        !          25338:        if (IS_CV == IS_VAR && 0 &&
        !          25339:            READY_TO_DESTROY(free_op1.var)) {
        !          25340:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          25341:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          25342:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          25343:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25344:                }
        !          25345:        }
        !          25346: 
        !          25347:        /* We are going to assign the result by reference */
        !          25348:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          25349:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25350:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25351:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25352:        }
        !          25353: 
        !          25354:        ZEND_VM_NEXT_OPCODE();
        !          25355: }
        !          25356: 
        !          25357: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25358: {
        !          25359:        zend_op *opline = EX(opline);
        !          25360:        zend_free_op free_op1, free_op2;
        !          25361:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25362:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          25363: 
        !          25364:        if (IS_CV == IS_VAR && !container) {
        !          25365:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25366:        }
        !          25367:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_RW TSRMLS_CC);
        !          25368:        zval_dtor(free_op2.var);
        !          25369:        if (IS_CV == IS_VAR && 0 &&
        !          25370:            READY_TO_DESTROY(free_op1.var)) {
        !          25371:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          25372:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          25373:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          25374:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25375:                }
        !          25376:        }
        !          25377: 
        !          25378:        ZEND_VM_NEXT_OPCODE();
        !          25379: }
        !          25380: 
        !          25381: static int ZEND_FASTCALL  ZEND_FETCH_DIM_IS_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25382: {
        !          25383:        zend_op *opline = EX(opline);
        !          25384:        zend_free_op free_op2;
        !          25385:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25386:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          25387: 
        !          25388:        if (IS_CV == IS_VAR && !container) {
        !          25389:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25390:        }
        !          25391:        zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_IS TSRMLS_CC);
        !          25392:        zval_dtor(free_op2.var);
        !          25393: 
        !          25394:        ZEND_VM_NEXT_OPCODE();
        !          25395: }
        !          25396: 
        !          25397: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25398: {
        !          25399:        zend_op *opline = EX(opline);
        !          25400:        zend_free_op free_op1, free_op2;
        !          25401:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25402:        zval **container;
        !          25403: 
        !          25404:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          25405:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25406:                if (IS_CV == IS_VAR && !container) {
        !          25407:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25408:                }
        !          25409:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_W TSRMLS_CC);
        !          25410:                if (IS_CV == IS_VAR && 0 &&
        !          25411:                    READY_TO_DESTROY(free_op1.var)) {
        !          25412:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          25413:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          25414:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          25415:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25416:                        }
        !          25417:                }
        !          25418:        } else {
        !          25419:                if (IS_TMP_VAR == IS_UNUSED) {
        !          25420:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          25421:                }
        !          25422:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          25423:                if (IS_CV == IS_VAR && !container) {
        !          25424:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25425:                }
        !          25426:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_R TSRMLS_CC);
        !          25427:        }
        !          25428:        zval_dtor(free_op2.var);
        !          25429: 
        !          25430:        ZEND_VM_NEXT_OPCODE();
        !          25431: }
        !          25432: 
        !          25433: static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25434: {
        !          25435:        zend_op *opline = EX(opline);
        !          25436:        zend_free_op free_op1, free_op2;
        !          25437:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          25438:        zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25439: 
        !          25440:        /* Not needed in DIM_UNSET
        !          25441:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
        !          25442:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          25443:        }
        !          25444:        */
        !          25445:        if (IS_CV == IS_CV) {
        !          25446:                if (container != &EG(uninitialized_zval_ptr)) {
        !          25447:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          25448:                }
        !          25449:        }
        !          25450:        if (IS_CV == IS_VAR && !container) {
        !          25451:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25452:        }
        !          25453:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 1, BP_VAR_UNSET TSRMLS_CC);
        !          25454:        zval_dtor(free_op2.var);
        !          25455:        if (IS_CV == IS_VAR && 0 &&
        !          25456:            READY_TO_DESTROY(free_op1.var)) {
        !          25457:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          25458:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          25459:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          25460:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25461:                }
        !          25462:        }
        !          25463: 
        !          25464:        if (EX_T(opline->result.u.var).var.ptr_ptr == NULL) {
        !          25465:                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          25466:        } else {
        !          25467:                zend_free_op free_res;
        !          25468: 
        !          25469:                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          25470:                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          25471:                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25472:                }
        !          25473:                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          25474:                FREE_OP_VAR_PTR(free_res);
        !          25475:        }
        !          25476:        ZEND_VM_NEXT_OPCODE();
        !          25477: }
        !          25478: 
        !          25479: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_CV_TMP(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          25480: {
        !          25481:        zend_op *opline = EX(opline);
        !          25482: 
        !          25483:        zval *container = _get_zval_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC);
        !          25484:        zend_free_op free_op2;
        !          25485:        zval *offset  = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25486: 
        !          25487:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          25488:                if (type != BP_VAR_IS) {
        !          25489:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          25490:                }
        !          25491:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25492:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          25493:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          25494:                }
        !          25495:                zval_dtor(free_op2.var);
        !          25496:        } else {
        !          25497:                zval *retval;
        !          25498: 
        !          25499:                if (1) {
        !          25500:                        MAKE_REAL_ZVAL_PTR(offset);
        !          25501:                }
        !          25502: 
        !          25503:                /* here we are sure we are dealing with an object */
        !          25504:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          25505: 
        !          25506:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          25507:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          25508:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          25509:                                zval_dtor(retval);
        !          25510:                                FREE_ZVAL(retval);
        !          25511:                        }
        !          25512:                } else {
        !          25513:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          25514:                        PZVAL_LOCK(retval);
        !          25515:                }
        !          25516: 
        !          25517:                if (1) {
        !          25518:                        zval_ptr_dtor(&offset);
        !          25519:                } else {
        !          25520:                        zval_dtor(free_op2.var);
        !          25521:                }
        !          25522:        }
        !          25523: 
        !          25524:        ZEND_VM_NEXT_OPCODE();
        !          25525: }
        !          25526: 
        !          25527: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25528: {
        !          25529:        return zend_fetch_property_address_read_helper_SPEC_CV_TMP(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25530: }
        !          25531: 
        !          25532: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25533: {
        !          25534:        zend_op *opline = EX(opline);
        !          25535:        zend_free_op free_op1, free_op2;
        !          25536:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25537:        zval **container;
        !          25538: 
        !          25539:        if (IS_CV == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          25540:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          25541:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          25542:        }
        !          25543: 
        !          25544:        if (1) {
        !          25545:                MAKE_REAL_ZVAL_PTR(property);
        !          25546:        }
        !          25547:        container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25548:        if (IS_CV == IS_VAR && !container) {
        !          25549:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          25550:        }
        !          25551:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          25552:        if (1) {
        !          25553:                zval_ptr_dtor(&property);
        !          25554:        } else {
        !          25555:                zval_dtor(free_op2.var);
        !          25556:        }
        !          25557:        if (IS_CV == IS_VAR && 0 &&
        !          25558:            READY_TO_DESTROY(free_op1.var)) {
        !          25559:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          25560:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          25561:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          25562:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25563:                }
        !          25564:        }
        !          25565: 
        !          25566:        /* We are going to assign the result by reference */
        !          25567:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          25568:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25569:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25570:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25571:        }
        !          25572: 
        !          25573:        ZEND_VM_NEXT_OPCODE();
        !          25574: }
        !          25575: 
        !          25576: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25577: {
        !          25578:        zend_op *opline = EX(opline);
        !          25579:        zend_free_op free_op1, free_op2;
        !          25580:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25581:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          25582: 
        !          25583:        if (1) {
        !          25584:                MAKE_REAL_ZVAL_PTR(property);
        !          25585:        }
        !          25586:        if (IS_CV == IS_VAR && !container) {
        !          25587:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          25588:        }
        !          25589:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          25590:        if (1) {
        !          25591:                zval_ptr_dtor(&property);
        !          25592:        } else {
        !          25593:                zval_dtor(free_op2.var);
        !          25594:        }
        !          25595:        if (IS_CV == IS_VAR && 0 &&
        !          25596:            READY_TO_DESTROY(free_op1.var)) {
        !          25597:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          25598:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          25599:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          25600:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25601:                }
        !          25602:        }
        !          25603: 
        !          25604:        ZEND_VM_NEXT_OPCODE();
        !          25605: }
        !          25606: 
        !          25607: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25608: {
        !          25609:        return zend_fetch_property_address_read_helper_SPEC_CV_TMP(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25610: }
        !          25611: 
        !          25612: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25613: {
        !          25614:        zend_op *opline = EX(opline);
        !          25615: 
        !          25616:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          25617:                /* Behave like FETCH_OBJ_W */
        !          25618:                zend_free_op free_op1, free_op2;
        !          25619:                zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25620:                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25621: 
        !          25622:                if (1) {
        !          25623:                        MAKE_REAL_ZVAL_PTR(property);
        !          25624:                }
        !          25625:                if (IS_CV == IS_VAR && !container) {
        !          25626:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          25627:                }
        !          25628:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          25629:                if (1) {
        !          25630:                        zval_ptr_dtor(&property);
        !          25631:                } else {
        !          25632:                        zval_dtor(free_op2.var);
        !          25633:                }
        !          25634:                if (IS_CV == IS_VAR && 0 &&
        !          25635:                    READY_TO_DESTROY(free_op1.var)) {
        !          25636:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          25637:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          25638:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          25639:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25640:                        }
        !          25641:                }
        !          25642: 
        !          25643:                ZEND_VM_NEXT_OPCODE();
        !          25644:        } else {
        !          25645:                return zend_fetch_property_address_read_helper_SPEC_CV_TMP(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25646:        }
        !          25647: }
        !          25648: 
        !          25649: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25650: {
        !          25651:        zend_op *opline = EX(opline);
        !          25652:        zend_free_op free_op1, free_op2, free_res;
        !          25653:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          25654:        zval *property = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25655: 
        !          25656:        if (IS_CV == IS_CV) {
        !          25657:                if (container != &EG(uninitialized_zval_ptr)) {
        !          25658:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          25659:                }
        !          25660:        }
        !          25661:        if (1) {
        !          25662:                MAKE_REAL_ZVAL_PTR(property);
        !          25663:        }
        !          25664:        if (IS_CV == IS_VAR && !container) {
        !          25665:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          25666:        }
        !          25667:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          25668:        if (1) {
        !          25669:                zval_ptr_dtor(&property);
        !          25670:        } else {
        !          25671:                zval_dtor(free_op2.var);
        !          25672:        }
        !          25673:        if (IS_CV == IS_VAR && 0 &&
        !          25674:            READY_TO_DESTROY(free_op1.var)) {
        !          25675:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          25676:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          25677:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          25678:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25679:                }
        !          25680:        }
        !          25681: 
        !          25682:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          25683:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          25684:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          25685:        }
        !          25686:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          25687:        FREE_OP_VAR_PTR(free_res);
        !          25688:        ZEND_VM_NEXT_OPCODE();
        !          25689: }
        !          25690: 
        !          25691: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25692: {
        !          25693:        zend_op *opline = EX(opline);
        !          25694:        zend_op *op_data = opline+1;
        !          25695:        zend_free_op free_op2;
        !          25696:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25697:        zval *property_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25698: 
        !          25699:        if (1) {
        !          25700:                MAKE_REAL_ZVAL_PTR(property_name);
        !          25701:        }
        !          25702:        if (IS_CV == IS_VAR && !object_ptr) {
        !          25703:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25704:        }
        !          25705:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          25706:        if (1) {
        !          25707:                zval_ptr_dtor(&property_name);
        !          25708:        } else {
        !          25709:                zval_dtor(free_op2.var);
        !          25710:        }
        !          25711: 
        !          25712:        /* assign_obj has two opcodes! */
        !          25713:        ZEND_VM_INC_OPCODE();
        !          25714:        ZEND_VM_NEXT_OPCODE();
        !          25715: }
        !          25716: 
        !          25717: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25718: {
        !          25719:        zend_op *opline = EX(opline);
        !          25720:        zend_op *op_data = opline+1;
        !          25721: 
        !          25722:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25723: 
        !          25724:        if (IS_CV == IS_VAR && !object_ptr) {
        !          25725:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          25726:        }
        !          25727:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          25728:                zend_free_op free_op2;
        !          25729:                zval *property_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25730: 
        !          25731:                if (1) {
        !          25732:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          25733:                }
        !          25734:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          25735:                if (1) {
        !          25736:                        zval_ptr_dtor(&property_name);
        !          25737:                } else {
        !          25738:                        zval_dtor(free_op2.var);
        !          25739:                }
        !          25740:        } else {
        !          25741:                zend_free_op free_op2, free_op_data1, free_op_data2;
        !          25742:                zval *value;
        !          25743:                zval *dim = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25744:                zval **variable_ptr_ptr;
        !          25745: 
        !          25746:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 1, BP_VAR_W TSRMLS_CC);
        !          25747:                zval_dtor(free_op2.var);
        !          25748: 
        !          25749:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          25750:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          25751:                if (!variable_ptr_ptr) {
        !          25752:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          25753:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25754:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          25755:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          25756:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          25757:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          25758:                                }
        !          25759:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25760:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          25761:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          25762:                        }
        !          25763:                } else {
        !          25764:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          25765:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25766:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          25767:                                PZVAL_LOCK(value);
        !          25768:                        }
        !          25769:                }
        !          25770:                FREE_OP_VAR_PTR(free_op_data2);
        !          25771:                FREE_OP_IF_VAR(free_op_data1);
        !          25772:        }
        !          25773: 
        !          25774:        /* assign_dim has two opcodes! */
        !          25775:        ZEND_VM_INC_OPCODE();
        !          25776:        ZEND_VM_NEXT_OPCODE();
        !          25777: }
        !          25778: 
        !          25779: static int ZEND_FASTCALL  ZEND_ASSIGN_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25780: {
        !          25781:        zend_op *opline = EX(opline);
        !          25782:        zend_free_op free_op2;
        !          25783:        zval *value = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25784:        zval **variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25785: 
        !          25786:        if (IS_CV == IS_VAR && !variable_ptr_ptr) {
        !          25787:                if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_TMP_VAR TSRMLS_CC)) {
        !          25788:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25789:                                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          25790:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          25791:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          25792:                                ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
        !          25793:                        }
        !          25794:                } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25795:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          25796:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          25797:                }
        !          25798:        } else {
        !          25799:                value = zend_assign_to_variable(variable_ptr_ptr, value, 1 TSRMLS_CC);
        !          25800:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          25801:                        AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          25802:                        PZVAL_LOCK(value);
        !          25803:                }
        !          25804:        }
        !          25805: 
        !          25806:        /* zend_assign_to_variable() always takes care of op2, never free it! */
        !          25807: 
        !          25808:        ZEND_VM_NEXT_OPCODE();
        !          25809: }
        !          25810: 
        !          25811: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25812: {
        !          25813:        zend_op *opline = EX(opline);
        !          25814:        zval *function_name;
        !          25815:        char *function_name_strval;
        !          25816:        int function_name_strlen;
        !          25817:        zend_free_op free_op2;
        !          25818: 
        !          25819:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          25820: 
        !          25821:        function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25822: 
        !          25823:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          25824:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          25825:        }
        !          25826: 
        !          25827:        function_name_strval = Z_STRVAL_P(function_name);
        !          25828:        function_name_strlen = Z_STRLEN_P(function_name);
        !          25829: 
        !          25830:        EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          25831: 
        !          25832:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          25833:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          25834:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          25835:                }
        !          25836: 
        !          25837:                /* First, locate the function. */
        !          25838:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          25839:                if (!EX(fbc)) {
        !          25840:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          25841:                }
        !          25842: 
        !          25843:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          25844:        } else {
        !          25845:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          25846:        }
        !          25847: 
        !          25848:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          25849:                EX(object) = NULL;
        !          25850:        } else {
        !          25851:                if (!PZVAL_IS_REF(EX(object))) {
        !          25852:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          25853:                } else {
        !          25854:                        zval *this_ptr;
        !          25855:                        ALLOC_ZVAL(this_ptr);
        !          25856:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          25857:                        zval_copy_ctor(this_ptr);
        !          25858:                        EX(object) = this_ptr;
        !          25859:                }
        !          25860:        }
        !          25861: 
        !          25862:        zval_dtor(free_op2.var);
        !          25863: 
        !          25864:        ZEND_VM_NEXT_OPCODE();
        !          25865: }
        !          25866: 
        !          25867: static int ZEND_FASTCALL  ZEND_CASE_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25868: {
        !          25869:        zend_op *opline = EX(opline);
        !          25870:        int switch_expr_is_overloaded=0;
        !          25871:        zend_free_op free_op2;
        !          25872: 
        !          25873:        if (IS_CV==IS_VAR) {
        !          25874:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          25875:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          25876:                } else {
        !          25877:                        switch_expr_is_overloaded = 1;
        !          25878:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          25879:                }
        !          25880:        }
        !          25881:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          25882:                                 _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          25883:                                 _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          25884: 
        !          25885:        zval_dtor(free_op2.var);
        !          25886:        if (switch_expr_is_overloaded) {
        !          25887:                /* We only free op1 if this is a string offset,
        !          25888:                 * Since if it is a TMP_VAR, it'll be reused by
        !          25889:                 * other CASE opcodes (whereas string offsets
        !          25890:                 * are allocated at each get_zval_ptr())
        !          25891:                 */
        !          25892: 
        !          25893:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          25894:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          25895:        }
        !          25896:        ZEND_VM_NEXT_OPCODE();
        !          25897: }
        !          25898: 
        !          25899: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25900: {
        !          25901:        zend_op *opline = EX(opline);
        !          25902:        zend_free_op free_op2;
        !          25903:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          25904:        zval *expr_ptr;
        !          25905:        zval *offset=_get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          25906: 
        !          25907: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          25908:        zval **expr_ptr_ptr = NULL;
        !          25909: 
        !          25910:        if (opline->extended_value) {
        !          25911:                expr_ptr_ptr=_get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          25912:                expr_ptr = *expr_ptr_ptr;
        !          25913:        } else {
        !          25914:                expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          25915:        }
        !          25916: #else
        !          25917:        expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          25918: #endif
        !          25919: 
        !          25920:        if (0) { /* temporary variable */
        !          25921:                zval *new_expr;
        !          25922: 
        !          25923:                ALLOC_ZVAL(new_expr);
        !          25924:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          25925:                expr_ptr = new_expr;
        !          25926:        } else {
        !          25927: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          25928:                if (opline->extended_value) {
        !          25929:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          25930:                        expr_ptr = *expr_ptr_ptr;
        !          25931:                        Z_ADDREF_P(expr_ptr);
        !          25932:                } else
        !          25933: #endif
        !          25934:                if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          25935:                        zval *new_expr;
        !          25936: 
        !          25937:                        ALLOC_ZVAL(new_expr);
        !          25938:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          25939:                        expr_ptr = new_expr;
        !          25940:                        zendi_zval_copy_ctor(*expr_ptr);
        !          25941:                } else {
        !          25942:                        Z_ADDREF_P(expr_ptr);
        !          25943:                }
        !          25944:        }
        !          25945:        if (offset) {
        !          25946:                switch (Z_TYPE_P(offset)) {
        !          25947:                        case IS_DOUBLE:
        !          25948:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          25949:                                break;
        !          25950:                        case IS_LONG:
        !          25951:                        case IS_BOOL:
        !          25952:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          25953:                                break;
        !          25954:                        case IS_STRING:
        !          25955:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          25956:                                break;
        !          25957:                        case IS_NULL:
        !          25958:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          25959:                                break;
        !          25960:                        default:
        !          25961:                                zend_error(E_WARNING, "Illegal offset type");
        !          25962:                                zval_ptr_dtor(&expr_ptr);
        !          25963:                                /* do nothing */
        !          25964:                                break;
        !          25965:                }
        !          25966:                zval_dtor(free_op2.var);
        !          25967:        } else {
        !          25968:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          25969:        }
        !          25970:        if (opline->extended_value) {
        !          25971: 
        !          25972:        } else {
        !          25973: 
        !          25974:        }
        !          25975:        ZEND_VM_NEXT_OPCODE();
        !          25976: }
        !          25977: 
        !          25978: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25979: {
        !          25980:        zend_op *opline = EX(opline);
        !          25981: 
        !          25982:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          25983:        if (IS_CV == IS_UNUSED) {
        !          25984:                ZEND_VM_NEXT_OPCODE();
        !          25985: #if 0 || IS_CV != IS_UNUSED
        !          25986:        } else {
        !          25987:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          25988: #endif
        !          25989:        }
        !          25990: }
        !          25991: 
        !          25992: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          25993: {
        !          25994:        zend_op *opline = EX(opline);
        !          25995:        zend_free_op free_op2;
        !          25996:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          25997:        zval *offset;
        !          25998: 
        !          25999:        if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          26000:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          26001:        }
        !          26002:        offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26003: 
        !          26004:        if (IS_CV != IS_VAR || container) {
        !          26005:                switch (Z_TYPE_PP(container)) {
        !          26006:                        case IS_ARRAY: {
        !          26007:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          26008: 
        !          26009:                                switch (Z_TYPE_P(offset)) {
        !          26010:                                        case IS_DOUBLE:
        !          26011:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          26012:                                                break;
        !          26013:                                        case IS_RESOURCE:
        !          26014:                                        case IS_BOOL:
        !          26015:                                        case IS_LONG:
        !          26016:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          26017:                                                break;
        !          26018:                                        case IS_STRING:
        !          26019:                                                if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
        !          26020:                                                        Z_ADDREF_P(offset);
        !          26021:                                                }
        !          26022:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          26023:                                            ht == &EG(symbol_table)) {
        !          26024:                                                        zend_execute_data *ex;
        !          26025:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          26026: 
        !          26027:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          26028:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          26029:                                                                        int i;
        !          26030: 
        !          26031:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          26032:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          26033:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          26034:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          26035:                                                                                        ex->CVs[i] = NULL;
        !          26036:                                                                                        break;
        !          26037:                                                                                }
        !          26038:                                                                        }
        !          26039:                                                                }
        !          26040:                                                        }
        !          26041:                                                }
        !          26042:                                                if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
        !          26043:                                                        zval_ptr_dtor(&offset);
        !          26044:                                                }
        !          26045:                                                break;
        !          26046:                                        case IS_NULL:
        !          26047:                                                zend_hash_del(ht, "", sizeof(""));
        !          26048:                                                break;
        !          26049:                                        default:
        !          26050:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          26051:                                                break;
        !          26052:                                }
        !          26053:                                zval_dtor(free_op2.var);
        !          26054:                                break;
        !          26055:                        }
        !          26056:                        case IS_OBJECT:
        !          26057:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          26058:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          26059:                                }
        !          26060:                                if (1) {
        !          26061:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          26062:                                }
        !          26063:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          26064:                                if (1) {
        !          26065:                                        zval_ptr_dtor(&offset);
        !          26066:                                } else {
        !          26067:                                        zval_dtor(free_op2.var);
        !          26068:                                }
        !          26069:                                break;
        !          26070:                        case IS_STRING:
        !          26071:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          26072:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          26073:                        default:
        !          26074:                                zval_dtor(free_op2.var);
        !          26075:                                break;
        !          26076:                }
        !          26077:        } else {
        !          26078:                zval_dtor(free_op2.var);
        !          26079:        }
        !          26080: 
        !          26081:        ZEND_VM_NEXT_OPCODE();
        !          26082: }
        !          26083: 
        !          26084: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26085: {
        !          26086:        zend_op *opline = EX(opline);
        !          26087:        zend_free_op free_op2;
        !          26088:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          26089:        zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26090: 
        !          26091:        if (IS_CV != IS_VAR || container) {
        !          26092:                if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          26093:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          26094:                }
        !          26095:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          26096:                        if (1) {
        !          26097:                                MAKE_REAL_ZVAL_PTR(offset);
        !          26098:                        }
        !          26099:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          26100:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          26101:                        } else {
        !          26102:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          26103:                        }
        !          26104:                        if (1) {
        !          26105:                                zval_ptr_dtor(&offset);
        !          26106:                        } else {
        !          26107:                                zval_dtor(free_op2.var);
        !          26108:                        }
        !          26109:                } else {
        !          26110:                        zval_dtor(free_op2.var);
        !          26111:                }
        !          26112:        } else {
        !          26113:                zval_dtor(free_op2.var);
        !          26114:        }
        !          26115: 
        !          26116:        ZEND_VM_NEXT_OPCODE();
        !          26117: }
        !          26118: 
        !          26119: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_TMP(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          26120: {
        !          26121:        zend_op *opline = EX(opline);
        !          26122: 
        !          26123:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          26124:        zval **value = NULL;
        !          26125:        int result = 0;
        !          26126: 
        !          26127:        if (IS_CV != IS_VAR || container) {
        !          26128:                zend_free_op free_op2;
        !          26129:                zval *offset = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26130: 
        !          26131:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          26132:                        HashTable *ht;
        !          26133:                        int isset = 0;
        !          26134: 
        !          26135:                        ht = Z_ARRVAL_PP(container);
        !          26136: 
        !          26137:                        switch (Z_TYPE_P(offset)) {
        !          26138:                                case IS_DOUBLE:
        !          26139:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          26140:                                                isset = 1;
        !          26141:                                        }
        !          26142:                                        break;
        !          26143:                                case IS_RESOURCE:
        !          26144:                                case IS_BOOL:
        !          26145:                                case IS_LONG:
        !          26146:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          26147:                                                isset = 1;
        !          26148:                                        }
        !          26149:                                        break;
        !          26150:                                case IS_STRING:
        !          26151:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          26152:                                                isset = 1;
        !          26153:                                        }
        !          26154:                                        break;
        !          26155:                                case IS_NULL:
        !          26156:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          26157:                                                isset = 1;
        !          26158:                                        }
        !          26159:                                        break;
        !          26160:                                default:
        !          26161:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          26162: 
        !          26163:                                        break;
        !          26164:                        }
        !          26165: 
        !          26166:                        switch (opline->extended_value) {
        !          26167:                                case ZEND_ISSET:
        !          26168:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          26169:                                                result = 0;
        !          26170:                                        } else {
        !          26171:                                                result = isset;
        !          26172:                                        }
        !          26173:                                        break;
        !          26174:                                case ZEND_ISEMPTY:
        !          26175:                                        if (!isset || !i_zend_is_true(*value)) {
        !          26176:                                                result = 0;
        !          26177:                                        } else {
        !          26178:                                                result = 1;
        !          26179:                                        }
        !          26180:                                        break;
        !          26181:                        }
        !          26182:                        zval_dtor(free_op2.var);
        !          26183:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          26184:                        if (1) {
        !          26185:                                MAKE_REAL_ZVAL_PTR(offset);
        !          26186:                        }
        !          26187:                        if (prop_dim) {
        !          26188:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          26189:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          26190:                                } else {
        !          26191:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          26192:                                        result = 0;
        !          26193:                                }
        !          26194:                        } else {
        !          26195:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          26196:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          26197:                                } else {
        !          26198:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          26199:                                        result = 0;
        !          26200:                                }
        !          26201:                        }
        !          26202:                        if (1) {
        !          26203:                                zval_ptr_dtor(&offset);
        !          26204:                        } else {
        !          26205:                                zval_dtor(free_op2.var);
        !          26206:                        }
        !          26207:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          26208:                        zval tmp;
        !          26209: 
        !          26210:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          26211:                                tmp = *offset;
        !          26212:                                zval_copy_ctor(&tmp);
        !          26213:                                convert_to_long(&tmp);
        !          26214:                                offset = &tmp;
        !          26215:                        }
        !          26216:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          26217:                                switch (opline->extended_value) {
        !          26218:                                        case ZEND_ISSET:
        !          26219:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          26220:                                                        result = 1;
        !          26221:                                                }
        !          26222:                                                break;
        !          26223:                                        case ZEND_ISEMPTY:
        !          26224:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          26225:                                                        result = 1;
        !          26226:                                                }
        !          26227:                                                break;
        !          26228:                                }
        !          26229:                        }
        !          26230:                        zval_dtor(free_op2.var);
        !          26231:                } else {
        !          26232:                        zval_dtor(free_op2.var);
        !          26233:                }
        !          26234:        }
        !          26235: 
        !          26236:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          26237: 
        !          26238:        switch (opline->extended_value) {
        !          26239:                case ZEND_ISSET:
        !          26240:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          26241:                        break;
        !          26242:                case ZEND_ISEMPTY:
        !          26243:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          26244:                        break;
        !          26245:        }
        !          26246: 
        !          26247:        ZEND_VM_NEXT_OPCODE();
        !          26248: }
        !          26249: 
        !          26250: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26251: {
        !          26252:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_TMP(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26253: }
        !          26254: 
        !          26255: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26256: {
        !          26257:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_TMP(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26258: }
        !          26259: 
        !          26260: static int ZEND_FASTCALL  ZEND_ADD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26261: {
        !          26262:        zend_op *opline = EX(opline);
        !          26263:        zend_free_op free_op2;
        !          26264: 
        !          26265:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          26266:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26267:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26268: 
        !          26269:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26270:        ZEND_VM_NEXT_OPCODE();
        !          26271: }
        !          26272: 
        !          26273: static int ZEND_FASTCALL  ZEND_SUB_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26274: {
        !          26275:        zend_op *opline = EX(opline);
        !          26276:        zend_free_op free_op2;
        !          26277: 
        !          26278:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          26279:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26280:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26281: 
        !          26282:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26283:        ZEND_VM_NEXT_OPCODE();
        !          26284: }
        !          26285: 
        !          26286: static int ZEND_FASTCALL  ZEND_MUL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26287: {
        !          26288:        zend_op *opline = EX(opline);
        !          26289:        zend_free_op free_op2;
        !          26290: 
        !          26291:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          26292:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26293:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26294: 
        !          26295:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26296:        ZEND_VM_NEXT_OPCODE();
        !          26297: }
        !          26298: 
        !          26299: static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26300: {
        !          26301:        zend_op *opline = EX(opline);
        !          26302:        zend_free_op free_op2;
        !          26303: 
        !          26304:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          26305:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26306:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26307: 
        !          26308:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26309:        ZEND_VM_NEXT_OPCODE();
        !          26310: }
        !          26311: 
        !          26312: static int ZEND_FASTCALL  ZEND_MOD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26313: {
        !          26314:        zend_op *opline = EX(opline);
        !          26315:        zend_free_op free_op2;
        !          26316: 
        !          26317:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          26318:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26319:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26320: 
        !          26321:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26322:        ZEND_VM_NEXT_OPCODE();
        !          26323: }
        !          26324: 
        !          26325: static int ZEND_FASTCALL  ZEND_SL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26326: {
        !          26327:        zend_op *opline = EX(opline);
        !          26328:        zend_free_op free_op2;
        !          26329: 
        !          26330:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          26331:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26332:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26333: 
        !          26334:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26335:        ZEND_VM_NEXT_OPCODE();
        !          26336: }
        !          26337: 
        !          26338: static int ZEND_FASTCALL  ZEND_SR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26339: {
        !          26340:        zend_op *opline = EX(opline);
        !          26341:        zend_free_op free_op2;
        !          26342: 
        !          26343:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          26344:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26345:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26346: 
        !          26347:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26348:        ZEND_VM_NEXT_OPCODE();
        !          26349: }
        !          26350: 
        !          26351: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26352: {
        !          26353:        zend_op *opline = EX(opline);
        !          26354:        zend_free_op free_op2;
        !          26355: 
        !          26356:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          26357:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26358:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26359: 
        !          26360:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26361:        ZEND_VM_NEXT_OPCODE();
        !          26362: }
        !          26363: 
        !          26364: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26365: {
        !          26366:        zend_op *opline = EX(opline);
        !          26367:        zend_free_op free_op2;
        !          26368: 
        !          26369:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          26370:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26371:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26372: 
        !          26373:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26374:        ZEND_VM_NEXT_OPCODE();
        !          26375: }
        !          26376: 
        !          26377: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26378: {
        !          26379:        zend_op *opline = EX(opline);
        !          26380:        zend_free_op free_op2;
        !          26381:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          26382: 
        !          26383:        is_identical_function(result,
        !          26384:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26385:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26386:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          26387: 
        !          26388:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26389:        ZEND_VM_NEXT_OPCODE();
        !          26390: }
        !          26391: 
        !          26392: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26393: {
        !          26394:        zend_op *opline = EX(opline);
        !          26395:        zend_free_op free_op2;
        !          26396:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          26397: 
        !          26398:        compare_function(result,
        !          26399:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26400:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26401:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          26402: 
        !          26403:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26404:        ZEND_VM_NEXT_OPCODE();
        !          26405: }
        !          26406: 
        !          26407: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26408: {
        !          26409:        zend_op *opline = EX(opline);
        !          26410:        zend_free_op free_op2;
        !          26411:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          26412: 
        !          26413:        compare_function(result,
        !          26414:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26415:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26416:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          26417: 
        !          26418:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26419:        ZEND_VM_NEXT_OPCODE();
        !          26420: }
        !          26421: 
        !          26422: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26423: {
        !          26424:        zend_op *opline = EX(opline);
        !          26425:        zend_free_op free_op2;
        !          26426:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          26427: 
        !          26428:        compare_function(result,
        !          26429:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26430:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26431:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          26432: 
        !          26433:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26434:        ZEND_VM_NEXT_OPCODE();
        !          26435: }
        !          26436: 
        !          26437: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26438: {
        !          26439:        zend_op *opline = EX(opline);
        !          26440:        zend_free_op free_op2;
        !          26441:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          26442: 
        !          26443:        compare_function(result,
        !          26444:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26445:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26446:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          26447: 
        !          26448:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26449:        ZEND_VM_NEXT_OPCODE();
        !          26450: }
        !          26451: 
        !          26452: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26453: {
        !          26454:        zend_op *opline = EX(opline);
        !          26455:        zend_free_op free_op2;
        !          26456: 
        !          26457:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          26458:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26459:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26460: 
        !          26461:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26462:        ZEND_VM_NEXT_OPCODE();
        !          26463: }
        !          26464: 
        !          26465: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26466: {
        !          26467:        zend_op *opline = EX(opline);
        !          26468:        zend_free_op free_op2;
        !          26469: 
        !          26470:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          26471:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26472:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26473: 
        !          26474:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26475:        ZEND_VM_NEXT_OPCODE();
        !          26476: }
        !          26477: 
        !          26478: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26479: {
        !          26480:        zend_op *opline = EX(opline);
        !          26481:        zend_free_op free_op2;
        !          26482: 
        !          26483:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          26484:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26485:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26486: 
        !          26487:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26488:        ZEND_VM_NEXT_OPCODE();
        !          26489: }
        !          26490: 
        !          26491: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26492: {
        !          26493:        zend_op *opline = EX(opline);
        !          26494:        zend_free_op free_op2;
        !          26495: 
        !          26496:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          26497:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          26498:                _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          26499: 
        !          26500:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26501:        ZEND_VM_NEXT_OPCODE();
        !          26502: }
        !          26503: 
        !          26504: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_VAR(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          26505: {
        !          26506:        zend_op *opline = EX(opline);
        !          26507:        zend_op *op_data = opline+1;
        !          26508:        zend_free_op free_op2, free_op_data1;
        !          26509:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          26510:        zval *object;
        !          26511:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26512:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          26513:        znode *result = &opline->result;
        !          26514:        int have_get_ptr = 0;
        !          26515: 
        !          26516:        if (IS_CV == IS_VAR && !object_ptr) {
        !          26517:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          26518:        }
        !          26519: 
        !          26520:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          26521:        make_real_object(object_ptr TSRMLS_CC);
        !          26522:        object = *object_ptr;
        !          26523: 
        !          26524:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          26525:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          26526:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26527:                FREE_OP(free_op_data1);
        !          26528: 
        !          26529:                if (!RETURN_VALUE_UNUSED(result)) {
        !          26530:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          26531:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          26532:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          26533:                }
        !          26534:        } else {
        !          26535:                /* here we are sure we are dealing with an object */
        !          26536:                if (0) {
        !          26537:                        MAKE_REAL_ZVAL_PTR(property);
        !          26538:                }
        !          26539: 
        !          26540:                /* here property is a string */
        !          26541:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          26542:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          26543:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          26544:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          26545:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          26546: 
        !          26547:                                have_get_ptr = 1;
        !          26548:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          26549:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          26550:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          26551:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          26552:                                        PZVAL_LOCK(*zptr);
        !          26553:                                }
        !          26554:                        }
        !          26555:                }
        !          26556: 
        !          26557:                if (!have_get_ptr) {
        !          26558:                        zval *z = NULL;
        !          26559: 
        !          26560:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          26561:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          26562:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          26563:                                }
        !          26564:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          26565:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          26566:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          26567:                                }
        !          26568:                        }
        !          26569:                        if (z) {
        !          26570:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          26571:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          26572: 
        !          26573:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          26574:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          26575:                                                zval_dtor(z);
        !          26576:                                                FREE_ZVAL(z);
        !          26577:                                        }
        !          26578:                                        z = value;
        !          26579:                                }
        !          26580:                                Z_ADDREF_P(z);
        !          26581:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          26582:                                binary_op(z, z, value TSRMLS_CC);
        !          26583:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          26584:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          26585:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          26586:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          26587:                                }
        !          26588:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          26589:                                        EX_T(result->u.var).var.ptr = z;
        !          26590:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          26591:                                        PZVAL_LOCK(z);
        !          26592:                                }
        !          26593:                                zval_ptr_dtor(&z);
        !          26594:                        } else {
        !          26595:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          26596:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          26597:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          26598:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          26599:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          26600:                                }
        !          26601:                        }
        !          26602:                }
        !          26603: 
        !          26604:                if (0) {
        !          26605:                        zval_ptr_dtor(&property);
        !          26606:                } else {
        !          26607:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26608:                }
        !          26609:                FREE_OP(free_op_data1);
        !          26610:        }
        !          26611: 
        !          26612:        /* assign_obj has two opcodes! */
        !          26613:        ZEND_VM_INC_OPCODE();
        !          26614:        ZEND_VM_NEXT_OPCODE();
        !          26615: }
        !          26616: 
        !          26617: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_CV_VAR(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          26618: {
        !          26619:        zend_op *opline = EX(opline);
        !          26620:        zend_free_op free_op2, free_op_data2, free_op_data1;
        !          26621:        zval **var_ptr;
        !          26622:        zval *value;
        !          26623: 
        !          26624:        switch (opline->extended_value) {
        !          26625:                case ZEND_ASSIGN_OBJ:
        !          26626:                        return zend_binary_assign_op_obj_helper_SPEC_CV_VAR(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26627:                        break;
        !          26628:                case ZEND_ASSIGN_DIM: {
        !          26629:                                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          26630: 
        !          26631:                                if (IS_CV == IS_VAR && !container) {
        !          26632:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          26633:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          26634:                                        if (IS_CV == IS_VAR && !0) {
        !          26635:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          26636:                                        }
        !          26637:                                        return zend_binary_assign_op_obj_helper_SPEC_CV_VAR(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26638:                                } else {
        !          26639:                                        zend_op *op_data = opline+1;
        !          26640:                                        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26641: 
        !          26642:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          26643:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          26644:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          26645:                                        ZEND_VM_INC_OPCODE();
        !          26646:                                }
        !          26647:                        }
        !          26648:                        break;
        !          26649:                default:
        !          26650:                        value = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26651:                        var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          26652:                        /* do nothing */
        !          26653:                        break;
        !          26654:        }
        !          26655: 
        !          26656:        if (!var_ptr) {
        !          26657:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          26658:        }
        !          26659: 
        !          26660:        if (*var_ptr == EG(error_zval_ptr)) {
        !          26661:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          26662:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          26663:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          26664:                }
        !          26665:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26666: 
        !          26667:                ZEND_VM_NEXT_OPCODE();
        !          26668:        }
        !          26669: 
        !          26670:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          26671: 
        !          26672:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          26673:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          26674:                /* proxy object */
        !          26675:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          26676:                Z_ADDREF_P(objval);
        !          26677:                binary_op(objval, objval, value TSRMLS_CC);
        !          26678:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          26679:                zval_ptr_dtor(&objval);
        !          26680:        } else {
        !          26681:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          26682:        }
        !          26683: 
        !          26684:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          26685:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          26686:                PZVAL_LOCK(*var_ptr);
        !          26687:        }
        !          26688:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26689: 
        !          26690:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          26691:                FREE_OP(free_op_data1);
        !          26692:                FREE_OP_VAR_PTR(free_op_data2);
        !          26693:        }
        !          26694: 
        !          26695:        ZEND_VM_NEXT_OPCODE();
        !          26696: }
        !          26697: 
        !          26698: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26699: {
        !          26700:        return zend_binary_assign_op_helper_SPEC_CV_VAR(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26701: }
        !          26702: 
        !          26703: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26704: {
        !          26705:        return zend_binary_assign_op_helper_SPEC_CV_VAR(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26706: }
        !          26707: 
        !          26708: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26709: {
        !          26710:        return zend_binary_assign_op_helper_SPEC_CV_VAR(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26711: }
        !          26712: 
        !          26713: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26714: {
        !          26715:        return zend_binary_assign_op_helper_SPEC_CV_VAR(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26716: }
        !          26717: 
        !          26718: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26719: {
        !          26720:        return zend_binary_assign_op_helper_SPEC_CV_VAR(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26721: }
        !          26722: 
        !          26723: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26724: {
        !          26725:        return zend_binary_assign_op_helper_SPEC_CV_VAR(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26726: }
        !          26727: 
        !          26728: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26729: {
        !          26730:        return zend_binary_assign_op_helper_SPEC_CV_VAR(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26731: }
        !          26732: 
        !          26733: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26734: {
        !          26735:        return zend_binary_assign_op_helper_SPEC_CV_VAR(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26736: }
        !          26737: 
        !          26738: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26739: {
        !          26740:        return zend_binary_assign_op_helper_SPEC_CV_VAR(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26741: }
        !          26742: 
        !          26743: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26744: {
        !          26745:        return zend_binary_assign_op_helper_SPEC_CV_VAR(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26746: }
        !          26747: 
        !          26748: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26749: {
        !          26750:        return zend_binary_assign_op_helper_SPEC_CV_VAR(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26751: }
        !          26752: 
        !          26753: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_VAR(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          26754: {
        !          26755:        zend_op *opline = EX(opline);
        !          26756:        zend_free_op free_op2;
        !          26757:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          26758:        zval *object;
        !          26759:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26760:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          26761:        int have_get_ptr = 0;
        !          26762: 
        !          26763:        if (IS_CV == IS_VAR && !object_ptr) {
        !          26764:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          26765:        }
        !          26766: 
        !          26767:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          26768:        object = *object_ptr;
        !          26769: 
        !          26770:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          26771:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          26772:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26773:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          26774:                        *retval = EG(uninitialized_zval_ptr);
        !          26775:                        PZVAL_LOCK(*retval);
        !          26776:                }
        !          26777: 
        !          26778:                ZEND_VM_NEXT_OPCODE();
        !          26779:        }
        !          26780: 
        !          26781:        /* here we are sure we are dealing with an object */
        !          26782: 
        !          26783:        if (0) {
        !          26784:                MAKE_REAL_ZVAL_PTR(property);
        !          26785:        }
        !          26786: 
        !          26787:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          26788:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          26789:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          26790:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          26791: 
        !          26792:                        have_get_ptr = 1;
        !          26793:                        incdec_op(*zptr);
        !          26794:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          26795:                                *retval = *zptr;
        !          26796:                                PZVAL_LOCK(*retval);
        !          26797:                        }
        !          26798:                }
        !          26799:        }
        !          26800: 
        !          26801:        if (!have_get_ptr) {
        !          26802:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          26803:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          26804: 
        !          26805:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          26806:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          26807: 
        !          26808:                                if (Z_REFCOUNT_P(z) == 0) {
        !          26809:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          26810:                                        zval_dtor(z);
        !          26811:                                        FREE_ZVAL(z);
        !          26812:                                }
        !          26813:                                z = value;
        !          26814:                        }
        !          26815:                        Z_ADDREF_P(z);
        !          26816:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          26817:                        incdec_op(z);
        !          26818:                        *retval = z;
        !          26819:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          26820:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          26821:                        zval_ptr_dtor(&z);
        !          26822:                } else {
        !          26823:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          26824:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          26825:                                *retval = EG(uninitialized_zval_ptr);
        !          26826:                                PZVAL_LOCK(*retval);
        !          26827:                        }
        !          26828:                }
        !          26829:        }
        !          26830: 
        !          26831:        if (0) {
        !          26832:                zval_ptr_dtor(&property);
        !          26833:        } else {
        !          26834:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26835:        }
        !          26836: 
        !          26837:        ZEND_VM_NEXT_OPCODE();
        !          26838: }
        !          26839: 
        !          26840: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26841: {
        !          26842:        return zend_pre_incdec_property_helper_SPEC_CV_VAR(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26843: }
        !          26844: 
        !          26845: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26846: {
        !          26847:        return zend_pre_incdec_property_helper_SPEC_CV_VAR(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26848: }
        !          26849: 
        !          26850: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_VAR(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          26851: {
        !          26852:        zend_op *opline = EX(opline);
        !          26853:        zend_free_op free_op2;
        !          26854:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          26855:        zval *object;
        !          26856:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26857:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          26858:        int have_get_ptr = 0;
        !          26859: 
        !          26860:        if (IS_CV == IS_VAR && !object_ptr) {
        !          26861:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          26862:        }
        !          26863: 
        !          26864:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          26865:        object = *object_ptr;
        !          26866: 
        !          26867:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          26868:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          26869:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26870:                *retval = *EG(uninitialized_zval_ptr);
        !          26871: 
        !          26872:                ZEND_VM_NEXT_OPCODE();
        !          26873:        }
        !          26874: 
        !          26875:        /* here we are sure we are dealing with an object */
        !          26876: 
        !          26877:        if (0) {
        !          26878:                MAKE_REAL_ZVAL_PTR(property);
        !          26879:        }
        !          26880: 
        !          26881:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          26882:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          26883:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          26884:                        have_get_ptr = 1;
        !          26885:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          26886: 
        !          26887:                        *retval = **zptr;
        !          26888:                        zendi_zval_copy_ctor(*retval);
        !          26889: 
        !          26890:                        incdec_op(*zptr);
        !          26891: 
        !          26892:                }
        !          26893:        }
        !          26894: 
        !          26895:        if (!have_get_ptr) {
        !          26896:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          26897:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          26898:                        zval *z_copy;
        !          26899: 
        !          26900:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          26901:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          26902: 
        !          26903:                                if (Z_REFCOUNT_P(z) == 0) {
        !          26904:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          26905:                                        zval_dtor(z);
        !          26906:                                        FREE_ZVAL(z);
        !          26907:                                }
        !          26908:                                z = value;
        !          26909:                        }
        !          26910:                        *retval = *z;
        !          26911:                        zendi_zval_copy_ctor(*retval);
        !          26912:                        ALLOC_ZVAL(z_copy);
        !          26913:                        *z_copy = *z;
        !          26914:                        zendi_zval_copy_ctor(*z_copy);
        !          26915:                        INIT_PZVAL(z_copy);
        !          26916:                        incdec_op(z_copy);
        !          26917:                        Z_ADDREF_P(z);
        !          26918:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          26919:                        zval_ptr_dtor(&z_copy);
        !          26920:                        zval_ptr_dtor(&z);
        !          26921:                } else {
        !          26922:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          26923:                        *retval = *EG(uninitialized_zval_ptr);
        !          26924:                }
        !          26925:        }
        !          26926: 
        !          26927:        if (0) {
        !          26928:                zval_ptr_dtor(&property);
        !          26929:        } else {
        !          26930:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26931:        }
        !          26932: 
        !          26933:        ZEND_VM_NEXT_OPCODE();
        !          26934: }
        !          26935: 
        !          26936: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26937: {
        !          26938:        return zend_post_incdec_property_helper_SPEC_CV_VAR(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26939: }
        !          26940: 
        !          26941: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26942: {
        !          26943:        return zend_post_incdec_property_helper_SPEC_CV_VAR(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          26944: }
        !          26945: 
        !          26946: static int ZEND_FASTCALL  ZEND_FETCH_DIM_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26947: {
        !          26948:        zend_op *opline = EX(opline);
        !          26949:        zend_free_op free_op2;
        !          26950:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26951:        zval **container;
        !          26952: 
        !          26953:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK &&
        !          26954:            IS_CV != IS_CV &&
        !          26955:            EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          26956:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          26957:        }
        !          26958:        container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          26959:        if (IS_CV == IS_VAR && !container) {
        !          26960:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          26961:        }
        !          26962:        zend_fetch_dimension_address_read(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          26963:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26964: 
        !          26965:        ZEND_VM_NEXT_OPCODE();
        !          26966: }
        !          26967: 
        !          26968: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          26969: {
        !          26970:        zend_op *opline = EX(opline);
        !          26971:        zend_free_op free_op1, free_op2;
        !          26972:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          26973:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          26974: 
        !          26975:        if (IS_CV == IS_VAR && !container) {
        !          26976:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          26977:        }
        !          26978:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          26979:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          26980:        if (IS_CV == IS_VAR && 0 &&
        !          26981:            READY_TO_DESTROY(free_op1.var)) {
        !          26982:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          26983:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          26984:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          26985:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          26986:                }
        !          26987:        }
        !          26988: 
        !          26989:        /* We are going to assign the result by reference */
        !          26990:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          26991:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          26992:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          26993:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          26994:        }
        !          26995: 
        !          26996:        ZEND_VM_NEXT_OPCODE();
        !          26997: }
        !          26998: 
        !          26999: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27000: {
        !          27001:        zend_op *opline = EX(opline);
        !          27002:        zend_free_op free_op1, free_op2;
        !          27003:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27004:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          27005: 
        !          27006:        if (IS_CV == IS_VAR && !container) {
        !          27007:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          27008:        }
        !          27009:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          27010:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27011:        if (IS_CV == IS_VAR && 0 &&
        !          27012:            READY_TO_DESTROY(free_op1.var)) {
        !          27013:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          27014:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          27015:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          27016:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27017:                }
        !          27018:        }
        !          27019: 
        !          27020:        ZEND_VM_NEXT_OPCODE();
        !          27021: }
        !          27022: 
        !          27023: static int ZEND_FASTCALL  ZEND_FETCH_DIM_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27024: {
        !          27025:        zend_op *opline = EX(opline);
        !          27026:        zend_free_op free_op2;
        !          27027:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27028:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          27029: 
        !          27030:        if (IS_CV == IS_VAR && !container) {
        !          27031:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          27032:        }
        !          27033:        zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_IS TSRMLS_CC);
        !          27034:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27035: 
        !          27036:        ZEND_VM_NEXT_OPCODE();
        !          27037: }
        !          27038: 
        !          27039: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27040: {
        !          27041:        zend_op *opline = EX(opline);
        !          27042:        zend_free_op free_op1, free_op2;
        !          27043:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27044:        zval **container;
        !          27045: 
        !          27046:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          27047:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27048:                if (IS_CV == IS_VAR && !container) {
        !          27049:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          27050:                }
        !          27051:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          27052:                if (IS_CV == IS_VAR && 0 &&
        !          27053:                    READY_TO_DESTROY(free_op1.var)) {
        !          27054:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          27055:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          27056:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          27057:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27058:                        }
        !          27059:                }
        !          27060:        } else {
        !          27061:                if (IS_VAR == IS_UNUSED) {
        !          27062:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          27063:                }
        !          27064:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          27065:                if (IS_CV == IS_VAR && !container) {
        !          27066:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          27067:                }
        !          27068:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          27069:        }
        !          27070:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27071: 
        !          27072:        ZEND_VM_NEXT_OPCODE();
        !          27073: }
        !          27074: 
        !          27075: static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27076: {
        !          27077:        zend_op *opline = EX(opline);
        !          27078:        zend_free_op free_op1, free_op2;
        !          27079:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          27080:        zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27081: 
        !          27082:        /* Not needed in DIM_UNSET
        !          27083:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
        !          27084:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          27085:        }
        !          27086:        */
        !          27087:        if (IS_CV == IS_CV) {
        !          27088:                if (container != &EG(uninitialized_zval_ptr)) {
        !          27089:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          27090:                }
        !          27091:        }
        !          27092:        if (IS_CV == IS_VAR && !container) {
        !          27093:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          27094:        }
        !          27095:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC);
        !          27096:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27097:        if (IS_CV == IS_VAR && 0 &&
        !          27098:            READY_TO_DESTROY(free_op1.var)) {
        !          27099:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          27100:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          27101:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          27102:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27103:                }
        !          27104:        }
        !          27105: 
        !          27106:        if (EX_T(opline->result.u.var).var.ptr_ptr == NULL) {
        !          27107:                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          27108:        } else {
        !          27109:                zend_free_op free_res;
        !          27110: 
        !          27111:                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          27112:                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          27113:                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27114:                }
        !          27115:                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          27116:                FREE_OP_VAR_PTR(free_res);
        !          27117:        }
        !          27118:        ZEND_VM_NEXT_OPCODE();
        !          27119: }
        !          27120: 
        !          27121: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_CV_VAR(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          27122: {
        !          27123:        zend_op *opline = EX(opline);
        !          27124: 
        !          27125:        zval *container = _get_zval_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC);
        !          27126:        zend_free_op free_op2;
        !          27127:        zval *offset  = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27128: 
        !          27129:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          27130:                if (type != BP_VAR_IS) {
        !          27131:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          27132:                }
        !          27133:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          27134:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          27135:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          27136:                }
        !          27137:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27138:        } else {
        !          27139:                zval *retval;
        !          27140: 
        !          27141:                if (0) {
        !          27142:                        MAKE_REAL_ZVAL_PTR(offset);
        !          27143:                }
        !          27144: 
        !          27145:                /* here we are sure we are dealing with an object */
        !          27146:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          27147: 
        !          27148:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          27149:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          27150:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          27151:                                zval_dtor(retval);
        !          27152:                                FREE_ZVAL(retval);
        !          27153:                        }
        !          27154:                } else {
        !          27155:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          27156:                        PZVAL_LOCK(retval);
        !          27157:                }
        !          27158: 
        !          27159:                if (0) {
        !          27160:                        zval_ptr_dtor(&offset);
        !          27161:                } else {
        !          27162:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27163:                }
        !          27164:        }
        !          27165: 
        !          27166:        ZEND_VM_NEXT_OPCODE();
        !          27167: }
        !          27168: 
        !          27169: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27170: {
        !          27171:        return zend_fetch_property_address_read_helper_SPEC_CV_VAR(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          27172: }
        !          27173: 
        !          27174: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27175: {
        !          27176:        zend_op *opline = EX(opline);
        !          27177:        zend_free_op free_op1, free_op2;
        !          27178:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27179:        zval **container;
        !          27180: 
        !          27181:        if (IS_CV == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          27182:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          27183:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          27184:        }
        !          27185: 
        !          27186:        if (0) {
        !          27187:                MAKE_REAL_ZVAL_PTR(property);
        !          27188:        }
        !          27189:        container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27190:        if (IS_CV == IS_VAR && !container) {
        !          27191:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          27192:        }
        !          27193:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          27194:        if (0) {
        !          27195:                zval_ptr_dtor(&property);
        !          27196:        } else {
        !          27197:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27198:        }
        !          27199:        if (IS_CV == IS_VAR && 0 &&
        !          27200:            READY_TO_DESTROY(free_op1.var)) {
        !          27201:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          27202:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          27203:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          27204:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27205:                }
        !          27206:        }
        !          27207: 
        !          27208:        /* We are going to assign the result by reference */
        !          27209:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          27210:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27211:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27212:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27213:        }
        !          27214: 
        !          27215:        ZEND_VM_NEXT_OPCODE();
        !          27216: }
        !          27217: 
        !          27218: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27219: {
        !          27220:        zend_op *opline = EX(opline);
        !          27221:        zend_free_op free_op1, free_op2;
        !          27222:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27223:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          27224: 
        !          27225:        if (0) {
        !          27226:                MAKE_REAL_ZVAL_PTR(property);
        !          27227:        }
        !          27228:        if (IS_CV == IS_VAR && !container) {
        !          27229:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          27230:        }
        !          27231:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          27232:        if (0) {
        !          27233:                zval_ptr_dtor(&property);
        !          27234:        } else {
        !          27235:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27236:        }
        !          27237:        if (IS_CV == IS_VAR && 0 &&
        !          27238:            READY_TO_DESTROY(free_op1.var)) {
        !          27239:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          27240:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          27241:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          27242:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27243:                }
        !          27244:        }
        !          27245: 
        !          27246:        ZEND_VM_NEXT_OPCODE();
        !          27247: }
        !          27248: 
        !          27249: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27250: {
        !          27251:        return zend_fetch_property_address_read_helper_SPEC_CV_VAR(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          27252: }
        !          27253: 
        !          27254: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27255: {
        !          27256:        zend_op *opline = EX(opline);
        !          27257: 
        !          27258:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          27259:                /* Behave like FETCH_OBJ_W */
        !          27260:                zend_free_op free_op1, free_op2;
        !          27261:                zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27262:                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27263: 
        !          27264:                if (0) {
        !          27265:                        MAKE_REAL_ZVAL_PTR(property);
        !          27266:                }
        !          27267:                if (IS_CV == IS_VAR && !container) {
        !          27268:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          27269:                }
        !          27270:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          27271:                if (0) {
        !          27272:                        zval_ptr_dtor(&property);
        !          27273:                } else {
        !          27274:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27275:                }
        !          27276:                if (IS_CV == IS_VAR && 0 &&
        !          27277:                    READY_TO_DESTROY(free_op1.var)) {
        !          27278:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          27279:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          27280:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          27281:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27282:                        }
        !          27283:                }
        !          27284: 
        !          27285:                ZEND_VM_NEXT_OPCODE();
        !          27286:        } else {
        !          27287:                return zend_fetch_property_address_read_helper_SPEC_CV_VAR(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          27288:        }
        !          27289: }
        !          27290: 
        !          27291: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27292: {
        !          27293:        zend_op *opline = EX(opline);
        !          27294:        zend_free_op free_op1, free_op2, free_res;
        !          27295:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          27296:        zval *property = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27297: 
        !          27298:        if (IS_CV == IS_CV) {
        !          27299:                if (container != &EG(uninitialized_zval_ptr)) {
        !          27300:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          27301:                }
        !          27302:        }
        !          27303:        if (0) {
        !          27304:                MAKE_REAL_ZVAL_PTR(property);
        !          27305:        }
        !          27306:        if (IS_CV == IS_VAR && !container) {
        !          27307:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          27308:        }
        !          27309:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          27310:        if (0) {
        !          27311:                zval_ptr_dtor(&property);
        !          27312:        } else {
        !          27313:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27314:        }
        !          27315:        if (IS_CV == IS_VAR && 0 &&
        !          27316:            READY_TO_DESTROY(free_op1.var)) {
        !          27317:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          27318:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          27319:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          27320:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27321:                }
        !          27322:        }
        !          27323: 
        !          27324:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          27325:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          27326:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          27327:        }
        !          27328:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          27329:        FREE_OP_VAR_PTR(free_res);
        !          27330:        ZEND_VM_NEXT_OPCODE();
        !          27331: }
        !          27332: 
        !          27333: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27334: {
        !          27335:        zend_op *opline = EX(opline);
        !          27336:        zend_op *op_data = opline+1;
        !          27337:        zend_free_op free_op2;
        !          27338:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27339:        zval *property_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27340: 
        !          27341:        if (0) {
        !          27342:                MAKE_REAL_ZVAL_PTR(property_name);
        !          27343:        }
        !          27344:        if (IS_CV == IS_VAR && !object_ptr) {
        !          27345:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          27346:        }
        !          27347:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          27348:        if (0) {
        !          27349:                zval_ptr_dtor(&property_name);
        !          27350:        } else {
        !          27351:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27352:        }
        !          27353: 
        !          27354:        /* assign_obj has two opcodes! */
        !          27355:        ZEND_VM_INC_OPCODE();
        !          27356:        ZEND_VM_NEXT_OPCODE();
        !          27357: }
        !          27358: 
        !          27359: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27360: {
        !          27361:        zend_op *opline = EX(opline);
        !          27362:        zend_op *op_data = opline+1;
        !          27363: 
        !          27364:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27365: 
        !          27366:        if (IS_CV == IS_VAR && !object_ptr) {
        !          27367:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          27368:        }
        !          27369:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          27370:                zend_free_op free_op2;
        !          27371:                zval *property_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27372: 
        !          27373:                if (0) {
        !          27374:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          27375:                }
        !          27376:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          27377:                if (0) {
        !          27378:                        zval_ptr_dtor(&property_name);
        !          27379:                } else {
        !          27380:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27381:                }
        !          27382:        } else {
        !          27383:                zend_free_op free_op2, free_op_data1, free_op_data2;
        !          27384:                zval *value;
        !          27385:                zval *dim = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27386:                zval **variable_ptr_ptr;
        !          27387: 
        !          27388:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 0, BP_VAR_W TSRMLS_CC);
        !          27389:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27390: 
        !          27391:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          27392:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          27393:                if (!variable_ptr_ptr) {
        !          27394:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          27395:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          27396:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          27397:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          27398:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          27399:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          27400:                                }
        !          27401:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          27402:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          27403:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          27404:                        }
        !          27405:                } else {
        !          27406:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          27407:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          27408:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          27409:                                PZVAL_LOCK(value);
        !          27410:                        }
        !          27411:                }
        !          27412:                FREE_OP_VAR_PTR(free_op_data2);
        !          27413:                FREE_OP_IF_VAR(free_op_data1);
        !          27414:        }
        !          27415: 
        !          27416:        /* assign_dim has two opcodes! */
        !          27417:        ZEND_VM_INC_OPCODE();
        !          27418:        ZEND_VM_NEXT_OPCODE();
        !          27419: }
        !          27420: 
        !          27421: static int ZEND_FASTCALL  ZEND_ASSIGN_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27422: {
        !          27423:        zend_op *opline = EX(opline);
        !          27424:        zend_free_op free_op2;
        !          27425:        zval *value = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27426:        zval **variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27427: 
        !          27428:        if (IS_CV == IS_VAR && !variable_ptr_ptr) {
        !          27429:                if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_VAR TSRMLS_CC)) {
        !          27430:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          27431:                                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          27432:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          27433:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          27434:                                ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
        !          27435:                        }
        !          27436:                } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          27437:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          27438:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          27439:                }
        !          27440:        } else {
        !          27441:                value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
        !          27442:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          27443:                        AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          27444:                        PZVAL_LOCK(value);
        !          27445:                }
        !          27446:        }
        !          27447: 
        !          27448:        /* zend_assign_to_variable() always takes care of op2, never free it! */
        !          27449:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27450: 
        !          27451:        ZEND_VM_NEXT_OPCODE();
        !          27452: }
        !          27453: 
        !          27454: static int ZEND_FASTCALL  ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27455: {
        !          27456:        zend_op *opline = EX(opline);
        !          27457:        zend_free_op free_op2;
        !          27458:        zval **variable_ptr_ptr;
        !          27459:        zval **value_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27460: 
        !          27461:        if (IS_VAR == IS_VAR &&
        !          27462:            value_ptr_ptr &&
        !          27463:            !Z_ISREF_PP(value_ptr_ptr) &&
        !          27464:            opline->extended_value == ZEND_RETURNS_FUNCTION &&
        !          27465:            !EX_T(opline->op2.u.var).var.fcall_returned_reference) {
        !          27466:                if (free_op2.var == NULL) {
        !          27467:                        PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
        !          27468:                }
        !          27469:                zend_error(E_STRICT, "Only variables should be assigned by reference");
        !          27470:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          27471:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27472:                        ZEND_VM_NEXT_OPCODE();
        !          27473:                }
        !          27474:                return ZEND_ASSIGN_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          27475:        } else if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
        !          27476:                PZVAL_LOCK(*value_ptr_ptr);
        !          27477:        }
        !          27478:        if (IS_CV == IS_VAR && EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
        !          27479:                zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
        !          27480:        }
        !          27481: 
        !          27482:        variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27483:        if ((IS_VAR == IS_VAR && !value_ptr_ptr) ||
        !          27484:            (IS_CV == IS_VAR && !variable_ptr_ptr)) {
        !          27485:                zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets nor overloaded objects");
        !          27486:        }
        !          27487:        zend_assign_to_variable_reference(variable_ptr_ptr, value_ptr_ptr TSRMLS_CC);
        !          27488: 
        !          27489:        if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
        !          27490:                Z_DELREF_PP(variable_ptr_ptr);
        !          27491:        }
        !          27492: 
        !          27493:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          27494:                AI_SET_PTR(EX_T(opline->result.u.var).var, *variable_ptr_ptr);
        !          27495:                PZVAL_LOCK(*variable_ptr_ptr);
        !          27496:        }
        !          27497: 
        !          27498:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27499: 
        !          27500:        ZEND_VM_NEXT_OPCODE();
        !          27501: }
        !          27502: 
        !          27503: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27504: {
        !          27505:        zend_op *opline = EX(opline);
        !          27506:        zval *function_name;
        !          27507:        char *function_name_strval;
        !          27508:        int function_name_strlen;
        !          27509:        zend_free_op free_op2;
        !          27510: 
        !          27511:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          27512: 
        !          27513:        function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27514: 
        !          27515:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          27516:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          27517:        }
        !          27518: 
        !          27519:        function_name_strval = Z_STRVAL_P(function_name);
        !          27520:        function_name_strlen = Z_STRLEN_P(function_name);
        !          27521: 
        !          27522:        EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          27523: 
        !          27524:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          27525:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          27526:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          27527:                }
        !          27528: 
        !          27529:                /* First, locate the function. */
        !          27530:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          27531:                if (!EX(fbc)) {
        !          27532:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          27533:                }
        !          27534: 
        !          27535:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          27536:        } else {
        !          27537:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          27538:        }
        !          27539: 
        !          27540:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          27541:                EX(object) = NULL;
        !          27542:        } else {
        !          27543:                if (!PZVAL_IS_REF(EX(object))) {
        !          27544:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          27545:                } else {
        !          27546:                        zval *this_ptr;
        !          27547:                        ALLOC_ZVAL(this_ptr);
        !          27548:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          27549:                        zval_copy_ctor(this_ptr);
        !          27550:                        EX(object) = this_ptr;
        !          27551:                }
        !          27552:        }
        !          27553: 
        !          27554:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27555: 
        !          27556:        ZEND_VM_NEXT_OPCODE();
        !          27557: }
        !          27558: 
        !          27559: static int ZEND_FASTCALL  ZEND_CASE_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27560: {
        !          27561:        zend_op *opline = EX(opline);
        !          27562:        int switch_expr_is_overloaded=0;
        !          27563:        zend_free_op free_op2;
        !          27564: 
        !          27565:        if (IS_CV==IS_VAR) {
        !          27566:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          27567:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          27568:                } else {
        !          27569:                        switch_expr_is_overloaded = 1;
        !          27570:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          27571:                }
        !          27572:        }
        !          27573:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          27574:                                 _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          27575:                                 _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
        !          27576: 
        !          27577:        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27578:        if (switch_expr_is_overloaded) {
        !          27579:                /* We only free op1 if this is a string offset,
        !          27580:                 * Since if it is a TMP_VAR, it'll be reused by
        !          27581:                 * other CASE opcodes (whereas string offsets
        !          27582:                 * are allocated at each get_zval_ptr())
        !          27583:                 */
        !          27584: 
        !          27585:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          27586:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          27587:        }
        !          27588:        ZEND_VM_NEXT_OPCODE();
        !          27589: }
        !          27590: 
        !          27591: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27592: {
        !          27593:        zend_op *opline = EX(opline);
        !          27594:        zend_free_op free_op2;
        !          27595:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          27596:        zval *expr_ptr;
        !          27597:        zval *offset=_get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27598: 
        !          27599: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          27600:        zval **expr_ptr_ptr = NULL;
        !          27601: 
        !          27602:        if (opline->extended_value) {
        !          27603:                expr_ptr_ptr=_get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27604:                expr_ptr = *expr_ptr_ptr;
        !          27605:        } else {
        !          27606:                expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          27607:        }
        !          27608: #else
        !          27609:        expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          27610: #endif
        !          27611: 
        !          27612:        if (0) { /* temporary variable */
        !          27613:                zval *new_expr;
        !          27614: 
        !          27615:                ALLOC_ZVAL(new_expr);
        !          27616:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          27617:                expr_ptr = new_expr;
        !          27618:        } else {
        !          27619: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          27620:                if (opline->extended_value) {
        !          27621:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          27622:                        expr_ptr = *expr_ptr_ptr;
        !          27623:                        Z_ADDREF_P(expr_ptr);
        !          27624:                } else
        !          27625: #endif
        !          27626:                if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          27627:                        zval *new_expr;
        !          27628: 
        !          27629:                        ALLOC_ZVAL(new_expr);
        !          27630:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          27631:                        expr_ptr = new_expr;
        !          27632:                        zendi_zval_copy_ctor(*expr_ptr);
        !          27633:                } else {
        !          27634:                        Z_ADDREF_P(expr_ptr);
        !          27635:                }
        !          27636:        }
        !          27637:        if (offset) {
        !          27638:                switch (Z_TYPE_P(offset)) {
        !          27639:                        case IS_DOUBLE:
        !          27640:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          27641:                                break;
        !          27642:                        case IS_LONG:
        !          27643:                        case IS_BOOL:
        !          27644:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          27645:                                break;
        !          27646:                        case IS_STRING:
        !          27647:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          27648:                                break;
        !          27649:                        case IS_NULL:
        !          27650:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          27651:                                break;
        !          27652:                        default:
        !          27653:                                zend_error(E_WARNING, "Illegal offset type");
        !          27654:                                zval_ptr_dtor(&expr_ptr);
        !          27655:                                /* do nothing */
        !          27656:                                break;
        !          27657:                }
        !          27658:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27659:        } else {
        !          27660:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          27661:        }
        !          27662:        if (opline->extended_value) {
        !          27663: 
        !          27664:        } else {
        !          27665: 
        !          27666:        }
        !          27667:        ZEND_VM_NEXT_OPCODE();
        !          27668: }
        !          27669: 
        !          27670: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27671: {
        !          27672:        zend_op *opline = EX(opline);
        !          27673: 
        !          27674:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          27675:        if (IS_CV == IS_UNUSED) {
        !          27676:                ZEND_VM_NEXT_OPCODE();
        !          27677: #if 0 || IS_CV != IS_UNUSED
        !          27678:        } else {
        !          27679:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          27680: #endif
        !          27681:        }
        !          27682: }
        !          27683: 
        !          27684: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27685: {
        !          27686:        zend_op *opline = EX(opline);
        !          27687:        zend_free_op free_op2;
        !          27688:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          27689:        zval *offset;
        !          27690: 
        !          27691:        if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          27692:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          27693:        }
        !          27694:        offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27695: 
        !          27696:        if (IS_CV != IS_VAR || container) {
        !          27697:                switch (Z_TYPE_PP(container)) {
        !          27698:                        case IS_ARRAY: {
        !          27699:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          27700: 
        !          27701:                                switch (Z_TYPE_P(offset)) {
        !          27702:                                        case IS_DOUBLE:
        !          27703:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          27704:                                                break;
        !          27705:                                        case IS_RESOURCE:
        !          27706:                                        case IS_BOOL:
        !          27707:                                        case IS_LONG:
        !          27708:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          27709:                                                break;
        !          27710:                                        case IS_STRING:
        !          27711:                                                if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
        !          27712:                                                        Z_ADDREF_P(offset);
        !          27713:                                                }
        !          27714:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          27715:                                            ht == &EG(symbol_table)) {
        !          27716:                                                        zend_execute_data *ex;
        !          27717:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          27718: 
        !          27719:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          27720:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          27721:                                                                        int i;
        !          27722: 
        !          27723:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          27724:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          27725:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          27726:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          27727:                                                                                        ex->CVs[i] = NULL;
        !          27728:                                                                                        break;
        !          27729:                                                                                }
        !          27730:                                                                        }
        !          27731:                                                                }
        !          27732:                                                        }
        !          27733:                                                }
        !          27734:                                                if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
        !          27735:                                                        zval_ptr_dtor(&offset);
        !          27736:                                                }
        !          27737:                                                break;
        !          27738:                                        case IS_NULL:
        !          27739:                                                zend_hash_del(ht, "", sizeof(""));
        !          27740:                                                break;
        !          27741:                                        default:
        !          27742:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          27743:                                                break;
        !          27744:                                }
        !          27745:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27746:                                break;
        !          27747:                        }
        !          27748:                        case IS_OBJECT:
        !          27749:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          27750:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          27751:                                }
        !          27752:                                if (0) {
        !          27753:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          27754:                                }
        !          27755:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          27756:                                if (0) {
        !          27757:                                        zval_ptr_dtor(&offset);
        !          27758:                                } else {
        !          27759:                                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27760:                                }
        !          27761:                                break;
        !          27762:                        case IS_STRING:
        !          27763:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          27764:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          27765:                        default:
        !          27766:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27767:                                break;
        !          27768:                }
        !          27769:        } else {
        !          27770:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27771:        }
        !          27772: 
        !          27773:        ZEND_VM_NEXT_OPCODE();
        !          27774: }
        !          27775: 
        !          27776: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27777: {
        !          27778:        zend_op *opline = EX(opline);
        !          27779:        zend_free_op free_op2;
        !          27780:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          27781:        zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27782: 
        !          27783:        if (IS_CV != IS_VAR || container) {
        !          27784:                if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          27785:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          27786:                }
        !          27787:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          27788:                        if (0) {
        !          27789:                                MAKE_REAL_ZVAL_PTR(offset);
        !          27790:                        }
        !          27791:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          27792:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          27793:                        } else {
        !          27794:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          27795:                        }
        !          27796:                        if (0) {
        !          27797:                                zval_ptr_dtor(&offset);
        !          27798:                        } else {
        !          27799:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27800:                        }
        !          27801:                } else {
        !          27802:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27803:                }
        !          27804:        } else {
        !          27805:                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27806:        }
        !          27807: 
        !          27808:        ZEND_VM_NEXT_OPCODE();
        !          27809: }
        !          27810: 
        !          27811: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_VAR(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          27812: {
        !          27813:        zend_op *opline = EX(opline);
        !          27814: 
        !          27815:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          27816:        zval **value = NULL;
        !          27817:        int result = 0;
        !          27818: 
        !          27819:        if (IS_CV != IS_VAR || container) {
        !          27820:                zend_free_op free_op2;
        !          27821:                zval *offset = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC);
        !          27822: 
        !          27823:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          27824:                        HashTable *ht;
        !          27825:                        int isset = 0;
        !          27826: 
        !          27827:                        ht = Z_ARRVAL_PP(container);
        !          27828: 
        !          27829:                        switch (Z_TYPE_P(offset)) {
        !          27830:                                case IS_DOUBLE:
        !          27831:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          27832:                                                isset = 1;
        !          27833:                                        }
        !          27834:                                        break;
        !          27835:                                case IS_RESOURCE:
        !          27836:                                case IS_BOOL:
        !          27837:                                case IS_LONG:
        !          27838:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          27839:                                                isset = 1;
        !          27840:                                        }
        !          27841:                                        break;
        !          27842:                                case IS_STRING:
        !          27843:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          27844:                                                isset = 1;
        !          27845:                                        }
        !          27846:                                        break;
        !          27847:                                case IS_NULL:
        !          27848:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          27849:                                                isset = 1;
        !          27850:                                        }
        !          27851:                                        break;
        !          27852:                                default:
        !          27853:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          27854: 
        !          27855:                                        break;
        !          27856:                        }
        !          27857: 
        !          27858:                        switch (opline->extended_value) {
        !          27859:                                case ZEND_ISSET:
        !          27860:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          27861:                                                result = 0;
        !          27862:                                        } else {
        !          27863:                                                result = isset;
        !          27864:                                        }
        !          27865:                                        break;
        !          27866:                                case ZEND_ISEMPTY:
        !          27867:                                        if (!isset || !i_zend_is_true(*value)) {
        !          27868:                                                result = 0;
        !          27869:                                        } else {
        !          27870:                                                result = 1;
        !          27871:                                        }
        !          27872:                                        break;
        !          27873:                        }
        !          27874:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27875:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          27876:                        if (0) {
        !          27877:                                MAKE_REAL_ZVAL_PTR(offset);
        !          27878:                        }
        !          27879:                        if (prop_dim) {
        !          27880:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          27881:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          27882:                                } else {
        !          27883:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          27884:                                        result = 0;
        !          27885:                                }
        !          27886:                        } else {
        !          27887:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          27888:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          27889:                                } else {
        !          27890:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          27891:                                        result = 0;
        !          27892:                                }
        !          27893:                        }
        !          27894:                        if (0) {
        !          27895:                                zval_ptr_dtor(&offset);
        !          27896:                        } else {
        !          27897:                                if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27898:                        }
        !          27899:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          27900:                        zval tmp;
        !          27901: 
        !          27902:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          27903:                                tmp = *offset;
        !          27904:                                zval_copy_ctor(&tmp);
        !          27905:                                convert_to_long(&tmp);
        !          27906:                                offset = &tmp;
        !          27907:                        }
        !          27908:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          27909:                                switch (opline->extended_value) {
        !          27910:                                        case ZEND_ISSET:
        !          27911:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          27912:                                                        result = 1;
        !          27913:                                                }
        !          27914:                                                break;
        !          27915:                                        case ZEND_ISEMPTY:
        !          27916:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          27917:                                                        result = 1;
        !          27918:                                                }
        !          27919:                                                break;
        !          27920:                                }
        !          27921:                        }
        !          27922:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27923:                } else {
        !          27924:                        if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
        !          27925:                }
        !          27926:        }
        !          27927: 
        !          27928:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          27929: 
        !          27930:        switch (opline->extended_value) {
        !          27931:                case ZEND_ISSET:
        !          27932:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          27933:                        break;
        !          27934:                case ZEND_ISEMPTY:
        !          27935:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          27936:                        break;
        !          27937:        }
        !          27938: 
        !          27939:        ZEND_VM_NEXT_OPCODE();
        !          27940: }
        !          27941: 
        !          27942: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27943: {
        !          27944:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_VAR(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          27945: }
        !          27946: 
        !          27947: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          27948: {
        !          27949:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_VAR(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          27950: }
        !          27951: 
        !          27952: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          27953: {
        !          27954:        zend_op *opline = EX(opline);
        !          27955:        zend_op *op_data = opline+1;
        !          27956:        zend_free_op free_op_data1;
        !          27957:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          27958:        zval *object;
        !          27959:        zval *property = NULL;
        !          27960:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          27961:        znode *result = &opline->result;
        !          27962:        int have_get_ptr = 0;
        !          27963: 
        !          27964:        if (IS_CV == IS_VAR && !object_ptr) {
        !          27965:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          27966:        }
        !          27967: 
        !          27968:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          27969:        make_real_object(object_ptr TSRMLS_CC);
        !          27970:        object = *object_ptr;
        !          27971: 
        !          27972:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          27973:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          27974: 
        !          27975:                FREE_OP(free_op_data1);
        !          27976: 
        !          27977:                if (!RETURN_VALUE_UNUSED(result)) {
        !          27978:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          27979:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          27980:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          27981:                }
        !          27982:        } else {
        !          27983:                /* here we are sure we are dealing with an object */
        !          27984:                if (0) {
        !          27985:                        MAKE_REAL_ZVAL_PTR(property);
        !          27986:                }
        !          27987: 
        !          27988:                /* here property is a string */
        !          27989:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          27990:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          27991:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          27992:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          27993:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          27994: 
        !          27995:                                have_get_ptr = 1;
        !          27996:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          27997:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          27998:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          27999:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          28000:                                        PZVAL_LOCK(*zptr);
        !          28001:                                }
        !          28002:                        }
        !          28003:                }
        !          28004: 
        !          28005:                if (!have_get_ptr) {
        !          28006:                        zval *z = NULL;
        !          28007: 
        !          28008:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          28009:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          28010:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          28011:                                }
        !          28012:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          28013:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          28014:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          28015:                                }
        !          28016:                        }
        !          28017:                        if (z) {
        !          28018:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          28019:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          28020: 
        !          28021:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          28022:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          28023:                                                zval_dtor(z);
        !          28024:                                                FREE_ZVAL(z);
        !          28025:                                        }
        !          28026:                                        z = value;
        !          28027:                                }
        !          28028:                                Z_ADDREF_P(z);
        !          28029:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          28030:                                binary_op(z, z, value TSRMLS_CC);
        !          28031:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          28032:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          28033:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          28034:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          28035:                                }
        !          28036:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          28037:                                        EX_T(result->u.var).var.ptr = z;
        !          28038:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          28039:                                        PZVAL_LOCK(z);
        !          28040:                                }
        !          28041:                                zval_ptr_dtor(&z);
        !          28042:                        } else {
        !          28043:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          28044:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          28045:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          28046:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          28047:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          28048:                                }
        !          28049:                        }
        !          28050:                }
        !          28051: 
        !          28052:                if (0) {
        !          28053:                        zval_ptr_dtor(&property);
        !          28054:                } else {
        !          28055: 
        !          28056:                }
        !          28057:                FREE_OP(free_op_data1);
        !          28058:        }
        !          28059: 
        !          28060:        /* assign_obj has two opcodes! */
        !          28061:        ZEND_VM_INC_OPCODE();
        !          28062:        ZEND_VM_NEXT_OPCODE();
        !          28063: }
        !          28064: 
        !          28065: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_CV_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          28066: {
        !          28067:        zend_op *opline = EX(opline);
        !          28068:        zend_free_op free_op_data2, free_op_data1;
        !          28069:        zval **var_ptr;
        !          28070:        zval *value;
        !          28071: 
        !          28072:        switch (opline->extended_value) {
        !          28073:                case ZEND_ASSIGN_OBJ:
        !          28074:                        return zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28075:                        break;
        !          28076:                case ZEND_ASSIGN_DIM: {
        !          28077:                                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          28078: 
        !          28079:                                if (IS_CV == IS_VAR && !container) {
        !          28080:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          28081:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          28082:                                        if (IS_CV == IS_VAR && !0) {
        !          28083:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          28084:                                        }
        !          28085:                                        return zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28086:                                } else {
        !          28087:                                        zend_op *op_data = opline+1;
        !          28088:                                        zval *dim = NULL;
        !          28089: 
        !          28090:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          28091:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          28092:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          28093:                                        ZEND_VM_INC_OPCODE();
        !          28094:                                }
        !          28095:                        }
        !          28096:                        break;
        !          28097:                default:
        !          28098:                        value = NULL;
        !          28099:                        var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          28100:                        /* do nothing */
        !          28101:                        break;
        !          28102:        }
        !          28103: 
        !          28104:        if (!var_ptr) {
        !          28105:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          28106:        }
        !          28107: 
        !          28108:        if (*var_ptr == EG(error_zval_ptr)) {
        !          28109:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28110:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          28111:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          28112:                }
        !          28113: 
        !          28114: 
        !          28115:                ZEND_VM_NEXT_OPCODE();
        !          28116:        }
        !          28117: 
        !          28118:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          28119: 
        !          28120:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          28121:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          28122:                /* proxy object */
        !          28123:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          28124:                Z_ADDREF_P(objval);
        !          28125:                binary_op(objval, objval, value TSRMLS_CC);
        !          28126:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          28127:                zval_ptr_dtor(&objval);
        !          28128:        } else {
        !          28129:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          28130:        }
        !          28131: 
        !          28132:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28133:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          28134:                PZVAL_LOCK(*var_ptr);
        !          28135:        }
        !          28136: 
        !          28137:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          28138:                FREE_OP(free_op_data1);
        !          28139:                FREE_OP_VAR_PTR(free_op_data2);
        !          28140:        }
        !          28141: 
        !          28142:        ZEND_VM_NEXT_OPCODE();
        !          28143: }
        !          28144: 
        !          28145: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28146: {
        !          28147:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28148: }
        !          28149: 
        !          28150: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28151: {
        !          28152:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28153: }
        !          28154: 
        !          28155: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28156: {
        !          28157:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28158: }
        !          28159: 
        !          28160: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28161: {
        !          28162:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28163: }
        !          28164: 
        !          28165: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28166: {
        !          28167:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28168: }
        !          28169: 
        !          28170: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28171: {
        !          28172:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28173: }
        !          28174: 
        !          28175: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28176: {
        !          28177:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28178: }
        !          28179: 
        !          28180: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28181: {
        !          28182:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28183: }
        !          28184: 
        !          28185: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28186: {
        !          28187:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28188: }
        !          28189: 
        !          28190: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28191: {
        !          28192:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28193: }
        !          28194: 
        !          28195: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28196: {
        !          28197:        return zend_binary_assign_op_helper_SPEC_CV_UNUSED(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28198: }
        !          28199: 
        !          28200: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28201: {
        !          28202:        zend_op *opline = EX(opline);
        !          28203:        zend_free_op free_op1;
        !          28204:        zval *dim = NULL;
        !          28205:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          28206: 
        !          28207:        if (IS_CV == IS_VAR && !container) {
        !          28208:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          28209:        }
        !          28210:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          28211: 
        !          28212:        if (IS_CV == IS_VAR && 0 &&
        !          28213:            READY_TO_DESTROY(free_op1.var)) {
        !          28214:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          28215:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          28216:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          28217:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          28218:                }
        !          28219:        }
        !          28220: 
        !          28221:        /* We are going to assign the result by reference */
        !          28222:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          28223:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          28224:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          28225:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          28226:        }
        !          28227: 
        !          28228:        ZEND_VM_NEXT_OPCODE();
        !          28229: }
        !          28230: 
        !          28231: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28232: {
        !          28233:        zend_op *opline = EX(opline);
        !          28234:        zend_free_op free_op1;
        !          28235:        zval *dim = NULL;
        !          28236:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          28237: 
        !          28238:        if (IS_CV == IS_VAR && !container) {
        !          28239:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          28240:        }
        !          28241:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          28242: 
        !          28243:        if (IS_CV == IS_VAR && 0 &&
        !          28244:            READY_TO_DESTROY(free_op1.var)) {
        !          28245:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          28246:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          28247:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          28248:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          28249:                }
        !          28250:        }
        !          28251: 
        !          28252:        ZEND_VM_NEXT_OPCODE();
        !          28253: }
        !          28254: 
        !          28255: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28256: {
        !          28257:        zend_op *opline = EX(opline);
        !          28258:        zend_free_op free_op1;
        !          28259:        zval *dim = NULL;
        !          28260:        zval **container;
        !          28261: 
        !          28262:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          28263:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          28264:                if (IS_CV == IS_VAR && !container) {
        !          28265:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          28266:                }
        !          28267:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          28268:                if (IS_CV == IS_VAR && 0 &&
        !          28269:                    READY_TO_DESTROY(free_op1.var)) {
        !          28270:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          28271:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          28272:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          28273:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          28274:                        }
        !          28275:                }
        !          28276:        } else {
        !          28277:                if (IS_UNUSED == IS_UNUSED) {
        !          28278:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          28279:                }
        !          28280:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          28281:                if (IS_CV == IS_VAR && !container) {
        !          28282:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          28283:                }
        !          28284:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          28285:        }
        !          28286: 
        !          28287: 
        !          28288:        ZEND_VM_NEXT_OPCODE();
        !          28289: }
        !          28290: 
        !          28291: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28292: {
        !          28293:        zend_op *opline = EX(opline);
        !          28294:        zend_op *op_data = opline+1;
        !          28295: 
        !          28296:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          28297: 
        !          28298:        if (IS_CV == IS_VAR && !object_ptr) {
        !          28299:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          28300:        }
        !          28301:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          28302: 
        !          28303:                zval *property_name = NULL;
        !          28304: 
        !          28305:                if (0) {
        !          28306:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          28307:                }
        !          28308:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          28309:                if (0) {
        !          28310:                        zval_ptr_dtor(&property_name);
        !          28311:                } else {
        !          28312: 
        !          28313:                }
        !          28314:        } else {
        !          28315:                zend_free_op free_op_data1, free_op_data2;
        !          28316:                zval *value;
        !          28317:                zval *dim = NULL;
        !          28318:                zval **variable_ptr_ptr;
        !          28319: 
        !          28320:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 0, BP_VAR_W TSRMLS_CC);
        !          28321: 
        !          28322:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          28323:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          28324:                if (!variable_ptr_ptr) {
        !          28325:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          28326:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28327:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          28328:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          28329:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          28330:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          28331:                                }
        !          28332:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28333:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          28334:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          28335:                        }
        !          28336:                } else {
        !          28337:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          28338:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28339:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          28340:                                PZVAL_LOCK(value);
        !          28341:                        }
        !          28342:                }
        !          28343:                FREE_OP_VAR_PTR(free_op_data2);
        !          28344:                FREE_OP_IF_VAR(free_op_data1);
        !          28345:        }
        !          28346: 
        !          28347:        /* assign_dim has two opcodes! */
        !          28348:        ZEND_VM_INC_OPCODE();
        !          28349:        ZEND_VM_NEXT_OPCODE();
        !          28350: }
        !          28351: 
        !          28352: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28353: {
        !          28354:        zend_op *opline = EX(opline);
        !          28355: 
        !          28356:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          28357:        zval *expr_ptr;
        !          28358:        zval *offset=NULL;
        !          28359: 
        !          28360: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          28361:        zval **expr_ptr_ptr = NULL;
        !          28362: 
        !          28363:        if (opline->extended_value) {
        !          28364:                expr_ptr_ptr=_get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          28365:                expr_ptr = *expr_ptr_ptr;
        !          28366:        } else {
        !          28367:                expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          28368:        }
        !          28369: #else
        !          28370:        expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          28371: #endif
        !          28372: 
        !          28373:        if (0) { /* temporary variable */
        !          28374:                zval *new_expr;
        !          28375: 
        !          28376:                ALLOC_ZVAL(new_expr);
        !          28377:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          28378:                expr_ptr = new_expr;
        !          28379:        } else {
        !          28380: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          28381:                if (opline->extended_value) {
        !          28382:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          28383:                        expr_ptr = *expr_ptr_ptr;
        !          28384:                        Z_ADDREF_P(expr_ptr);
        !          28385:                } else
        !          28386: #endif
        !          28387:                if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          28388:                        zval *new_expr;
        !          28389: 
        !          28390:                        ALLOC_ZVAL(new_expr);
        !          28391:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          28392:                        expr_ptr = new_expr;
        !          28393:                        zendi_zval_copy_ctor(*expr_ptr);
        !          28394:                } else {
        !          28395:                        Z_ADDREF_P(expr_ptr);
        !          28396:                }
        !          28397:        }
        !          28398:        if (offset) {
        !          28399:                switch (Z_TYPE_P(offset)) {
        !          28400:                        case IS_DOUBLE:
        !          28401:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          28402:                                break;
        !          28403:                        case IS_LONG:
        !          28404:                        case IS_BOOL:
        !          28405:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          28406:                                break;
        !          28407:                        case IS_STRING:
        !          28408:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          28409:                                break;
        !          28410:                        case IS_NULL:
        !          28411:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          28412:                                break;
        !          28413:                        default:
        !          28414:                                zend_error(E_WARNING, "Illegal offset type");
        !          28415:                                zval_ptr_dtor(&expr_ptr);
        !          28416:                                /* do nothing */
        !          28417:                                break;
        !          28418:                }
        !          28419: 
        !          28420:        } else {
        !          28421:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          28422:        }
        !          28423:        if (opline->extended_value) {
        !          28424: 
        !          28425:        } else {
        !          28426: 
        !          28427:        }
        !          28428:        ZEND_VM_NEXT_OPCODE();
        !          28429: }
        !          28430: 
        !          28431: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28432: {
        !          28433:        zend_op *opline = EX(opline);
        !          28434: 
        !          28435:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          28436:        if (IS_CV == IS_UNUSED) {
        !          28437:                ZEND_VM_NEXT_OPCODE();
        !          28438: #if 0 || IS_CV != IS_UNUSED
        !          28439:        } else {
        !          28440:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28441: #endif
        !          28442:        }
        !          28443: }
        !          28444: 
        !          28445: static int ZEND_FASTCALL  ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28446: {
        !          28447:        zend_op *opline = EX(opline);
        !          28448: 
        !          28449: 
        !          28450:        add_function(&EX_T(opline->result.u.var).tmp_var,
        !          28451:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28452:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28453: 
        !          28454: 
        !          28455:        ZEND_VM_NEXT_OPCODE();
        !          28456: }
        !          28457: 
        !          28458: static int ZEND_FASTCALL  ZEND_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28459: {
        !          28460:        zend_op *opline = EX(opline);
        !          28461: 
        !          28462: 
        !          28463:        sub_function(&EX_T(opline->result.u.var).tmp_var,
        !          28464:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28465:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28466: 
        !          28467: 
        !          28468:        ZEND_VM_NEXT_OPCODE();
        !          28469: }
        !          28470: 
        !          28471: static int ZEND_FASTCALL  ZEND_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28472: {
        !          28473:        zend_op *opline = EX(opline);
        !          28474: 
        !          28475: 
        !          28476:        mul_function(&EX_T(opline->result.u.var).tmp_var,
        !          28477:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28478:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28479: 
        !          28480: 
        !          28481:        ZEND_VM_NEXT_OPCODE();
        !          28482: }
        !          28483: 
        !          28484: static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28485: {
        !          28486:        zend_op *opline = EX(opline);
        !          28487: 
        !          28488: 
        !          28489:        div_function(&EX_T(opline->result.u.var).tmp_var,
        !          28490:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28491:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28492: 
        !          28493: 
        !          28494:        ZEND_VM_NEXT_OPCODE();
        !          28495: }
        !          28496: 
        !          28497: static int ZEND_FASTCALL  ZEND_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28498: {
        !          28499:        zend_op *opline = EX(opline);
        !          28500: 
        !          28501: 
        !          28502:        mod_function(&EX_T(opline->result.u.var).tmp_var,
        !          28503:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28504:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28505: 
        !          28506: 
        !          28507:        ZEND_VM_NEXT_OPCODE();
        !          28508: }
        !          28509: 
        !          28510: static int ZEND_FASTCALL  ZEND_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28511: {
        !          28512:        zend_op *opline = EX(opline);
        !          28513: 
        !          28514: 
        !          28515:        shift_left_function(&EX_T(opline->result.u.var).tmp_var,
        !          28516:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28517:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28518: 
        !          28519: 
        !          28520:        ZEND_VM_NEXT_OPCODE();
        !          28521: }
        !          28522: 
        !          28523: static int ZEND_FASTCALL  ZEND_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28524: {
        !          28525:        zend_op *opline = EX(opline);
        !          28526: 
        !          28527: 
        !          28528:        shift_right_function(&EX_T(opline->result.u.var).tmp_var,
        !          28529:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28530:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28531: 
        !          28532: 
        !          28533:        ZEND_VM_NEXT_OPCODE();
        !          28534: }
        !          28535: 
        !          28536: static int ZEND_FASTCALL  ZEND_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28537: {
        !          28538:        zend_op *opline = EX(opline);
        !          28539: 
        !          28540: 
        !          28541:        concat_function(&EX_T(opline->result.u.var).tmp_var,
        !          28542:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28543:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28544: 
        !          28545: 
        !          28546:        ZEND_VM_NEXT_OPCODE();
        !          28547: }
        !          28548: 
        !          28549: static int ZEND_FASTCALL  ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28550: {
        !          28551:        zend_op *opline = EX(opline);
        !          28552: 
        !          28553: 
        !          28554:        is_identical_function(&EX_T(opline->result.u.var).tmp_var,
        !          28555:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28556:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28557: 
        !          28558: 
        !          28559:        ZEND_VM_NEXT_OPCODE();
        !          28560: }
        !          28561: 
        !          28562: static int ZEND_FASTCALL  ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28563: {
        !          28564:        zend_op *opline = EX(opline);
        !          28565: 
        !          28566:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          28567: 
        !          28568:        is_identical_function(result,
        !          28569:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28570:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28571:        Z_LVAL_P(result) = !Z_LVAL_P(result);
        !          28572: 
        !          28573: 
        !          28574:        ZEND_VM_NEXT_OPCODE();
        !          28575: }
        !          28576: 
        !          28577: static int ZEND_FASTCALL  ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28578: {
        !          28579:        zend_op *opline = EX(opline);
        !          28580: 
        !          28581:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          28582: 
        !          28583:        compare_function(result,
        !          28584:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28585:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28586:        ZVAL_BOOL(result, (Z_LVAL_P(result) == 0));
        !          28587: 
        !          28588: 
        !          28589:        ZEND_VM_NEXT_OPCODE();
        !          28590: }
        !          28591: 
        !          28592: static int ZEND_FASTCALL  ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28593: {
        !          28594:        zend_op *opline = EX(opline);
        !          28595: 
        !          28596:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          28597: 
        !          28598:        compare_function(result,
        !          28599:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28600:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28601:        ZVAL_BOOL(result, (Z_LVAL_P(result) != 0));
        !          28602: 
        !          28603: 
        !          28604:        ZEND_VM_NEXT_OPCODE();
        !          28605: }
        !          28606: 
        !          28607: static int ZEND_FASTCALL  ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28608: {
        !          28609:        zend_op *opline = EX(opline);
        !          28610: 
        !          28611:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          28612: 
        !          28613:        compare_function(result,
        !          28614:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28615:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28616:        ZVAL_BOOL(result, (Z_LVAL_P(result) < 0));
        !          28617: 
        !          28618: 
        !          28619:        ZEND_VM_NEXT_OPCODE();
        !          28620: }
        !          28621: 
        !          28622: static int ZEND_FASTCALL  ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28623: {
        !          28624:        zend_op *opline = EX(opline);
        !          28625: 
        !          28626:        zval *result = &EX_T(opline->result.u.var).tmp_var;
        !          28627: 
        !          28628:        compare_function(result,
        !          28629:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28630:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28631:        ZVAL_BOOL(result, (Z_LVAL_P(result) <= 0));
        !          28632: 
        !          28633: 
        !          28634:        ZEND_VM_NEXT_OPCODE();
        !          28635: }
        !          28636: 
        !          28637: static int ZEND_FASTCALL  ZEND_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28638: {
        !          28639:        zend_op *opline = EX(opline);
        !          28640: 
        !          28641: 
        !          28642:        bitwise_or_function(&EX_T(opline->result.u.var).tmp_var,
        !          28643:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28644:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28645: 
        !          28646: 
        !          28647:        ZEND_VM_NEXT_OPCODE();
        !          28648: }
        !          28649: 
        !          28650: static int ZEND_FASTCALL  ZEND_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28651: {
        !          28652:        zend_op *opline = EX(opline);
        !          28653: 
        !          28654: 
        !          28655:        bitwise_and_function(&EX_T(opline->result.u.var).tmp_var,
        !          28656:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28657:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28658: 
        !          28659: 
        !          28660:        ZEND_VM_NEXT_OPCODE();
        !          28661: }
        !          28662: 
        !          28663: static int ZEND_FASTCALL  ZEND_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28664: {
        !          28665:        zend_op *opline = EX(opline);
        !          28666: 
        !          28667: 
        !          28668:        bitwise_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          28669:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28670:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28671: 
        !          28672: 
        !          28673:        ZEND_VM_NEXT_OPCODE();
        !          28674: }
        !          28675: 
        !          28676: static int ZEND_FASTCALL  ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28677: {
        !          28678:        zend_op *opline = EX(opline);
        !          28679: 
        !          28680: 
        !          28681:        boolean_xor_function(&EX_T(opline->result.u.var).tmp_var,
        !          28682:                _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          28683:                _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          28684: 
        !          28685: 
        !          28686:        ZEND_VM_NEXT_OPCODE();
        !          28687: }
        !          28688: 
        !          28689: static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CV(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          28690: {
        !          28691:        zend_op *opline = EX(opline);
        !          28692:        zend_op *op_data = opline+1;
        !          28693:        zend_free_op free_op_data1;
        !          28694:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          28695:        zval *object;
        !          28696:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          28697:        zval *value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          28698:        znode *result = &opline->result;
        !          28699:        int have_get_ptr = 0;
        !          28700: 
        !          28701:        if (IS_CV == IS_VAR && !object_ptr) {
        !          28702:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          28703:        }
        !          28704: 
        !          28705:        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          28706:        make_real_object(object_ptr TSRMLS_CC);
        !          28707:        object = *object_ptr;
        !          28708: 
        !          28709:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          28710:                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          28711: 
        !          28712:                FREE_OP(free_op_data1);
        !          28713: 
        !          28714:                if (!RETURN_VALUE_UNUSED(result)) {
        !          28715:                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          28716:                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          28717:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          28718:                }
        !          28719:        } else {
        !          28720:                /* here we are sure we are dealing with an object */
        !          28721:                if (0) {
        !          28722:                        MAKE_REAL_ZVAL_PTR(property);
        !          28723:                }
        !          28724: 
        !          28725:                /* here property is a string */
        !          28726:                if (opline->extended_value == ZEND_ASSIGN_OBJ
        !          28727:                        && Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          28728:                        zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          28729:                        if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          28730:                                SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          28731: 
        !          28732:                                have_get_ptr = 1;
        !          28733:                                binary_op(*zptr, *zptr, value TSRMLS_CC);
        !          28734:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          28735:                                        EX_T(result->u.var).var.ptr = *zptr;
        !          28736:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          28737:                                        PZVAL_LOCK(*zptr);
        !          28738:                                }
        !          28739:                        }
        !          28740:                }
        !          28741: 
        !          28742:                if (!have_get_ptr) {
        !          28743:                        zval *z = NULL;
        !          28744: 
        !          28745:                        if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          28746:                                if (Z_OBJ_HT_P(object)->read_property) {
        !          28747:                                        z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          28748:                                }
        !          28749:                        } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          28750:                                if (Z_OBJ_HT_P(object)->read_dimension) {
        !          28751:                                        z = Z_OBJ_HT_P(object)->read_dimension(object, property, BP_VAR_R TSRMLS_CC);
        !          28752:                                }
        !          28753:                        }
        !          28754:                        if (z) {
        !          28755:                                if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          28756:                                        zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          28757: 
        !          28758:                                        if (Z_REFCOUNT_P(z) == 0) {
        !          28759:                                                GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          28760:                                                zval_dtor(z);
        !          28761:                                                FREE_ZVAL(z);
        !          28762:                                        }
        !          28763:                                        z = value;
        !          28764:                                }
        !          28765:                                Z_ADDREF_P(z);
        !          28766:                                SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          28767:                                binary_op(z, z, value TSRMLS_CC);
        !          28768:                                if (opline->extended_value == ZEND_ASSIGN_OBJ) {
        !          28769:                                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          28770:                                } else /* if (opline->extended_value == ZEND_ASSIGN_DIM) */ {
        !          28771:                                        Z_OBJ_HT_P(object)->write_dimension(object, property, z TSRMLS_CC);
        !          28772:                                }
        !          28773:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          28774:                                        EX_T(result->u.var).var.ptr = z;
        !          28775:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          28776:                                        PZVAL_LOCK(z);
        !          28777:                                }
        !          28778:                                zval_ptr_dtor(&z);
        !          28779:                        } else {
        !          28780:                                zend_error(E_WARNING, "Attempt to assign property of non-object");
        !          28781:                                if (!RETURN_VALUE_UNUSED(result)) {
        !          28782:                                        EX_T(result->u.var).var.ptr = EG(uninitialized_zval_ptr);
        !          28783:                                        EX_T(result->u.var).var.ptr_ptr = NULL;
        !          28784:                                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          28785:                                }
        !          28786:                        }
        !          28787:                }
        !          28788: 
        !          28789:                if (0) {
        !          28790:                        zval_ptr_dtor(&property);
        !          28791:                } else {
        !          28792: 
        !          28793:                }
        !          28794:                FREE_OP(free_op_data1);
        !          28795:        }
        !          28796: 
        !          28797:        /* assign_obj has two opcodes! */
        !          28798:        ZEND_VM_INC_OPCODE();
        !          28799:        ZEND_VM_NEXT_OPCODE();
        !          28800: }
        !          28801: 
        !          28802: static int ZEND_FASTCALL zend_binary_assign_op_helper_SPEC_CV_CV(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS)
        !          28803: {
        !          28804:        zend_op *opline = EX(opline);
        !          28805:        zend_free_op free_op_data2, free_op_data1;
        !          28806:        zval **var_ptr;
        !          28807:        zval *value;
        !          28808: 
        !          28809:        switch (opline->extended_value) {
        !          28810:                case ZEND_ASSIGN_OBJ:
        !          28811:                        return zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28812:                        break;
        !          28813:                case ZEND_ASSIGN_DIM: {
        !          28814:                                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          28815: 
        !          28816:                                if (IS_CV == IS_VAR && !container) {
        !          28817:                                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          28818:                                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          28819:                                        if (IS_CV == IS_VAR && !0) {
        !          28820:                                                Z_ADDREF_PP(container);  /* undo the effect of get_obj_zval_ptr_ptr() */
        !          28821:                                        }
        !          28822:                                        return zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28823:                                } else {
        !          28824:                                        zend_op *op_data = opline+1;
        !          28825:                                        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          28826: 
        !          28827:                                        zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          28828:                                        value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          28829:                                        var_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          28830:                                        ZEND_VM_INC_OPCODE();
        !          28831:                                }
        !          28832:                        }
        !          28833:                        break;
        !          28834:                default:
        !          28835:                        value = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          28836:                        var_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          28837:                        /* do nothing */
        !          28838:                        break;
        !          28839:        }
        !          28840: 
        !          28841:        if (!var_ptr) {
        !          28842:                zend_error_noreturn(E_ERROR, "Cannot use assign-op operators with overloaded objects nor string offsets");
        !          28843:        }
        !          28844: 
        !          28845:        if (*var_ptr == EG(error_zval_ptr)) {
        !          28846:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28847:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          28848:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          28849:                }
        !          28850: 
        !          28851: 
        !          28852:                ZEND_VM_NEXT_OPCODE();
        !          28853:        }
        !          28854: 
        !          28855:        SEPARATE_ZVAL_IF_NOT_REF(var_ptr);
        !          28856: 
        !          28857:        if(Z_TYPE_PP(var_ptr) == IS_OBJECT && Z_OBJ_HANDLER_PP(var_ptr, get)
        !          28858:           && Z_OBJ_HANDLER_PP(var_ptr, set)) {
        !          28859:                /* proxy object */
        !          28860:                zval *objval = Z_OBJ_HANDLER_PP(var_ptr, get)(*var_ptr TSRMLS_CC);
        !          28861:                Z_ADDREF_P(objval);
        !          28862:                binary_op(objval, objval, value TSRMLS_CC);
        !          28863:                Z_OBJ_HANDLER_PP(var_ptr, set)(var_ptr, objval TSRMLS_CC);
        !          28864:                zval_ptr_dtor(&objval);
        !          28865:        } else {
        !          28866:                binary_op(*var_ptr, *var_ptr, value TSRMLS_CC);
        !          28867:        }
        !          28868: 
        !          28869:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28870:                AI_SET_PTR(EX_T(opline->result.u.var).var, *var_ptr);
        !          28871:                PZVAL_LOCK(*var_ptr);
        !          28872:        }
        !          28873: 
        !          28874:        if (opline->extended_value == ZEND_ASSIGN_DIM) {
        !          28875:                FREE_OP(free_op_data1);
        !          28876:                FREE_OP_VAR_PTR(free_op_data2);
        !          28877:        }
        !          28878: 
        !          28879:        ZEND_VM_NEXT_OPCODE();
        !          28880: }
        !          28881: 
        !          28882: static int ZEND_FASTCALL  ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28883: {
        !          28884:        return zend_binary_assign_op_helper_SPEC_CV_CV(add_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28885: }
        !          28886: 
        !          28887: static int ZEND_FASTCALL  ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28888: {
        !          28889:        return zend_binary_assign_op_helper_SPEC_CV_CV(sub_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28890: }
        !          28891: 
        !          28892: static int ZEND_FASTCALL  ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28893: {
        !          28894:        return zend_binary_assign_op_helper_SPEC_CV_CV(mul_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28895: }
        !          28896: 
        !          28897: static int ZEND_FASTCALL  ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28898: {
        !          28899:        return zend_binary_assign_op_helper_SPEC_CV_CV(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28900: }
        !          28901: 
        !          28902: static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28903: {
        !          28904:        return zend_binary_assign_op_helper_SPEC_CV_CV(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28905: }
        !          28906: 
        !          28907: static int ZEND_FASTCALL  ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28908: {
        !          28909:        return zend_binary_assign_op_helper_SPEC_CV_CV(shift_left_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28910: }
        !          28911: 
        !          28912: static int ZEND_FASTCALL  ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28913: {
        !          28914:        return zend_binary_assign_op_helper_SPEC_CV_CV(shift_right_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28915: }
        !          28916: 
        !          28917: static int ZEND_FASTCALL  ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28918: {
        !          28919:        return zend_binary_assign_op_helper_SPEC_CV_CV(concat_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28920: }
        !          28921: 
        !          28922: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28923: {
        !          28924:        return zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_or_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28925: }
        !          28926: 
        !          28927: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28928: {
        !          28929:        return zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_and_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28930: }
        !          28931: 
        !          28932: static int ZEND_FASTCALL  ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          28933: {
        !          28934:        return zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_xor_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          28935: }
        !          28936: 
        !          28937: static int ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CV(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          28938: {
        !          28939:        zend_op *opline = EX(opline);
        !          28940: 
        !          28941:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          28942:        zval *object;
        !          28943:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          28944:        zval **retval = &EX_T(opline->result.u.var).var.ptr;
        !          28945:        int have_get_ptr = 0;
        !          28946: 
        !          28947:        if (IS_CV == IS_VAR && !object_ptr) {
        !          28948:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          28949:        }
        !          28950: 
        !          28951:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          28952:        object = *object_ptr;
        !          28953: 
        !          28954:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          28955:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          28956: 
        !          28957:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28958:                        *retval = EG(uninitialized_zval_ptr);
        !          28959:                        PZVAL_LOCK(*retval);
        !          28960:                }
        !          28961: 
        !          28962:                ZEND_VM_NEXT_OPCODE();
        !          28963:        }
        !          28964: 
        !          28965:        /* here we are sure we are dealing with an object */
        !          28966: 
        !          28967:        if (0) {
        !          28968:                MAKE_REAL_ZVAL_PTR(property);
        !          28969:        }
        !          28970: 
        !          28971:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          28972:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          28973:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          28974:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          28975: 
        !          28976:                        have_get_ptr = 1;
        !          28977:                        incdec_op(*zptr);
        !          28978:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          28979:                                *retval = *zptr;
        !          28980:                                PZVAL_LOCK(*retval);
        !          28981:                        }
        !          28982:                }
        !          28983:        }
        !          28984: 
        !          28985:        if (!have_get_ptr) {
        !          28986:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          28987:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          28988: 
        !          28989:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          28990:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          28991: 
        !          28992:                                if (Z_REFCOUNT_P(z) == 0) {
        !          28993:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          28994:                                        zval_dtor(z);
        !          28995:                                        FREE_ZVAL(z);
        !          28996:                                }
        !          28997:                                z = value;
        !          28998:                        }
        !          28999:                        Z_ADDREF_P(z);
        !          29000:                        SEPARATE_ZVAL_IF_NOT_REF(&z);
        !          29001:                        incdec_op(z);
        !          29002:                        *retval = z;
        !          29003:                        Z_OBJ_HT_P(object)->write_property(object, property, z TSRMLS_CC);
        !          29004:                        SELECTIVE_PZVAL_LOCK(*retval, &opline->result);
        !          29005:                        zval_ptr_dtor(&z);
        !          29006:                } else {
        !          29007:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          29008:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29009:                                *retval = EG(uninitialized_zval_ptr);
        !          29010:                                PZVAL_LOCK(*retval);
        !          29011:                        }
        !          29012:                }
        !          29013:        }
        !          29014: 
        !          29015:        if (0) {
        !          29016:                zval_ptr_dtor(&property);
        !          29017:        } else {
        !          29018: 
        !          29019:        }
        !          29020: 
        !          29021:        ZEND_VM_NEXT_OPCODE();
        !          29022: }
        !          29023: 
        !          29024: static int ZEND_FASTCALL  ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29025: {
        !          29026:        return zend_pre_incdec_property_helper_SPEC_CV_CV(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29027: }
        !          29028: 
        !          29029: static int ZEND_FASTCALL  ZEND_PRE_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29030: {
        !          29031:        return zend_pre_incdec_property_helper_SPEC_CV_CV(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29032: }
        !          29033: 
        !          29034: static int ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CV(incdec_t incdec_op, ZEND_OPCODE_HANDLER_ARGS)
        !          29035: {
        !          29036:        zend_op *opline = EX(opline);
        !          29037: 
        !          29038:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29039:        zval *object;
        !          29040:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29041:        zval *retval = &EX_T(opline->result.u.var).tmp_var;
        !          29042:        int have_get_ptr = 0;
        !          29043: 
        !          29044:        if (IS_CV == IS_VAR && !object_ptr) {
        !          29045:                zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets");
        !          29046:        }
        !          29047: 
        !          29048:        make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
        !          29049:        object = *object_ptr;
        !          29050: 
        !          29051:        if (Z_TYPE_P(object) != IS_OBJECT) {
        !          29052:                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          29053: 
        !          29054:                *retval = *EG(uninitialized_zval_ptr);
        !          29055: 
        !          29056:                ZEND_VM_NEXT_OPCODE();
        !          29057:        }
        !          29058: 
        !          29059:        /* here we are sure we are dealing with an object */
        !          29060: 
        !          29061:        if (0) {
        !          29062:                MAKE_REAL_ZVAL_PTR(property);
        !          29063:        }
        !          29064: 
        !          29065:        if (Z_OBJ_HT_P(object)->get_property_ptr_ptr) {
        !          29066:                zval **zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property TSRMLS_CC);
        !          29067:                if (zptr != NULL) {                     /* NULL means no success in getting PTR */
        !          29068:                        have_get_ptr = 1;
        !          29069:                        SEPARATE_ZVAL_IF_NOT_REF(zptr);
        !          29070: 
        !          29071:                        *retval = **zptr;
        !          29072:                        zendi_zval_copy_ctor(*retval);
        !          29073: 
        !          29074:                        incdec_op(*zptr);
        !          29075: 
        !          29076:                }
        !          29077:        }
        !          29078: 
        !          29079:        if (!have_get_ptr) {
        !          29080:                if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
        !          29081:                        zval *z = Z_OBJ_HT_P(object)->read_property(object, property, BP_VAR_R TSRMLS_CC);
        !          29082:                        zval *z_copy;
        !          29083: 
        !          29084:                        if (Z_TYPE_P(z) == IS_OBJECT && Z_OBJ_HT_P(z)->get) {
        !          29085:                                zval *value = Z_OBJ_HT_P(z)->get(z TSRMLS_CC);
        !          29086: 
        !          29087:                                if (Z_REFCOUNT_P(z) == 0) {
        !          29088:                                        GC_REMOVE_ZVAL_FROM_BUFFER(z);
        !          29089:                                        zval_dtor(z);
        !          29090:                                        FREE_ZVAL(z);
        !          29091:                                }
        !          29092:                                z = value;
        !          29093:                        }
        !          29094:                        *retval = *z;
        !          29095:                        zendi_zval_copy_ctor(*retval);
        !          29096:                        ALLOC_ZVAL(z_copy);
        !          29097:                        *z_copy = *z;
        !          29098:                        zendi_zval_copy_ctor(*z_copy);
        !          29099:                        INIT_PZVAL(z_copy);
        !          29100:                        incdec_op(z_copy);
        !          29101:                        Z_ADDREF_P(z);
        !          29102:                        Z_OBJ_HT_P(object)->write_property(object, property, z_copy TSRMLS_CC);
        !          29103:                        zval_ptr_dtor(&z_copy);
        !          29104:                        zval_ptr_dtor(&z);
        !          29105:                } else {
        !          29106:                        zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
        !          29107:                        *retval = *EG(uninitialized_zval_ptr);
        !          29108:                }
        !          29109:        }
        !          29110: 
        !          29111:        if (0) {
        !          29112:                zval_ptr_dtor(&property);
        !          29113:        } else {
        !          29114: 
        !          29115:        }
        !          29116: 
        !          29117:        ZEND_VM_NEXT_OPCODE();
        !          29118: }
        !          29119: 
        !          29120: static int ZEND_FASTCALL  ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29121: {
        !          29122:        return zend_post_incdec_property_helper_SPEC_CV_CV(increment_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29123: }
        !          29124: 
        !          29125: static int ZEND_FASTCALL  ZEND_POST_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29126: {
        !          29127:        return zend_post_incdec_property_helper_SPEC_CV_CV(decrement_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29128: }
        !          29129: 
        !          29130: static int ZEND_FASTCALL  ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29131: {
        !          29132:        zend_op *opline = EX(opline);
        !          29133: 
        !          29134:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29135:        zval **container;
        !          29136: 
        !          29137:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK &&
        !          29138:            IS_CV != IS_CV &&
        !          29139:            EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          29140:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          29141:        }
        !          29142:        container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29143:        if (IS_CV == IS_VAR && !container) {
        !          29144:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29145:        }
        !          29146:        zend_fetch_dimension_address_read(RETURN_VALUE_UNUSED(&opline->result)?NULL:&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          29147: 
        !          29148: 
        !          29149:        ZEND_VM_NEXT_OPCODE();
        !          29150: }
        !          29151: 
        !          29152: static int ZEND_FASTCALL  ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29153: {
        !          29154:        zend_op *opline = EX(opline);
        !          29155:        zend_free_op free_op1;
        !          29156:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29157:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29158: 
        !          29159:        if (IS_CV == IS_VAR && !container) {
        !          29160:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29161:        }
        !          29162:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          29163: 
        !          29164:        if (IS_CV == IS_VAR && 0 &&
        !          29165:            READY_TO_DESTROY(free_op1.var)) {
        !          29166:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          29167:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          29168:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          29169:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29170:                }
        !          29171:        }
        !          29172: 
        !          29173:        /* We are going to assign the result by reference */
        !          29174:        if (opline->extended_value && EX_T(opline->result.u.var).var.ptr_ptr) {
        !          29175:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29176:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29177:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29178:        }
        !          29179: 
        !          29180:        ZEND_VM_NEXT_OPCODE();
        !          29181: }
        !          29182: 
        !          29183: static int ZEND_FASTCALL  ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29184: {
        !          29185:        zend_op *opline = EX(opline);
        !          29186:        zend_free_op free_op1;
        !          29187:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29188:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          29189: 
        !          29190:        if (IS_CV == IS_VAR && !container) {
        !          29191:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29192:        }
        !          29193:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_RW TSRMLS_CC);
        !          29194: 
        !          29195:        if (IS_CV == IS_VAR && 0 &&
        !          29196:            READY_TO_DESTROY(free_op1.var)) {
        !          29197:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          29198:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          29199:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          29200:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29201:                }
        !          29202:        }
        !          29203: 
        !          29204:        ZEND_VM_NEXT_OPCODE();
        !          29205: }
        !          29206: 
        !          29207: static int ZEND_FASTCALL  ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29208: {
        !          29209:        zend_op *opline = EX(opline);
        !          29210: 
        !          29211:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29212:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          29213: 
        !          29214:        if (IS_CV == IS_VAR && !container) {
        !          29215:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29216:        }
        !          29217:        zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_IS TSRMLS_CC);
        !          29218: 
        !          29219: 
        !          29220:        ZEND_VM_NEXT_OPCODE();
        !          29221: }
        !          29222: 
        !          29223: static int ZEND_FASTCALL  ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29224: {
        !          29225:        zend_op *opline = EX(opline);
        !          29226:        zend_free_op free_op1;
        !          29227:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29228:        zval **container;
        !          29229: 
        !          29230:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          29231:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29232:                if (IS_CV == IS_VAR && !container) {
        !          29233:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29234:                }
        !          29235:                zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_W TSRMLS_CC);
        !          29236:                if (IS_CV == IS_VAR && 0 &&
        !          29237:                    READY_TO_DESTROY(free_op1.var)) {
        !          29238:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          29239:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          29240:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          29241:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29242:                        }
        !          29243:                }
        !          29244:        } else {
        !          29245:                if (IS_CV == IS_UNUSED) {
        !          29246:                        zend_error_noreturn(E_ERROR, "Cannot use [] for reading");
        !          29247:                }
        !          29248:                container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29249:                if (IS_CV == IS_VAR && !container) {
        !          29250:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29251:                }
        !          29252:                zend_fetch_dimension_address_read(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_R TSRMLS_CC);
        !          29253:        }
        !          29254: 
        !          29255: 
        !          29256:        ZEND_VM_NEXT_OPCODE();
        !          29257: }
        !          29258: 
        !          29259: static int ZEND_FASTCALL  ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29260: {
        !          29261:        zend_op *opline = EX(opline);
        !          29262:        zend_free_op free_op1;
        !          29263:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          29264:        zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29265: 
        !          29266:        /* Not needed in DIM_UNSET
        !          29267:        if (opline->extended_value == ZEND_FETCH_ADD_LOCK) {
        !          29268:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          29269:        }
        !          29270:        */
        !          29271:        if (IS_CV == IS_CV) {
        !          29272:                if (container != &EG(uninitialized_zval_ptr)) {
        !          29273:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          29274:                }
        !          29275:        }
        !          29276:        if (IS_CV == IS_VAR && !container) {
        !          29277:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29278:        }
        !          29279:        zend_fetch_dimension_address(&EX_T(opline->result.u.var), container, dim, 0, BP_VAR_UNSET TSRMLS_CC);
        !          29280: 
        !          29281:        if (IS_CV == IS_VAR && 0 &&
        !          29282:            READY_TO_DESTROY(free_op1.var)) {
        !          29283:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          29284:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          29285:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          29286:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29287:                }
        !          29288:        }
        !          29289: 
        !          29290:        if (EX_T(opline->result.u.var).var.ptr_ptr == NULL) {
        !          29291:                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          29292:        } else {
        !          29293:                zend_free_op free_res;
        !          29294: 
        !          29295:                PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          29296:                if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          29297:                        SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29298:                }
        !          29299:                PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          29300:                FREE_OP_VAR_PTR(free_res);
        !          29301:        }
        !          29302:        ZEND_VM_NEXT_OPCODE();
        !          29303: }
        !          29304: 
        !          29305: static int ZEND_FASTCALL zend_fetch_property_address_read_helper_SPEC_CV_CV(int type, ZEND_OPCODE_HANDLER_ARGS)
        !          29306: {
        !          29307:        zend_op *opline = EX(opline);
        !          29308: 
        !          29309:        zval *container = _get_zval_ptr_cv(&opline->op1, EX(Ts), type TSRMLS_CC);
        !          29310: 
        !          29311:        zval *offset  = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29312: 
        !          29313:        if (Z_TYPE_P(container) != IS_OBJECT || !Z_OBJ_HT_P(container)->read_property) {
        !          29314:                if (type != BP_VAR_IS) {
        !          29315:                        zend_error(E_NOTICE, "Trying to get property of non-object");
        !          29316:                }
        !          29317:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29318:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          29319:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          29320:                }
        !          29321: 
        !          29322:        } else {
        !          29323:                zval *retval;
        !          29324: 
        !          29325:                if (0) {
        !          29326:                        MAKE_REAL_ZVAL_PTR(offset);
        !          29327:                }
        !          29328: 
        !          29329:                /* here we are sure we are dealing with an object */
        !          29330:                retval = Z_OBJ_HT_P(container)->read_property(container, offset, type TSRMLS_CC);
        !          29331: 
        !          29332:                if (RETURN_VALUE_UNUSED(&opline->result)) {
        !          29333:                        if (Z_REFCOUNT_P(retval) == 0) {
        !          29334:                                GC_REMOVE_ZVAL_FROM_BUFFER(retval);
        !          29335:                                zval_dtor(retval);
        !          29336:                                FREE_ZVAL(retval);
        !          29337:                        }
        !          29338:                } else {
        !          29339:                        AI_SET_PTR(EX_T(opline->result.u.var).var, retval);
        !          29340:                        PZVAL_LOCK(retval);
        !          29341:                }
        !          29342: 
        !          29343:                if (0) {
        !          29344:                        zval_ptr_dtor(&offset);
        !          29345:                } else {
        !          29346: 
        !          29347:                }
        !          29348:        }
        !          29349: 
        !          29350:        ZEND_VM_NEXT_OPCODE();
        !          29351: }
        !          29352: 
        !          29353: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29354: {
        !          29355:        return zend_fetch_property_address_read_helper_SPEC_CV_CV(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29356: }
        !          29357: 
        !          29358: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29359: {
        !          29360:        zend_op *opline = EX(opline);
        !          29361:        zend_free_op free_op1;
        !          29362:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29363:        zval **container;
        !          29364: 
        !          29365:        if (IS_CV == IS_VAR && (opline->extended_value & ZEND_FETCH_ADD_LOCK)) {
        !          29366:                PZVAL_LOCK(*EX_T(opline->op1.u.var).var.ptr_ptr);
        !          29367:                EX_T(opline->op1.u.var).var.ptr = *EX_T(opline->op1.u.var).var.ptr_ptr;
        !          29368:        }
        !          29369: 
        !          29370:        if (0) {
        !          29371:                MAKE_REAL_ZVAL_PTR(property);
        !          29372:        }
        !          29373:        container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29374:        if (IS_CV == IS_VAR && !container) {
        !          29375:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          29376:        }
        !          29377:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          29378:        if (0) {
        !          29379:                zval_ptr_dtor(&property);
        !          29380:        } else {
        !          29381: 
        !          29382:        }
        !          29383:        if (IS_CV == IS_VAR && 0 &&
        !          29384:            READY_TO_DESTROY(free_op1.var)) {
        !          29385:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          29386:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          29387:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          29388:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29389:                }
        !          29390:        }
        !          29391: 
        !          29392:        /* We are going to assign the result by reference */
        !          29393:        if (opline->extended_value & ZEND_FETCH_MAKE_REF) {
        !          29394:                Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29395:                SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29396:                Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29397:        }
        !          29398: 
        !          29399:        ZEND_VM_NEXT_OPCODE();
        !          29400: }
        !          29401: 
        !          29402: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29403: {
        !          29404:        zend_op *opline = EX(opline);
        !          29405:        zend_free_op free_op1;
        !          29406:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29407:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_RW TSRMLS_CC);
        !          29408: 
        !          29409:        if (0) {
        !          29410:                MAKE_REAL_ZVAL_PTR(property);
        !          29411:        }
        !          29412:        if (IS_CV == IS_VAR && !container) {
        !          29413:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          29414:        }
        !          29415:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_RW TSRMLS_CC);
        !          29416:        if (0) {
        !          29417:                zval_ptr_dtor(&property);
        !          29418:        } else {
        !          29419: 
        !          29420:        }
        !          29421:        if (IS_CV == IS_VAR && 0 &&
        !          29422:            READY_TO_DESTROY(free_op1.var)) {
        !          29423:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          29424:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          29425:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          29426:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29427:                }
        !          29428:        }
        !          29429: 
        !          29430:        ZEND_VM_NEXT_OPCODE();
        !          29431: }
        !          29432: 
        !          29433: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29434: {
        !          29435:        return zend_fetch_property_address_read_helper_SPEC_CV_CV(BP_VAR_IS, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29436: }
        !          29437: 
        !          29438: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29439: {
        !          29440:        zend_op *opline = EX(opline);
        !          29441: 
        !          29442:        if (ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->extended_value)) {
        !          29443:                /* Behave like FETCH_OBJ_W */
        !          29444:                zend_free_op free_op1;
        !          29445:                zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29446:                zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29447: 
        !          29448:                if (0) {
        !          29449:                        MAKE_REAL_ZVAL_PTR(property);
        !          29450:                }
        !          29451:                if (IS_CV == IS_VAR && !container) {
        !          29452:                        zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          29453:                }
        !          29454:                zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_W TSRMLS_CC);
        !          29455:                if (0) {
        !          29456:                        zval_ptr_dtor(&property);
        !          29457:                } else {
        !          29458: 
        !          29459:                }
        !          29460:                if (IS_CV == IS_VAR && 0 &&
        !          29461:                    READY_TO_DESTROY(free_op1.var)) {
        !          29462:                        AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          29463:                        if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          29464:                            Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          29465:                                SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29466:                        }
        !          29467:                }
        !          29468: 
        !          29469:                ZEND_VM_NEXT_OPCODE();
        !          29470:        } else {
        !          29471:                return zend_fetch_property_address_read_helper_SPEC_CV_CV(BP_VAR_R, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29472:        }
        !          29473: }
        !          29474: 
        !          29475: static int ZEND_FASTCALL  ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29476: {
        !          29477:        zend_op *opline = EX(opline);
        !          29478:        zend_free_op free_op1, free_res;
        !          29479:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29480:        zval *property = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29481: 
        !          29482:        if (IS_CV == IS_CV) {
        !          29483:                if (container != &EG(uninitialized_zval_ptr)) {
        !          29484:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          29485:                }
        !          29486:        }
        !          29487:        if (0) {
        !          29488:                MAKE_REAL_ZVAL_PTR(property);
        !          29489:        }
        !          29490:        if (IS_CV == IS_VAR && !container) {
        !          29491:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an object");
        !          29492:        }
        !          29493:        zend_fetch_property_address(&EX_T(opline->result.u.var), container, property, BP_VAR_UNSET TSRMLS_CC);
        !          29494:        if (0) {
        !          29495:                zval_ptr_dtor(&property);
        !          29496:        } else {
        !          29497: 
        !          29498:        }
        !          29499:        if (IS_CV == IS_VAR && 0 &&
        !          29500:            READY_TO_DESTROY(free_op1.var)) {
        !          29501:                AI_USE_PTR(EX_T(opline->result.u.var).var);
        !          29502:                if (!PZVAL_IS_REF(*EX_T(opline->result.u.var).var.ptr_ptr) &&
        !          29503:                    Z_REFCOUNT_PP(EX_T(opline->result.u.var).var.ptr_ptr) > 2) {
        !          29504:                        SEPARATE_ZVAL(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29505:                }
        !          29506:        }
        !          29507: 
        !          29508:        PZVAL_UNLOCK(*EX_T(opline->result.u.var).var.ptr_ptr, &free_res);
        !          29509:        if (EX_T(opline->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
        !          29510:                SEPARATE_ZVAL_IF_NOT_REF(EX_T(opline->result.u.var).var.ptr_ptr);
        !          29511:        }
        !          29512:        PZVAL_LOCK(*EX_T(opline->result.u.var).var.ptr_ptr);
        !          29513:        FREE_OP_VAR_PTR(free_res);
        !          29514:        ZEND_VM_NEXT_OPCODE();
        !          29515: }
        !          29516: 
        !          29517: static int ZEND_FASTCALL  ZEND_ASSIGN_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29518: {
        !          29519:        zend_op *opline = EX(opline);
        !          29520:        zend_op *op_data = opline+1;
        !          29521: 
        !          29522:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29523:        zval *property_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29524: 
        !          29525:        if (0) {
        !          29526:                MAKE_REAL_ZVAL_PTR(property_name);
        !          29527:        }
        !          29528:        if (IS_CV == IS_VAR && !object_ptr) {
        !          29529:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29530:        }
        !          29531:        zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_OBJ TSRMLS_CC);
        !          29532:        if (0) {
        !          29533:                zval_ptr_dtor(&property_name);
        !          29534:        } else {
        !          29535: 
        !          29536:        }
        !          29537: 
        !          29538:        /* assign_obj has two opcodes! */
        !          29539:        ZEND_VM_INC_OPCODE();
        !          29540:        ZEND_VM_NEXT_OPCODE();
        !          29541: }
        !          29542: 
        !          29543: static int ZEND_FASTCALL  ZEND_ASSIGN_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29544: {
        !          29545:        zend_op *opline = EX(opline);
        !          29546:        zend_op *op_data = opline+1;
        !          29547: 
        !          29548:        zval **object_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29549: 
        !          29550:        if (IS_CV == IS_VAR && !object_ptr) {
        !          29551:                zend_error_noreturn(E_ERROR, "Cannot use string offset as an array");
        !          29552:        }
        !          29553:        if (Z_TYPE_PP(object_ptr) == IS_OBJECT) {
        !          29554: 
        !          29555:                zval *property_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29556: 
        !          29557:                if (0) {
        !          29558:                        MAKE_REAL_ZVAL_PTR(property_name);
        !          29559:                }
        !          29560:                zend_assign_to_object(&opline->result, object_ptr, property_name, &op_data->op1, EX(Ts), ZEND_ASSIGN_DIM TSRMLS_CC);
        !          29561:                if (0) {
        !          29562:                        zval_ptr_dtor(&property_name);
        !          29563:                } else {
        !          29564: 
        !          29565:                }
        !          29566:        } else {
        !          29567:                zend_free_op free_op_data1, free_op_data2;
        !          29568:                zval *value;
        !          29569:                zval *dim = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29570:                zval **variable_ptr_ptr;
        !          29571: 
        !          29572:                zend_fetch_dimension_address(&EX_T(op_data->op2.u.var), object_ptr, dim, 0, BP_VAR_W TSRMLS_CC);
        !          29573: 
        !          29574:                value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
        !          29575:                variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
        !          29576:                if (!variable_ptr_ptr) {
        !          29577:                        if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
        !          29578:                                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29579:                                        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          29580:                                        ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          29581:                                        INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          29582:                                        ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
        !          29583:                                }
        !          29584:                        } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29585:                                AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          29586:                                PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          29587:                        }
        !          29588:                } else {
        !          29589:                        value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
        !          29590:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29591:                                AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          29592:                                PZVAL_LOCK(value);
        !          29593:                        }
        !          29594:                }
        !          29595:                FREE_OP_VAR_PTR(free_op_data2);
        !          29596:                FREE_OP_IF_VAR(free_op_data1);
        !          29597:        }
        !          29598: 
        !          29599:        /* assign_dim has two opcodes! */
        !          29600:        ZEND_VM_INC_OPCODE();
        !          29601:        ZEND_VM_NEXT_OPCODE();
        !          29602: }
        !          29603: 
        !          29604: static int ZEND_FASTCALL  ZEND_ASSIGN_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29605: {
        !          29606:        zend_op *opline = EX(opline);
        !          29607: 
        !          29608:        zval *value = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29609:        zval **variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29610: 
        !          29611:        if (IS_CV == IS_VAR && !variable_ptr_ptr) {
        !          29612:                if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CV TSRMLS_CC)) {
        !          29613:                        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29614:                                EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        !          29615:                                ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
        !          29616:                                INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
        !          29617:                                ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
        !          29618:                        }
        !          29619:                } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29620:                        AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
        !          29621:                        PZVAL_LOCK(EG(uninitialized_zval_ptr));
        !          29622:                }
        !          29623:        } else {
        !          29624:                value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
        !          29625:                if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29626:                        AI_SET_PTR(EX_T(opline->result.u.var).var, value);
        !          29627:                        PZVAL_LOCK(value);
        !          29628:                }
        !          29629:        }
        !          29630: 
        !          29631:        /* zend_assign_to_variable() always takes care of op2, never free it! */
        !          29632: 
        !          29633:        ZEND_VM_NEXT_OPCODE();
        !          29634: }
        !          29635: 
        !          29636: static int ZEND_FASTCALL  ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29637: {
        !          29638:        zend_op *opline = EX(opline);
        !          29639:        zend_free_op free_op2;
        !          29640:        zval **variable_ptr_ptr;
        !          29641:        zval **value_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op2, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29642: 
        !          29643:        if (IS_CV == IS_VAR &&
        !          29644:            value_ptr_ptr &&
        !          29645:            !Z_ISREF_PP(value_ptr_ptr) &&
        !          29646:            opline->extended_value == ZEND_RETURNS_FUNCTION &&
        !          29647:            !EX_T(opline->op2.u.var).var.fcall_returned_reference) {
        !          29648:                if (free_op2.var == NULL) {
        !          29649:                        PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
        !          29650:                }
        !          29651:                zend_error(E_STRICT, "Only variables should be assigned by reference");
        !          29652:                if (UNEXPECTED(EG(exception) != NULL)) {
        !          29653: 
        !          29654:                        ZEND_VM_NEXT_OPCODE();
        !          29655:                }
        !          29656:                return ZEND_ASSIGN_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29657:        } else if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
        !          29658:                PZVAL_LOCK(*value_ptr_ptr);
        !          29659:        }
        !          29660:        if (IS_CV == IS_VAR && EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
        !          29661:                zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
        !          29662:        }
        !          29663: 
        !          29664:        variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29665:        if ((IS_CV == IS_VAR && !value_ptr_ptr) ||
        !          29666:            (IS_CV == IS_VAR && !variable_ptr_ptr)) {
        !          29667:                zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets nor overloaded objects");
        !          29668:        }
        !          29669:        zend_assign_to_variable_reference(variable_ptr_ptr, value_ptr_ptr TSRMLS_CC);
        !          29670: 
        !          29671:        if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
        !          29672:                Z_DELREF_PP(variable_ptr_ptr);
        !          29673:        }
        !          29674: 
        !          29675:        if (!RETURN_VALUE_UNUSED(&opline->result)) {
        !          29676:                AI_SET_PTR(EX_T(opline->result.u.var).var, *variable_ptr_ptr);
        !          29677:                PZVAL_LOCK(*variable_ptr_ptr);
        !          29678:        }
        !          29679: 
        !          29680: 
        !          29681:        ZEND_VM_NEXT_OPCODE();
        !          29682: }
        !          29683: 
        !          29684: static int ZEND_FASTCALL  ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29685: {
        !          29686:        zend_op *opline = EX(opline);
        !          29687:        zval *function_name;
        !          29688:        char *function_name_strval;
        !          29689:        int function_name_strlen;
        !          29690: 
        !          29691: 
        !          29692:        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
        !          29693: 
        !          29694:        function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29695: 
        !          29696:        if (Z_TYPE_P(function_name)!=IS_STRING) {
        !          29697:                zend_error_noreturn(E_ERROR, "Method name must be a string");
        !          29698:        }
        !          29699: 
        !          29700:        function_name_strval = Z_STRVAL_P(function_name);
        !          29701:        function_name_strlen = Z_STRLEN_P(function_name);
        !          29702: 
        !          29703:        EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29704: 
        !          29705:        if (EX(object) && Z_TYPE_P(EX(object)) == IS_OBJECT) {
        !          29706:                if (Z_OBJ_HT_P(EX(object))->get_method == NULL) {
        !          29707:                        zend_error_noreturn(E_ERROR, "Object does not support method calls");
        !          29708:                }
        !          29709: 
        !          29710:                /* First, locate the function. */
        !          29711:                EX(fbc) = Z_OBJ_HT_P(EX(object))->get_method(&EX(object), function_name_strval, function_name_strlen TSRMLS_CC);
        !          29712:                if (!EX(fbc)) {
        !          29713:                        zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval);
        !          29714:                }
        !          29715: 
        !          29716:                EX(called_scope) = Z_OBJCE_P(EX(object));
        !          29717:        } else {
        !          29718:                zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval);
        !          29719:        }
        !          29720: 
        !          29721:        if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) {
        !          29722:                EX(object) = NULL;
        !          29723:        } else {
        !          29724:                if (!PZVAL_IS_REF(EX(object))) {
        !          29725:                        Z_ADDREF_P(EX(object)); /* For $this pointer */
        !          29726:                } else {
        !          29727:                        zval *this_ptr;
        !          29728:                        ALLOC_ZVAL(this_ptr);
        !          29729:                        INIT_PZVAL_COPY(this_ptr, EX(object));
        !          29730:                        zval_copy_ctor(this_ptr);
        !          29731:                        EX(object) = this_ptr;
        !          29732:                }
        !          29733:        }
        !          29734: 
        !          29735: 
        !          29736:        ZEND_VM_NEXT_OPCODE();
        !          29737: }
        !          29738: 
        !          29739: static int ZEND_FASTCALL  ZEND_CASE_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29740: {
        !          29741:        zend_op *opline = EX(opline);
        !          29742:        int switch_expr_is_overloaded=0;
        !          29743: 
        !          29744: 
        !          29745:        if (IS_CV==IS_VAR) {
        !          29746:                if (EX_T(opline->op1.u.var).var.ptr_ptr) {
        !          29747:                        PZVAL_LOCK(EX_T(opline->op1.u.var).var.ptr);
        !          29748:                } else {
        !          29749:                        switch_expr_is_overloaded = 1;
        !          29750:                        Z_ADDREF_P(EX_T(opline->op1.u.var).str_offset.str);
        !          29751:                }
        !          29752:        }
        !          29753:        is_equal_function(&EX_T(opline->result.u.var).tmp_var,
        !          29754:                                 _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
        !          29755:                                 _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
        !          29756: 
        !          29757:        if (switch_expr_is_overloaded) {
        !          29758:                /* We only free op1 if this is a string offset,
        !          29759:                 * Since if it is a TMP_VAR, it'll be reused by
        !          29760:                 * other CASE opcodes (whereas string offsets
        !          29761:                 * are allocated at each get_zval_ptr())
        !          29762:                 */
        !          29763: 
        !          29764:                EX_T(opline->op1.u.var).var.ptr_ptr = NULL;
        !          29765:                EX_T(opline->op1.u.var).var.ptr = NULL;
        !          29766:        }
        !          29767:        ZEND_VM_NEXT_OPCODE();
        !          29768: }
        !          29769: 
        !          29770: static int ZEND_FASTCALL  ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29771: {
        !          29772:        zend_op *opline = EX(opline);
        !          29773: 
        !          29774:        zval *array_ptr = &EX_T(opline->result.u.var).tmp_var;
        !          29775:        zval *expr_ptr;
        !          29776:        zval *offset=_get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29777: 
        !          29778: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          29779:        zval **expr_ptr_ptr = NULL;
        !          29780: 
        !          29781:        if (opline->extended_value) {
        !          29782:                expr_ptr_ptr=_get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
        !          29783:                expr_ptr = *expr_ptr_ptr;
        !          29784:        } else {
        !          29785:                expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29786:        }
        !          29787: #else
        !          29788:        expr_ptr=_get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29789: #endif
        !          29790: 
        !          29791:        if (0) { /* temporary variable */
        !          29792:                zval *new_expr;
        !          29793: 
        !          29794:                ALLOC_ZVAL(new_expr);
        !          29795:                INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          29796:                expr_ptr = new_expr;
        !          29797:        } else {
        !          29798: #if 0 || IS_CV == IS_VAR || IS_CV == IS_CV
        !          29799:                if (opline->extended_value) {
        !          29800:                        SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr_ptr);
        !          29801:                        expr_ptr = *expr_ptr_ptr;
        !          29802:                        Z_ADDREF_P(expr_ptr);
        !          29803:                } else
        !          29804: #endif
        !          29805:                if (IS_CV == IS_CONST || PZVAL_IS_REF(expr_ptr)) {
        !          29806:                        zval *new_expr;
        !          29807: 
        !          29808:                        ALLOC_ZVAL(new_expr);
        !          29809:                        INIT_PZVAL_COPY(new_expr, expr_ptr);
        !          29810:                        expr_ptr = new_expr;
        !          29811:                        zendi_zval_copy_ctor(*expr_ptr);
        !          29812:                } else {
        !          29813:                        Z_ADDREF_P(expr_ptr);
        !          29814:                }
        !          29815:        }
        !          29816:        if (offset) {
        !          29817:                switch (Z_TYPE_P(offset)) {
        !          29818:                        case IS_DOUBLE:
        !          29819:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), zend_dval_to_lval(Z_DVAL_P(offset)), &expr_ptr, sizeof(zval *), NULL);
        !          29820:                                break;
        !          29821:                        case IS_LONG:
        !          29822:                        case IS_BOOL:
        !          29823:                                zend_hash_index_update(Z_ARRVAL_P(array_ptr), Z_LVAL_P(offset), &expr_ptr, sizeof(zval *), NULL);
        !          29824:                                break;
        !          29825:                        case IS_STRING:
        !          29826:                                zend_symtable_update(Z_ARRVAL_P(array_ptr), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, &expr_ptr, sizeof(zval *), NULL);
        !          29827:                                break;
        !          29828:                        case IS_NULL:
        !          29829:                                zend_hash_update(Z_ARRVAL_P(array_ptr), "", sizeof(""), &expr_ptr, sizeof(zval *), NULL);
        !          29830:                                break;
        !          29831:                        default:
        !          29832:                                zend_error(E_WARNING, "Illegal offset type");
        !          29833:                                zval_ptr_dtor(&expr_ptr);
        !          29834:                                /* do nothing */
        !          29835:                                break;
        !          29836:                }
        !          29837: 
        !          29838:        } else {
        !          29839:                zend_hash_next_index_insert(Z_ARRVAL_P(array_ptr), &expr_ptr, sizeof(zval *), NULL);
        !          29840:        }
        !          29841:        if (opline->extended_value) {
        !          29842: 
        !          29843:        } else {
        !          29844: 
        !          29845:        }
        !          29846:        ZEND_VM_NEXT_OPCODE();
        !          29847: }
        !          29848: 
        !          29849: static int ZEND_FASTCALL  ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29850: {
        !          29851:        zend_op *opline = EX(opline);
        !          29852: 
        !          29853:        array_init(&EX_T(opline->result.u.var).tmp_var);
        !          29854:        if (IS_CV == IS_UNUSED) {
        !          29855:                ZEND_VM_NEXT_OPCODE();
        !          29856: #if 0 || IS_CV != IS_UNUSED
        !          29857:        } else {
        !          29858:                return ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          29859: #endif
        !          29860:        }
        !          29861: }
        !          29862: 
        !          29863: static int ZEND_FASTCALL  ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29864: {
        !          29865:        zend_op *opline = EX(opline);
        !          29866: 
        !          29867:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          29868:        zval *offset;
        !          29869: 
        !          29870:        if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          29871:                SEPARATE_ZVAL_IF_NOT_REF(container);
        !          29872:        }
        !          29873:        offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29874: 
        !          29875:        if (IS_CV != IS_VAR || container) {
        !          29876:                switch (Z_TYPE_PP(container)) {
        !          29877:                        case IS_ARRAY: {
        !          29878:                                HashTable *ht = Z_ARRVAL_PP(container);
        !          29879: 
        !          29880:                                switch (Z_TYPE_P(offset)) {
        !          29881:                                        case IS_DOUBLE:
        !          29882:                                                zend_hash_index_del(ht, zend_dval_to_lval(Z_DVAL_P(offset)));
        !          29883:                                                break;
        !          29884:                                        case IS_RESOURCE:
        !          29885:                                        case IS_BOOL:
        !          29886:                                        case IS_LONG:
        !          29887:                                                zend_hash_index_del(ht, Z_LVAL_P(offset));
        !          29888:                                                break;
        !          29889:                                        case IS_STRING:
        !          29890:                                                if (IS_CV == IS_CV || IS_CV == IS_VAR) {
        !          29891:                                                        Z_ADDREF_P(offset);
        !          29892:                                                }
        !          29893:                                                if (zend_symtable_del(ht, offset->value.str.val, offset->value.str.len+1) == SUCCESS &&
        !          29894:                                            ht == &EG(symbol_table)) {
        !          29895:                                                        zend_execute_data *ex;
        !          29896:                                                        ulong hash_value = zend_inline_hash_func(offset->value.str.val, offset->value.str.len+1);
        !          29897: 
        !          29898:                                                        for (ex = execute_data; ex; ex = ex->prev_execute_data) {
        !          29899:                                                                if (ex->op_array && ex->symbol_table == ht) {
        !          29900:                                                                        int i;
        !          29901: 
        !          29902:                                                                        for (i = 0; i < ex->op_array->last_var; i++) {
        !          29903:                                                                                if (ex->op_array->vars[i].hash_value == hash_value &&
        !          29904:                                                                                    ex->op_array->vars[i].name_len == offset->value.str.len &&
        !          29905:                                                                                    !memcmp(ex->op_array->vars[i].name, offset->value.str.val, offset->value.str.len)) {
        !          29906:                                                                                        ex->CVs[i] = NULL;
        !          29907:                                                                                        break;
        !          29908:                                                                                }
        !          29909:                                                                        }
        !          29910:                                                                }
        !          29911:                                                        }
        !          29912:                                                }
        !          29913:                                                if (IS_CV == IS_CV || IS_CV == IS_VAR) {
        !          29914:                                                        zval_ptr_dtor(&offset);
        !          29915:                                                }
        !          29916:                                                break;
        !          29917:                                        case IS_NULL:
        !          29918:                                                zend_hash_del(ht, "", sizeof(""));
        !          29919:                                                break;
        !          29920:                                        default:
        !          29921:                                                zend_error(E_WARNING, "Illegal offset type in unset");
        !          29922:                                                break;
        !          29923:                                }
        !          29924: 
        !          29925:                                break;
        !          29926:                        }
        !          29927:                        case IS_OBJECT:
        !          29928:                                if (!Z_OBJ_HT_P(*container)->unset_dimension) {
        !          29929:                                        zend_error_noreturn(E_ERROR, "Cannot use object as array");
        !          29930:                                }
        !          29931:                                if (0) {
        !          29932:                                        MAKE_REAL_ZVAL_PTR(offset);
        !          29933:                                }
        !          29934:                                Z_OBJ_HT_P(*container)->unset_dimension(*container, offset TSRMLS_CC);
        !          29935:                                if (0) {
        !          29936:                                        zval_ptr_dtor(&offset);
        !          29937:                                } else {
        !          29938: 
        !          29939:                                }
        !          29940:                                break;
        !          29941:                        case IS_STRING:
        !          29942:                                zend_error_noreturn(E_ERROR, "Cannot unset string offsets");
        !          29943:                                ZEND_VM_CONTINUE(); /* bailed out before */
        !          29944:                        default:
        !          29945: 
        !          29946:                                break;
        !          29947:                }
        !          29948:        } else {
        !          29949: 
        !          29950:        }
        !          29951: 
        !          29952:        ZEND_VM_NEXT_OPCODE();
        !          29953: }
        !          29954: 
        !          29955: static int ZEND_FASTCALL  ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          29956: {
        !          29957:        zend_op *opline = EX(opline);
        !          29958: 
        !          29959:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_UNSET TSRMLS_CC);
        !          29960:        zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          29961: 
        !          29962:        if (IS_CV != IS_VAR || container) {
        !          29963:                if (IS_CV == IS_CV && container != &EG(uninitialized_zval_ptr)) {
        !          29964:                        SEPARATE_ZVAL_IF_NOT_REF(container);
        !          29965:                }
        !          29966:                if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          29967:                        if (0) {
        !          29968:                                MAKE_REAL_ZVAL_PTR(offset);
        !          29969:                        }
        !          29970:                        if (Z_OBJ_HT_P(*container)->unset_property) {
        !          29971:                                Z_OBJ_HT_P(*container)->unset_property(*container, offset TSRMLS_CC);
        !          29972:                        } else {
        !          29973:                                zend_error(E_NOTICE, "Trying to unset property of non-object");
        !          29974:                        }
        !          29975:                        if (0) {
        !          29976:                                zval_ptr_dtor(&offset);
        !          29977:                        } else {
        !          29978: 
        !          29979:                        }
        !          29980:                } else {
        !          29981: 
        !          29982:                }
        !          29983:        } else {
        !          29984: 
        !          29985:        }
        !          29986: 
        !          29987:        ZEND_VM_NEXT_OPCODE();
        !          29988: }
        !          29989: 
        !          29990: static int ZEND_FASTCALL zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CV(int prop_dim, ZEND_OPCODE_HANDLER_ARGS)
        !          29991: {
        !          29992:        zend_op *opline = EX(opline);
        !          29993: 
        !          29994:        zval **container = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_IS TSRMLS_CC);
        !          29995:        zval **value = NULL;
        !          29996:        int result = 0;
        !          29997: 
        !          29998:        if (IS_CV != IS_VAR || container) {
        !          29999: 
        !          30000:                zval *offset = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC);
        !          30001: 
        !          30002:                if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) {
        !          30003:                        HashTable *ht;
        !          30004:                        int isset = 0;
        !          30005: 
        !          30006:                        ht = Z_ARRVAL_PP(container);
        !          30007: 
        !          30008:                        switch (Z_TYPE_P(offset)) {
        !          30009:                                case IS_DOUBLE:
        !          30010:                                        if (zend_hash_index_find(ht, zend_dval_to_lval(Z_DVAL_P(offset)), (void **) &value) == SUCCESS) {
        !          30011:                                                isset = 1;
        !          30012:                                        }
        !          30013:                                        break;
        !          30014:                                case IS_RESOURCE:
        !          30015:                                case IS_BOOL:
        !          30016:                                case IS_LONG:
        !          30017:                                        if (zend_hash_index_find(ht, Z_LVAL_P(offset), (void **) &value) == SUCCESS) {
        !          30018:                                                isset = 1;
        !          30019:                                        }
        !          30020:                                        break;
        !          30021:                                case IS_STRING:
        !          30022:                                        if (zend_symtable_find(ht, offset->value.str.val, offset->value.str.len+1, (void **) &value) == SUCCESS) {
        !          30023:                                                isset = 1;
        !          30024:                                        }
        !          30025:                                        break;
        !          30026:                                case IS_NULL:
        !          30027:                                        if (zend_hash_find(ht, "", sizeof(""), (void **) &value) == SUCCESS) {
        !          30028:                                                isset = 1;
        !          30029:                                        }
        !          30030:                                        break;
        !          30031:                                default:
        !          30032:                                        zend_error(E_WARNING, "Illegal offset type in isset or empty");
        !          30033: 
        !          30034:                                        break;
        !          30035:                        }
        !          30036: 
        !          30037:                        switch (opline->extended_value) {
        !          30038:                                case ZEND_ISSET:
        !          30039:                                        if (isset && Z_TYPE_PP(value) == IS_NULL) {
        !          30040:                                                result = 0;
        !          30041:                                        } else {
        !          30042:                                                result = isset;
        !          30043:                                        }
        !          30044:                                        break;
        !          30045:                                case ZEND_ISEMPTY:
        !          30046:                                        if (!isset || !i_zend_is_true(*value)) {
        !          30047:                                                result = 0;
        !          30048:                                        } else {
        !          30049:                                                result = 1;
        !          30050:                                        }
        !          30051:                                        break;
        !          30052:                        }
        !          30053: 
        !          30054:                } else if (Z_TYPE_PP(container) == IS_OBJECT) {
        !          30055:                        if (0) {
        !          30056:                                MAKE_REAL_ZVAL_PTR(offset);
        !          30057:                        }
        !          30058:                        if (prop_dim) {
        !          30059:                                if (Z_OBJ_HT_P(*container)->has_property) {
        !          30060:                                        result = Z_OBJ_HT_P(*container)->has_property(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          30061:                                } else {
        !          30062:                                        zend_error(E_NOTICE, "Trying to check property of non-object");
        !          30063:                                        result = 0;
        !          30064:                                }
        !          30065:                        } else {
        !          30066:                                if (Z_OBJ_HT_P(*container)->has_dimension) {
        !          30067:                                        result = Z_OBJ_HT_P(*container)->has_dimension(*container, offset, (opline->extended_value == ZEND_ISEMPTY) TSRMLS_CC);
        !          30068:                                } else {
        !          30069:                                        zend_error(E_NOTICE, "Trying to check element of non-array");
        !          30070:                                        result = 0;
        !          30071:                                }
        !          30072:                        }
        !          30073:                        if (0) {
        !          30074:                                zval_ptr_dtor(&offset);
        !          30075:                        } else {
        !          30076: 
        !          30077:                        }
        !          30078:                } else if ((*container)->type == IS_STRING && !prop_dim) { /* string offsets */
        !          30079:                        zval tmp;
        !          30080: 
        !          30081:                        if (Z_TYPE_P(offset) != IS_LONG) {
        !          30082:                                tmp = *offset;
        !          30083:                                zval_copy_ctor(&tmp);
        !          30084:                                convert_to_long(&tmp);
        !          30085:                                offset = &tmp;
        !          30086:                        }
        !          30087:                        if (Z_TYPE_P(offset) == IS_LONG) {
        !          30088:                                switch (opline->extended_value) {
        !          30089:                                        case ZEND_ISSET:
        !          30090:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container)) {
        !          30091:                                                        result = 1;
        !          30092:                                                }
        !          30093:                                                break;
        !          30094:                                        case ZEND_ISEMPTY:
        !          30095:                                                if (offset->value.lval >= 0 && offset->value.lval < Z_STRLEN_PP(container) && Z_STRVAL_PP(container)[offset->value.lval] != '0') {
        !          30096:                                                        result = 1;
        !          30097:                                                }
        !          30098:                                                break;
        !          30099:                                }
        !          30100:                        }
        !          30101: 
        !          30102:                } else {
        !          30103: 
        !          30104:                }
        !          30105:        }
        !          30106: 
        !          30107:        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_BOOL;
        !          30108: 
        !          30109:        switch (opline->extended_value) {
        !          30110:                case ZEND_ISSET:
        !          30111:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = result;
        !          30112:                        break;
        !          30113:                case ZEND_ISEMPTY:
        !          30114:                        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = !result;
        !          30115:                        break;
        !          30116:        }
        !          30117: 
        !          30118:        ZEND_VM_NEXT_OPCODE();
        !          30119: }
        !          30120: 
        !          30121: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          30122: {
        !          30123:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CV(0, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          30124: }
        !          30125: 
        !          30126: static int ZEND_FASTCALL  ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          30127: {
        !          30128:        return zend_isset_isempty_dim_prop_obj_handler_SPEC_CV_CV(1, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          30129: }
        !          30130: 
        !          30131: static int ZEND_FASTCALL ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        !          30132: {
        !          30133:        zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", EX(opline)->opcode, EX(opline)->op1.op_type, EX(opline)->op2.op_type);
        !          30134: }
        !          30135: 
        !          30136: 
        !          30137: void zend_init_opcodes_handlers(void)
        !          30138: {
        !          30139:   static const opcode_handler_t labels[] = {
        !          30140:        ZEND_NOP_SPEC_HANDLER,
        !          30141:        ZEND_NOP_SPEC_HANDLER,
        !          30142:        ZEND_NOP_SPEC_HANDLER,
        !          30143:        ZEND_NOP_SPEC_HANDLER,
        !          30144:        ZEND_NOP_SPEC_HANDLER,
        !          30145:        ZEND_NOP_SPEC_HANDLER,
        !          30146:        ZEND_NOP_SPEC_HANDLER,
        !          30147:        ZEND_NOP_SPEC_HANDLER,
        !          30148:        ZEND_NOP_SPEC_HANDLER,
        !          30149:        ZEND_NOP_SPEC_HANDLER,
        !          30150:        ZEND_NOP_SPEC_HANDLER,
        !          30151:        ZEND_NOP_SPEC_HANDLER,
        !          30152:        ZEND_NOP_SPEC_HANDLER,
        !          30153:        ZEND_NOP_SPEC_HANDLER,
        !          30154:        ZEND_NOP_SPEC_HANDLER,
        !          30155:        ZEND_NOP_SPEC_HANDLER,
        !          30156:        ZEND_NOP_SPEC_HANDLER,
        !          30157:        ZEND_NOP_SPEC_HANDLER,
        !          30158:        ZEND_NOP_SPEC_HANDLER,
        !          30159:        ZEND_NOP_SPEC_HANDLER,
        !          30160:        ZEND_NOP_SPEC_HANDLER,
        !          30161:        ZEND_NOP_SPEC_HANDLER,
        !          30162:        ZEND_NOP_SPEC_HANDLER,
        !          30163:        ZEND_NOP_SPEC_HANDLER,
        !          30164:        ZEND_NOP_SPEC_HANDLER,
        !          30165:        ZEND_ADD_SPEC_CONST_CONST_HANDLER,
        !          30166:        ZEND_ADD_SPEC_CONST_TMP_HANDLER,
        !          30167:        ZEND_ADD_SPEC_CONST_VAR_HANDLER,
        !          30168:        ZEND_NULL_HANDLER,
        !          30169:        ZEND_ADD_SPEC_CONST_CV_HANDLER,
        !          30170:        ZEND_ADD_SPEC_TMP_CONST_HANDLER,
        !          30171:        ZEND_ADD_SPEC_TMP_TMP_HANDLER,
        !          30172:        ZEND_ADD_SPEC_TMP_VAR_HANDLER,
        !          30173:        ZEND_NULL_HANDLER,
        !          30174:        ZEND_ADD_SPEC_TMP_CV_HANDLER,
        !          30175:        ZEND_ADD_SPEC_VAR_CONST_HANDLER,
        !          30176:        ZEND_ADD_SPEC_VAR_TMP_HANDLER,
        !          30177:        ZEND_ADD_SPEC_VAR_VAR_HANDLER,
        !          30178:        ZEND_NULL_HANDLER,
        !          30179:        ZEND_ADD_SPEC_VAR_CV_HANDLER,
        !          30180:        ZEND_NULL_HANDLER,
        !          30181:        ZEND_NULL_HANDLER,
        !          30182:        ZEND_NULL_HANDLER,
        !          30183:        ZEND_NULL_HANDLER,
        !          30184:        ZEND_NULL_HANDLER,
        !          30185:        ZEND_ADD_SPEC_CV_CONST_HANDLER,
        !          30186:        ZEND_ADD_SPEC_CV_TMP_HANDLER,
        !          30187:        ZEND_ADD_SPEC_CV_VAR_HANDLER,
        !          30188:        ZEND_NULL_HANDLER,
        !          30189:        ZEND_ADD_SPEC_CV_CV_HANDLER,
        !          30190:        ZEND_SUB_SPEC_CONST_CONST_HANDLER,
        !          30191:        ZEND_SUB_SPEC_CONST_TMP_HANDLER,
        !          30192:        ZEND_SUB_SPEC_CONST_VAR_HANDLER,
        !          30193:        ZEND_NULL_HANDLER,
        !          30194:        ZEND_SUB_SPEC_CONST_CV_HANDLER,
        !          30195:        ZEND_SUB_SPEC_TMP_CONST_HANDLER,
        !          30196:        ZEND_SUB_SPEC_TMP_TMP_HANDLER,
        !          30197:        ZEND_SUB_SPEC_TMP_VAR_HANDLER,
        !          30198:        ZEND_NULL_HANDLER,
        !          30199:        ZEND_SUB_SPEC_TMP_CV_HANDLER,
        !          30200:        ZEND_SUB_SPEC_VAR_CONST_HANDLER,
        !          30201:        ZEND_SUB_SPEC_VAR_TMP_HANDLER,
        !          30202:        ZEND_SUB_SPEC_VAR_VAR_HANDLER,
        !          30203:        ZEND_NULL_HANDLER,
        !          30204:        ZEND_SUB_SPEC_VAR_CV_HANDLER,
        !          30205:        ZEND_NULL_HANDLER,
        !          30206:        ZEND_NULL_HANDLER,
        !          30207:        ZEND_NULL_HANDLER,
        !          30208:        ZEND_NULL_HANDLER,
        !          30209:        ZEND_NULL_HANDLER,
        !          30210:        ZEND_SUB_SPEC_CV_CONST_HANDLER,
        !          30211:        ZEND_SUB_SPEC_CV_TMP_HANDLER,
        !          30212:        ZEND_SUB_SPEC_CV_VAR_HANDLER,
        !          30213:        ZEND_NULL_HANDLER,
        !          30214:        ZEND_SUB_SPEC_CV_CV_HANDLER,
        !          30215:        ZEND_MUL_SPEC_CONST_CONST_HANDLER,
        !          30216:        ZEND_MUL_SPEC_CONST_TMP_HANDLER,
        !          30217:        ZEND_MUL_SPEC_CONST_VAR_HANDLER,
        !          30218:        ZEND_NULL_HANDLER,
        !          30219:        ZEND_MUL_SPEC_CONST_CV_HANDLER,
        !          30220:        ZEND_MUL_SPEC_TMP_CONST_HANDLER,
        !          30221:        ZEND_MUL_SPEC_TMP_TMP_HANDLER,
        !          30222:        ZEND_MUL_SPEC_TMP_VAR_HANDLER,
        !          30223:        ZEND_NULL_HANDLER,
        !          30224:        ZEND_MUL_SPEC_TMP_CV_HANDLER,
        !          30225:        ZEND_MUL_SPEC_VAR_CONST_HANDLER,
        !          30226:        ZEND_MUL_SPEC_VAR_TMP_HANDLER,
        !          30227:        ZEND_MUL_SPEC_VAR_VAR_HANDLER,
        !          30228:        ZEND_NULL_HANDLER,
        !          30229:        ZEND_MUL_SPEC_VAR_CV_HANDLER,
        !          30230:        ZEND_NULL_HANDLER,
        !          30231:        ZEND_NULL_HANDLER,
        !          30232:        ZEND_NULL_HANDLER,
        !          30233:        ZEND_NULL_HANDLER,
        !          30234:        ZEND_NULL_HANDLER,
        !          30235:        ZEND_MUL_SPEC_CV_CONST_HANDLER,
        !          30236:        ZEND_MUL_SPEC_CV_TMP_HANDLER,
        !          30237:        ZEND_MUL_SPEC_CV_VAR_HANDLER,
        !          30238:        ZEND_NULL_HANDLER,
        !          30239:        ZEND_MUL_SPEC_CV_CV_HANDLER,
        !          30240:        ZEND_DIV_SPEC_CONST_CONST_HANDLER,
        !          30241:        ZEND_DIV_SPEC_CONST_TMP_HANDLER,
        !          30242:        ZEND_DIV_SPEC_CONST_VAR_HANDLER,
        !          30243:        ZEND_NULL_HANDLER,
        !          30244:        ZEND_DIV_SPEC_CONST_CV_HANDLER,
        !          30245:        ZEND_DIV_SPEC_TMP_CONST_HANDLER,
        !          30246:        ZEND_DIV_SPEC_TMP_TMP_HANDLER,
        !          30247:        ZEND_DIV_SPEC_TMP_VAR_HANDLER,
        !          30248:        ZEND_NULL_HANDLER,
        !          30249:        ZEND_DIV_SPEC_TMP_CV_HANDLER,
        !          30250:        ZEND_DIV_SPEC_VAR_CONST_HANDLER,
        !          30251:        ZEND_DIV_SPEC_VAR_TMP_HANDLER,
        !          30252:        ZEND_DIV_SPEC_VAR_VAR_HANDLER,
        !          30253:        ZEND_NULL_HANDLER,
        !          30254:        ZEND_DIV_SPEC_VAR_CV_HANDLER,
        !          30255:        ZEND_NULL_HANDLER,
        !          30256:        ZEND_NULL_HANDLER,
        !          30257:        ZEND_NULL_HANDLER,
        !          30258:        ZEND_NULL_HANDLER,
        !          30259:        ZEND_NULL_HANDLER,
        !          30260:        ZEND_DIV_SPEC_CV_CONST_HANDLER,
        !          30261:        ZEND_DIV_SPEC_CV_TMP_HANDLER,
        !          30262:        ZEND_DIV_SPEC_CV_VAR_HANDLER,
        !          30263:        ZEND_NULL_HANDLER,
        !          30264:        ZEND_DIV_SPEC_CV_CV_HANDLER,
        !          30265:        ZEND_MOD_SPEC_CONST_CONST_HANDLER,
        !          30266:        ZEND_MOD_SPEC_CONST_TMP_HANDLER,
        !          30267:        ZEND_MOD_SPEC_CONST_VAR_HANDLER,
        !          30268:        ZEND_NULL_HANDLER,
        !          30269:        ZEND_MOD_SPEC_CONST_CV_HANDLER,
        !          30270:        ZEND_MOD_SPEC_TMP_CONST_HANDLER,
        !          30271:        ZEND_MOD_SPEC_TMP_TMP_HANDLER,
        !          30272:        ZEND_MOD_SPEC_TMP_VAR_HANDLER,
        !          30273:        ZEND_NULL_HANDLER,
        !          30274:        ZEND_MOD_SPEC_TMP_CV_HANDLER,
        !          30275:        ZEND_MOD_SPEC_VAR_CONST_HANDLER,
        !          30276:        ZEND_MOD_SPEC_VAR_TMP_HANDLER,
        !          30277:        ZEND_MOD_SPEC_VAR_VAR_HANDLER,
        !          30278:        ZEND_NULL_HANDLER,
        !          30279:        ZEND_MOD_SPEC_VAR_CV_HANDLER,
        !          30280:        ZEND_NULL_HANDLER,
        !          30281:        ZEND_NULL_HANDLER,
        !          30282:        ZEND_NULL_HANDLER,
        !          30283:        ZEND_NULL_HANDLER,
        !          30284:        ZEND_NULL_HANDLER,
        !          30285:        ZEND_MOD_SPEC_CV_CONST_HANDLER,
        !          30286:        ZEND_MOD_SPEC_CV_TMP_HANDLER,
        !          30287:        ZEND_MOD_SPEC_CV_VAR_HANDLER,
        !          30288:        ZEND_NULL_HANDLER,
        !          30289:        ZEND_MOD_SPEC_CV_CV_HANDLER,
        !          30290:        ZEND_SL_SPEC_CONST_CONST_HANDLER,
        !          30291:        ZEND_SL_SPEC_CONST_TMP_HANDLER,
        !          30292:        ZEND_SL_SPEC_CONST_VAR_HANDLER,
        !          30293:        ZEND_NULL_HANDLER,
        !          30294:        ZEND_SL_SPEC_CONST_CV_HANDLER,
        !          30295:        ZEND_SL_SPEC_TMP_CONST_HANDLER,
        !          30296:        ZEND_SL_SPEC_TMP_TMP_HANDLER,
        !          30297:        ZEND_SL_SPEC_TMP_VAR_HANDLER,
        !          30298:        ZEND_NULL_HANDLER,
        !          30299:        ZEND_SL_SPEC_TMP_CV_HANDLER,
        !          30300:        ZEND_SL_SPEC_VAR_CONST_HANDLER,
        !          30301:        ZEND_SL_SPEC_VAR_TMP_HANDLER,
        !          30302:        ZEND_SL_SPEC_VAR_VAR_HANDLER,
        !          30303:        ZEND_NULL_HANDLER,
        !          30304:        ZEND_SL_SPEC_VAR_CV_HANDLER,
        !          30305:        ZEND_NULL_HANDLER,
        !          30306:        ZEND_NULL_HANDLER,
        !          30307:        ZEND_NULL_HANDLER,
        !          30308:        ZEND_NULL_HANDLER,
        !          30309:        ZEND_NULL_HANDLER,
        !          30310:        ZEND_SL_SPEC_CV_CONST_HANDLER,
        !          30311:        ZEND_SL_SPEC_CV_TMP_HANDLER,
        !          30312:        ZEND_SL_SPEC_CV_VAR_HANDLER,
        !          30313:        ZEND_NULL_HANDLER,
        !          30314:        ZEND_SL_SPEC_CV_CV_HANDLER,
        !          30315:        ZEND_SR_SPEC_CONST_CONST_HANDLER,
        !          30316:        ZEND_SR_SPEC_CONST_TMP_HANDLER,
        !          30317:        ZEND_SR_SPEC_CONST_VAR_HANDLER,
        !          30318:        ZEND_NULL_HANDLER,
        !          30319:        ZEND_SR_SPEC_CONST_CV_HANDLER,
        !          30320:        ZEND_SR_SPEC_TMP_CONST_HANDLER,
        !          30321:        ZEND_SR_SPEC_TMP_TMP_HANDLER,
        !          30322:        ZEND_SR_SPEC_TMP_VAR_HANDLER,
        !          30323:        ZEND_NULL_HANDLER,
        !          30324:        ZEND_SR_SPEC_TMP_CV_HANDLER,
        !          30325:        ZEND_SR_SPEC_VAR_CONST_HANDLER,
        !          30326:        ZEND_SR_SPEC_VAR_TMP_HANDLER,
        !          30327:        ZEND_SR_SPEC_VAR_VAR_HANDLER,
        !          30328:        ZEND_NULL_HANDLER,
        !          30329:        ZEND_SR_SPEC_VAR_CV_HANDLER,
        !          30330:        ZEND_NULL_HANDLER,
        !          30331:        ZEND_NULL_HANDLER,
        !          30332:        ZEND_NULL_HANDLER,
        !          30333:        ZEND_NULL_HANDLER,
        !          30334:        ZEND_NULL_HANDLER,
        !          30335:        ZEND_SR_SPEC_CV_CONST_HANDLER,
        !          30336:        ZEND_SR_SPEC_CV_TMP_HANDLER,
        !          30337:        ZEND_SR_SPEC_CV_VAR_HANDLER,
        !          30338:        ZEND_NULL_HANDLER,
        !          30339:        ZEND_SR_SPEC_CV_CV_HANDLER,
        !          30340:        ZEND_CONCAT_SPEC_CONST_CONST_HANDLER,
        !          30341:        ZEND_CONCAT_SPEC_CONST_TMP_HANDLER,
        !          30342:        ZEND_CONCAT_SPEC_CONST_VAR_HANDLER,
        !          30343:        ZEND_NULL_HANDLER,
        !          30344:        ZEND_CONCAT_SPEC_CONST_CV_HANDLER,
        !          30345:        ZEND_CONCAT_SPEC_TMP_CONST_HANDLER,
        !          30346:        ZEND_CONCAT_SPEC_TMP_TMP_HANDLER,
        !          30347:        ZEND_CONCAT_SPEC_TMP_VAR_HANDLER,
        !          30348:        ZEND_NULL_HANDLER,
        !          30349:        ZEND_CONCAT_SPEC_TMP_CV_HANDLER,
        !          30350:        ZEND_CONCAT_SPEC_VAR_CONST_HANDLER,
        !          30351:        ZEND_CONCAT_SPEC_VAR_TMP_HANDLER,
        !          30352:        ZEND_CONCAT_SPEC_VAR_VAR_HANDLER,
        !          30353:        ZEND_NULL_HANDLER,
        !          30354:        ZEND_CONCAT_SPEC_VAR_CV_HANDLER,
        !          30355:        ZEND_NULL_HANDLER,
        !          30356:        ZEND_NULL_HANDLER,
        !          30357:        ZEND_NULL_HANDLER,
        !          30358:        ZEND_NULL_HANDLER,
        !          30359:        ZEND_NULL_HANDLER,
        !          30360:        ZEND_CONCAT_SPEC_CV_CONST_HANDLER,
        !          30361:        ZEND_CONCAT_SPEC_CV_TMP_HANDLER,
        !          30362:        ZEND_CONCAT_SPEC_CV_VAR_HANDLER,
        !          30363:        ZEND_NULL_HANDLER,
        !          30364:        ZEND_CONCAT_SPEC_CV_CV_HANDLER,
        !          30365:        ZEND_BW_OR_SPEC_CONST_CONST_HANDLER,
        !          30366:        ZEND_BW_OR_SPEC_CONST_TMP_HANDLER,
        !          30367:        ZEND_BW_OR_SPEC_CONST_VAR_HANDLER,
        !          30368:        ZEND_NULL_HANDLER,
        !          30369:        ZEND_BW_OR_SPEC_CONST_CV_HANDLER,
        !          30370:        ZEND_BW_OR_SPEC_TMP_CONST_HANDLER,
        !          30371:        ZEND_BW_OR_SPEC_TMP_TMP_HANDLER,
        !          30372:        ZEND_BW_OR_SPEC_TMP_VAR_HANDLER,
        !          30373:        ZEND_NULL_HANDLER,
        !          30374:        ZEND_BW_OR_SPEC_TMP_CV_HANDLER,
        !          30375:        ZEND_BW_OR_SPEC_VAR_CONST_HANDLER,
        !          30376:        ZEND_BW_OR_SPEC_VAR_TMP_HANDLER,
        !          30377:        ZEND_BW_OR_SPEC_VAR_VAR_HANDLER,
        !          30378:        ZEND_NULL_HANDLER,
        !          30379:        ZEND_BW_OR_SPEC_VAR_CV_HANDLER,
        !          30380:        ZEND_NULL_HANDLER,
        !          30381:        ZEND_NULL_HANDLER,
        !          30382:        ZEND_NULL_HANDLER,
        !          30383:        ZEND_NULL_HANDLER,
        !          30384:        ZEND_NULL_HANDLER,
        !          30385:        ZEND_BW_OR_SPEC_CV_CONST_HANDLER,
        !          30386:        ZEND_BW_OR_SPEC_CV_TMP_HANDLER,
        !          30387:        ZEND_BW_OR_SPEC_CV_VAR_HANDLER,
        !          30388:        ZEND_NULL_HANDLER,
        !          30389:        ZEND_BW_OR_SPEC_CV_CV_HANDLER,
        !          30390:        ZEND_BW_AND_SPEC_CONST_CONST_HANDLER,
        !          30391:        ZEND_BW_AND_SPEC_CONST_TMP_HANDLER,
        !          30392:        ZEND_BW_AND_SPEC_CONST_VAR_HANDLER,
        !          30393:        ZEND_NULL_HANDLER,
        !          30394:        ZEND_BW_AND_SPEC_CONST_CV_HANDLER,
        !          30395:        ZEND_BW_AND_SPEC_TMP_CONST_HANDLER,
        !          30396:        ZEND_BW_AND_SPEC_TMP_TMP_HANDLER,
        !          30397:        ZEND_BW_AND_SPEC_TMP_VAR_HANDLER,
        !          30398:        ZEND_NULL_HANDLER,
        !          30399:        ZEND_BW_AND_SPEC_TMP_CV_HANDLER,
        !          30400:        ZEND_BW_AND_SPEC_VAR_CONST_HANDLER,
        !          30401:        ZEND_BW_AND_SPEC_VAR_TMP_HANDLER,
        !          30402:        ZEND_BW_AND_SPEC_VAR_VAR_HANDLER,
        !          30403:        ZEND_NULL_HANDLER,
        !          30404:        ZEND_BW_AND_SPEC_VAR_CV_HANDLER,
        !          30405:        ZEND_NULL_HANDLER,
        !          30406:        ZEND_NULL_HANDLER,
        !          30407:        ZEND_NULL_HANDLER,
        !          30408:        ZEND_NULL_HANDLER,
        !          30409:        ZEND_NULL_HANDLER,
        !          30410:        ZEND_BW_AND_SPEC_CV_CONST_HANDLER,
        !          30411:        ZEND_BW_AND_SPEC_CV_TMP_HANDLER,
        !          30412:        ZEND_BW_AND_SPEC_CV_VAR_HANDLER,
        !          30413:        ZEND_NULL_HANDLER,
        !          30414:        ZEND_BW_AND_SPEC_CV_CV_HANDLER,
        !          30415:        ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER,
        !          30416:        ZEND_BW_XOR_SPEC_CONST_TMP_HANDLER,
        !          30417:        ZEND_BW_XOR_SPEC_CONST_VAR_HANDLER,
        !          30418:        ZEND_NULL_HANDLER,
        !          30419:        ZEND_BW_XOR_SPEC_CONST_CV_HANDLER,
        !          30420:        ZEND_BW_XOR_SPEC_TMP_CONST_HANDLER,
        !          30421:        ZEND_BW_XOR_SPEC_TMP_TMP_HANDLER,
        !          30422:        ZEND_BW_XOR_SPEC_TMP_VAR_HANDLER,
        !          30423:        ZEND_NULL_HANDLER,
        !          30424:        ZEND_BW_XOR_SPEC_TMP_CV_HANDLER,
        !          30425:        ZEND_BW_XOR_SPEC_VAR_CONST_HANDLER,
        !          30426:        ZEND_BW_XOR_SPEC_VAR_TMP_HANDLER,
        !          30427:        ZEND_BW_XOR_SPEC_VAR_VAR_HANDLER,
        !          30428:        ZEND_NULL_HANDLER,
        !          30429:        ZEND_BW_XOR_SPEC_VAR_CV_HANDLER,
        !          30430:        ZEND_NULL_HANDLER,
        !          30431:        ZEND_NULL_HANDLER,
        !          30432:        ZEND_NULL_HANDLER,
        !          30433:        ZEND_NULL_HANDLER,
        !          30434:        ZEND_NULL_HANDLER,
        !          30435:        ZEND_BW_XOR_SPEC_CV_CONST_HANDLER,
        !          30436:        ZEND_BW_XOR_SPEC_CV_TMP_HANDLER,
        !          30437:        ZEND_BW_XOR_SPEC_CV_VAR_HANDLER,
        !          30438:        ZEND_NULL_HANDLER,
        !          30439:        ZEND_BW_XOR_SPEC_CV_CV_HANDLER,
        !          30440:        ZEND_BW_NOT_SPEC_CONST_HANDLER,
        !          30441:        ZEND_BW_NOT_SPEC_CONST_HANDLER,
        !          30442:        ZEND_BW_NOT_SPEC_CONST_HANDLER,
        !          30443:        ZEND_BW_NOT_SPEC_CONST_HANDLER,
        !          30444:        ZEND_BW_NOT_SPEC_CONST_HANDLER,
        !          30445:        ZEND_BW_NOT_SPEC_TMP_HANDLER,
        !          30446:        ZEND_BW_NOT_SPEC_TMP_HANDLER,
        !          30447:        ZEND_BW_NOT_SPEC_TMP_HANDLER,
        !          30448:        ZEND_BW_NOT_SPEC_TMP_HANDLER,
        !          30449:        ZEND_BW_NOT_SPEC_TMP_HANDLER,
        !          30450:        ZEND_BW_NOT_SPEC_VAR_HANDLER,
        !          30451:        ZEND_BW_NOT_SPEC_VAR_HANDLER,
        !          30452:        ZEND_BW_NOT_SPEC_VAR_HANDLER,
        !          30453:        ZEND_BW_NOT_SPEC_VAR_HANDLER,
        !          30454:        ZEND_BW_NOT_SPEC_VAR_HANDLER,
        !          30455:        ZEND_NULL_HANDLER,
        !          30456:        ZEND_NULL_HANDLER,
        !          30457:        ZEND_NULL_HANDLER,
        !          30458:        ZEND_NULL_HANDLER,
        !          30459:        ZEND_NULL_HANDLER,
        !          30460:        ZEND_BW_NOT_SPEC_CV_HANDLER,
        !          30461:        ZEND_BW_NOT_SPEC_CV_HANDLER,
        !          30462:        ZEND_BW_NOT_SPEC_CV_HANDLER,
        !          30463:        ZEND_BW_NOT_SPEC_CV_HANDLER,
        !          30464:        ZEND_BW_NOT_SPEC_CV_HANDLER,
        !          30465:        ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
        !          30466:        ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
        !          30467:        ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
        !          30468:        ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
        !          30469:        ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
        !          30470:        ZEND_BOOL_NOT_SPEC_TMP_HANDLER,
        !          30471:        ZEND_BOOL_NOT_SPEC_TMP_HANDLER,
        !          30472:        ZEND_BOOL_NOT_SPEC_TMP_HANDLER,
        !          30473:        ZEND_BOOL_NOT_SPEC_TMP_HANDLER,
        !          30474:        ZEND_BOOL_NOT_SPEC_TMP_HANDLER,
        !          30475:        ZEND_BOOL_NOT_SPEC_VAR_HANDLER,
        !          30476:        ZEND_BOOL_NOT_SPEC_VAR_HANDLER,
        !          30477:        ZEND_BOOL_NOT_SPEC_VAR_HANDLER,
        !          30478:        ZEND_BOOL_NOT_SPEC_VAR_HANDLER,
        !          30479:        ZEND_BOOL_NOT_SPEC_VAR_HANDLER,
        !          30480:        ZEND_NULL_HANDLER,
        !          30481:        ZEND_NULL_HANDLER,
        !          30482:        ZEND_NULL_HANDLER,
        !          30483:        ZEND_NULL_HANDLER,
        !          30484:        ZEND_NULL_HANDLER,
        !          30485:        ZEND_BOOL_NOT_SPEC_CV_HANDLER,
        !          30486:        ZEND_BOOL_NOT_SPEC_CV_HANDLER,
        !          30487:        ZEND_BOOL_NOT_SPEC_CV_HANDLER,
        !          30488:        ZEND_BOOL_NOT_SPEC_CV_HANDLER,
        !          30489:        ZEND_BOOL_NOT_SPEC_CV_HANDLER,
        !          30490:        ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER,
        !          30491:        ZEND_BOOL_XOR_SPEC_CONST_TMP_HANDLER,
        !          30492:        ZEND_BOOL_XOR_SPEC_CONST_VAR_HANDLER,
        !          30493:        ZEND_NULL_HANDLER,
        !          30494:        ZEND_BOOL_XOR_SPEC_CONST_CV_HANDLER,
        !          30495:        ZEND_BOOL_XOR_SPEC_TMP_CONST_HANDLER,
        !          30496:        ZEND_BOOL_XOR_SPEC_TMP_TMP_HANDLER,
        !          30497:        ZEND_BOOL_XOR_SPEC_TMP_VAR_HANDLER,
        !          30498:        ZEND_NULL_HANDLER,
        !          30499:        ZEND_BOOL_XOR_SPEC_TMP_CV_HANDLER,
        !          30500:        ZEND_BOOL_XOR_SPEC_VAR_CONST_HANDLER,
        !          30501:        ZEND_BOOL_XOR_SPEC_VAR_TMP_HANDLER,
        !          30502:        ZEND_BOOL_XOR_SPEC_VAR_VAR_HANDLER,
        !          30503:        ZEND_NULL_HANDLER,
        !          30504:        ZEND_BOOL_XOR_SPEC_VAR_CV_HANDLER,
        !          30505:        ZEND_NULL_HANDLER,
        !          30506:        ZEND_NULL_HANDLER,
        !          30507:        ZEND_NULL_HANDLER,
        !          30508:        ZEND_NULL_HANDLER,
        !          30509:        ZEND_NULL_HANDLER,
        !          30510:        ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER,
        !          30511:        ZEND_BOOL_XOR_SPEC_CV_TMP_HANDLER,
        !          30512:        ZEND_BOOL_XOR_SPEC_CV_VAR_HANDLER,
        !          30513:        ZEND_NULL_HANDLER,
        !          30514:        ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER,
        !          30515:        ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER,
        !          30516:        ZEND_IS_IDENTICAL_SPEC_CONST_TMP_HANDLER,
        !          30517:        ZEND_IS_IDENTICAL_SPEC_CONST_VAR_HANDLER,
        !          30518:        ZEND_NULL_HANDLER,
        !          30519:        ZEND_IS_IDENTICAL_SPEC_CONST_CV_HANDLER,
        !          30520:        ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER,
        !          30521:        ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER,
        !          30522:        ZEND_IS_IDENTICAL_SPEC_TMP_VAR_HANDLER,
        !          30523:        ZEND_NULL_HANDLER,
        !          30524:        ZEND_IS_IDENTICAL_SPEC_TMP_CV_HANDLER,
        !          30525:        ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER,
        !          30526:        ZEND_IS_IDENTICAL_SPEC_VAR_TMP_HANDLER,
        !          30527:        ZEND_IS_IDENTICAL_SPEC_VAR_VAR_HANDLER,
        !          30528:        ZEND_NULL_HANDLER,
        !          30529:        ZEND_IS_IDENTICAL_SPEC_VAR_CV_HANDLER,
        !          30530:        ZEND_NULL_HANDLER,
        !          30531:        ZEND_NULL_HANDLER,
        !          30532:        ZEND_NULL_HANDLER,
        !          30533:        ZEND_NULL_HANDLER,
        !          30534:        ZEND_NULL_HANDLER,
        !          30535:        ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER,
        !          30536:        ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER,
        !          30537:        ZEND_IS_IDENTICAL_SPEC_CV_VAR_HANDLER,
        !          30538:        ZEND_NULL_HANDLER,
        !          30539:        ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER,
        !          30540:        ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER,
        !          30541:        ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP_HANDLER,
        !          30542:        ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR_HANDLER,
        !          30543:        ZEND_NULL_HANDLER,
        !          30544:        ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CV_HANDLER,
        !          30545:        ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER,
        !          30546:        ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER,
        !          30547:        ZEND_IS_NOT_IDENTICAL_SPEC_TMP_VAR_HANDLER,
        !          30548:        ZEND_NULL_HANDLER,
        !          30549:        ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CV_HANDLER,
        !          30550:        ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER,
        !          30551:        ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER,
        !          30552:        ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER,
        !          30553:        ZEND_NULL_HANDLER,
        !          30554:        ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CV_HANDLER,
        !          30555:        ZEND_NULL_HANDLER,
        !          30556:        ZEND_NULL_HANDLER,
        !          30557:        ZEND_NULL_HANDLER,
        !          30558:        ZEND_NULL_HANDLER,
        !          30559:        ZEND_NULL_HANDLER,
        !          30560:        ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER,
        !          30561:        ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER,
        !          30562:        ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER,
        !          30563:        ZEND_NULL_HANDLER,
        !          30564:        ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER,
        !          30565:        ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER,
        !          30566:        ZEND_IS_EQUAL_SPEC_CONST_TMP_HANDLER,
        !          30567:        ZEND_IS_EQUAL_SPEC_CONST_VAR_HANDLER,
        !          30568:        ZEND_NULL_HANDLER,
        !          30569:        ZEND_IS_EQUAL_SPEC_CONST_CV_HANDLER,
        !          30570:        ZEND_IS_EQUAL_SPEC_TMP_CONST_HANDLER,
        !          30571:        ZEND_IS_EQUAL_SPEC_TMP_TMP_HANDLER,
        !          30572:        ZEND_IS_EQUAL_SPEC_TMP_VAR_HANDLER,
        !          30573:        ZEND_NULL_HANDLER,
        !          30574:        ZEND_IS_EQUAL_SPEC_TMP_CV_HANDLER,
        !          30575:        ZEND_IS_EQUAL_SPEC_VAR_CONST_HANDLER,
        !          30576:        ZEND_IS_EQUAL_SPEC_VAR_TMP_HANDLER,
        !          30577:        ZEND_IS_EQUAL_SPEC_VAR_VAR_HANDLER,
        !          30578:        ZEND_NULL_HANDLER,
        !          30579:        ZEND_IS_EQUAL_SPEC_VAR_CV_HANDLER,
        !          30580:        ZEND_NULL_HANDLER,
        !          30581:        ZEND_NULL_HANDLER,
        !          30582:        ZEND_NULL_HANDLER,
        !          30583:        ZEND_NULL_HANDLER,
        !          30584:        ZEND_NULL_HANDLER,
        !          30585:        ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER,
        !          30586:        ZEND_IS_EQUAL_SPEC_CV_TMP_HANDLER,
        !          30587:        ZEND_IS_EQUAL_SPEC_CV_VAR_HANDLER,
        !          30588:        ZEND_NULL_HANDLER,
        !          30589:        ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER,
        !          30590:        ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER,
        !          30591:        ZEND_IS_NOT_EQUAL_SPEC_CONST_TMP_HANDLER,
        !          30592:        ZEND_IS_NOT_EQUAL_SPEC_CONST_VAR_HANDLER,
        !          30593:        ZEND_NULL_HANDLER,
        !          30594:        ZEND_IS_NOT_EQUAL_SPEC_CONST_CV_HANDLER,
        !          30595:        ZEND_IS_NOT_EQUAL_SPEC_TMP_CONST_HANDLER,
        !          30596:        ZEND_IS_NOT_EQUAL_SPEC_TMP_TMP_HANDLER,
        !          30597:        ZEND_IS_NOT_EQUAL_SPEC_TMP_VAR_HANDLER,
        !          30598:        ZEND_NULL_HANDLER,
        !          30599:        ZEND_IS_NOT_EQUAL_SPEC_TMP_CV_HANDLER,
        !          30600:        ZEND_IS_NOT_EQUAL_SPEC_VAR_CONST_HANDLER,
        !          30601:        ZEND_IS_NOT_EQUAL_SPEC_VAR_TMP_HANDLER,
        !          30602:        ZEND_IS_NOT_EQUAL_SPEC_VAR_VAR_HANDLER,
        !          30603:        ZEND_NULL_HANDLER,
        !          30604:        ZEND_IS_NOT_EQUAL_SPEC_VAR_CV_HANDLER,
        !          30605:        ZEND_NULL_HANDLER,
        !          30606:        ZEND_NULL_HANDLER,
        !          30607:        ZEND_NULL_HANDLER,
        !          30608:        ZEND_NULL_HANDLER,
        !          30609:        ZEND_NULL_HANDLER,
        !          30610:        ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER,
        !          30611:        ZEND_IS_NOT_EQUAL_SPEC_CV_TMP_HANDLER,
        !          30612:        ZEND_IS_NOT_EQUAL_SPEC_CV_VAR_HANDLER,
        !          30613:        ZEND_NULL_HANDLER,
        !          30614:        ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER,
        !          30615:        ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER,
        !          30616:        ZEND_IS_SMALLER_SPEC_CONST_TMP_HANDLER,
        !          30617:        ZEND_IS_SMALLER_SPEC_CONST_VAR_HANDLER,
        !          30618:        ZEND_NULL_HANDLER,
        !          30619:        ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER,
        !          30620:        ZEND_IS_SMALLER_SPEC_TMP_CONST_HANDLER,
        !          30621:        ZEND_IS_SMALLER_SPEC_TMP_TMP_HANDLER,
        !          30622:        ZEND_IS_SMALLER_SPEC_TMP_VAR_HANDLER,
        !          30623:        ZEND_NULL_HANDLER,
        !          30624:        ZEND_IS_SMALLER_SPEC_TMP_CV_HANDLER,
        !          30625:        ZEND_IS_SMALLER_SPEC_VAR_CONST_HANDLER,
        !          30626:        ZEND_IS_SMALLER_SPEC_VAR_TMP_HANDLER,
        !          30627:        ZEND_IS_SMALLER_SPEC_VAR_VAR_HANDLER,
        !          30628:        ZEND_NULL_HANDLER,
        !          30629:        ZEND_IS_SMALLER_SPEC_VAR_CV_HANDLER,
        !          30630:        ZEND_NULL_HANDLER,
        !          30631:        ZEND_NULL_HANDLER,
        !          30632:        ZEND_NULL_HANDLER,
        !          30633:        ZEND_NULL_HANDLER,
        !          30634:        ZEND_NULL_HANDLER,
        !          30635:        ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER,
        !          30636:        ZEND_IS_SMALLER_SPEC_CV_TMP_HANDLER,
        !          30637:        ZEND_IS_SMALLER_SPEC_CV_VAR_HANDLER,
        !          30638:        ZEND_NULL_HANDLER,
        !          30639:        ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER,
        !          30640:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER,
        !          30641:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMP_HANDLER,
        !          30642:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_VAR_HANDLER,
        !          30643:        ZEND_NULL_HANDLER,
        !          30644:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER,
        !          30645:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_CONST_HANDLER,
        !          30646:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_TMP_HANDLER,
        !          30647:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_VAR_HANDLER,
        !          30648:        ZEND_NULL_HANDLER,
        !          30649:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMP_CV_HANDLER,
        !          30650:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_CONST_HANDLER,
        !          30651:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_TMP_HANDLER,
        !          30652:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_VAR_HANDLER,
        !          30653:        ZEND_NULL_HANDLER,
        !          30654:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_VAR_CV_HANDLER,
        !          30655:        ZEND_NULL_HANDLER,
        !          30656:        ZEND_NULL_HANDLER,
        !          30657:        ZEND_NULL_HANDLER,
        !          30658:        ZEND_NULL_HANDLER,
        !          30659:        ZEND_NULL_HANDLER,
        !          30660:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER,
        !          30661:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMP_HANDLER,
        !          30662:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_VAR_HANDLER,
        !          30663:        ZEND_NULL_HANDLER,
        !          30664:        ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER,
        !          30665:        ZEND_CAST_SPEC_CONST_HANDLER,
        !          30666:        ZEND_CAST_SPEC_CONST_HANDLER,
        !          30667:        ZEND_CAST_SPEC_CONST_HANDLER,
        !          30668:        ZEND_CAST_SPEC_CONST_HANDLER,
        !          30669:        ZEND_CAST_SPEC_CONST_HANDLER,
        !          30670:        ZEND_CAST_SPEC_TMP_HANDLER,
        !          30671:        ZEND_CAST_SPEC_TMP_HANDLER,
        !          30672:        ZEND_CAST_SPEC_TMP_HANDLER,
        !          30673:        ZEND_CAST_SPEC_TMP_HANDLER,
        !          30674:        ZEND_CAST_SPEC_TMP_HANDLER,
        !          30675:        ZEND_CAST_SPEC_VAR_HANDLER,
        !          30676:        ZEND_CAST_SPEC_VAR_HANDLER,
        !          30677:        ZEND_CAST_SPEC_VAR_HANDLER,
        !          30678:        ZEND_CAST_SPEC_VAR_HANDLER,
        !          30679:        ZEND_CAST_SPEC_VAR_HANDLER,
        !          30680:        ZEND_NULL_HANDLER,
        !          30681:        ZEND_NULL_HANDLER,
        !          30682:        ZEND_NULL_HANDLER,
        !          30683:        ZEND_NULL_HANDLER,
        !          30684:        ZEND_NULL_HANDLER,
        !          30685:        ZEND_CAST_SPEC_CV_HANDLER,
        !          30686:        ZEND_CAST_SPEC_CV_HANDLER,
        !          30687:        ZEND_CAST_SPEC_CV_HANDLER,
        !          30688:        ZEND_CAST_SPEC_CV_HANDLER,
        !          30689:        ZEND_CAST_SPEC_CV_HANDLER,
        !          30690:        ZEND_QM_ASSIGN_SPEC_CONST_HANDLER,
        !          30691:        ZEND_QM_ASSIGN_SPEC_CONST_HANDLER,
        !          30692:        ZEND_QM_ASSIGN_SPEC_CONST_HANDLER,
        !          30693:        ZEND_QM_ASSIGN_SPEC_CONST_HANDLER,
        !          30694:        ZEND_QM_ASSIGN_SPEC_CONST_HANDLER,
        !          30695:        ZEND_QM_ASSIGN_SPEC_TMP_HANDLER,
        !          30696:        ZEND_QM_ASSIGN_SPEC_TMP_HANDLER,
        !          30697:        ZEND_QM_ASSIGN_SPEC_TMP_HANDLER,
        !          30698:        ZEND_QM_ASSIGN_SPEC_TMP_HANDLER,
        !          30699:        ZEND_QM_ASSIGN_SPEC_TMP_HANDLER,
        !          30700:        ZEND_QM_ASSIGN_SPEC_VAR_HANDLER,
        !          30701:        ZEND_QM_ASSIGN_SPEC_VAR_HANDLER,
        !          30702:        ZEND_QM_ASSIGN_SPEC_VAR_HANDLER,
        !          30703:        ZEND_QM_ASSIGN_SPEC_VAR_HANDLER,
        !          30704:        ZEND_QM_ASSIGN_SPEC_VAR_HANDLER,
        !          30705:        ZEND_NULL_HANDLER,
        !          30706:        ZEND_NULL_HANDLER,
        !          30707:        ZEND_NULL_HANDLER,
        !          30708:        ZEND_NULL_HANDLER,
        !          30709:        ZEND_NULL_HANDLER,
        !          30710:        ZEND_QM_ASSIGN_SPEC_CV_HANDLER,
        !          30711:        ZEND_QM_ASSIGN_SPEC_CV_HANDLER,
        !          30712:        ZEND_QM_ASSIGN_SPEC_CV_HANDLER,
        !          30713:        ZEND_QM_ASSIGN_SPEC_CV_HANDLER,
        !          30714:        ZEND_QM_ASSIGN_SPEC_CV_HANDLER,
        !          30715:        ZEND_NULL_HANDLER,
        !          30716:        ZEND_NULL_HANDLER,
        !          30717:        ZEND_NULL_HANDLER,
        !          30718:        ZEND_NULL_HANDLER,
        !          30719:        ZEND_NULL_HANDLER,
        !          30720:        ZEND_NULL_HANDLER,
        !          30721:        ZEND_NULL_HANDLER,
        !          30722:        ZEND_NULL_HANDLER,
        !          30723:        ZEND_NULL_HANDLER,
        !          30724:        ZEND_NULL_HANDLER,
        !          30725:        ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER,
        !          30726:        ZEND_ASSIGN_ADD_SPEC_VAR_TMP_HANDLER,
        !          30727:        ZEND_ASSIGN_ADD_SPEC_VAR_VAR_HANDLER,
        !          30728:        ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_HANDLER,
        !          30729:        ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER,
        !          30730:        ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_HANDLER,
        !          30731:        ZEND_ASSIGN_ADD_SPEC_UNUSED_TMP_HANDLER,
        !          30732:        ZEND_ASSIGN_ADD_SPEC_UNUSED_VAR_HANDLER,
        !          30733:        ZEND_ASSIGN_ADD_SPEC_UNUSED_UNUSED_HANDLER,
        !          30734:        ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_HANDLER,
        !          30735:        ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER,
        !          30736:        ZEND_ASSIGN_ADD_SPEC_CV_TMP_HANDLER,
        !          30737:        ZEND_ASSIGN_ADD_SPEC_CV_VAR_HANDLER,
        !          30738:        ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_HANDLER,
        !          30739:        ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER,
        !          30740:        ZEND_NULL_HANDLER,
        !          30741:        ZEND_NULL_HANDLER,
        !          30742:        ZEND_NULL_HANDLER,
        !          30743:        ZEND_NULL_HANDLER,
        !          30744:        ZEND_NULL_HANDLER,
        !          30745:        ZEND_NULL_HANDLER,
        !          30746:        ZEND_NULL_HANDLER,
        !          30747:        ZEND_NULL_HANDLER,
        !          30748:        ZEND_NULL_HANDLER,
        !          30749:        ZEND_NULL_HANDLER,
        !          30750:        ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER,
        !          30751:        ZEND_ASSIGN_SUB_SPEC_VAR_TMP_HANDLER,
        !          30752:        ZEND_ASSIGN_SUB_SPEC_VAR_VAR_HANDLER,
        !          30753:        ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_HANDLER,
        !          30754:        ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER,
        !          30755:        ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_HANDLER,
        !          30756:        ZEND_ASSIGN_SUB_SPEC_UNUSED_TMP_HANDLER,
        !          30757:        ZEND_ASSIGN_SUB_SPEC_UNUSED_VAR_HANDLER,
        !          30758:        ZEND_ASSIGN_SUB_SPEC_UNUSED_UNUSED_HANDLER,
        !          30759:        ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_HANDLER,
        !          30760:        ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER,
        !          30761:        ZEND_ASSIGN_SUB_SPEC_CV_TMP_HANDLER,
        !          30762:        ZEND_ASSIGN_SUB_SPEC_CV_VAR_HANDLER,
        !          30763:        ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_HANDLER,
        !          30764:        ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER,
        !          30765:        ZEND_NULL_HANDLER,
        !          30766:        ZEND_NULL_HANDLER,
        !          30767:        ZEND_NULL_HANDLER,
        !          30768:        ZEND_NULL_HANDLER,
        !          30769:        ZEND_NULL_HANDLER,
        !          30770:        ZEND_NULL_HANDLER,
        !          30771:        ZEND_NULL_HANDLER,
        !          30772:        ZEND_NULL_HANDLER,
        !          30773:        ZEND_NULL_HANDLER,
        !          30774:        ZEND_NULL_HANDLER,
        !          30775:        ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER,
        !          30776:        ZEND_ASSIGN_MUL_SPEC_VAR_TMP_HANDLER,
        !          30777:        ZEND_ASSIGN_MUL_SPEC_VAR_VAR_HANDLER,
        !          30778:        ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_HANDLER,
        !          30779:        ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER,
        !          30780:        ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_HANDLER,
        !          30781:        ZEND_ASSIGN_MUL_SPEC_UNUSED_TMP_HANDLER,
        !          30782:        ZEND_ASSIGN_MUL_SPEC_UNUSED_VAR_HANDLER,
        !          30783:        ZEND_ASSIGN_MUL_SPEC_UNUSED_UNUSED_HANDLER,
        !          30784:        ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_HANDLER,
        !          30785:        ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER,
        !          30786:        ZEND_ASSIGN_MUL_SPEC_CV_TMP_HANDLER,
        !          30787:        ZEND_ASSIGN_MUL_SPEC_CV_VAR_HANDLER,
        !          30788:        ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_HANDLER,
        !          30789:        ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER,
        !          30790:        ZEND_NULL_HANDLER,
        !          30791:        ZEND_NULL_HANDLER,
        !          30792:        ZEND_NULL_HANDLER,
        !          30793:        ZEND_NULL_HANDLER,
        !          30794:        ZEND_NULL_HANDLER,
        !          30795:        ZEND_NULL_HANDLER,
        !          30796:        ZEND_NULL_HANDLER,
        !          30797:        ZEND_NULL_HANDLER,
        !          30798:        ZEND_NULL_HANDLER,
        !          30799:        ZEND_NULL_HANDLER,
        !          30800:        ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER,
        !          30801:        ZEND_ASSIGN_DIV_SPEC_VAR_TMP_HANDLER,
        !          30802:        ZEND_ASSIGN_DIV_SPEC_VAR_VAR_HANDLER,
        !          30803:        ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_HANDLER,
        !          30804:        ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER,
        !          30805:        ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_HANDLER,
        !          30806:        ZEND_ASSIGN_DIV_SPEC_UNUSED_TMP_HANDLER,
        !          30807:        ZEND_ASSIGN_DIV_SPEC_UNUSED_VAR_HANDLER,
        !          30808:        ZEND_ASSIGN_DIV_SPEC_UNUSED_UNUSED_HANDLER,
        !          30809:        ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_HANDLER,
        !          30810:        ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER,
        !          30811:        ZEND_ASSIGN_DIV_SPEC_CV_TMP_HANDLER,
        !          30812:        ZEND_ASSIGN_DIV_SPEC_CV_VAR_HANDLER,
        !          30813:        ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_HANDLER,
        !          30814:        ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER,
        !          30815:        ZEND_NULL_HANDLER,
        !          30816:        ZEND_NULL_HANDLER,
        !          30817:        ZEND_NULL_HANDLER,
        !          30818:        ZEND_NULL_HANDLER,
        !          30819:        ZEND_NULL_HANDLER,
        !          30820:        ZEND_NULL_HANDLER,
        !          30821:        ZEND_NULL_HANDLER,
        !          30822:        ZEND_NULL_HANDLER,
        !          30823:        ZEND_NULL_HANDLER,
        !          30824:        ZEND_NULL_HANDLER,
        !          30825:        ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER,
        !          30826:        ZEND_ASSIGN_MOD_SPEC_VAR_TMP_HANDLER,
        !          30827:        ZEND_ASSIGN_MOD_SPEC_VAR_VAR_HANDLER,
        !          30828:        ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_HANDLER,
        !          30829:        ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER,
        !          30830:        ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_HANDLER,
        !          30831:        ZEND_ASSIGN_MOD_SPEC_UNUSED_TMP_HANDLER,
        !          30832:        ZEND_ASSIGN_MOD_SPEC_UNUSED_VAR_HANDLER,
        !          30833:        ZEND_ASSIGN_MOD_SPEC_UNUSED_UNUSED_HANDLER,
        !          30834:        ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_HANDLER,
        !          30835:        ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER,
        !          30836:        ZEND_ASSIGN_MOD_SPEC_CV_TMP_HANDLER,
        !          30837:        ZEND_ASSIGN_MOD_SPEC_CV_VAR_HANDLER,
        !          30838:        ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_HANDLER,
        !          30839:        ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER,
        !          30840:        ZEND_NULL_HANDLER,
        !          30841:        ZEND_NULL_HANDLER,
        !          30842:        ZEND_NULL_HANDLER,
        !          30843:        ZEND_NULL_HANDLER,
        !          30844:        ZEND_NULL_HANDLER,
        !          30845:        ZEND_NULL_HANDLER,
        !          30846:        ZEND_NULL_HANDLER,
        !          30847:        ZEND_NULL_HANDLER,
        !          30848:        ZEND_NULL_HANDLER,
        !          30849:        ZEND_NULL_HANDLER,
        !          30850:        ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER,
        !          30851:        ZEND_ASSIGN_SL_SPEC_VAR_TMP_HANDLER,
        !          30852:        ZEND_ASSIGN_SL_SPEC_VAR_VAR_HANDLER,
        !          30853:        ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_HANDLER,
        !          30854:        ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER,
        !          30855:        ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_HANDLER,
        !          30856:        ZEND_ASSIGN_SL_SPEC_UNUSED_TMP_HANDLER,
        !          30857:        ZEND_ASSIGN_SL_SPEC_UNUSED_VAR_HANDLER,
        !          30858:        ZEND_ASSIGN_SL_SPEC_UNUSED_UNUSED_HANDLER,
        !          30859:        ZEND_ASSIGN_SL_SPEC_UNUSED_CV_HANDLER,
        !          30860:        ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER,
        !          30861:        ZEND_ASSIGN_SL_SPEC_CV_TMP_HANDLER,
        !          30862:        ZEND_ASSIGN_SL_SPEC_CV_VAR_HANDLER,
        !          30863:        ZEND_ASSIGN_SL_SPEC_CV_UNUSED_HANDLER,
        !          30864:        ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER,
        !          30865:        ZEND_NULL_HANDLER,
        !          30866:        ZEND_NULL_HANDLER,
        !          30867:        ZEND_NULL_HANDLER,
        !          30868:        ZEND_NULL_HANDLER,
        !          30869:        ZEND_NULL_HANDLER,
        !          30870:        ZEND_NULL_HANDLER,
        !          30871:        ZEND_NULL_HANDLER,
        !          30872:        ZEND_NULL_HANDLER,
        !          30873:        ZEND_NULL_HANDLER,
        !          30874:        ZEND_NULL_HANDLER,
        !          30875:        ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER,
        !          30876:        ZEND_ASSIGN_SR_SPEC_VAR_TMP_HANDLER,
        !          30877:        ZEND_ASSIGN_SR_SPEC_VAR_VAR_HANDLER,
        !          30878:        ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_HANDLER,
        !          30879:        ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER,
        !          30880:        ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_HANDLER,
        !          30881:        ZEND_ASSIGN_SR_SPEC_UNUSED_TMP_HANDLER,
        !          30882:        ZEND_ASSIGN_SR_SPEC_UNUSED_VAR_HANDLER,
        !          30883:        ZEND_ASSIGN_SR_SPEC_UNUSED_UNUSED_HANDLER,
        !          30884:        ZEND_ASSIGN_SR_SPEC_UNUSED_CV_HANDLER,
        !          30885:        ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER,
        !          30886:        ZEND_ASSIGN_SR_SPEC_CV_TMP_HANDLER,
        !          30887:        ZEND_ASSIGN_SR_SPEC_CV_VAR_HANDLER,
        !          30888:        ZEND_ASSIGN_SR_SPEC_CV_UNUSED_HANDLER,
        !          30889:        ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER,
        !          30890:        ZEND_NULL_HANDLER,
        !          30891:        ZEND_NULL_HANDLER,
        !          30892:        ZEND_NULL_HANDLER,
        !          30893:        ZEND_NULL_HANDLER,
        !          30894:        ZEND_NULL_HANDLER,
        !          30895:        ZEND_NULL_HANDLER,
        !          30896:        ZEND_NULL_HANDLER,
        !          30897:        ZEND_NULL_HANDLER,
        !          30898:        ZEND_NULL_HANDLER,
        !          30899:        ZEND_NULL_HANDLER,
        !          30900:        ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER,
        !          30901:        ZEND_ASSIGN_CONCAT_SPEC_VAR_TMP_HANDLER,
        !          30902:        ZEND_ASSIGN_CONCAT_SPEC_VAR_VAR_HANDLER,
        !          30903:        ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_HANDLER,
        !          30904:        ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER,
        !          30905:        ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_HANDLER,
        !          30906:        ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMP_HANDLER,
        !          30907:        ZEND_ASSIGN_CONCAT_SPEC_UNUSED_VAR_HANDLER,
        !          30908:        ZEND_ASSIGN_CONCAT_SPEC_UNUSED_UNUSED_HANDLER,
        !          30909:        ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_HANDLER,
        !          30910:        ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER,
        !          30911:        ZEND_ASSIGN_CONCAT_SPEC_CV_TMP_HANDLER,
        !          30912:        ZEND_ASSIGN_CONCAT_SPEC_CV_VAR_HANDLER,
        !          30913:        ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_HANDLER,
        !          30914:        ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER,
        !          30915:        ZEND_NULL_HANDLER,
        !          30916:        ZEND_NULL_HANDLER,
        !          30917:        ZEND_NULL_HANDLER,
        !          30918:        ZEND_NULL_HANDLER,
        !          30919:        ZEND_NULL_HANDLER,
        !          30920:        ZEND_NULL_HANDLER,
        !          30921:        ZEND_NULL_HANDLER,
        !          30922:        ZEND_NULL_HANDLER,
        !          30923:        ZEND_NULL_HANDLER,
        !          30924:        ZEND_NULL_HANDLER,
        !          30925:        ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER,
        !          30926:        ZEND_ASSIGN_BW_OR_SPEC_VAR_TMP_HANDLER,
        !          30927:        ZEND_ASSIGN_BW_OR_SPEC_VAR_VAR_HANDLER,
        !          30928:        ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_HANDLER,
        !          30929:        ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER,
        !          30930:        ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_HANDLER,
        !          30931:        ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMP_HANDLER,
        !          30932:        ZEND_ASSIGN_BW_OR_SPEC_UNUSED_VAR_HANDLER,
        !          30933:        ZEND_ASSIGN_BW_OR_SPEC_UNUSED_UNUSED_HANDLER,
        !          30934:        ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_HANDLER,
        !          30935:        ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER,
        !          30936:        ZEND_ASSIGN_BW_OR_SPEC_CV_TMP_HANDLER,
        !          30937:        ZEND_ASSIGN_BW_OR_SPEC_CV_VAR_HANDLER,
        !          30938:        ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_HANDLER,
        !          30939:        ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER,
        !          30940:        ZEND_NULL_HANDLER,
        !          30941:        ZEND_NULL_HANDLER,
        !          30942:        ZEND_NULL_HANDLER,
        !          30943:        ZEND_NULL_HANDLER,
        !          30944:        ZEND_NULL_HANDLER,
        !          30945:        ZEND_NULL_HANDLER,
        !          30946:        ZEND_NULL_HANDLER,
        !          30947:        ZEND_NULL_HANDLER,
        !          30948:        ZEND_NULL_HANDLER,
        !          30949:        ZEND_NULL_HANDLER,
        !          30950:        ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER,
        !          30951:        ZEND_ASSIGN_BW_AND_SPEC_VAR_TMP_HANDLER,
        !          30952:        ZEND_ASSIGN_BW_AND_SPEC_VAR_VAR_HANDLER,
        !          30953:        ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_HANDLER,
        !          30954:        ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER,
        !          30955:        ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_HANDLER,
        !          30956:        ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMP_HANDLER,
        !          30957:        ZEND_ASSIGN_BW_AND_SPEC_UNUSED_VAR_HANDLER,
        !          30958:        ZEND_ASSIGN_BW_AND_SPEC_UNUSED_UNUSED_HANDLER,
        !          30959:        ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_HANDLER,
        !          30960:        ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER,
        !          30961:        ZEND_ASSIGN_BW_AND_SPEC_CV_TMP_HANDLER,
        !          30962:        ZEND_ASSIGN_BW_AND_SPEC_CV_VAR_HANDLER,
        !          30963:        ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_HANDLER,
        !          30964:        ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER,
        !          30965:        ZEND_NULL_HANDLER,
        !          30966:        ZEND_NULL_HANDLER,
        !          30967:        ZEND_NULL_HANDLER,
        !          30968:        ZEND_NULL_HANDLER,
        !          30969:        ZEND_NULL_HANDLER,
        !          30970:        ZEND_NULL_HANDLER,
        !          30971:        ZEND_NULL_HANDLER,
        !          30972:        ZEND_NULL_HANDLER,
        !          30973:        ZEND_NULL_HANDLER,
        !          30974:        ZEND_NULL_HANDLER,
        !          30975:        ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER,
        !          30976:        ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMP_HANDLER,
        !          30977:        ZEND_ASSIGN_BW_XOR_SPEC_VAR_VAR_HANDLER,
        !          30978:        ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_HANDLER,
        !          30979:        ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER,
        !          30980:        ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_HANDLER,
        !          30981:        ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMP_HANDLER,
        !          30982:        ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_VAR_HANDLER,
        !          30983:        ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_UNUSED_HANDLER,
        !          30984:        ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_HANDLER,
        !          30985:        ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER,
        !          30986:        ZEND_ASSIGN_BW_XOR_SPEC_CV_TMP_HANDLER,
        !          30987:        ZEND_ASSIGN_BW_XOR_SPEC_CV_VAR_HANDLER,
        !          30988:        ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_HANDLER,
        !          30989:        ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER,
        !          30990:        ZEND_NULL_HANDLER,
        !          30991:        ZEND_NULL_HANDLER,
        !          30992:        ZEND_NULL_HANDLER,
        !          30993:        ZEND_NULL_HANDLER,
        !          30994:        ZEND_NULL_HANDLER,
        !          30995:        ZEND_NULL_HANDLER,
        !          30996:        ZEND_NULL_HANDLER,
        !          30997:        ZEND_NULL_HANDLER,
        !          30998:        ZEND_NULL_HANDLER,
        !          30999:        ZEND_NULL_HANDLER,
        !          31000:        ZEND_PRE_INC_SPEC_VAR_HANDLER,
        !          31001:        ZEND_PRE_INC_SPEC_VAR_HANDLER,
        !          31002:        ZEND_PRE_INC_SPEC_VAR_HANDLER,
        !          31003:        ZEND_PRE_INC_SPEC_VAR_HANDLER,
        !          31004:        ZEND_PRE_INC_SPEC_VAR_HANDLER,
        !          31005:        ZEND_NULL_HANDLER,
        !          31006:        ZEND_NULL_HANDLER,
        !          31007:        ZEND_NULL_HANDLER,
        !          31008:        ZEND_NULL_HANDLER,
        !          31009:        ZEND_NULL_HANDLER,
        !          31010:        ZEND_PRE_INC_SPEC_CV_HANDLER,
        !          31011:        ZEND_PRE_INC_SPEC_CV_HANDLER,
        !          31012:        ZEND_PRE_INC_SPEC_CV_HANDLER,
        !          31013:        ZEND_PRE_INC_SPEC_CV_HANDLER,
        !          31014:        ZEND_PRE_INC_SPEC_CV_HANDLER,
        !          31015:        ZEND_NULL_HANDLER,
        !          31016:        ZEND_NULL_HANDLER,
        !          31017:        ZEND_NULL_HANDLER,
        !          31018:        ZEND_NULL_HANDLER,
        !          31019:        ZEND_NULL_HANDLER,
        !          31020:        ZEND_NULL_HANDLER,
        !          31021:        ZEND_NULL_HANDLER,
        !          31022:        ZEND_NULL_HANDLER,
        !          31023:        ZEND_NULL_HANDLER,
        !          31024:        ZEND_NULL_HANDLER,
        !          31025:        ZEND_PRE_DEC_SPEC_VAR_HANDLER,
        !          31026:        ZEND_PRE_DEC_SPEC_VAR_HANDLER,
        !          31027:        ZEND_PRE_DEC_SPEC_VAR_HANDLER,
        !          31028:        ZEND_PRE_DEC_SPEC_VAR_HANDLER,
        !          31029:        ZEND_PRE_DEC_SPEC_VAR_HANDLER,
        !          31030:        ZEND_NULL_HANDLER,
        !          31031:        ZEND_NULL_HANDLER,
        !          31032:        ZEND_NULL_HANDLER,
        !          31033:        ZEND_NULL_HANDLER,
        !          31034:        ZEND_NULL_HANDLER,
        !          31035:        ZEND_PRE_DEC_SPEC_CV_HANDLER,
        !          31036:        ZEND_PRE_DEC_SPEC_CV_HANDLER,
        !          31037:        ZEND_PRE_DEC_SPEC_CV_HANDLER,
        !          31038:        ZEND_PRE_DEC_SPEC_CV_HANDLER,
        !          31039:        ZEND_PRE_DEC_SPEC_CV_HANDLER,
        !          31040:        ZEND_NULL_HANDLER,
        !          31041:        ZEND_NULL_HANDLER,
        !          31042:        ZEND_NULL_HANDLER,
        !          31043:        ZEND_NULL_HANDLER,
        !          31044:        ZEND_NULL_HANDLER,
        !          31045:        ZEND_NULL_HANDLER,
        !          31046:        ZEND_NULL_HANDLER,
        !          31047:        ZEND_NULL_HANDLER,
        !          31048:        ZEND_NULL_HANDLER,
        !          31049:        ZEND_NULL_HANDLER,
        !          31050:        ZEND_POST_INC_SPEC_VAR_HANDLER,
        !          31051:        ZEND_POST_INC_SPEC_VAR_HANDLER,
        !          31052:        ZEND_POST_INC_SPEC_VAR_HANDLER,
        !          31053:        ZEND_POST_INC_SPEC_VAR_HANDLER,
        !          31054:        ZEND_POST_INC_SPEC_VAR_HANDLER,
        !          31055:        ZEND_NULL_HANDLER,
        !          31056:        ZEND_NULL_HANDLER,
        !          31057:        ZEND_NULL_HANDLER,
        !          31058:        ZEND_NULL_HANDLER,
        !          31059:        ZEND_NULL_HANDLER,
        !          31060:        ZEND_POST_INC_SPEC_CV_HANDLER,
        !          31061:        ZEND_POST_INC_SPEC_CV_HANDLER,
        !          31062:        ZEND_POST_INC_SPEC_CV_HANDLER,
        !          31063:        ZEND_POST_INC_SPEC_CV_HANDLER,
        !          31064:        ZEND_POST_INC_SPEC_CV_HANDLER,
        !          31065:        ZEND_NULL_HANDLER,
        !          31066:        ZEND_NULL_HANDLER,
        !          31067:        ZEND_NULL_HANDLER,
        !          31068:        ZEND_NULL_HANDLER,
        !          31069:        ZEND_NULL_HANDLER,
        !          31070:        ZEND_NULL_HANDLER,
        !          31071:        ZEND_NULL_HANDLER,
        !          31072:        ZEND_NULL_HANDLER,
        !          31073:        ZEND_NULL_HANDLER,
        !          31074:        ZEND_NULL_HANDLER,
        !          31075:        ZEND_POST_DEC_SPEC_VAR_HANDLER,
        !          31076:        ZEND_POST_DEC_SPEC_VAR_HANDLER,
        !          31077:        ZEND_POST_DEC_SPEC_VAR_HANDLER,
        !          31078:        ZEND_POST_DEC_SPEC_VAR_HANDLER,
        !          31079:        ZEND_POST_DEC_SPEC_VAR_HANDLER,
        !          31080:        ZEND_NULL_HANDLER,
        !          31081:        ZEND_NULL_HANDLER,
        !          31082:        ZEND_NULL_HANDLER,
        !          31083:        ZEND_NULL_HANDLER,
        !          31084:        ZEND_NULL_HANDLER,
        !          31085:        ZEND_POST_DEC_SPEC_CV_HANDLER,
        !          31086:        ZEND_POST_DEC_SPEC_CV_HANDLER,
        !          31087:        ZEND_POST_DEC_SPEC_CV_HANDLER,
        !          31088:        ZEND_POST_DEC_SPEC_CV_HANDLER,
        !          31089:        ZEND_POST_DEC_SPEC_CV_HANDLER,
        !          31090:        ZEND_NULL_HANDLER,
        !          31091:        ZEND_NULL_HANDLER,
        !          31092:        ZEND_NULL_HANDLER,
        !          31093:        ZEND_NULL_HANDLER,
        !          31094:        ZEND_NULL_HANDLER,
        !          31095:        ZEND_NULL_HANDLER,
        !          31096:        ZEND_NULL_HANDLER,
        !          31097:        ZEND_NULL_HANDLER,
        !          31098:        ZEND_NULL_HANDLER,
        !          31099:        ZEND_NULL_HANDLER,
        !          31100:        ZEND_ASSIGN_SPEC_VAR_CONST_HANDLER,
        !          31101:        ZEND_ASSIGN_SPEC_VAR_TMP_HANDLER,
        !          31102:        ZEND_ASSIGN_SPEC_VAR_VAR_HANDLER,
        !          31103:        ZEND_NULL_HANDLER,
        !          31104:        ZEND_ASSIGN_SPEC_VAR_CV_HANDLER,
        !          31105:        ZEND_NULL_HANDLER,
        !          31106:        ZEND_NULL_HANDLER,
        !          31107:        ZEND_NULL_HANDLER,
        !          31108:        ZEND_NULL_HANDLER,
        !          31109:        ZEND_NULL_HANDLER,
        !          31110:        ZEND_ASSIGN_SPEC_CV_CONST_HANDLER,
        !          31111:        ZEND_ASSIGN_SPEC_CV_TMP_HANDLER,
        !          31112:        ZEND_ASSIGN_SPEC_CV_VAR_HANDLER,
        !          31113:        ZEND_NULL_HANDLER,
        !          31114:        ZEND_ASSIGN_SPEC_CV_CV_HANDLER,
        !          31115:        ZEND_NULL_HANDLER,
        !          31116:        ZEND_NULL_HANDLER,
        !          31117:        ZEND_NULL_HANDLER,
        !          31118:        ZEND_NULL_HANDLER,
        !          31119:        ZEND_NULL_HANDLER,
        !          31120:        ZEND_NULL_HANDLER,
        !          31121:        ZEND_NULL_HANDLER,
        !          31122:        ZEND_NULL_HANDLER,
        !          31123:        ZEND_NULL_HANDLER,
        !          31124:        ZEND_NULL_HANDLER,
        !          31125:        ZEND_NULL_HANDLER,
        !          31126:        ZEND_NULL_HANDLER,
        !          31127:        ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER,
        !          31128:        ZEND_NULL_HANDLER,
        !          31129:        ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER,
        !          31130:        ZEND_NULL_HANDLER,
        !          31131:        ZEND_NULL_HANDLER,
        !          31132:        ZEND_NULL_HANDLER,
        !          31133:        ZEND_NULL_HANDLER,
        !          31134:        ZEND_NULL_HANDLER,
        !          31135:        ZEND_NULL_HANDLER,
        !          31136:        ZEND_NULL_HANDLER,
        !          31137:        ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER,
        !          31138:        ZEND_NULL_HANDLER,
        !          31139:        ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER,
        !          31140:        ZEND_ECHO_SPEC_CONST_HANDLER,
        !          31141:        ZEND_ECHO_SPEC_CONST_HANDLER,
        !          31142:        ZEND_ECHO_SPEC_CONST_HANDLER,
        !          31143:        ZEND_ECHO_SPEC_CONST_HANDLER,
        !          31144:        ZEND_ECHO_SPEC_CONST_HANDLER,
        !          31145:        ZEND_ECHO_SPEC_TMP_HANDLER,
        !          31146:        ZEND_ECHO_SPEC_TMP_HANDLER,
        !          31147:        ZEND_ECHO_SPEC_TMP_HANDLER,
        !          31148:        ZEND_ECHO_SPEC_TMP_HANDLER,
        !          31149:        ZEND_ECHO_SPEC_TMP_HANDLER,
        !          31150:        ZEND_ECHO_SPEC_VAR_HANDLER,
        !          31151:        ZEND_ECHO_SPEC_VAR_HANDLER,
        !          31152:        ZEND_ECHO_SPEC_VAR_HANDLER,
        !          31153:        ZEND_ECHO_SPEC_VAR_HANDLER,
        !          31154:        ZEND_ECHO_SPEC_VAR_HANDLER,
        !          31155:        ZEND_NULL_HANDLER,
        !          31156:        ZEND_NULL_HANDLER,
        !          31157:        ZEND_NULL_HANDLER,
        !          31158:        ZEND_NULL_HANDLER,
        !          31159:        ZEND_NULL_HANDLER,
        !          31160:        ZEND_ECHO_SPEC_CV_HANDLER,
        !          31161:        ZEND_ECHO_SPEC_CV_HANDLER,
        !          31162:        ZEND_ECHO_SPEC_CV_HANDLER,
        !          31163:        ZEND_ECHO_SPEC_CV_HANDLER,
        !          31164:        ZEND_ECHO_SPEC_CV_HANDLER,
        !          31165:        ZEND_PRINT_SPEC_CONST_HANDLER,
        !          31166:        ZEND_PRINT_SPEC_CONST_HANDLER,
        !          31167:        ZEND_PRINT_SPEC_CONST_HANDLER,
        !          31168:        ZEND_PRINT_SPEC_CONST_HANDLER,
        !          31169:        ZEND_PRINT_SPEC_CONST_HANDLER,
        !          31170:        ZEND_PRINT_SPEC_TMP_HANDLER,
        !          31171:        ZEND_PRINT_SPEC_TMP_HANDLER,
        !          31172:        ZEND_PRINT_SPEC_TMP_HANDLER,
        !          31173:        ZEND_PRINT_SPEC_TMP_HANDLER,
        !          31174:        ZEND_PRINT_SPEC_TMP_HANDLER,
        !          31175:        ZEND_PRINT_SPEC_VAR_HANDLER,
        !          31176:        ZEND_PRINT_SPEC_VAR_HANDLER,
        !          31177:        ZEND_PRINT_SPEC_VAR_HANDLER,
        !          31178:        ZEND_PRINT_SPEC_VAR_HANDLER,
        !          31179:        ZEND_PRINT_SPEC_VAR_HANDLER,
        !          31180:        ZEND_NULL_HANDLER,
        !          31181:        ZEND_NULL_HANDLER,
        !          31182:        ZEND_NULL_HANDLER,
        !          31183:        ZEND_NULL_HANDLER,
        !          31184:        ZEND_NULL_HANDLER,
        !          31185:        ZEND_PRINT_SPEC_CV_HANDLER,
        !          31186:        ZEND_PRINT_SPEC_CV_HANDLER,
        !          31187:        ZEND_PRINT_SPEC_CV_HANDLER,
        !          31188:        ZEND_PRINT_SPEC_CV_HANDLER,
        !          31189:        ZEND_PRINT_SPEC_CV_HANDLER,
        !          31190:        ZEND_JMP_SPEC_HANDLER,
        !          31191:        ZEND_JMP_SPEC_HANDLER,
        !          31192:        ZEND_JMP_SPEC_HANDLER,
        !          31193:        ZEND_JMP_SPEC_HANDLER,
        !          31194:        ZEND_JMP_SPEC_HANDLER,
        !          31195:        ZEND_JMP_SPEC_HANDLER,
        !          31196:        ZEND_JMP_SPEC_HANDLER,
        !          31197:        ZEND_JMP_SPEC_HANDLER,
        !          31198:        ZEND_JMP_SPEC_HANDLER,
        !          31199:        ZEND_JMP_SPEC_HANDLER,
        !          31200:        ZEND_JMP_SPEC_HANDLER,
        !          31201:        ZEND_JMP_SPEC_HANDLER,
        !          31202:        ZEND_JMP_SPEC_HANDLER,
        !          31203:        ZEND_JMP_SPEC_HANDLER,
        !          31204:        ZEND_JMP_SPEC_HANDLER,
        !          31205:        ZEND_JMP_SPEC_HANDLER,
        !          31206:        ZEND_JMP_SPEC_HANDLER,
        !          31207:        ZEND_JMP_SPEC_HANDLER,
        !          31208:        ZEND_JMP_SPEC_HANDLER,
        !          31209:        ZEND_JMP_SPEC_HANDLER,
        !          31210:        ZEND_JMP_SPEC_HANDLER,
        !          31211:        ZEND_JMP_SPEC_HANDLER,
        !          31212:        ZEND_JMP_SPEC_HANDLER,
        !          31213:        ZEND_JMP_SPEC_HANDLER,
        !          31214:        ZEND_JMP_SPEC_HANDLER,
        !          31215:        ZEND_JMPZ_SPEC_CONST_HANDLER,
        !          31216:        ZEND_JMPZ_SPEC_CONST_HANDLER,
        !          31217:        ZEND_JMPZ_SPEC_CONST_HANDLER,
        !          31218:        ZEND_JMPZ_SPEC_CONST_HANDLER,
        !          31219:        ZEND_JMPZ_SPEC_CONST_HANDLER,
        !          31220:        ZEND_JMPZ_SPEC_TMP_HANDLER,
        !          31221:        ZEND_JMPZ_SPEC_TMP_HANDLER,
        !          31222:        ZEND_JMPZ_SPEC_TMP_HANDLER,
        !          31223:        ZEND_JMPZ_SPEC_TMP_HANDLER,
        !          31224:        ZEND_JMPZ_SPEC_TMP_HANDLER,
        !          31225:        ZEND_JMPZ_SPEC_VAR_HANDLER,
        !          31226:        ZEND_JMPZ_SPEC_VAR_HANDLER,
        !          31227:        ZEND_JMPZ_SPEC_VAR_HANDLER,
        !          31228:        ZEND_JMPZ_SPEC_VAR_HANDLER,
        !          31229:        ZEND_JMPZ_SPEC_VAR_HANDLER,
        !          31230:        ZEND_NULL_HANDLER,
        !          31231:        ZEND_NULL_HANDLER,
        !          31232:        ZEND_NULL_HANDLER,
        !          31233:        ZEND_NULL_HANDLER,
        !          31234:        ZEND_NULL_HANDLER,
        !          31235:        ZEND_JMPZ_SPEC_CV_HANDLER,
        !          31236:        ZEND_JMPZ_SPEC_CV_HANDLER,
        !          31237:        ZEND_JMPZ_SPEC_CV_HANDLER,
        !          31238:        ZEND_JMPZ_SPEC_CV_HANDLER,
        !          31239:        ZEND_JMPZ_SPEC_CV_HANDLER,
        !          31240:        ZEND_JMPNZ_SPEC_CONST_HANDLER,
        !          31241:        ZEND_JMPNZ_SPEC_CONST_HANDLER,
        !          31242:        ZEND_JMPNZ_SPEC_CONST_HANDLER,
        !          31243:        ZEND_JMPNZ_SPEC_CONST_HANDLER,
        !          31244:        ZEND_JMPNZ_SPEC_CONST_HANDLER,
        !          31245:        ZEND_JMPNZ_SPEC_TMP_HANDLER,
        !          31246:        ZEND_JMPNZ_SPEC_TMP_HANDLER,
        !          31247:        ZEND_JMPNZ_SPEC_TMP_HANDLER,
        !          31248:        ZEND_JMPNZ_SPEC_TMP_HANDLER,
        !          31249:        ZEND_JMPNZ_SPEC_TMP_HANDLER,
        !          31250:        ZEND_JMPNZ_SPEC_VAR_HANDLER,
        !          31251:        ZEND_JMPNZ_SPEC_VAR_HANDLER,
        !          31252:        ZEND_JMPNZ_SPEC_VAR_HANDLER,
        !          31253:        ZEND_JMPNZ_SPEC_VAR_HANDLER,
        !          31254:        ZEND_JMPNZ_SPEC_VAR_HANDLER,
        !          31255:        ZEND_NULL_HANDLER,
        !          31256:        ZEND_NULL_HANDLER,
        !          31257:        ZEND_NULL_HANDLER,
        !          31258:        ZEND_NULL_HANDLER,
        !          31259:        ZEND_NULL_HANDLER,
        !          31260:        ZEND_JMPNZ_SPEC_CV_HANDLER,
        !          31261:        ZEND_JMPNZ_SPEC_CV_HANDLER,
        !          31262:        ZEND_JMPNZ_SPEC_CV_HANDLER,
        !          31263:        ZEND_JMPNZ_SPEC_CV_HANDLER,
        !          31264:        ZEND_JMPNZ_SPEC_CV_HANDLER,
        !          31265:        ZEND_JMPZNZ_SPEC_CONST_HANDLER,
        !          31266:        ZEND_JMPZNZ_SPEC_CONST_HANDLER,
        !          31267:        ZEND_JMPZNZ_SPEC_CONST_HANDLER,
        !          31268:        ZEND_JMPZNZ_SPEC_CONST_HANDLER,
        !          31269:        ZEND_JMPZNZ_SPEC_CONST_HANDLER,
        !          31270:        ZEND_JMPZNZ_SPEC_TMP_HANDLER,
        !          31271:        ZEND_JMPZNZ_SPEC_TMP_HANDLER,
        !          31272:        ZEND_JMPZNZ_SPEC_TMP_HANDLER,
        !          31273:        ZEND_JMPZNZ_SPEC_TMP_HANDLER,
        !          31274:        ZEND_JMPZNZ_SPEC_TMP_HANDLER,
        !          31275:        ZEND_JMPZNZ_SPEC_VAR_HANDLER,
        !          31276:        ZEND_JMPZNZ_SPEC_VAR_HANDLER,
        !          31277:        ZEND_JMPZNZ_SPEC_VAR_HANDLER,
        !          31278:        ZEND_JMPZNZ_SPEC_VAR_HANDLER,
        !          31279:        ZEND_JMPZNZ_SPEC_VAR_HANDLER,
        !          31280:        ZEND_NULL_HANDLER,
        !          31281:        ZEND_NULL_HANDLER,
        !          31282:        ZEND_NULL_HANDLER,
        !          31283:        ZEND_NULL_HANDLER,
        !          31284:        ZEND_NULL_HANDLER,
        !          31285:        ZEND_JMPZNZ_SPEC_CV_HANDLER,
        !          31286:        ZEND_JMPZNZ_SPEC_CV_HANDLER,
        !          31287:        ZEND_JMPZNZ_SPEC_CV_HANDLER,
        !          31288:        ZEND_JMPZNZ_SPEC_CV_HANDLER,
        !          31289:        ZEND_JMPZNZ_SPEC_CV_HANDLER,
        !          31290:        ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
        !          31291:        ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
        !          31292:        ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
        !          31293:        ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
        !          31294:        ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
        !          31295:        ZEND_JMPZ_EX_SPEC_TMP_HANDLER,
        !          31296:        ZEND_JMPZ_EX_SPEC_TMP_HANDLER,
        !          31297:        ZEND_JMPZ_EX_SPEC_TMP_HANDLER,
        !          31298:        ZEND_JMPZ_EX_SPEC_TMP_HANDLER,
        !          31299:        ZEND_JMPZ_EX_SPEC_TMP_HANDLER,
        !          31300:        ZEND_JMPZ_EX_SPEC_VAR_HANDLER,
        !          31301:        ZEND_JMPZ_EX_SPEC_VAR_HANDLER,
        !          31302:        ZEND_JMPZ_EX_SPEC_VAR_HANDLER,
        !          31303:        ZEND_JMPZ_EX_SPEC_VAR_HANDLER,
        !          31304:        ZEND_JMPZ_EX_SPEC_VAR_HANDLER,
        !          31305:        ZEND_NULL_HANDLER,
        !          31306:        ZEND_NULL_HANDLER,
        !          31307:        ZEND_NULL_HANDLER,
        !          31308:        ZEND_NULL_HANDLER,
        !          31309:        ZEND_NULL_HANDLER,
        !          31310:        ZEND_JMPZ_EX_SPEC_CV_HANDLER,
        !          31311:        ZEND_JMPZ_EX_SPEC_CV_HANDLER,
        !          31312:        ZEND_JMPZ_EX_SPEC_CV_HANDLER,
        !          31313:        ZEND_JMPZ_EX_SPEC_CV_HANDLER,
        !          31314:        ZEND_JMPZ_EX_SPEC_CV_HANDLER,
        !          31315:        ZEND_JMPNZ_EX_SPEC_CONST_HANDLER,
        !          31316:        ZEND_JMPNZ_EX_SPEC_CONST_HANDLER,
        !          31317:        ZEND_JMPNZ_EX_SPEC_CONST_HANDLER,
        !          31318:        ZEND_JMPNZ_EX_SPEC_CONST_HANDLER,
        !          31319:        ZEND_JMPNZ_EX_SPEC_CONST_HANDLER,
        !          31320:        ZEND_JMPNZ_EX_SPEC_TMP_HANDLER,
        !          31321:        ZEND_JMPNZ_EX_SPEC_TMP_HANDLER,
        !          31322:        ZEND_JMPNZ_EX_SPEC_TMP_HANDLER,
        !          31323:        ZEND_JMPNZ_EX_SPEC_TMP_HANDLER,
        !          31324:        ZEND_JMPNZ_EX_SPEC_TMP_HANDLER,
        !          31325:        ZEND_JMPNZ_EX_SPEC_VAR_HANDLER,
        !          31326:        ZEND_JMPNZ_EX_SPEC_VAR_HANDLER,
        !          31327:        ZEND_JMPNZ_EX_SPEC_VAR_HANDLER,
        !          31328:        ZEND_JMPNZ_EX_SPEC_VAR_HANDLER,
        !          31329:        ZEND_JMPNZ_EX_SPEC_VAR_HANDLER,
        !          31330:        ZEND_NULL_HANDLER,
        !          31331:        ZEND_NULL_HANDLER,
        !          31332:        ZEND_NULL_HANDLER,
        !          31333:        ZEND_NULL_HANDLER,
        !          31334:        ZEND_NULL_HANDLER,
        !          31335:        ZEND_JMPNZ_EX_SPEC_CV_HANDLER,
        !          31336:        ZEND_JMPNZ_EX_SPEC_CV_HANDLER,
        !          31337:        ZEND_JMPNZ_EX_SPEC_CV_HANDLER,
        !          31338:        ZEND_JMPNZ_EX_SPEC_CV_HANDLER,
        !          31339:        ZEND_JMPNZ_EX_SPEC_CV_HANDLER,
        !          31340:        ZEND_CASE_SPEC_CONST_CONST_HANDLER,
        !          31341:        ZEND_CASE_SPEC_CONST_TMP_HANDLER,
        !          31342:        ZEND_CASE_SPEC_CONST_VAR_HANDLER,
        !          31343:        ZEND_NULL_HANDLER,
        !          31344:        ZEND_CASE_SPEC_CONST_CV_HANDLER,
        !          31345:        ZEND_CASE_SPEC_TMP_CONST_HANDLER,
        !          31346:        ZEND_CASE_SPEC_TMP_TMP_HANDLER,
        !          31347:        ZEND_CASE_SPEC_TMP_VAR_HANDLER,
        !          31348:        ZEND_NULL_HANDLER,
        !          31349:        ZEND_CASE_SPEC_TMP_CV_HANDLER,
        !          31350:        ZEND_CASE_SPEC_VAR_CONST_HANDLER,
        !          31351:        ZEND_CASE_SPEC_VAR_TMP_HANDLER,
        !          31352:        ZEND_CASE_SPEC_VAR_VAR_HANDLER,
        !          31353:        ZEND_NULL_HANDLER,
        !          31354:        ZEND_CASE_SPEC_VAR_CV_HANDLER,
        !          31355:        ZEND_NULL_HANDLER,
        !          31356:        ZEND_NULL_HANDLER,
        !          31357:        ZEND_NULL_HANDLER,
        !          31358:        ZEND_NULL_HANDLER,
        !          31359:        ZEND_NULL_HANDLER,
        !          31360:        ZEND_CASE_SPEC_CV_CONST_HANDLER,
        !          31361:        ZEND_CASE_SPEC_CV_TMP_HANDLER,
        !          31362:        ZEND_CASE_SPEC_CV_VAR_HANDLER,
        !          31363:        ZEND_NULL_HANDLER,
        !          31364:        ZEND_CASE_SPEC_CV_CV_HANDLER,
        !          31365:        ZEND_NULL_HANDLER,
        !          31366:        ZEND_NULL_HANDLER,
        !          31367:        ZEND_NULL_HANDLER,
        !          31368:        ZEND_NULL_HANDLER,
        !          31369:        ZEND_NULL_HANDLER,
        !          31370:        ZEND_NULL_HANDLER,
        !          31371:        ZEND_NULL_HANDLER,
        !          31372:        ZEND_NULL_HANDLER,
        !          31373:        ZEND_NULL_HANDLER,
        !          31374:        ZEND_NULL_HANDLER,
        !          31375:        ZEND_SWITCH_FREE_SPEC_VAR_HANDLER,
        !          31376:        ZEND_SWITCH_FREE_SPEC_VAR_HANDLER,
        !          31377:        ZEND_SWITCH_FREE_SPEC_VAR_HANDLER,
        !          31378:        ZEND_SWITCH_FREE_SPEC_VAR_HANDLER,
        !          31379:        ZEND_SWITCH_FREE_SPEC_VAR_HANDLER,
        !          31380:        ZEND_NULL_HANDLER,
        !          31381:        ZEND_NULL_HANDLER,
        !          31382:        ZEND_NULL_HANDLER,
        !          31383:        ZEND_NULL_HANDLER,
        !          31384:        ZEND_NULL_HANDLER,
        !          31385:        ZEND_NULL_HANDLER,
        !          31386:        ZEND_NULL_HANDLER,
        !          31387:        ZEND_NULL_HANDLER,
        !          31388:        ZEND_NULL_HANDLER,
        !          31389:        ZEND_NULL_HANDLER,
        !          31390:        ZEND_BRK_SPEC_CONST_HANDLER,
        !          31391:        ZEND_BRK_SPEC_TMP_HANDLER,
        !          31392:        ZEND_BRK_SPEC_VAR_HANDLER,
        !          31393:        ZEND_NULL_HANDLER,
        !          31394:        ZEND_BRK_SPEC_CV_HANDLER,
        !          31395:        ZEND_BRK_SPEC_CONST_HANDLER,
        !          31396:        ZEND_BRK_SPEC_TMP_HANDLER,
        !          31397:        ZEND_BRK_SPEC_VAR_HANDLER,
        !          31398:        ZEND_NULL_HANDLER,
        !          31399:        ZEND_BRK_SPEC_CV_HANDLER,
        !          31400:        ZEND_BRK_SPEC_CONST_HANDLER,
        !          31401:        ZEND_BRK_SPEC_TMP_HANDLER,
        !          31402:        ZEND_BRK_SPEC_VAR_HANDLER,
        !          31403:        ZEND_NULL_HANDLER,
        !          31404:        ZEND_BRK_SPEC_CV_HANDLER,
        !          31405:        ZEND_BRK_SPEC_CONST_HANDLER,
        !          31406:        ZEND_BRK_SPEC_TMP_HANDLER,
        !          31407:        ZEND_BRK_SPEC_VAR_HANDLER,
        !          31408:        ZEND_NULL_HANDLER,
        !          31409:        ZEND_BRK_SPEC_CV_HANDLER,
        !          31410:        ZEND_BRK_SPEC_CONST_HANDLER,
        !          31411:        ZEND_BRK_SPEC_TMP_HANDLER,
        !          31412:        ZEND_BRK_SPEC_VAR_HANDLER,
        !          31413:        ZEND_NULL_HANDLER,
        !          31414:        ZEND_BRK_SPEC_CV_HANDLER,
        !          31415:        ZEND_CONT_SPEC_CONST_HANDLER,
        !          31416:        ZEND_CONT_SPEC_TMP_HANDLER,
        !          31417:        ZEND_CONT_SPEC_VAR_HANDLER,
        !          31418:        ZEND_NULL_HANDLER,
        !          31419:        ZEND_CONT_SPEC_CV_HANDLER,
        !          31420:        ZEND_CONT_SPEC_CONST_HANDLER,
        !          31421:        ZEND_CONT_SPEC_TMP_HANDLER,
        !          31422:        ZEND_CONT_SPEC_VAR_HANDLER,
        !          31423:        ZEND_NULL_HANDLER,
        !          31424:        ZEND_CONT_SPEC_CV_HANDLER,
        !          31425:        ZEND_CONT_SPEC_CONST_HANDLER,
        !          31426:        ZEND_CONT_SPEC_TMP_HANDLER,
        !          31427:        ZEND_CONT_SPEC_VAR_HANDLER,
        !          31428:        ZEND_NULL_HANDLER,
        !          31429:        ZEND_CONT_SPEC_CV_HANDLER,
        !          31430:        ZEND_CONT_SPEC_CONST_HANDLER,
        !          31431:        ZEND_CONT_SPEC_TMP_HANDLER,
        !          31432:        ZEND_CONT_SPEC_VAR_HANDLER,
        !          31433:        ZEND_NULL_HANDLER,
        !          31434:        ZEND_CONT_SPEC_CV_HANDLER,
        !          31435:        ZEND_CONT_SPEC_CONST_HANDLER,
        !          31436:        ZEND_CONT_SPEC_TMP_HANDLER,
        !          31437:        ZEND_CONT_SPEC_VAR_HANDLER,
        !          31438:        ZEND_NULL_HANDLER,
        !          31439:        ZEND_CONT_SPEC_CV_HANDLER,
        !          31440:        ZEND_BOOL_SPEC_CONST_HANDLER,
        !          31441:        ZEND_BOOL_SPEC_CONST_HANDLER,
        !          31442:        ZEND_BOOL_SPEC_CONST_HANDLER,
        !          31443:        ZEND_BOOL_SPEC_CONST_HANDLER,
        !          31444:        ZEND_BOOL_SPEC_CONST_HANDLER,
        !          31445:        ZEND_BOOL_SPEC_TMP_HANDLER,
        !          31446:        ZEND_BOOL_SPEC_TMP_HANDLER,
        !          31447:        ZEND_BOOL_SPEC_TMP_HANDLER,
        !          31448:        ZEND_BOOL_SPEC_TMP_HANDLER,
        !          31449:        ZEND_BOOL_SPEC_TMP_HANDLER,
        !          31450:        ZEND_BOOL_SPEC_VAR_HANDLER,
        !          31451:        ZEND_BOOL_SPEC_VAR_HANDLER,
        !          31452:        ZEND_BOOL_SPEC_VAR_HANDLER,
        !          31453:        ZEND_BOOL_SPEC_VAR_HANDLER,
        !          31454:        ZEND_BOOL_SPEC_VAR_HANDLER,
        !          31455:        ZEND_NULL_HANDLER,
        !          31456:        ZEND_NULL_HANDLER,
        !          31457:        ZEND_NULL_HANDLER,
        !          31458:        ZEND_NULL_HANDLER,
        !          31459:        ZEND_NULL_HANDLER,
        !          31460:        ZEND_BOOL_SPEC_CV_HANDLER,
        !          31461:        ZEND_BOOL_SPEC_CV_HANDLER,
        !          31462:        ZEND_BOOL_SPEC_CV_HANDLER,
        !          31463:        ZEND_BOOL_SPEC_CV_HANDLER,
        !          31464:        ZEND_BOOL_SPEC_CV_HANDLER,
        !          31465:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31466:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31467:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31468:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31469:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31470:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31471:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31472:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31473:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31474:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31475:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31476:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31477:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31478:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31479:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31480:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31481:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31482:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31483:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31484:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31485:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31486:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31487:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31488:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31489:        ZEND_INIT_STRING_SPEC_HANDLER,
        !          31490:        ZEND_NULL_HANDLER,
        !          31491:        ZEND_NULL_HANDLER,
        !          31492:        ZEND_NULL_HANDLER,
        !          31493:        ZEND_NULL_HANDLER,
        !          31494:        ZEND_NULL_HANDLER,
        !          31495:        ZEND_ADD_CHAR_SPEC_TMP_CONST_HANDLER,
        !          31496:        ZEND_NULL_HANDLER,
        !          31497:        ZEND_NULL_HANDLER,
        !          31498:        ZEND_NULL_HANDLER,
        !          31499:        ZEND_NULL_HANDLER,
        !          31500:        ZEND_NULL_HANDLER,
        !          31501:        ZEND_NULL_HANDLER,
        !          31502:        ZEND_NULL_HANDLER,
        !          31503:        ZEND_NULL_HANDLER,
        !          31504:        ZEND_NULL_HANDLER,
        !          31505:        ZEND_ADD_CHAR_SPEC_UNUSED_CONST_HANDLER,
        !          31506:        ZEND_NULL_HANDLER,
        !          31507:        ZEND_NULL_HANDLER,
        !          31508:        ZEND_NULL_HANDLER,
        !          31509:        ZEND_NULL_HANDLER,
        !          31510:        ZEND_NULL_HANDLER,
        !          31511:        ZEND_NULL_HANDLER,
        !          31512:        ZEND_NULL_HANDLER,
        !          31513:        ZEND_NULL_HANDLER,
        !          31514:        ZEND_NULL_HANDLER,
        !          31515:        ZEND_NULL_HANDLER,
        !          31516:        ZEND_NULL_HANDLER,
        !          31517:        ZEND_NULL_HANDLER,
        !          31518:        ZEND_NULL_HANDLER,
        !          31519:        ZEND_NULL_HANDLER,
        !          31520:        ZEND_ADD_STRING_SPEC_TMP_CONST_HANDLER,
        !          31521:        ZEND_NULL_HANDLER,
        !          31522:        ZEND_NULL_HANDLER,
        !          31523:        ZEND_NULL_HANDLER,
        !          31524:        ZEND_NULL_HANDLER,
        !          31525:        ZEND_NULL_HANDLER,
        !          31526:        ZEND_NULL_HANDLER,
        !          31527:        ZEND_NULL_HANDLER,
        !          31528:        ZEND_NULL_HANDLER,
        !          31529:        ZEND_NULL_HANDLER,
        !          31530:        ZEND_ADD_STRING_SPEC_UNUSED_CONST_HANDLER,
        !          31531:        ZEND_NULL_HANDLER,
        !          31532:        ZEND_NULL_HANDLER,
        !          31533:        ZEND_NULL_HANDLER,
        !          31534:        ZEND_NULL_HANDLER,
        !          31535:        ZEND_NULL_HANDLER,
        !          31536:        ZEND_NULL_HANDLER,
        !          31537:        ZEND_NULL_HANDLER,
        !          31538:        ZEND_NULL_HANDLER,
        !          31539:        ZEND_NULL_HANDLER,
        !          31540:        ZEND_NULL_HANDLER,
        !          31541:        ZEND_NULL_HANDLER,
        !          31542:        ZEND_NULL_HANDLER,
        !          31543:        ZEND_NULL_HANDLER,
        !          31544:        ZEND_NULL_HANDLER,
        !          31545:        ZEND_NULL_HANDLER,
        !          31546:        ZEND_ADD_VAR_SPEC_TMP_TMP_HANDLER,
        !          31547:        ZEND_ADD_VAR_SPEC_TMP_VAR_HANDLER,
        !          31548:        ZEND_NULL_HANDLER,
        !          31549:        ZEND_ADD_VAR_SPEC_TMP_CV_HANDLER,
        !          31550:        ZEND_NULL_HANDLER,
        !          31551:        ZEND_NULL_HANDLER,
        !          31552:        ZEND_NULL_HANDLER,
        !          31553:        ZEND_NULL_HANDLER,
        !          31554:        ZEND_NULL_HANDLER,
        !          31555:        ZEND_NULL_HANDLER,
        !          31556:        ZEND_ADD_VAR_SPEC_UNUSED_TMP_HANDLER,
        !          31557:        ZEND_ADD_VAR_SPEC_UNUSED_VAR_HANDLER,
        !          31558:        ZEND_NULL_HANDLER,
        !          31559:        ZEND_ADD_VAR_SPEC_UNUSED_CV_HANDLER,
        !          31560:        ZEND_NULL_HANDLER,
        !          31561:        ZEND_NULL_HANDLER,
        !          31562:        ZEND_NULL_HANDLER,
        !          31563:        ZEND_NULL_HANDLER,
        !          31564:        ZEND_NULL_HANDLER,
        !          31565:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31566:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31567:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31568:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31569:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31570:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31571:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31572:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31573:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31574:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31575:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31576:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31577:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31578:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31579:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31580:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31581:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31582:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31583:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31584:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31585:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31586:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31587:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31588:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31589:        ZEND_BEGIN_SILENCE_SPEC_HANDLER,
        !          31590:        ZEND_NULL_HANDLER,
        !          31591:        ZEND_NULL_HANDLER,
        !          31592:        ZEND_NULL_HANDLER,
        !          31593:        ZEND_NULL_HANDLER,
        !          31594:        ZEND_NULL_HANDLER,
        !          31595:        ZEND_END_SILENCE_SPEC_TMP_HANDLER,
        !          31596:        ZEND_END_SILENCE_SPEC_TMP_HANDLER,
        !          31597:        ZEND_END_SILENCE_SPEC_TMP_HANDLER,
        !          31598:        ZEND_END_SILENCE_SPEC_TMP_HANDLER,
        !          31599:        ZEND_END_SILENCE_SPEC_TMP_HANDLER,
        !          31600:        ZEND_NULL_HANDLER,
        !          31601:        ZEND_NULL_HANDLER,
        !          31602:        ZEND_NULL_HANDLER,
        !          31603:        ZEND_NULL_HANDLER,
        !          31604:        ZEND_NULL_HANDLER,
        !          31605:        ZEND_NULL_HANDLER,
        !          31606:        ZEND_NULL_HANDLER,
        !          31607:        ZEND_NULL_HANDLER,
        !          31608:        ZEND_NULL_HANDLER,
        !          31609:        ZEND_NULL_HANDLER,
        !          31610:        ZEND_NULL_HANDLER,
        !          31611:        ZEND_NULL_HANDLER,
        !          31612:        ZEND_NULL_HANDLER,
        !          31613:        ZEND_NULL_HANDLER,
        !          31614:        ZEND_NULL_HANDLER,
        !          31615:        ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31616:        ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER,
        !          31617:        ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER,
        !          31618:        ZEND_NULL_HANDLER,
        !          31619:        ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER,
        !          31620:        ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31621:        ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER,
        !          31622:        ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER,
        !          31623:        ZEND_NULL_HANDLER,
        !          31624:        ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER,
        !          31625:        ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31626:        ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER,
        !          31627:        ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER,
        !          31628:        ZEND_NULL_HANDLER,
        !          31629:        ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER,
        !          31630:        ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31631:        ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER,
        !          31632:        ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER,
        !          31633:        ZEND_NULL_HANDLER,
        !          31634:        ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER,
        !          31635:        ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31636:        ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER,
        !          31637:        ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER,
        !          31638:        ZEND_NULL_HANDLER,
        !          31639:        ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER,
        !          31640:        ZEND_DO_FCALL_SPEC_CONST_HANDLER,
        !          31641:        ZEND_DO_FCALL_SPEC_CONST_HANDLER,
        !          31642:        ZEND_DO_FCALL_SPEC_CONST_HANDLER,
        !          31643:        ZEND_DO_FCALL_SPEC_CONST_HANDLER,
        !          31644:        ZEND_DO_FCALL_SPEC_CONST_HANDLER,
        !          31645:        ZEND_NULL_HANDLER,
        !          31646:        ZEND_NULL_HANDLER,
        !          31647:        ZEND_NULL_HANDLER,
        !          31648:        ZEND_NULL_HANDLER,
        !          31649:        ZEND_NULL_HANDLER,
        !          31650:        ZEND_NULL_HANDLER,
        !          31651:        ZEND_NULL_HANDLER,
        !          31652:        ZEND_NULL_HANDLER,
        !          31653:        ZEND_NULL_HANDLER,
        !          31654:        ZEND_NULL_HANDLER,
        !          31655:        ZEND_NULL_HANDLER,
        !          31656:        ZEND_NULL_HANDLER,
        !          31657:        ZEND_NULL_HANDLER,
        !          31658:        ZEND_NULL_HANDLER,
        !          31659:        ZEND_NULL_HANDLER,
        !          31660:        ZEND_NULL_HANDLER,
        !          31661:        ZEND_NULL_HANDLER,
        !          31662:        ZEND_NULL_HANDLER,
        !          31663:        ZEND_NULL_HANDLER,
        !          31664:        ZEND_NULL_HANDLER,
        !          31665:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31666:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31667:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31668:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31669:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31670:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31671:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31672:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31673:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31674:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31675:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31676:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31677:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31678:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31679:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31680:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31681:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31682:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31683:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31684:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31685:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31686:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31687:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31688:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31689:        ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER,
        !          31690:        ZEND_RETURN_SPEC_CONST_HANDLER,
        !          31691:        ZEND_RETURN_SPEC_CONST_HANDLER,
        !          31692:        ZEND_RETURN_SPEC_CONST_HANDLER,
        !          31693:        ZEND_RETURN_SPEC_CONST_HANDLER,
        !          31694:        ZEND_RETURN_SPEC_CONST_HANDLER,
        !          31695:        ZEND_RETURN_SPEC_TMP_HANDLER,
        !          31696:        ZEND_RETURN_SPEC_TMP_HANDLER,
        !          31697:        ZEND_RETURN_SPEC_TMP_HANDLER,
        !          31698:        ZEND_RETURN_SPEC_TMP_HANDLER,
        !          31699:        ZEND_RETURN_SPEC_TMP_HANDLER,
        !          31700:        ZEND_RETURN_SPEC_VAR_HANDLER,
        !          31701:        ZEND_RETURN_SPEC_VAR_HANDLER,
        !          31702:        ZEND_RETURN_SPEC_VAR_HANDLER,
        !          31703:        ZEND_RETURN_SPEC_VAR_HANDLER,
        !          31704:        ZEND_RETURN_SPEC_VAR_HANDLER,
        !          31705:        ZEND_NULL_HANDLER,
        !          31706:        ZEND_NULL_HANDLER,
        !          31707:        ZEND_NULL_HANDLER,
        !          31708:        ZEND_NULL_HANDLER,
        !          31709:        ZEND_NULL_HANDLER,
        !          31710:        ZEND_RETURN_SPEC_CV_HANDLER,
        !          31711:        ZEND_RETURN_SPEC_CV_HANDLER,
        !          31712:        ZEND_RETURN_SPEC_CV_HANDLER,
        !          31713:        ZEND_RETURN_SPEC_CV_HANDLER,
        !          31714:        ZEND_RETURN_SPEC_CV_HANDLER,
        !          31715:        ZEND_RECV_SPEC_HANDLER,
        !          31716:        ZEND_RECV_SPEC_HANDLER,
        !          31717:        ZEND_RECV_SPEC_HANDLER,
        !          31718:        ZEND_RECV_SPEC_HANDLER,
        !          31719:        ZEND_RECV_SPEC_HANDLER,
        !          31720:        ZEND_RECV_SPEC_HANDLER,
        !          31721:        ZEND_RECV_SPEC_HANDLER,
        !          31722:        ZEND_RECV_SPEC_HANDLER,
        !          31723:        ZEND_RECV_SPEC_HANDLER,
        !          31724:        ZEND_RECV_SPEC_HANDLER,
        !          31725:        ZEND_RECV_SPEC_HANDLER,
        !          31726:        ZEND_RECV_SPEC_HANDLER,
        !          31727:        ZEND_RECV_SPEC_HANDLER,
        !          31728:        ZEND_RECV_SPEC_HANDLER,
        !          31729:        ZEND_RECV_SPEC_HANDLER,
        !          31730:        ZEND_RECV_SPEC_HANDLER,
        !          31731:        ZEND_RECV_SPEC_HANDLER,
        !          31732:        ZEND_RECV_SPEC_HANDLER,
        !          31733:        ZEND_RECV_SPEC_HANDLER,
        !          31734:        ZEND_RECV_SPEC_HANDLER,
        !          31735:        ZEND_RECV_SPEC_HANDLER,
        !          31736:        ZEND_RECV_SPEC_HANDLER,
        !          31737:        ZEND_RECV_SPEC_HANDLER,
        !          31738:        ZEND_RECV_SPEC_HANDLER,
        !          31739:        ZEND_RECV_SPEC_HANDLER,
        !          31740:        ZEND_RECV_INIT_SPEC_CONST_HANDLER,
        !          31741:        ZEND_NULL_HANDLER,
        !          31742:        ZEND_NULL_HANDLER,
        !          31743:        ZEND_NULL_HANDLER,
        !          31744:        ZEND_NULL_HANDLER,
        !          31745:        ZEND_RECV_INIT_SPEC_CONST_HANDLER,
        !          31746:        ZEND_NULL_HANDLER,
        !          31747:        ZEND_NULL_HANDLER,
        !          31748:        ZEND_NULL_HANDLER,
        !          31749:        ZEND_NULL_HANDLER,
        !          31750:        ZEND_RECV_INIT_SPEC_CONST_HANDLER,
        !          31751:        ZEND_NULL_HANDLER,
        !          31752:        ZEND_NULL_HANDLER,
        !          31753:        ZEND_NULL_HANDLER,
        !          31754:        ZEND_NULL_HANDLER,
        !          31755:        ZEND_RECV_INIT_SPEC_CONST_HANDLER,
        !          31756:        ZEND_NULL_HANDLER,
        !          31757:        ZEND_NULL_HANDLER,
        !          31758:        ZEND_NULL_HANDLER,
        !          31759:        ZEND_NULL_HANDLER,
        !          31760:        ZEND_RECV_INIT_SPEC_CONST_HANDLER,
        !          31761:        ZEND_NULL_HANDLER,
        !          31762:        ZEND_NULL_HANDLER,
        !          31763:        ZEND_NULL_HANDLER,
        !          31764:        ZEND_NULL_HANDLER,
        !          31765:        ZEND_SEND_VAL_SPEC_CONST_HANDLER,
        !          31766:        ZEND_SEND_VAL_SPEC_CONST_HANDLER,
        !          31767:        ZEND_SEND_VAL_SPEC_CONST_HANDLER,
        !          31768:        ZEND_SEND_VAL_SPEC_CONST_HANDLER,
        !          31769:        ZEND_SEND_VAL_SPEC_CONST_HANDLER,
        !          31770:        ZEND_SEND_VAL_SPEC_TMP_HANDLER,
        !          31771:        ZEND_SEND_VAL_SPEC_TMP_HANDLER,
        !          31772:        ZEND_SEND_VAL_SPEC_TMP_HANDLER,
        !          31773:        ZEND_SEND_VAL_SPEC_TMP_HANDLER,
        !          31774:        ZEND_SEND_VAL_SPEC_TMP_HANDLER,
        !          31775:        ZEND_SEND_VAL_SPEC_VAR_HANDLER,
        !          31776:        ZEND_SEND_VAL_SPEC_VAR_HANDLER,
        !          31777:        ZEND_SEND_VAL_SPEC_VAR_HANDLER,
        !          31778:        ZEND_SEND_VAL_SPEC_VAR_HANDLER,
        !          31779:        ZEND_SEND_VAL_SPEC_VAR_HANDLER,
        !          31780:        ZEND_NULL_HANDLER,
        !          31781:        ZEND_NULL_HANDLER,
        !          31782:        ZEND_NULL_HANDLER,
        !          31783:        ZEND_NULL_HANDLER,
        !          31784:        ZEND_NULL_HANDLER,
        !          31785:        ZEND_SEND_VAL_SPEC_CV_HANDLER,
        !          31786:        ZEND_SEND_VAL_SPEC_CV_HANDLER,
        !          31787:        ZEND_SEND_VAL_SPEC_CV_HANDLER,
        !          31788:        ZEND_SEND_VAL_SPEC_CV_HANDLER,
        !          31789:        ZEND_SEND_VAL_SPEC_CV_HANDLER,
        !          31790:        ZEND_NULL_HANDLER,
        !          31791:        ZEND_NULL_HANDLER,
        !          31792:        ZEND_NULL_HANDLER,
        !          31793:        ZEND_NULL_HANDLER,
        !          31794:        ZEND_NULL_HANDLER,
        !          31795:        ZEND_NULL_HANDLER,
        !          31796:        ZEND_NULL_HANDLER,
        !          31797:        ZEND_NULL_HANDLER,
        !          31798:        ZEND_NULL_HANDLER,
        !          31799:        ZEND_NULL_HANDLER,
        !          31800:        ZEND_SEND_VAR_SPEC_VAR_HANDLER,
        !          31801:        ZEND_SEND_VAR_SPEC_VAR_HANDLER,
        !          31802:        ZEND_SEND_VAR_SPEC_VAR_HANDLER,
        !          31803:        ZEND_SEND_VAR_SPEC_VAR_HANDLER,
        !          31804:        ZEND_SEND_VAR_SPEC_VAR_HANDLER,
        !          31805:        ZEND_NULL_HANDLER,
        !          31806:        ZEND_NULL_HANDLER,
        !          31807:        ZEND_NULL_HANDLER,
        !          31808:        ZEND_NULL_HANDLER,
        !          31809:        ZEND_NULL_HANDLER,
        !          31810:        ZEND_SEND_VAR_SPEC_CV_HANDLER,
        !          31811:        ZEND_SEND_VAR_SPEC_CV_HANDLER,
        !          31812:        ZEND_SEND_VAR_SPEC_CV_HANDLER,
        !          31813:        ZEND_SEND_VAR_SPEC_CV_HANDLER,
        !          31814:        ZEND_SEND_VAR_SPEC_CV_HANDLER,
        !          31815:        ZEND_NULL_HANDLER,
        !          31816:        ZEND_NULL_HANDLER,
        !          31817:        ZEND_NULL_HANDLER,
        !          31818:        ZEND_NULL_HANDLER,
        !          31819:        ZEND_NULL_HANDLER,
        !          31820:        ZEND_NULL_HANDLER,
        !          31821:        ZEND_NULL_HANDLER,
        !          31822:        ZEND_NULL_HANDLER,
        !          31823:        ZEND_NULL_HANDLER,
        !          31824:        ZEND_NULL_HANDLER,
        !          31825:        ZEND_SEND_REF_SPEC_VAR_HANDLER,
        !          31826:        ZEND_SEND_REF_SPEC_VAR_HANDLER,
        !          31827:        ZEND_SEND_REF_SPEC_VAR_HANDLER,
        !          31828:        ZEND_SEND_REF_SPEC_VAR_HANDLER,
        !          31829:        ZEND_SEND_REF_SPEC_VAR_HANDLER,
        !          31830:        ZEND_NULL_HANDLER,
        !          31831:        ZEND_NULL_HANDLER,
        !          31832:        ZEND_NULL_HANDLER,
        !          31833:        ZEND_NULL_HANDLER,
        !          31834:        ZEND_NULL_HANDLER,
        !          31835:        ZEND_SEND_REF_SPEC_CV_HANDLER,
        !          31836:        ZEND_SEND_REF_SPEC_CV_HANDLER,
        !          31837:        ZEND_SEND_REF_SPEC_CV_HANDLER,
        !          31838:        ZEND_SEND_REF_SPEC_CV_HANDLER,
        !          31839:        ZEND_SEND_REF_SPEC_CV_HANDLER,
        !          31840:        ZEND_NEW_SPEC_HANDLER,
        !          31841:        ZEND_NEW_SPEC_HANDLER,
        !          31842:        ZEND_NEW_SPEC_HANDLER,
        !          31843:        ZEND_NEW_SPEC_HANDLER,
        !          31844:        ZEND_NEW_SPEC_HANDLER,
        !          31845:        ZEND_NEW_SPEC_HANDLER,
        !          31846:        ZEND_NEW_SPEC_HANDLER,
        !          31847:        ZEND_NEW_SPEC_HANDLER,
        !          31848:        ZEND_NEW_SPEC_HANDLER,
        !          31849:        ZEND_NEW_SPEC_HANDLER,
        !          31850:        ZEND_NEW_SPEC_HANDLER,
        !          31851:        ZEND_NEW_SPEC_HANDLER,
        !          31852:        ZEND_NEW_SPEC_HANDLER,
        !          31853:        ZEND_NEW_SPEC_HANDLER,
        !          31854:        ZEND_NEW_SPEC_HANDLER,
        !          31855:        ZEND_NEW_SPEC_HANDLER,
        !          31856:        ZEND_NEW_SPEC_HANDLER,
        !          31857:        ZEND_NEW_SPEC_HANDLER,
        !          31858:        ZEND_NEW_SPEC_HANDLER,
        !          31859:        ZEND_NEW_SPEC_HANDLER,
        !          31860:        ZEND_NEW_SPEC_HANDLER,
        !          31861:        ZEND_NEW_SPEC_HANDLER,
        !          31862:        ZEND_NEW_SPEC_HANDLER,
        !          31863:        ZEND_NEW_SPEC_HANDLER,
        !          31864:        ZEND_NEW_SPEC_HANDLER,
        !          31865:        ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31866:        ZEND_NULL_HANDLER,
        !          31867:        ZEND_NULL_HANDLER,
        !          31868:        ZEND_NULL_HANDLER,
        !          31869:        ZEND_NULL_HANDLER,
        !          31870:        ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31871:        ZEND_NULL_HANDLER,
        !          31872:        ZEND_NULL_HANDLER,
        !          31873:        ZEND_NULL_HANDLER,
        !          31874:        ZEND_NULL_HANDLER,
        !          31875:        ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31876:        ZEND_NULL_HANDLER,
        !          31877:        ZEND_NULL_HANDLER,
        !          31878:        ZEND_NULL_HANDLER,
        !          31879:        ZEND_NULL_HANDLER,
        !          31880:        ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31881:        ZEND_NULL_HANDLER,
        !          31882:        ZEND_NULL_HANDLER,
        !          31883:        ZEND_NULL_HANDLER,
        !          31884:        ZEND_NULL_HANDLER,
        !          31885:        ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER,
        !          31886:        ZEND_NULL_HANDLER,
        !          31887:        ZEND_NULL_HANDLER,
        !          31888:        ZEND_NULL_HANDLER,
        !          31889:        ZEND_NULL_HANDLER,
        !          31890:        ZEND_NULL_HANDLER,
        !          31891:        ZEND_NULL_HANDLER,
        !          31892:        ZEND_NULL_HANDLER,
        !          31893:        ZEND_NULL_HANDLER,
        !          31894:        ZEND_NULL_HANDLER,
        !          31895:        ZEND_FREE_SPEC_TMP_HANDLER,
        !          31896:        ZEND_FREE_SPEC_TMP_HANDLER,
        !          31897:        ZEND_FREE_SPEC_TMP_HANDLER,
        !          31898:        ZEND_FREE_SPEC_TMP_HANDLER,
        !          31899:        ZEND_FREE_SPEC_TMP_HANDLER,
        !          31900:        ZEND_NULL_HANDLER,
        !          31901:        ZEND_NULL_HANDLER,
        !          31902:        ZEND_NULL_HANDLER,
        !          31903:        ZEND_NULL_HANDLER,
        !          31904:        ZEND_NULL_HANDLER,
        !          31905:        ZEND_NULL_HANDLER,
        !          31906:        ZEND_NULL_HANDLER,
        !          31907:        ZEND_NULL_HANDLER,
        !          31908:        ZEND_NULL_HANDLER,
        !          31909:        ZEND_NULL_HANDLER,
        !          31910:        ZEND_NULL_HANDLER,
        !          31911:        ZEND_NULL_HANDLER,
        !          31912:        ZEND_NULL_HANDLER,
        !          31913:        ZEND_NULL_HANDLER,
        !          31914:        ZEND_NULL_HANDLER,
        !          31915:        ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER,
        !          31916:        ZEND_INIT_ARRAY_SPEC_CONST_TMP_HANDLER,
        !          31917:        ZEND_INIT_ARRAY_SPEC_CONST_VAR_HANDLER,
        !          31918:        ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER,
        !          31919:        ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER,
        !          31920:        ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER,
        !          31921:        ZEND_INIT_ARRAY_SPEC_TMP_TMP_HANDLER,
        !          31922:        ZEND_INIT_ARRAY_SPEC_TMP_VAR_HANDLER,
        !          31923:        ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER,
        !          31924:        ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER,
        !          31925:        ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER,
        !          31926:        ZEND_INIT_ARRAY_SPEC_VAR_TMP_HANDLER,
        !          31927:        ZEND_INIT_ARRAY_SPEC_VAR_VAR_HANDLER,
        !          31928:        ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER,
        !          31929:        ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER,
        !          31930:        ZEND_INIT_ARRAY_SPEC_UNUSED_CONST_HANDLER,
        !          31931:        ZEND_INIT_ARRAY_SPEC_UNUSED_TMP_HANDLER,
        !          31932:        ZEND_INIT_ARRAY_SPEC_UNUSED_VAR_HANDLER,
        !          31933:        ZEND_INIT_ARRAY_SPEC_UNUSED_UNUSED_HANDLER,
        !          31934:        ZEND_INIT_ARRAY_SPEC_UNUSED_CV_HANDLER,
        !          31935:        ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER,
        !          31936:        ZEND_INIT_ARRAY_SPEC_CV_TMP_HANDLER,
        !          31937:        ZEND_INIT_ARRAY_SPEC_CV_VAR_HANDLER,
        !          31938:        ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER,
        !          31939:        ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER,
        !          31940:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER,
        !          31941:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER,
        !          31942:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_VAR_HANDLER,
        !          31943:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER,
        !          31944:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER,
        !          31945:        ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER,
        !          31946:        ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER,
        !          31947:        ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_VAR_HANDLER,
        !          31948:        ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER,
        !          31949:        ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER,
        !          31950:        ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER,
        !          31951:        ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_HANDLER,
        !          31952:        ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_VAR_HANDLER,
        !          31953:        ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER,
        !          31954:        ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER,
        !          31955:        ZEND_NULL_HANDLER,
        !          31956:        ZEND_NULL_HANDLER,
        !          31957:        ZEND_NULL_HANDLER,
        !          31958:        ZEND_NULL_HANDLER,
        !          31959:        ZEND_NULL_HANDLER,
        !          31960:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER,
        !          31961:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER,
        !          31962:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_VAR_HANDLER,
        !          31963:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER,
        !          31964:        ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER,
        !          31965:        ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER,
        !          31966:        ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER,
        !          31967:        ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER,
        !          31968:        ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER,
        !          31969:        ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER,
        !          31970:        ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER,
        !          31971:        ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER,
        !          31972:        ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER,
        !          31973:        ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER,
        !          31974:        ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER,
        !          31975:        ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER,
        !          31976:        ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER,
        !          31977:        ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER,
        !          31978:        ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER,
        !          31979:        ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER,
        !          31980:        ZEND_NULL_HANDLER,
        !          31981:        ZEND_NULL_HANDLER,
        !          31982:        ZEND_NULL_HANDLER,
        !          31983:        ZEND_NULL_HANDLER,
        !          31984:        ZEND_NULL_HANDLER,
        !          31985:        ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER,
        !          31986:        ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER,
        !          31987:        ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER,
        !          31988:        ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER,
        !          31989:        ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER,
        !          31990:        ZEND_UNSET_VAR_SPEC_CONST_HANDLER,
        !          31991:        ZEND_UNSET_VAR_SPEC_CONST_HANDLER,
        !          31992:        ZEND_UNSET_VAR_SPEC_CONST_HANDLER,
        !          31993:        ZEND_UNSET_VAR_SPEC_CONST_HANDLER,
        !          31994:        ZEND_UNSET_VAR_SPEC_CONST_HANDLER,
        !          31995:        ZEND_UNSET_VAR_SPEC_TMP_HANDLER,
        !          31996:        ZEND_UNSET_VAR_SPEC_TMP_HANDLER,
        !          31997:        ZEND_UNSET_VAR_SPEC_TMP_HANDLER,
        !          31998:        ZEND_UNSET_VAR_SPEC_TMP_HANDLER,
        !          31999:        ZEND_UNSET_VAR_SPEC_TMP_HANDLER,
        !          32000:        ZEND_UNSET_VAR_SPEC_VAR_HANDLER,
        !          32001:        ZEND_UNSET_VAR_SPEC_VAR_HANDLER,
        !          32002:        ZEND_UNSET_VAR_SPEC_VAR_HANDLER,
        !          32003:        ZEND_UNSET_VAR_SPEC_VAR_HANDLER,
        !          32004:        ZEND_UNSET_VAR_SPEC_VAR_HANDLER,
        !          32005:        ZEND_NULL_HANDLER,
        !          32006:        ZEND_NULL_HANDLER,
        !          32007:        ZEND_NULL_HANDLER,
        !          32008:        ZEND_NULL_HANDLER,
        !          32009:        ZEND_NULL_HANDLER,
        !          32010:        ZEND_UNSET_VAR_SPEC_CV_HANDLER,
        !          32011:        ZEND_UNSET_VAR_SPEC_CV_HANDLER,
        !          32012:        ZEND_UNSET_VAR_SPEC_CV_HANDLER,
        !          32013:        ZEND_UNSET_VAR_SPEC_CV_HANDLER,
        !          32014:        ZEND_UNSET_VAR_SPEC_CV_HANDLER,
        !          32015:        ZEND_NULL_HANDLER,
        !          32016:        ZEND_NULL_HANDLER,
        !          32017:        ZEND_NULL_HANDLER,
        !          32018:        ZEND_NULL_HANDLER,
        !          32019:        ZEND_NULL_HANDLER,
        !          32020:        ZEND_NULL_HANDLER,
        !          32021:        ZEND_NULL_HANDLER,
        !          32022:        ZEND_NULL_HANDLER,
        !          32023:        ZEND_NULL_HANDLER,
        !          32024:        ZEND_NULL_HANDLER,
        !          32025:        ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER,
        !          32026:        ZEND_UNSET_DIM_SPEC_VAR_TMP_HANDLER,
        !          32027:        ZEND_UNSET_DIM_SPEC_VAR_VAR_HANDLER,
        !          32028:        ZEND_NULL_HANDLER,
        !          32029:        ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER,
        !          32030:        ZEND_UNSET_DIM_SPEC_UNUSED_CONST_HANDLER,
        !          32031:        ZEND_UNSET_DIM_SPEC_UNUSED_TMP_HANDLER,
        !          32032:        ZEND_UNSET_DIM_SPEC_UNUSED_VAR_HANDLER,
        !          32033:        ZEND_NULL_HANDLER,
        !          32034:        ZEND_UNSET_DIM_SPEC_UNUSED_CV_HANDLER,
        !          32035:        ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER,
        !          32036:        ZEND_UNSET_DIM_SPEC_CV_TMP_HANDLER,
        !          32037:        ZEND_UNSET_DIM_SPEC_CV_VAR_HANDLER,
        !          32038:        ZEND_NULL_HANDLER,
        !          32039:        ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER,
        !          32040:        ZEND_NULL_HANDLER,
        !          32041:        ZEND_NULL_HANDLER,
        !          32042:        ZEND_NULL_HANDLER,
        !          32043:        ZEND_NULL_HANDLER,
        !          32044:        ZEND_NULL_HANDLER,
        !          32045:        ZEND_NULL_HANDLER,
        !          32046:        ZEND_NULL_HANDLER,
        !          32047:        ZEND_NULL_HANDLER,
        !          32048:        ZEND_NULL_HANDLER,
        !          32049:        ZEND_NULL_HANDLER,
        !          32050:        ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER,
        !          32051:        ZEND_UNSET_OBJ_SPEC_VAR_TMP_HANDLER,
        !          32052:        ZEND_UNSET_OBJ_SPEC_VAR_VAR_HANDLER,
        !          32053:        ZEND_NULL_HANDLER,
        !          32054:        ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER,
        !          32055:        ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER,
        !          32056:        ZEND_UNSET_OBJ_SPEC_UNUSED_TMP_HANDLER,
        !          32057:        ZEND_UNSET_OBJ_SPEC_UNUSED_VAR_HANDLER,
        !          32058:        ZEND_NULL_HANDLER,
        !          32059:        ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER,
        !          32060:        ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER,
        !          32061:        ZEND_UNSET_OBJ_SPEC_CV_TMP_HANDLER,
        !          32062:        ZEND_UNSET_OBJ_SPEC_CV_VAR_HANDLER,
        !          32063:        ZEND_NULL_HANDLER,
        !          32064:        ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER,
        !          32065:        ZEND_FE_RESET_SPEC_CONST_HANDLER,
        !          32066:        ZEND_FE_RESET_SPEC_CONST_HANDLER,
        !          32067:        ZEND_FE_RESET_SPEC_CONST_HANDLER,
        !          32068:        ZEND_FE_RESET_SPEC_CONST_HANDLER,
        !          32069:        ZEND_FE_RESET_SPEC_CONST_HANDLER,
        !          32070:        ZEND_FE_RESET_SPEC_TMP_HANDLER,
        !          32071:        ZEND_FE_RESET_SPEC_TMP_HANDLER,
        !          32072:        ZEND_FE_RESET_SPEC_TMP_HANDLER,
        !          32073:        ZEND_FE_RESET_SPEC_TMP_HANDLER,
        !          32074:        ZEND_FE_RESET_SPEC_TMP_HANDLER,
        !          32075:        ZEND_FE_RESET_SPEC_VAR_HANDLER,
        !          32076:        ZEND_FE_RESET_SPEC_VAR_HANDLER,
        !          32077:        ZEND_FE_RESET_SPEC_VAR_HANDLER,
        !          32078:        ZEND_FE_RESET_SPEC_VAR_HANDLER,
        !          32079:        ZEND_FE_RESET_SPEC_VAR_HANDLER,
        !          32080:        ZEND_NULL_HANDLER,
        !          32081:        ZEND_NULL_HANDLER,
        !          32082:        ZEND_NULL_HANDLER,
        !          32083:        ZEND_NULL_HANDLER,
        !          32084:        ZEND_NULL_HANDLER,
        !          32085:        ZEND_FE_RESET_SPEC_CV_HANDLER,
        !          32086:        ZEND_FE_RESET_SPEC_CV_HANDLER,
        !          32087:        ZEND_FE_RESET_SPEC_CV_HANDLER,
        !          32088:        ZEND_FE_RESET_SPEC_CV_HANDLER,
        !          32089:        ZEND_FE_RESET_SPEC_CV_HANDLER,
        !          32090:        ZEND_NULL_HANDLER,
        !          32091:        ZEND_NULL_HANDLER,
        !          32092:        ZEND_NULL_HANDLER,
        !          32093:        ZEND_NULL_HANDLER,
        !          32094:        ZEND_NULL_HANDLER,
        !          32095:        ZEND_NULL_HANDLER,
        !          32096:        ZEND_NULL_HANDLER,
        !          32097:        ZEND_NULL_HANDLER,
        !          32098:        ZEND_NULL_HANDLER,
        !          32099:        ZEND_NULL_HANDLER,
        !          32100:        ZEND_FE_FETCH_SPEC_VAR_HANDLER,
        !          32101:        ZEND_FE_FETCH_SPEC_VAR_HANDLER,
        !          32102:        ZEND_FE_FETCH_SPEC_VAR_HANDLER,
        !          32103:        ZEND_FE_FETCH_SPEC_VAR_HANDLER,
        !          32104:        ZEND_FE_FETCH_SPEC_VAR_HANDLER,
        !          32105:        ZEND_NULL_HANDLER,
        !          32106:        ZEND_NULL_HANDLER,
        !          32107:        ZEND_NULL_HANDLER,
        !          32108:        ZEND_NULL_HANDLER,
        !          32109:        ZEND_NULL_HANDLER,
        !          32110:        ZEND_NULL_HANDLER,
        !          32111:        ZEND_NULL_HANDLER,
        !          32112:        ZEND_NULL_HANDLER,
        !          32113:        ZEND_NULL_HANDLER,
        !          32114:        ZEND_NULL_HANDLER,
        !          32115:        ZEND_EXIT_SPEC_CONST_HANDLER,
        !          32116:        ZEND_EXIT_SPEC_CONST_HANDLER,
        !          32117:        ZEND_EXIT_SPEC_CONST_HANDLER,
        !          32118:        ZEND_EXIT_SPEC_CONST_HANDLER,
        !          32119:        ZEND_EXIT_SPEC_CONST_HANDLER,
        !          32120:        ZEND_EXIT_SPEC_TMP_HANDLER,
        !          32121:        ZEND_EXIT_SPEC_TMP_HANDLER,
        !          32122:        ZEND_EXIT_SPEC_TMP_HANDLER,
        !          32123:        ZEND_EXIT_SPEC_TMP_HANDLER,
        !          32124:        ZEND_EXIT_SPEC_TMP_HANDLER,
        !          32125:        ZEND_EXIT_SPEC_VAR_HANDLER,
        !          32126:        ZEND_EXIT_SPEC_VAR_HANDLER,
        !          32127:        ZEND_EXIT_SPEC_VAR_HANDLER,
        !          32128:        ZEND_EXIT_SPEC_VAR_HANDLER,
        !          32129:        ZEND_EXIT_SPEC_VAR_HANDLER,
        !          32130:        ZEND_EXIT_SPEC_UNUSED_HANDLER,
        !          32131:        ZEND_EXIT_SPEC_UNUSED_HANDLER,
        !          32132:        ZEND_EXIT_SPEC_UNUSED_HANDLER,
        !          32133:        ZEND_EXIT_SPEC_UNUSED_HANDLER,
        !          32134:        ZEND_EXIT_SPEC_UNUSED_HANDLER,
        !          32135:        ZEND_EXIT_SPEC_CV_HANDLER,
        !          32136:        ZEND_EXIT_SPEC_CV_HANDLER,
        !          32137:        ZEND_EXIT_SPEC_CV_HANDLER,
        !          32138:        ZEND_EXIT_SPEC_CV_HANDLER,
        !          32139:        ZEND_EXIT_SPEC_CV_HANDLER,
        !          32140:        ZEND_FETCH_R_SPEC_CONST_HANDLER,
        !          32141:        ZEND_FETCH_R_SPEC_CONST_HANDLER,
        !          32142:        ZEND_FETCH_R_SPEC_CONST_HANDLER,
        !          32143:        ZEND_FETCH_R_SPEC_CONST_HANDLER,
        !          32144:        ZEND_FETCH_R_SPEC_CONST_HANDLER,
        !          32145:        ZEND_FETCH_R_SPEC_TMP_HANDLER,
        !          32146:        ZEND_FETCH_R_SPEC_TMP_HANDLER,
        !          32147:        ZEND_FETCH_R_SPEC_TMP_HANDLER,
        !          32148:        ZEND_FETCH_R_SPEC_TMP_HANDLER,
        !          32149:        ZEND_FETCH_R_SPEC_TMP_HANDLER,
        !          32150:        ZEND_FETCH_R_SPEC_VAR_HANDLER,
        !          32151:        ZEND_FETCH_R_SPEC_VAR_HANDLER,
        !          32152:        ZEND_FETCH_R_SPEC_VAR_HANDLER,
        !          32153:        ZEND_FETCH_R_SPEC_VAR_HANDLER,
        !          32154:        ZEND_FETCH_R_SPEC_VAR_HANDLER,
        !          32155:        ZEND_NULL_HANDLER,
        !          32156:        ZEND_NULL_HANDLER,
        !          32157:        ZEND_NULL_HANDLER,
        !          32158:        ZEND_NULL_HANDLER,
        !          32159:        ZEND_NULL_HANDLER,
        !          32160:        ZEND_FETCH_R_SPEC_CV_HANDLER,
        !          32161:        ZEND_FETCH_R_SPEC_CV_HANDLER,
        !          32162:        ZEND_FETCH_R_SPEC_CV_HANDLER,
        !          32163:        ZEND_FETCH_R_SPEC_CV_HANDLER,
        !          32164:        ZEND_FETCH_R_SPEC_CV_HANDLER,
        !          32165:        ZEND_NULL_HANDLER,
        !          32166:        ZEND_NULL_HANDLER,
        !          32167:        ZEND_NULL_HANDLER,
        !          32168:        ZEND_NULL_HANDLER,
        !          32169:        ZEND_NULL_HANDLER,
        !          32170:        ZEND_NULL_HANDLER,
        !          32171:        ZEND_NULL_HANDLER,
        !          32172:        ZEND_NULL_HANDLER,
        !          32173:        ZEND_NULL_HANDLER,
        !          32174:        ZEND_NULL_HANDLER,
        !          32175:        ZEND_FETCH_DIM_R_SPEC_VAR_CONST_HANDLER,
        !          32176:        ZEND_FETCH_DIM_R_SPEC_VAR_TMP_HANDLER,
        !          32177:        ZEND_FETCH_DIM_R_SPEC_VAR_VAR_HANDLER,
        !          32178:        ZEND_NULL_HANDLER,
        !          32179:        ZEND_FETCH_DIM_R_SPEC_VAR_CV_HANDLER,
        !          32180:        ZEND_NULL_HANDLER,
        !          32181:        ZEND_NULL_HANDLER,
        !          32182:        ZEND_NULL_HANDLER,
        !          32183:        ZEND_NULL_HANDLER,
        !          32184:        ZEND_NULL_HANDLER,
        !          32185:        ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER,
        !          32186:        ZEND_FETCH_DIM_R_SPEC_CV_TMP_HANDLER,
        !          32187:        ZEND_FETCH_DIM_R_SPEC_CV_VAR_HANDLER,
        !          32188:        ZEND_NULL_HANDLER,
        !          32189:        ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER,
        !          32190:        ZEND_NULL_HANDLER,
        !          32191:        ZEND_NULL_HANDLER,
        !          32192:        ZEND_NULL_HANDLER,
        !          32193:        ZEND_NULL_HANDLER,
        !          32194:        ZEND_NULL_HANDLER,
        !          32195:        ZEND_NULL_HANDLER,
        !          32196:        ZEND_NULL_HANDLER,
        !          32197:        ZEND_NULL_HANDLER,
        !          32198:        ZEND_NULL_HANDLER,
        !          32199:        ZEND_NULL_HANDLER,
        !          32200:        ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER,
        !          32201:        ZEND_FETCH_OBJ_R_SPEC_VAR_TMP_HANDLER,
        !          32202:        ZEND_FETCH_OBJ_R_SPEC_VAR_VAR_HANDLER,
        !          32203:        ZEND_NULL_HANDLER,
        !          32204:        ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLER,
        !          32205:        ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER,
        !          32206:        ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMP_HANDLER,
        !          32207:        ZEND_FETCH_OBJ_R_SPEC_UNUSED_VAR_HANDLER,
        !          32208:        ZEND_NULL_HANDLER,
        !          32209:        ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER,
        !          32210:        ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER,
        !          32211:        ZEND_FETCH_OBJ_R_SPEC_CV_TMP_HANDLER,
        !          32212:        ZEND_FETCH_OBJ_R_SPEC_CV_VAR_HANDLER,
        !          32213:        ZEND_NULL_HANDLER,
        !          32214:        ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER,
        !          32215:        ZEND_FETCH_W_SPEC_CONST_HANDLER,
        !          32216:        ZEND_FETCH_W_SPEC_CONST_HANDLER,
        !          32217:        ZEND_FETCH_W_SPEC_CONST_HANDLER,
        !          32218:        ZEND_FETCH_W_SPEC_CONST_HANDLER,
        !          32219:        ZEND_FETCH_W_SPEC_CONST_HANDLER,
        !          32220:        ZEND_FETCH_W_SPEC_TMP_HANDLER,
        !          32221:        ZEND_FETCH_W_SPEC_TMP_HANDLER,
        !          32222:        ZEND_FETCH_W_SPEC_TMP_HANDLER,
        !          32223:        ZEND_FETCH_W_SPEC_TMP_HANDLER,
        !          32224:        ZEND_FETCH_W_SPEC_TMP_HANDLER,
        !          32225:        ZEND_FETCH_W_SPEC_VAR_HANDLER,
        !          32226:        ZEND_FETCH_W_SPEC_VAR_HANDLER,
        !          32227:        ZEND_FETCH_W_SPEC_VAR_HANDLER,
        !          32228:        ZEND_FETCH_W_SPEC_VAR_HANDLER,
        !          32229:        ZEND_FETCH_W_SPEC_VAR_HANDLER,
        !          32230:        ZEND_NULL_HANDLER,
        !          32231:        ZEND_NULL_HANDLER,
        !          32232:        ZEND_NULL_HANDLER,
        !          32233:        ZEND_NULL_HANDLER,
        !          32234:        ZEND_NULL_HANDLER,
        !          32235:        ZEND_FETCH_W_SPEC_CV_HANDLER,
        !          32236:        ZEND_FETCH_W_SPEC_CV_HANDLER,
        !          32237:        ZEND_FETCH_W_SPEC_CV_HANDLER,
        !          32238:        ZEND_FETCH_W_SPEC_CV_HANDLER,
        !          32239:        ZEND_FETCH_W_SPEC_CV_HANDLER,
        !          32240:        ZEND_NULL_HANDLER,
        !          32241:        ZEND_NULL_HANDLER,
        !          32242:        ZEND_NULL_HANDLER,
        !          32243:        ZEND_NULL_HANDLER,
        !          32244:        ZEND_NULL_HANDLER,
        !          32245:        ZEND_NULL_HANDLER,
        !          32246:        ZEND_NULL_HANDLER,
        !          32247:        ZEND_NULL_HANDLER,
        !          32248:        ZEND_NULL_HANDLER,
        !          32249:        ZEND_NULL_HANDLER,
        !          32250:        ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER,
        !          32251:        ZEND_FETCH_DIM_W_SPEC_VAR_TMP_HANDLER,
        !          32252:        ZEND_FETCH_DIM_W_SPEC_VAR_VAR_HANDLER,
        !          32253:        ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER,
        !          32254:        ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER,
        !          32255:        ZEND_NULL_HANDLER,
        !          32256:        ZEND_NULL_HANDLER,
        !          32257:        ZEND_NULL_HANDLER,
        !          32258:        ZEND_NULL_HANDLER,
        !          32259:        ZEND_NULL_HANDLER,
        !          32260:        ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER,
        !          32261:        ZEND_FETCH_DIM_W_SPEC_CV_TMP_HANDLER,
        !          32262:        ZEND_FETCH_DIM_W_SPEC_CV_VAR_HANDLER,
        !          32263:        ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER,
        !          32264:        ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER,
        !          32265:        ZEND_NULL_HANDLER,
        !          32266:        ZEND_NULL_HANDLER,
        !          32267:        ZEND_NULL_HANDLER,
        !          32268:        ZEND_NULL_HANDLER,
        !          32269:        ZEND_NULL_HANDLER,
        !          32270:        ZEND_NULL_HANDLER,
        !          32271:        ZEND_NULL_HANDLER,
        !          32272:        ZEND_NULL_HANDLER,
        !          32273:        ZEND_NULL_HANDLER,
        !          32274:        ZEND_NULL_HANDLER,
        !          32275:        ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER,
        !          32276:        ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER,
        !          32277:        ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER,
        !          32278:        ZEND_NULL_HANDLER,
        !          32279:        ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER,
        !          32280:        ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER,
        !          32281:        ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER,
        !          32282:        ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER,
        !          32283:        ZEND_NULL_HANDLER,
        !          32284:        ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER,
        !          32285:        ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER,
        !          32286:        ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER,
        !          32287:        ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER,
        !          32288:        ZEND_NULL_HANDLER,
        !          32289:        ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER,
        !          32290:        ZEND_FETCH_RW_SPEC_CONST_HANDLER,
        !          32291:        ZEND_FETCH_RW_SPEC_CONST_HANDLER,
        !          32292:        ZEND_FETCH_RW_SPEC_CONST_HANDLER,
        !          32293:        ZEND_FETCH_RW_SPEC_CONST_HANDLER,
        !          32294:        ZEND_FETCH_RW_SPEC_CONST_HANDLER,
        !          32295:        ZEND_FETCH_RW_SPEC_TMP_HANDLER,
        !          32296:        ZEND_FETCH_RW_SPEC_TMP_HANDLER,
        !          32297:        ZEND_FETCH_RW_SPEC_TMP_HANDLER,
        !          32298:        ZEND_FETCH_RW_SPEC_TMP_HANDLER,
        !          32299:        ZEND_FETCH_RW_SPEC_TMP_HANDLER,
        !          32300:        ZEND_FETCH_RW_SPEC_VAR_HANDLER,
        !          32301:        ZEND_FETCH_RW_SPEC_VAR_HANDLER,
        !          32302:        ZEND_FETCH_RW_SPEC_VAR_HANDLER,
        !          32303:        ZEND_FETCH_RW_SPEC_VAR_HANDLER,
        !          32304:        ZEND_FETCH_RW_SPEC_VAR_HANDLER,
        !          32305:        ZEND_NULL_HANDLER,
        !          32306:        ZEND_NULL_HANDLER,
        !          32307:        ZEND_NULL_HANDLER,
        !          32308:        ZEND_NULL_HANDLER,
        !          32309:        ZEND_NULL_HANDLER,
        !          32310:        ZEND_FETCH_RW_SPEC_CV_HANDLER,
        !          32311:        ZEND_FETCH_RW_SPEC_CV_HANDLER,
        !          32312:        ZEND_FETCH_RW_SPEC_CV_HANDLER,
        !          32313:        ZEND_FETCH_RW_SPEC_CV_HANDLER,
        !          32314:        ZEND_FETCH_RW_SPEC_CV_HANDLER,
        !          32315:        ZEND_NULL_HANDLER,
        !          32316:        ZEND_NULL_HANDLER,
        !          32317:        ZEND_NULL_HANDLER,
        !          32318:        ZEND_NULL_HANDLER,
        !          32319:        ZEND_NULL_HANDLER,
        !          32320:        ZEND_NULL_HANDLER,
        !          32321:        ZEND_NULL_HANDLER,
        !          32322:        ZEND_NULL_HANDLER,
        !          32323:        ZEND_NULL_HANDLER,
        !          32324:        ZEND_NULL_HANDLER,
        !          32325:        ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER,
        !          32326:        ZEND_FETCH_DIM_RW_SPEC_VAR_TMP_HANDLER,
        !          32327:        ZEND_FETCH_DIM_RW_SPEC_VAR_VAR_HANDLER,
        !          32328:        ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER,
        !          32329:        ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER,
        !          32330:        ZEND_NULL_HANDLER,
        !          32331:        ZEND_NULL_HANDLER,
        !          32332:        ZEND_NULL_HANDLER,
        !          32333:        ZEND_NULL_HANDLER,
        !          32334:        ZEND_NULL_HANDLER,
        !          32335:        ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER,
        !          32336:        ZEND_FETCH_DIM_RW_SPEC_CV_TMP_HANDLER,
        !          32337:        ZEND_FETCH_DIM_RW_SPEC_CV_VAR_HANDLER,
        !          32338:        ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER,
        !          32339:        ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER,
        !          32340:        ZEND_NULL_HANDLER,
        !          32341:        ZEND_NULL_HANDLER,
        !          32342:        ZEND_NULL_HANDLER,
        !          32343:        ZEND_NULL_HANDLER,
        !          32344:        ZEND_NULL_HANDLER,
        !          32345:        ZEND_NULL_HANDLER,
        !          32346:        ZEND_NULL_HANDLER,
        !          32347:        ZEND_NULL_HANDLER,
        !          32348:        ZEND_NULL_HANDLER,
        !          32349:        ZEND_NULL_HANDLER,
        !          32350:        ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER,
        !          32351:        ZEND_FETCH_OBJ_RW_SPEC_VAR_TMP_HANDLER,
        !          32352:        ZEND_FETCH_OBJ_RW_SPEC_VAR_VAR_HANDLER,
        !          32353:        ZEND_NULL_HANDLER,
        !          32354:        ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER,
        !          32355:        ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER,
        !          32356:        ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMP_HANDLER,
        !          32357:        ZEND_FETCH_OBJ_RW_SPEC_UNUSED_VAR_HANDLER,
        !          32358:        ZEND_NULL_HANDLER,
        !          32359:        ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER,
        !          32360:        ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER,
        !          32361:        ZEND_FETCH_OBJ_RW_SPEC_CV_TMP_HANDLER,
        !          32362:        ZEND_FETCH_OBJ_RW_SPEC_CV_VAR_HANDLER,
        !          32363:        ZEND_NULL_HANDLER,
        !          32364:        ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER,
        !          32365:        ZEND_FETCH_IS_SPEC_CONST_HANDLER,
        !          32366:        ZEND_FETCH_IS_SPEC_CONST_HANDLER,
        !          32367:        ZEND_FETCH_IS_SPEC_CONST_HANDLER,
        !          32368:        ZEND_FETCH_IS_SPEC_CONST_HANDLER,
        !          32369:        ZEND_FETCH_IS_SPEC_CONST_HANDLER,
        !          32370:        ZEND_FETCH_IS_SPEC_TMP_HANDLER,
        !          32371:        ZEND_FETCH_IS_SPEC_TMP_HANDLER,
        !          32372:        ZEND_FETCH_IS_SPEC_TMP_HANDLER,
        !          32373:        ZEND_FETCH_IS_SPEC_TMP_HANDLER,
        !          32374:        ZEND_FETCH_IS_SPEC_TMP_HANDLER,
        !          32375:        ZEND_FETCH_IS_SPEC_VAR_HANDLER,
        !          32376:        ZEND_FETCH_IS_SPEC_VAR_HANDLER,
        !          32377:        ZEND_FETCH_IS_SPEC_VAR_HANDLER,
        !          32378:        ZEND_FETCH_IS_SPEC_VAR_HANDLER,
        !          32379:        ZEND_FETCH_IS_SPEC_VAR_HANDLER,
        !          32380:        ZEND_NULL_HANDLER,
        !          32381:        ZEND_NULL_HANDLER,
        !          32382:        ZEND_NULL_HANDLER,
        !          32383:        ZEND_NULL_HANDLER,
        !          32384:        ZEND_NULL_HANDLER,
        !          32385:        ZEND_FETCH_IS_SPEC_CV_HANDLER,
        !          32386:        ZEND_FETCH_IS_SPEC_CV_HANDLER,
        !          32387:        ZEND_FETCH_IS_SPEC_CV_HANDLER,
        !          32388:        ZEND_FETCH_IS_SPEC_CV_HANDLER,
        !          32389:        ZEND_FETCH_IS_SPEC_CV_HANDLER,
        !          32390:        ZEND_NULL_HANDLER,
        !          32391:        ZEND_NULL_HANDLER,
        !          32392:        ZEND_NULL_HANDLER,
        !          32393:        ZEND_NULL_HANDLER,
        !          32394:        ZEND_NULL_HANDLER,
        !          32395:        ZEND_NULL_HANDLER,
        !          32396:        ZEND_NULL_HANDLER,
        !          32397:        ZEND_NULL_HANDLER,
        !          32398:        ZEND_NULL_HANDLER,
        !          32399:        ZEND_NULL_HANDLER,
        !          32400:        ZEND_FETCH_DIM_IS_SPEC_VAR_CONST_HANDLER,
        !          32401:        ZEND_FETCH_DIM_IS_SPEC_VAR_TMP_HANDLER,
        !          32402:        ZEND_FETCH_DIM_IS_SPEC_VAR_VAR_HANDLER,
        !          32403:        ZEND_NULL_HANDLER,
        !          32404:        ZEND_FETCH_DIM_IS_SPEC_VAR_CV_HANDLER,
        !          32405:        ZEND_NULL_HANDLER,
        !          32406:        ZEND_NULL_HANDLER,
        !          32407:        ZEND_NULL_HANDLER,
        !          32408:        ZEND_NULL_HANDLER,
        !          32409:        ZEND_NULL_HANDLER,
        !          32410:        ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER,
        !          32411:        ZEND_FETCH_DIM_IS_SPEC_CV_TMP_HANDLER,
        !          32412:        ZEND_FETCH_DIM_IS_SPEC_CV_VAR_HANDLER,
        !          32413:        ZEND_NULL_HANDLER,
        !          32414:        ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER,
        !          32415:        ZEND_NULL_HANDLER,
        !          32416:        ZEND_NULL_HANDLER,
        !          32417:        ZEND_NULL_HANDLER,
        !          32418:        ZEND_NULL_HANDLER,
        !          32419:        ZEND_NULL_HANDLER,
        !          32420:        ZEND_NULL_HANDLER,
        !          32421:        ZEND_NULL_HANDLER,
        !          32422:        ZEND_NULL_HANDLER,
        !          32423:        ZEND_NULL_HANDLER,
        !          32424:        ZEND_NULL_HANDLER,
        !          32425:        ZEND_FETCH_OBJ_IS_SPEC_VAR_CONST_HANDLER,
        !          32426:        ZEND_FETCH_OBJ_IS_SPEC_VAR_TMP_HANDLER,
        !          32427:        ZEND_FETCH_OBJ_IS_SPEC_VAR_VAR_HANDLER,
        !          32428:        ZEND_NULL_HANDLER,
        !          32429:        ZEND_FETCH_OBJ_IS_SPEC_VAR_CV_HANDLER,
        !          32430:        ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER,
        !          32431:        ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMP_HANDLER,
        !          32432:        ZEND_FETCH_OBJ_IS_SPEC_UNUSED_VAR_HANDLER,
        !          32433:        ZEND_NULL_HANDLER,
        !          32434:        ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER,
        !          32435:        ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER,
        !          32436:        ZEND_FETCH_OBJ_IS_SPEC_CV_TMP_HANDLER,
        !          32437:        ZEND_FETCH_OBJ_IS_SPEC_CV_VAR_HANDLER,
        !          32438:        ZEND_NULL_HANDLER,
        !          32439:        ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER,
        !          32440:        ZEND_FETCH_FUNC_ARG_SPEC_CONST_HANDLER,
        !          32441:        ZEND_FETCH_FUNC_ARG_SPEC_CONST_HANDLER,
        !          32442:        ZEND_FETCH_FUNC_ARG_SPEC_CONST_HANDLER,
        !          32443:        ZEND_FETCH_FUNC_ARG_SPEC_CONST_HANDLER,
        !          32444:        ZEND_FETCH_FUNC_ARG_SPEC_CONST_HANDLER,
        !          32445:        ZEND_FETCH_FUNC_ARG_SPEC_TMP_HANDLER,
        !          32446:        ZEND_FETCH_FUNC_ARG_SPEC_TMP_HANDLER,
        !          32447:        ZEND_FETCH_FUNC_ARG_SPEC_TMP_HANDLER,
        !          32448:        ZEND_FETCH_FUNC_ARG_SPEC_TMP_HANDLER,
        !          32449:        ZEND_FETCH_FUNC_ARG_SPEC_TMP_HANDLER,
        !          32450:        ZEND_FETCH_FUNC_ARG_SPEC_VAR_HANDLER,
        !          32451:        ZEND_FETCH_FUNC_ARG_SPEC_VAR_HANDLER,
        !          32452:        ZEND_FETCH_FUNC_ARG_SPEC_VAR_HANDLER,
        !          32453:        ZEND_FETCH_FUNC_ARG_SPEC_VAR_HANDLER,
        !          32454:        ZEND_FETCH_FUNC_ARG_SPEC_VAR_HANDLER,
        !          32455:        ZEND_NULL_HANDLER,
        !          32456:        ZEND_NULL_HANDLER,
        !          32457:        ZEND_NULL_HANDLER,
        !          32458:        ZEND_NULL_HANDLER,
        !          32459:        ZEND_NULL_HANDLER,
        !          32460:        ZEND_FETCH_FUNC_ARG_SPEC_CV_HANDLER,
        !          32461:        ZEND_FETCH_FUNC_ARG_SPEC_CV_HANDLER,
        !          32462:        ZEND_FETCH_FUNC_ARG_SPEC_CV_HANDLER,
        !          32463:        ZEND_FETCH_FUNC_ARG_SPEC_CV_HANDLER,
        !          32464:        ZEND_FETCH_FUNC_ARG_SPEC_CV_HANDLER,
        !          32465:        ZEND_NULL_HANDLER,
        !          32466:        ZEND_NULL_HANDLER,
        !          32467:        ZEND_NULL_HANDLER,
        !          32468:        ZEND_NULL_HANDLER,
        !          32469:        ZEND_NULL_HANDLER,
        !          32470:        ZEND_NULL_HANDLER,
        !          32471:        ZEND_NULL_HANDLER,
        !          32472:        ZEND_NULL_HANDLER,
        !          32473:        ZEND_NULL_HANDLER,
        !          32474:        ZEND_NULL_HANDLER,
        !          32475:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
        !          32476:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMP_HANDLER,
        !          32477:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_VAR_HANDLER,
        !          32478:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER,
        !          32479:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER,
        !          32480:        ZEND_NULL_HANDLER,
        !          32481:        ZEND_NULL_HANDLER,
        !          32482:        ZEND_NULL_HANDLER,
        !          32483:        ZEND_NULL_HANDLER,
        !          32484:        ZEND_NULL_HANDLER,
        !          32485:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER,
        !          32486:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMP_HANDLER,
        !          32487:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_VAR_HANDLER,
        !          32488:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
        !          32489:        ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER,
        !          32490:        ZEND_NULL_HANDLER,
        !          32491:        ZEND_NULL_HANDLER,
        !          32492:        ZEND_NULL_HANDLER,
        !          32493:        ZEND_NULL_HANDLER,
        !          32494:        ZEND_NULL_HANDLER,
        !          32495:        ZEND_NULL_HANDLER,
        !          32496:        ZEND_NULL_HANDLER,
        !          32497:        ZEND_NULL_HANDLER,
        !          32498:        ZEND_NULL_HANDLER,
        !          32499:        ZEND_NULL_HANDLER,
        !          32500:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
        !          32501:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMP_HANDLER,
        !          32502:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_VAR_HANDLER,
        !          32503:        ZEND_NULL_HANDLER,
        !          32504:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER,
        !          32505:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER,
        !          32506:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMP_HANDLER,
        !          32507:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_VAR_HANDLER,
        !          32508:        ZEND_NULL_HANDLER,
        !          32509:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER,
        !          32510:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER,
        !          32511:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMP_HANDLER,
        !          32512:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_VAR_HANDLER,
        !          32513:        ZEND_NULL_HANDLER,
        !          32514:        ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER,
        !          32515:        ZEND_FETCH_UNSET_SPEC_CONST_HANDLER,
        !          32516:        ZEND_FETCH_UNSET_SPEC_CONST_HANDLER,
        !          32517:        ZEND_FETCH_UNSET_SPEC_CONST_HANDLER,
        !          32518:        ZEND_FETCH_UNSET_SPEC_CONST_HANDLER,
        !          32519:        ZEND_FETCH_UNSET_SPEC_CONST_HANDLER,
        !          32520:        ZEND_FETCH_UNSET_SPEC_TMP_HANDLER,
        !          32521:        ZEND_FETCH_UNSET_SPEC_TMP_HANDLER,
        !          32522:        ZEND_FETCH_UNSET_SPEC_TMP_HANDLER,
        !          32523:        ZEND_FETCH_UNSET_SPEC_TMP_HANDLER,
        !          32524:        ZEND_FETCH_UNSET_SPEC_TMP_HANDLER,
        !          32525:        ZEND_FETCH_UNSET_SPEC_VAR_HANDLER,
        !          32526:        ZEND_FETCH_UNSET_SPEC_VAR_HANDLER,
        !          32527:        ZEND_FETCH_UNSET_SPEC_VAR_HANDLER,
        !          32528:        ZEND_FETCH_UNSET_SPEC_VAR_HANDLER,
        !          32529:        ZEND_FETCH_UNSET_SPEC_VAR_HANDLER,
        !          32530:        ZEND_NULL_HANDLER,
        !          32531:        ZEND_NULL_HANDLER,
        !          32532:        ZEND_NULL_HANDLER,
        !          32533:        ZEND_NULL_HANDLER,
        !          32534:        ZEND_NULL_HANDLER,
        !          32535:        ZEND_FETCH_UNSET_SPEC_CV_HANDLER,
        !          32536:        ZEND_FETCH_UNSET_SPEC_CV_HANDLER,
        !          32537:        ZEND_FETCH_UNSET_SPEC_CV_HANDLER,
        !          32538:        ZEND_FETCH_UNSET_SPEC_CV_HANDLER,
        !          32539:        ZEND_FETCH_UNSET_SPEC_CV_HANDLER,
        !          32540:        ZEND_NULL_HANDLER,
        !          32541:        ZEND_NULL_HANDLER,
        !          32542:        ZEND_NULL_HANDLER,
        !          32543:        ZEND_NULL_HANDLER,
        !          32544:        ZEND_NULL_HANDLER,
        !          32545:        ZEND_NULL_HANDLER,
        !          32546:        ZEND_NULL_HANDLER,
        !          32547:        ZEND_NULL_HANDLER,
        !          32548:        ZEND_NULL_HANDLER,
        !          32549:        ZEND_NULL_HANDLER,
        !          32550:        ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER,
        !          32551:        ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMP_HANDLER,
        !          32552:        ZEND_FETCH_DIM_UNSET_SPEC_VAR_VAR_HANDLER,
        !          32553:        ZEND_NULL_HANDLER,
        !          32554:        ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER,
        !          32555:        ZEND_NULL_HANDLER,
        !          32556:        ZEND_NULL_HANDLER,
        !          32557:        ZEND_NULL_HANDLER,
        !          32558:        ZEND_NULL_HANDLER,
        !          32559:        ZEND_NULL_HANDLER,
        !          32560:        ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER,
        !          32561:        ZEND_FETCH_DIM_UNSET_SPEC_CV_TMP_HANDLER,
        !          32562:        ZEND_FETCH_DIM_UNSET_SPEC_CV_VAR_HANDLER,
        !          32563:        ZEND_NULL_HANDLER,
        !          32564:        ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER,
        !          32565:        ZEND_NULL_HANDLER,
        !          32566:        ZEND_NULL_HANDLER,
        !          32567:        ZEND_NULL_HANDLER,
        !          32568:        ZEND_NULL_HANDLER,
        !          32569:        ZEND_NULL_HANDLER,
        !          32570:        ZEND_NULL_HANDLER,
        !          32571:        ZEND_NULL_HANDLER,
        !          32572:        ZEND_NULL_HANDLER,
        !          32573:        ZEND_NULL_HANDLER,
        !          32574:        ZEND_NULL_HANDLER,
        !          32575:        ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER,
        !          32576:        ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMP_HANDLER,
        !          32577:        ZEND_FETCH_OBJ_UNSET_SPEC_VAR_VAR_HANDLER,
        !          32578:        ZEND_NULL_HANDLER,
        !          32579:        ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER,
        !          32580:        ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER,
        !          32581:        ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMP_HANDLER,
        !          32582:        ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_VAR_HANDLER,
        !          32583:        ZEND_NULL_HANDLER,
        !          32584:        ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER,
        !          32585:        ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER,
        !          32586:        ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMP_HANDLER,
        !          32587:        ZEND_FETCH_OBJ_UNSET_SPEC_CV_VAR_HANDLER,
        !          32588:        ZEND_NULL_HANDLER,
        !          32589:        ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER,
        !          32590:        ZEND_FETCH_DIM_TMP_VAR_SPEC_CONST_CONST_HANDLER,
        !          32591:        ZEND_NULL_HANDLER,
        !          32592:        ZEND_NULL_HANDLER,
        !          32593:        ZEND_NULL_HANDLER,
        !          32594:        ZEND_NULL_HANDLER,
        !          32595:        ZEND_FETCH_DIM_TMP_VAR_SPEC_TMP_CONST_HANDLER,
        !          32596:        ZEND_NULL_HANDLER,
        !          32597:        ZEND_NULL_HANDLER,
        !          32598:        ZEND_NULL_HANDLER,
        !          32599:        ZEND_NULL_HANDLER,
        !          32600:        ZEND_NULL_HANDLER,
        !          32601:        ZEND_NULL_HANDLER,
        !          32602:        ZEND_NULL_HANDLER,
        !          32603:        ZEND_NULL_HANDLER,
        !          32604:        ZEND_NULL_HANDLER,
        !          32605:        ZEND_NULL_HANDLER,
        !          32606:        ZEND_NULL_HANDLER,
        !          32607:        ZEND_NULL_HANDLER,
        !          32608:        ZEND_NULL_HANDLER,
        !          32609:        ZEND_NULL_HANDLER,
        !          32610:        ZEND_NULL_HANDLER,
        !          32611:        ZEND_NULL_HANDLER,
        !          32612:        ZEND_NULL_HANDLER,
        !          32613:        ZEND_NULL_HANDLER,
        !          32614:        ZEND_NULL_HANDLER,
        !          32615:        ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER,
        !          32616:        ZEND_NULL_HANDLER,
        !          32617:        ZEND_NULL_HANDLER,
        !          32618:        ZEND_NULL_HANDLER,
        !          32619:        ZEND_NULL_HANDLER,
        !          32620:        ZEND_NULL_HANDLER,
        !          32621:        ZEND_NULL_HANDLER,
        !          32622:        ZEND_NULL_HANDLER,
        !          32623:        ZEND_NULL_HANDLER,
        !          32624:        ZEND_NULL_HANDLER,
        !          32625:        ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER,
        !          32626:        ZEND_NULL_HANDLER,
        !          32627:        ZEND_NULL_HANDLER,
        !          32628:        ZEND_NULL_HANDLER,
        !          32629:        ZEND_NULL_HANDLER,
        !          32630:        ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER,
        !          32631:        ZEND_NULL_HANDLER,
        !          32632:        ZEND_NULL_HANDLER,
        !          32633:        ZEND_NULL_HANDLER,
        !          32634:        ZEND_NULL_HANDLER,
        !          32635:        ZEND_NULL_HANDLER,
        !          32636:        ZEND_NULL_HANDLER,
        !          32637:        ZEND_NULL_HANDLER,
        !          32638:        ZEND_NULL_HANDLER,
        !          32639:        ZEND_NULL_HANDLER,
        !          32640:        ZEND_GOTO_SPEC_CONST_HANDLER,
        !          32641:        ZEND_NULL_HANDLER,
        !          32642:        ZEND_NULL_HANDLER,
        !          32643:        ZEND_NULL_HANDLER,
        !          32644:        ZEND_NULL_HANDLER,
        !          32645:        ZEND_GOTO_SPEC_CONST_HANDLER,
        !          32646:        ZEND_NULL_HANDLER,
        !          32647:        ZEND_NULL_HANDLER,
        !          32648:        ZEND_NULL_HANDLER,
        !          32649:        ZEND_NULL_HANDLER,
        !          32650:        ZEND_GOTO_SPEC_CONST_HANDLER,
        !          32651:        ZEND_NULL_HANDLER,
        !          32652:        ZEND_NULL_HANDLER,
        !          32653:        ZEND_NULL_HANDLER,
        !          32654:        ZEND_NULL_HANDLER,
        !          32655:        ZEND_GOTO_SPEC_CONST_HANDLER,
        !          32656:        ZEND_NULL_HANDLER,
        !          32657:        ZEND_NULL_HANDLER,
        !          32658:        ZEND_NULL_HANDLER,
        !          32659:        ZEND_NULL_HANDLER,
        !          32660:        ZEND_GOTO_SPEC_CONST_HANDLER,
        !          32661:        ZEND_NULL_HANDLER,
        !          32662:        ZEND_NULL_HANDLER,
        !          32663:        ZEND_NULL_HANDLER,
        !          32664:        ZEND_NULL_HANDLER,
        !          32665:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32666:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32667:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32668:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32669:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32670:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32671:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32672:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32673:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32674:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32675:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32676:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32677:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32678:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32679:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32680:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32681:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32682:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32683:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32684:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32685:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32686:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32687:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32688:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32689:        ZEND_EXT_STMT_SPEC_HANDLER,
        !          32690:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32691:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32692:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32693:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32694:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32695:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32696:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32697:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32698:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32699:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32700:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32701:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32702:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32703:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32704:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32705:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32706:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32707:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32708:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32709:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32710:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32711:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32712:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32713:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32714:        ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
        !          32715:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32716:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32717:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32718:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32719:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32720:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32721:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32722:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32723:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32724:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32725:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32726:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32727:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32728:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32729:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32730:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32731:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32732:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32733:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32734:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32735:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32736:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32737:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32738:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32739:        ZEND_EXT_FCALL_END_SPEC_HANDLER,
        !          32740:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32741:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32742:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32743:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32744:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32745:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32746:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32747:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32748:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32749:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32750:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32751:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32752:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32753:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32754:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32755:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32756:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32757:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32758:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32759:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32760:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32761:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32762:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32763:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32764:        ZEND_EXT_NOP_SPEC_HANDLER,
        !          32765:        ZEND_TICKS_SPEC_CONST_HANDLER,
        !          32766:        ZEND_TICKS_SPEC_CONST_HANDLER,
        !          32767:        ZEND_TICKS_SPEC_CONST_HANDLER,
        !          32768:        ZEND_TICKS_SPEC_CONST_HANDLER,
        !          32769:        ZEND_TICKS_SPEC_CONST_HANDLER,
        !          32770:        ZEND_NULL_HANDLER,
        !          32771:        ZEND_NULL_HANDLER,
        !          32772:        ZEND_NULL_HANDLER,
        !          32773:        ZEND_NULL_HANDLER,
        !          32774:        ZEND_NULL_HANDLER,
        !          32775:        ZEND_NULL_HANDLER,
        !          32776:        ZEND_NULL_HANDLER,
        !          32777:        ZEND_NULL_HANDLER,
        !          32778:        ZEND_NULL_HANDLER,
        !          32779:        ZEND_NULL_HANDLER,
        !          32780:        ZEND_NULL_HANDLER,
        !          32781:        ZEND_NULL_HANDLER,
        !          32782:        ZEND_NULL_HANDLER,
        !          32783:        ZEND_NULL_HANDLER,
        !          32784:        ZEND_NULL_HANDLER,
        !          32785:        ZEND_NULL_HANDLER,
        !          32786:        ZEND_NULL_HANDLER,
        !          32787:        ZEND_NULL_HANDLER,
        !          32788:        ZEND_NULL_HANDLER,
        !          32789:        ZEND_NULL_HANDLER,
        !          32790:        ZEND_NULL_HANDLER,
        !          32791:        ZEND_NULL_HANDLER,
        !          32792:        ZEND_NULL_HANDLER,
        !          32793:        ZEND_NULL_HANDLER,
        !          32794:        ZEND_NULL_HANDLER,
        !          32795:        ZEND_NULL_HANDLER,
        !          32796:        ZEND_NULL_HANDLER,
        !          32797:        ZEND_NULL_HANDLER,
        !          32798:        ZEND_NULL_HANDLER,
        !          32799:        ZEND_NULL_HANDLER,
        !          32800:        ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER,
        !          32801:        ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER,
        !          32802:        ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER,
        !          32803:        ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER,
        !          32804:        ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER,
        !          32805:        ZEND_NULL_HANDLER,
        !          32806:        ZEND_NULL_HANDLER,
        !          32807:        ZEND_NULL_HANDLER,
        !          32808:        ZEND_NULL_HANDLER,
        !          32809:        ZEND_NULL_HANDLER,
        !          32810:        ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER,
        !          32811:        ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER,
        !          32812:        ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER,
        !          32813:        ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER,
        !          32814:        ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER,
        !          32815:        ZEND_NULL_HANDLER,
        !          32816:        ZEND_NULL_HANDLER,
        !          32817:        ZEND_NULL_HANDLER,
        !          32818:        ZEND_NULL_HANDLER,
        !          32819:        ZEND_CATCH_SPEC_CV_HANDLER,
        !          32820:        ZEND_NULL_HANDLER,
        !          32821:        ZEND_NULL_HANDLER,
        !          32822:        ZEND_NULL_HANDLER,
        !          32823:        ZEND_NULL_HANDLER,
        !          32824:        ZEND_CATCH_SPEC_CV_HANDLER,
        !          32825:        ZEND_NULL_HANDLER,
        !          32826:        ZEND_NULL_HANDLER,
        !          32827:        ZEND_NULL_HANDLER,
        !          32828:        ZEND_NULL_HANDLER,
        !          32829:        ZEND_CATCH_SPEC_CV_HANDLER,
        !          32830:        ZEND_NULL_HANDLER,
        !          32831:        ZEND_NULL_HANDLER,
        !          32832:        ZEND_NULL_HANDLER,
        !          32833:        ZEND_NULL_HANDLER,
        !          32834:        ZEND_CATCH_SPEC_CV_HANDLER,
        !          32835:        ZEND_NULL_HANDLER,
        !          32836:        ZEND_NULL_HANDLER,
        !          32837:        ZEND_NULL_HANDLER,
        !          32838:        ZEND_NULL_HANDLER,
        !          32839:        ZEND_CATCH_SPEC_CV_HANDLER,
        !          32840:        ZEND_THROW_SPEC_CONST_HANDLER,
        !          32841:        ZEND_THROW_SPEC_CONST_HANDLER,
        !          32842:        ZEND_THROW_SPEC_CONST_HANDLER,
        !          32843:        ZEND_THROW_SPEC_CONST_HANDLER,
        !          32844:        ZEND_THROW_SPEC_CONST_HANDLER,
        !          32845:        ZEND_THROW_SPEC_TMP_HANDLER,
        !          32846:        ZEND_THROW_SPEC_TMP_HANDLER,
        !          32847:        ZEND_THROW_SPEC_TMP_HANDLER,
        !          32848:        ZEND_THROW_SPEC_TMP_HANDLER,
        !          32849:        ZEND_THROW_SPEC_TMP_HANDLER,
        !          32850:        ZEND_THROW_SPEC_VAR_HANDLER,
        !          32851:        ZEND_THROW_SPEC_VAR_HANDLER,
        !          32852:        ZEND_THROW_SPEC_VAR_HANDLER,
        !          32853:        ZEND_THROW_SPEC_VAR_HANDLER,
        !          32854:        ZEND_THROW_SPEC_VAR_HANDLER,
        !          32855:        ZEND_NULL_HANDLER,
        !          32856:        ZEND_NULL_HANDLER,
        !          32857:        ZEND_NULL_HANDLER,
        !          32858:        ZEND_NULL_HANDLER,
        !          32859:        ZEND_NULL_HANDLER,
        !          32860:        ZEND_THROW_SPEC_CV_HANDLER,
        !          32861:        ZEND_THROW_SPEC_CV_HANDLER,
        !          32862:        ZEND_THROW_SPEC_CV_HANDLER,
        !          32863:        ZEND_THROW_SPEC_CV_HANDLER,
        !          32864:        ZEND_THROW_SPEC_CV_HANDLER,
        !          32865:        ZEND_FETCH_CLASS_SPEC_CONST_HANDLER,
        !          32866:        ZEND_FETCH_CLASS_SPEC_TMP_HANDLER,
        !          32867:        ZEND_FETCH_CLASS_SPEC_VAR_HANDLER,
        !          32868:        ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER,
        !          32869:        ZEND_FETCH_CLASS_SPEC_CV_HANDLER,
        !          32870:        ZEND_FETCH_CLASS_SPEC_CONST_HANDLER,
        !          32871:        ZEND_FETCH_CLASS_SPEC_TMP_HANDLER,
        !          32872:        ZEND_FETCH_CLASS_SPEC_VAR_HANDLER,
        !          32873:        ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER,
        !          32874:        ZEND_FETCH_CLASS_SPEC_CV_HANDLER,
        !          32875:        ZEND_FETCH_CLASS_SPEC_CONST_HANDLER,
        !          32876:        ZEND_FETCH_CLASS_SPEC_TMP_HANDLER,
        !          32877:        ZEND_FETCH_CLASS_SPEC_VAR_HANDLER,
        !          32878:        ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER,
        !          32879:        ZEND_FETCH_CLASS_SPEC_CV_HANDLER,
        !          32880:        ZEND_FETCH_CLASS_SPEC_CONST_HANDLER,
        !          32881:        ZEND_FETCH_CLASS_SPEC_TMP_HANDLER,
        !          32882:        ZEND_FETCH_CLASS_SPEC_VAR_HANDLER,
        !          32883:        ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER,
        !          32884:        ZEND_FETCH_CLASS_SPEC_CV_HANDLER,
        !          32885:        ZEND_FETCH_CLASS_SPEC_CONST_HANDLER,
        !          32886:        ZEND_FETCH_CLASS_SPEC_TMP_HANDLER,
        !          32887:        ZEND_FETCH_CLASS_SPEC_VAR_HANDLER,
        !          32888:        ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER,
        !          32889:        ZEND_FETCH_CLASS_SPEC_CV_HANDLER,
        !          32890:        ZEND_CLONE_SPEC_CONST_HANDLER,
        !          32891:        ZEND_CLONE_SPEC_CONST_HANDLER,
        !          32892:        ZEND_CLONE_SPEC_CONST_HANDLER,
        !          32893:        ZEND_CLONE_SPEC_CONST_HANDLER,
        !          32894:        ZEND_CLONE_SPEC_CONST_HANDLER,
        !          32895:        ZEND_CLONE_SPEC_TMP_HANDLER,
        !          32896:        ZEND_CLONE_SPEC_TMP_HANDLER,
        !          32897:        ZEND_CLONE_SPEC_TMP_HANDLER,
        !          32898:        ZEND_CLONE_SPEC_TMP_HANDLER,
        !          32899:        ZEND_CLONE_SPEC_TMP_HANDLER,
        !          32900:        ZEND_CLONE_SPEC_VAR_HANDLER,
        !          32901:        ZEND_CLONE_SPEC_VAR_HANDLER,
        !          32902:        ZEND_CLONE_SPEC_VAR_HANDLER,
        !          32903:        ZEND_CLONE_SPEC_VAR_HANDLER,
        !          32904:        ZEND_CLONE_SPEC_VAR_HANDLER,
        !          32905:        ZEND_CLONE_SPEC_UNUSED_HANDLER,
        !          32906:        ZEND_CLONE_SPEC_UNUSED_HANDLER,
        !          32907:        ZEND_CLONE_SPEC_UNUSED_HANDLER,
        !          32908:        ZEND_CLONE_SPEC_UNUSED_HANDLER,
        !          32909:        ZEND_CLONE_SPEC_UNUSED_HANDLER,
        !          32910:        ZEND_CLONE_SPEC_CV_HANDLER,
        !          32911:        ZEND_CLONE_SPEC_CV_HANDLER,
        !          32912:        ZEND_CLONE_SPEC_CV_HANDLER,
        !          32913:        ZEND_CLONE_SPEC_CV_HANDLER,
        !          32914:        ZEND_CLONE_SPEC_CV_HANDLER,
        !          32915:        ZEND_NULL_HANDLER,
        !          32916:        ZEND_NULL_HANDLER,
        !          32917:        ZEND_NULL_HANDLER,
        !          32918:        ZEND_NULL_HANDLER,
        !          32919:        ZEND_NULL_HANDLER,
        !          32920:        ZEND_NULL_HANDLER,
        !          32921:        ZEND_NULL_HANDLER,
        !          32922:        ZEND_NULL_HANDLER,
        !          32923:        ZEND_NULL_HANDLER,
        !          32924:        ZEND_NULL_HANDLER,
        !          32925:        ZEND_NULL_HANDLER,
        !          32926:        ZEND_NULL_HANDLER,
        !          32927:        ZEND_NULL_HANDLER,
        !          32928:        ZEND_NULL_HANDLER,
        !          32929:        ZEND_NULL_HANDLER,
        !          32930:        ZEND_NULL_HANDLER,
        !          32931:        ZEND_NULL_HANDLER,
        !          32932:        ZEND_NULL_HANDLER,
        !          32933:        ZEND_NULL_HANDLER,
        !          32934:        ZEND_NULL_HANDLER,
        !          32935:        ZEND_NULL_HANDLER,
        !          32936:        ZEND_NULL_HANDLER,
        !          32937:        ZEND_NULL_HANDLER,
        !          32938:        ZEND_NULL_HANDLER,
        !          32939:        ZEND_NULL_HANDLER,
        !          32940:        ZEND_NULL_HANDLER,
        !          32941:        ZEND_NULL_HANDLER,
        !          32942:        ZEND_NULL_HANDLER,
        !          32943:        ZEND_NULL_HANDLER,
        !          32944:        ZEND_NULL_HANDLER,
        !          32945:        ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER,
        !          32946:        ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER,
        !          32947:        ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER,
        !          32948:        ZEND_NULL_HANDLER,
        !          32949:        ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER,
        !          32950:        ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER,
        !          32951:        ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER,
        !          32952:        ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER,
        !          32953:        ZEND_NULL_HANDLER,
        !          32954:        ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER,
        !          32955:        ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER,
        !          32956:        ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER,
        !          32957:        ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER,
        !          32958:        ZEND_NULL_HANDLER,
        !          32959:        ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER,
        !          32960:        ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER,
        !          32961:        ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER,
        !          32962:        ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER,
        !          32963:        ZEND_NULL_HANDLER,
        !          32964:        ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER,
        !          32965:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER,
        !          32966:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER,
        !          32967:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER,
        !          32968:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER,
        !          32969:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER,
        !          32970:        ZEND_NULL_HANDLER,
        !          32971:        ZEND_NULL_HANDLER,
        !          32972:        ZEND_NULL_HANDLER,
        !          32973:        ZEND_NULL_HANDLER,
        !          32974:        ZEND_NULL_HANDLER,
        !          32975:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER,
        !          32976:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER,
        !          32977:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER,
        !          32978:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER,
        !          32979:        ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER,
        !          32980:        ZEND_NULL_HANDLER,
        !          32981:        ZEND_NULL_HANDLER,
        !          32982:        ZEND_NULL_HANDLER,
        !          32983:        ZEND_NULL_HANDLER,
        !          32984:        ZEND_NULL_HANDLER,
        !          32985:        ZEND_NULL_HANDLER,
        !          32986:        ZEND_NULL_HANDLER,
        !          32987:        ZEND_NULL_HANDLER,
        !          32988:        ZEND_NULL_HANDLER,
        !          32989:        ZEND_NULL_HANDLER,
        !          32990:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_HANDLER,
        !          32991:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_HANDLER,
        !          32992:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_HANDLER,
        !          32993:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_HANDLER,
        !          32994:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_HANDLER,
        !          32995:        ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_HANDLER,
        !          32996:        ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_HANDLER,
        !          32997:        ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_HANDLER,
        !          32998:        ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_HANDLER,
        !          32999:        ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_HANDLER,
        !          33000:        ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_HANDLER,
        !          33001:        ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_HANDLER,
        !          33002:        ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_HANDLER,
        !          33003:        ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_HANDLER,
        !          33004:        ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_HANDLER,
        !          33005:        ZEND_NULL_HANDLER,
        !          33006:        ZEND_NULL_HANDLER,
        !          33007:        ZEND_NULL_HANDLER,
        !          33008:        ZEND_NULL_HANDLER,
        !          33009:        ZEND_NULL_HANDLER,
        !          33010:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_HANDLER,
        !          33011:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_HANDLER,
        !          33012:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_HANDLER,
        !          33013:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_HANDLER,
        !          33014:        ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_HANDLER,
        !          33015:        ZEND_NULL_HANDLER,
        !          33016:        ZEND_NULL_HANDLER,
        !          33017:        ZEND_NULL_HANDLER,
        !          33018:        ZEND_NULL_HANDLER,
        !          33019:        ZEND_NULL_HANDLER,
        !          33020:        ZEND_NULL_HANDLER,
        !          33021:        ZEND_NULL_HANDLER,
        !          33022:        ZEND_NULL_HANDLER,
        !          33023:        ZEND_NULL_HANDLER,
        !          33024:        ZEND_NULL_HANDLER,
        !          33025:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_CONST_HANDLER,
        !          33026:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_TMP_HANDLER,
        !          33027:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_VAR_HANDLER,
        !          33028:        ZEND_NULL_HANDLER,
        !          33029:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_VAR_CV_HANDLER,
        !          33030:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_CONST_HANDLER,
        !          33031:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_TMP_HANDLER,
        !          33032:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_VAR_HANDLER,
        !          33033:        ZEND_NULL_HANDLER,
        !          33034:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_UNUSED_CV_HANDLER,
        !          33035:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER,
        !          33036:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMP_HANDLER,
        !          33037:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_VAR_HANDLER,
        !          33038:        ZEND_NULL_HANDLER,
        !          33039:        ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER,
        !          33040:        ZEND_NULL_HANDLER,
        !          33041:        ZEND_NULL_HANDLER,
        !          33042:        ZEND_NULL_HANDLER,
        !          33043:        ZEND_NULL_HANDLER,
        !          33044:        ZEND_NULL_HANDLER,
        !          33045:        ZEND_NULL_HANDLER,
        !          33046:        ZEND_NULL_HANDLER,
        !          33047:        ZEND_NULL_HANDLER,
        !          33048:        ZEND_NULL_HANDLER,
        !          33049:        ZEND_NULL_HANDLER,
        !          33050:        ZEND_NULL_HANDLER,
        !          33051:        ZEND_NULL_HANDLER,
        !          33052:        ZEND_NULL_HANDLER,
        !          33053:        ZEND_NULL_HANDLER,
        !          33054:        ZEND_NULL_HANDLER,
        !          33055:        ZEND_NULL_HANDLER,
        !          33056:        ZEND_NULL_HANDLER,
        !          33057:        ZEND_NULL_HANDLER,
        !          33058:        ZEND_NULL_HANDLER,
        !          33059:        ZEND_NULL_HANDLER,
        !          33060:        ZEND_NULL_HANDLER,
        !          33061:        ZEND_NULL_HANDLER,
        !          33062:        ZEND_NULL_HANDLER,
        !          33063:        ZEND_NULL_HANDLER,
        !          33064:        ZEND_NULL_HANDLER,
        !          33065:        ZEND_NULL_HANDLER,
        !          33066:        ZEND_NULL_HANDLER,
        !          33067:        ZEND_NULL_HANDLER,
        !          33068:        ZEND_NULL_HANDLER,
        !          33069:        ZEND_NULL_HANDLER,
        !          33070:        ZEND_NULL_HANDLER,
        !          33071:        ZEND_NULL_HANDLER,
        !          33072:        ZEND_NULL_HANDLER,
        !          33073:        ZEND_NULL_HANDLER,
        !          33074:        ZEND_NULL_HANDLER,
        !          33075:        ZEND_NULL_HANDLER,
        !          33076:        ZEND_NULL_HANDLER,
        !          33077:        ZEND_NULL_HANDLER,
        !          33078:        ZEND_NULL_HANDLER,
        !          33079:        ZEND_NULL_HANDLER,
        !          33080:        ZEND_NULL_HANDLER,
        !          33081:        ZEND_NULL_HANDLER,
        !          33082:        ZEND_NULL_HANDLER,
        !          33083:        ZEND_NULL_HANDLER,
        !          33084:        ZEND_NULL_HANDLER,
        !          33085:        ZEND_NULL_HANDLER,
        !          33086:        ZEND_NULL_HANDLER,
        !          33087:        ZEND_NULL_HANDLER,
        !          33088:        ZEND_NULL_HANDLER,
        !          33089:        ZEND_NULL_HANDLER,
        !          33090:        ZEND_NULL_HANDLER,
        !          33091:        ZEND_NULL_HANDLER,
        !          33092:        ZEND_NULL_HANDLER,
        !          33093:        ZEND_NULL_HANDLER,
        !          33094:        ZEND_NULL_HANDLER,
        !          33095:        ZEND_NULL_HANDLER,
        !          33096:        ZEND_NULL_HANDLER,
        !          33097:        ZEND_NULL_HANDLER,
        !          33098:        ZEND_NULL_HANDLER,
        !          33099:        ZEND_NULL_HANDLER,
        !          33100:        ZEND_NULL_HANDLER,
        !          33101:        ZEND_NULL_HANDLER,
        !          33102:        ZEND_NULL_HANDLER,
        !          33103:        ZEND_NULL_HANDLER,
        !          33104:        ZEND_NULL_HANDLER,
        !          33105:        ZEND_NULL_HANDLER,
        !          33106:        ZEND_NULL_HANDLER,
        !          33107:        ZEND_NULL_HANDLER,
        !          33108:        ZEND_NULL_HANDLER,
        !          33109:        ZEND_NULL_HANDLER,
        !          33110:        ZEND_NULL_HANDLER,
        !          33111:        ZEND_NULL_HANDLER,
        !          33112:        ZEND_NULL_HANDLER,
        !          33113:        ZEND_NULL_HANDLER,
        !          33114:        ZEND_NULL_HANDLER,
        !          33115:        ZEND_NULL_HANDLER,
        !          33116:        ZEND_NULL_HANDLER,
        !          33117:        ZEND_NULL_HANDLER,
        !          33118:        ZEND_NULL_HANDLER,
        !          33119:        ZEND_NULL_HANDLER,
        !          33120:        ZEND_NULL_HANDLER,
        !          33121:        ZEND_NULL_HANDLER,
        !          33122:        ZEND_NULL_HANDLER,
        !          33123:        ZEND_NULL_HANDLER,
        !          33124:        ZEND_NULL_HANDLER,
        !          33125:        ZEND_NULL_HANDLER,
        !          33126:        ZEND_NULL_HANDLER,
        !          33127:        ZEND_NULL_HANDLER,
        !          33128:        ZEND_NULL_HANDLER,
        !          33129:        ZEND_NULL_HANDLER,
        !          33130:        ZEND_NULL_HANDLER,
        !          33131:        ZEND_NULL_HANDLER,
        !          33132:        ZEND_NULL_HANDLER,
        !          33133:        ZEND_NULL_HANDLER,
        !          33134:        ZEND_NULL_HANDLER,
        !          33135:        ZEND_NULL_HANDLER,
        !          33136:        ZEND_NULL_HANDLER,
        !          33137:        ZEND_NULL_HANDLER,
        !          33138:        ZEND_NULL_HANDLER,
        !          33139:        ZEND_NULL_HANDLER,
        !          33140:        ZEND_NULL_HANDLER,
        !          33141:        ZEND_NULL_HANDLER,
        !          33142:        ZEND_NULL_HANDLER,
        !          33143:        ZEND_NULL_HANDLER,
        !          33144:        ZEND_NULL_HANDLER,
        !          33145:        ZEND_NULL_HANDLER,
        !          33146:        ZEND_NULL_HANDLER,
        !          33147:        ZEND_NULL_HANDLER,
        !          33148:        ZEND_NULL_HANDLER,
        !          33149:        ZEND_NULL_HANDLER,
        !          33150:        ZEND_NULL_HANDLER,
        !          33151:        ZEND_NULL_HANDLER,
        !          33152:        ZEND_NULL_HANDLER,
        !          33153:        ZEND_NULL_HANDLER,
        !          33154:        ZEND_NULL_HANDLER,
        !          33155:        ZEND_NULL_HANDLER,
        !          33156:        ZEND_NULL_HANDLER,
        !          33157:        ZEND_NULL_HANDLER,
        !          33158:        ZEND_NULL_HANDLER,
        !          33159:        ZEND_NULL_HANDLER,
        !          33160:        ZEND_NULL_HANDLER,
        !          33161:        ZEND_NULL_HANDLER,
        !          33162:        ZEND_NULL_HANDLER,
        !          33163:        ZEND_NULL_HANDLER,
        !          33164:        ZEND_NULL_HANDLER,
        !          33165:        ZEND_NULL_HANDLER,
        !          33166:        ZEND_NULL_HANDLER,
        !          33167:        ZEND_NULL_HANDLER,
        !          33168:        ZEND_NULL_HANDLER,
        !          33169:        ZEND_NULL_HANDLER,
        !          33170:        ZEND_NULL_HANDLER,
        !          33171:        ZEND_NULL_HANDLER,
        !          33172:        ZEND_NULL_HANDLER,
        !          33173:        ZEND_NULL_HANDLER,
        !          33174:        ZEND_NULL_HANDLER,
        !          33175:        ZEND_NULL_HANDLER,
        !          33176:        ZEND_NULL_HANDLER,
        !          33177:        ZEND_NULL_HANDLER,
        !          33178:        ZEND_NULL_HANDLER,
        !          33179:        ZEND_NULL_HANDLER,
        !          33180:        ZEND_NULL_HANDLER,
        !          33181:        ZEND_NULL_HANDLER,
        !          33182:        ZEND_NULL_HANDLER,
        !          33183:        ZEND_NULL_HANDLER,
        !          33184:        ZEND_NULL_HANDLER,
        !          33185:        ZEND_NULL_HANDLER,
        !          33186:        ZEND_NULL_HANDLER,
        !          33187:        ZEND_NULL_HANDLER,
        !          33188:        ZEND_NULL_HANDLER,
        !          33189:        ZEND_NULL_HANDLER,
        !          33190:        ZEND_NULL_HANDLER,
        !          33191:        ZEND_NULL_HANDLER,
        !          33192:        ZEND_NULL_HANDLER,
        !          33193:        ZEND_NULL_HANDLER,
        !          33194:        ZEND_NULL_HANDLER,
        !          33195:        ZEND_NULL_HANDLER,
        !          33196:        ZEND_NULL_HANDLER,
        !          33197:        ZEND_NULL_HANDLER,
        !          33198:        ZEND_NULL_HANDLER,
        !          33199:        ZEND_NULL_HANDLER,
        !          33200:        ZEND_NULL_HANDLER,
        !          33201:        ZEND_NULL_HANDLER,
        !          33202:        ZEND_NULL_HANDLER,
        !          33203:        ZEND_NULL_HANDLER,
        !          33204:        ZEND_NULL_HANDLER,
        !          33205:        ZEND_NULL_HANDLER,
        !          33206:        ZEND_NULL_HANDLER,
        !          33207:        ZEND_NULL_HANDLER,
        !          33208:        ZEND_NULL_HANDLER,
        !          33209:        ZEND_NULL_HANDLER,
        !          33210:        ZEND_NULL_HANDLER,
        !          33211:        ZEND_NULL_HANDLER,
        !          33212:        ZEND_NULL_HANDLER,
        !          33213:        ZEND_NULL_HANDLER,
        !          33214:        ZEND_NULL_HANDLER,
        !          33215:        ZEND_NULL_HANDLER,
        !          33216:        ZEND_NULL_HANDLER,
        !          33217:        ZEND_NULL_HANDLER,
        !          33218:        ZEND_NULL_HANDLER,
        !          33219:        ZEND_NULL_HANDLER,
        !          33220:        ZEND_NULL_HANDLER,
        !          33221:        ZEND_NULL_HANDLER,
        !          33222:        ZEND_NULL_HANDLER,
        !          33223:        ZEND_NULL_HANDLER,
        !          33224:        ZEND_NULL_HANDLER,
        !          33225:        ZEND_NULL_HANDLER,
        !          33226:        ZEND_NULL_HANDLER,
        !          33227:        ZEND_NULL_HANDLER,
        !          33228:        ZEND_NULL_HANDLER,
        !          33229:        ZEND_NULL_HANDLER,
        !          33230:        ZEND_NULL_HANDLER,
        !          33231:        ZEND_NULL_HANDLER,
        !          33232:        ZEND_NULL_HANDLER,
        !          33233:        ZEND_NULL_HANDLER,
        !          33234:        ZEND_NULL_HANDLER,
        !          33235:        ZEND_NULL_HANDLER,
        !          33236:        ZEND_NULL_HANDLER,
        !          33237:        ZEND_NULL_HANDLER,
        !          33238:        ZEND_NULL_HANDLER,
        !          33239:        ZEND_NULL_HANDLER,
        !          33240:        ZEND_NULL_HANDLER,
        !          33241:        ZEND_NULL_HANDLER,
        !          33242:        ZEND_NULL_HANDLER,
        !          33243:        ZEND_NULL_HANDLER,
        !          33244:        ZEND_NULL_HANDLER,
        !          33245:        ZEND_NULL_HANDLER,
        !          33246:        ZEND_NULL_HANDLER,
        !          33247:        ZEND_NULL_HANDLER,
        !          33248:        ZEND_NULL_HANDLER,
        !          33249:        ZEND_NULL_HANDLER,
        !          33250:        ZEND_NULL_HANDLER,
        !          33251:        ZEND_NULL_HANDLER,
        !          33252:        ZEND_NULL_HANDLER,
        !          33253:        ZEND_NULL_HANDLER,
        !          33254:        ZEND_NULL_HANDLER,
        !          33255:        ZEND_NULL_HANDLER,
        !          33256:        ZEND_NULL_HANDLER,
        !          33257:        ZEND_NULL_HANDLER,
        !          33258:        ZEND_NULL_HANDLER,
        !          33259:        ZEND_NULL_HANDLER,
        !          33260:        ZEND_NULL_HANDLER,
        !          33261:        ZEND_NULL_HANDLER,
        !          33262:        ZEND_NULL_HANDLER,
        !          33263:        ZEND_NULL_HANDLER,
        !          33264:        ZEND_NULL_HANDLER,
        !          33265:        ZEND_NULL_HANDLER,
        !          33266:        ZEND_NULL_HANDLER,
        !          33267:        ZEND_NULL_HANDLER,
        !          33268:        ZEND_NULL_HANDLER,
        !          33269:        ZEND_NULL_HANDLER,
        !          33270:        ZEND_NULL_HANDLER,
        !          33271:        ZEND_NULL_HANDLER,
        !          33272:        ZEND_NULL_HANDLER,
        !          33273:        ZEND_NULL_HANDLER,
        !          33274:        ZEND_NULL_HANDLER,
        !          33275:        ZEND_NULL_HANDLER,
        !          33276:        ZEND_NULL_HANDLER,
        !          33277:        ZEND_NULL_HANDLER,
        !          33278:        ZEND_NULL_HANDLER,
        !          33279:        ZEND_NULL_HANDLER,
        !          33280:        ZEND_NULL_HANDLER,
        !          33281:        ZEND_NULL_HANDLER,
        !          33282:        ZEND_NULL_HANDLER,
        !          33283:        ZEND_NULL_HANDLER,
        !          33284:        ZEND_NULL_HANDLER,
        !          33285:        ZEND_NULL_HANDLER,
        !          33286:        ZEND_NULL_HANDLER,
        !          33287:        ZEND_NULL_HANDLER,
        !          33288:        ZEND_NULL_HANDLER,
        !          33289:        ZEND_NULL_HANDLER,
        !          33290:        ZEND_NULL_HANDLER,
        !          33291:        ZEND_NULL_HANDLER,
        !          33292:        ZEND_NULL_HANDLER,
        !          33293:        ZEND_NULL_HANDLER,
        !          33294:        ZEND_NULL_HANDLER,
        !          33295:        ZEND_NULL_HANDLER,
        !          33296:        ZEND_NULL_HANDLER,
        !          33297:        ZEND_NULL_HANDLER,
        !          33298:        ZEND_NULL_HANDLER,
        !          33299:        ZEND_NULL_HANDLER,
        !          33300:        ZEND_NULL_HANDLER,
        !          33301:        ZEND_NULL_HANDLER,
        !          33302:        ZEND_NULL_HANDLER,
        !          33303:        ZEND_NULL_HANDLER,
        !          33304:        ZEND_NULL_HANDLER,
        !          33305:        ZEND_NULL_HANDLER,
        !          33306:        ZEND_NULL_HANDLER,
        !          33307:        ZEND_NULL_HANDLER,
        !          33308:        ZEND_NULL_HANDLER,
        !          33309:        ZEND_NULL_HANDLER,
        !          33310:        ZEND_NULL_HANDLER,
        !          33311:        ZEND_NULL_HANDLER,
        !          33312:        ZEND_NULL_HANDLER,
        !          33313:        ZEND_NULL_HANDLER,
        !          33314:        ZEND_NULL_HANDLER,
        !          33315:        ZEND_NULL_HANDLER,
        !          33316:        ZEND_NULL_HANDLER,
        !          33317:        ZEND_NULL_HANDLER,
        !          33318:        ZEND_NULL_HANDLER,
        !          33319:        ZEND_NULL_HANDLER,
        !          33320:        ZEND_NULL_HANDLER,
        !          33321:        ZEND_NULL_HANDLER,
        !          33322:        ZEND_NULL_HANDLER,
        !          33323:        ZEND_NULL_HANDLER,
        !          33324:        ZEND_NULL_HANDLER,
        !          33325:        ZEND_NULL_HANDLER,
        !          33326:        ZEND_NULL_HANDLER,
        !          33327:        ZEND_NULL_HANDLER,
        !          33328:        ZEND_NULL_HANDLER,
        !          33329:        ZEND_NULL_HANDLER,
        !          33330:        ZEND_NULL_HANDLER,
        !          33331:        ZEND_NULL_HANDLER,
        !          33332:        ZEND_NULL_HANDLER,
        !          33333:        ZEND_NULL_HANDLER,
        !          33334:        ZEND_NULL_HANDLER,
        !          33335:        ZEND_NULL_HANDLER,
        !          33336:        ZEND_NULL_HANDLER,
        !          33337:        ZEND_NULL_HANDLER,
        !          33338:        ZEND_NULL_HANDLER,
        !          33339:        ZEND_NULL_HANDLER,
        !          33340:        ZEND_NULL_HANDLER,
        !          33341:        ZEND_NULL_HANDLER,
        !          33342:        ZEND_NULL_HANDLER,
        !          33343:        ZEND_NULL_HANDLER,
        !          33344:        ZEND_NULL_HANDLER,
        !          33345:        ZEND_NULL_HANDLER,
        !          33346:        ZEND_NULL_HANDLER,
        !          33347:        ZEND_NULL_HANDLER,
        !          33348:        ZEND_NULL_HANDLER,
        !          33349:        ZEND_NULL_HANDLER,
        !          33350:        ZEND_NULL_HANDLER,
        !          33351:        ZEND_NULL_HANDLER,
        !          33352:        ZEND_NULL_HANDLER,
        !          33353:        ZEND_NULL_HANDLER,
        !          33354:        ZEND_NULL_HANDLER,
        !          33355:        ZEND_NULL_HANDLER,
        !          33356:        ZEND_NULL_HANDLER,
        !          33357:        ZEND_NULL_HANDLER,
        !          33358:        ZEND_NULL_HANDLER,
        !          33359:        ZEND_NULL_HANDLER,
        !          33360:        ZEND_NULL_HANDLER,
        !          33361:        ZEND_NULL_HANDLER,
        !          33362:        ZEND_NULL_HANDLER,
        !          33363:        ZEND_NULL_HANDLER,
        !          33364:        ZEND_NULL_HANDLER,
        !          33365:        ZEND_NULL_HANDLER,
        !          33366:        ZEND_NULL_HANDLER,
        !          33367:        ZEND_NULL_HANDLER,
        !          33368:        ZEND_NULL_HANDLER,
        !          33369:        ZEND_NULL_HANDLER,
        !          33370:        ZEND_NULL_HANDLER,
        !          33371:        ZEND_NULL_HANDLER,
        !          33372:        ZEND_NULL_HANDLER,
        !          33373:        ZEND_NULL_HANDLER,
        !          33374:        ZEND_NULL_HANDLER,
        !          33375:        ZEND_NULL_HANDLER,
        !          33376:        ZEND_NULL_HANDLER,
        !          33377:        ZEND_NULL_HANDLER,
        !          33378:        ZEND_NULL_HANDLER,
        !          33379:        ZEND_NULL_HANDLER,
        !          33380:        ZEND_NULL_HANDLER,
        !          33381:        ZEND_NULL_HANDLER,
        !          33382:        ZEND_NULL_HANDLER,
        !          33383:        ZEND_NULL_HANDLER,
        !          33384:        ZEND_NULL_HANDLER,
        !          33385:        ZEND_NULL_HANDLER,
        !          33386:        ZEND_NULL_HANDLER,
        !          33387:        ZEND_NULL_HANDLER,
        !          33388:        ZEND_NULL_HANDLER,
        !          33389:        ZEND_NULL_HANDLER,
        !          33390:        ZEND_NULL_HANDLER,
        !          33391:        ZEND_NULL_HANDLER,
        !          33392:        ZEND_NULL_HANDLER,
        !          33393:        ZEND_NULL_HANDLER,
        !          33394:        ZEND_NULL_HANDLER,
        !          33395:        ZEND_NULL_HANDLER,
        !          33396:        ZEND_NULL_HANDLER,
        !          33397:        ZEND_NULL_HANDLER,
        !          33398:        ZEND_NULL_HANDLER,
        !          33399:        ZEND_NULL_HANDLER,
        !          33400:        ZEND_NULL_HANDLER,
        !          33401:        ZEND_NULL_HANDLER,
        !          33402:        ZEND_NULL_HANDLER,
        !          33403:        ZEND_NULL_HANDLER,
        !          33404:        ZEND_NULL_HANDLER,
        !          33405:        ZEND_NULL_HANDLER,
        !          33406:        ZEND_NULL_HANDLER,
        !          33407:        ZEND_NULL_HANDLER,
        !          33408:        ZEND_NULL_HANDLER,
        !          33409:        ZEND_NULL_HANDLER,
        !          33410:        ZEND_NULL_HANDLER,
        !          33411:        ZEND_NULL_HANDLER,
        !          33412:        ZEND_NULL_HANDLER,
        !          33413:        ZEND_NULL_HANDLER,
        !          33414:        ZEND_NULL_HANDLER,
        !          33415:        ZEND_NULL_HANDLER,
        !          33416:        ZEND_NULL_HANDLER,
        !          33417:        ZEND_NULL_HANDLER,
        !          33418:        ZEND_NULL_HANDLER,
        !          33419:        ZEND_NULL_HANDLER,
        !          33420:        ZEND_NULL_HANDLER,
        !          33421:        ZEND_NULL_HANDLER,
        !          33422:        ZEND_NULL_HANDLER,
        !          33423:        ZEND_NULL_HANDLER,
        !          33424:        ZEND_NULL_HANDLER,
        !          33425:        ZEND_NULL_HANDLER,
        !          33426:        ZEND_NULL_HANDLER,
        !          33427:        ZEND_NULL_HANDLER,
        !          33428:        ZEND_NULL_HANDLER,
        !          33429:        ZEND_NULL_HANDLER,
        !          33430:        ZEND_NULL_HANDLER,
        !          33431:        ZEND_NULL_HANDLER,
        !          33432:        ZEND_NULL_HANDLER,
        !          33433:        ZEND_NULL_HANDLER,
        !          33434:        ZEND_NULL_HANDLER,
        !          33435:        ZEND_NULL_HANDLER,
        !          33436:        ZEND_NULL_HANDLER,
        !          33437:        ZEND_NULL_HANDLER,
        !          33438:        ZEND_NULL_HANDLER,
        !          33439:        ZEND_NULL_HANDLER,
        !          33440:        ZEND_NULL_HANDLER,
        !          33441:        ZEND_NULL_HANDLER,
        !          33442:        ZEND_NULL_HANDLER,
        !          33443:        ZEND_NULL_HANDLER,
        !          33444:        ZEND_NULL_HANDLER,
        !          33445:        ZEND_NULL_HANDLER,
        !          33446:        ZEND_NULL_HANDLER,
        !          33447:        ZEND_NULL_HANDLER,
        !          33448:        ZEND_NULL_HANDLER,
        !          33449:        ZEND_NULL_HANDLER,
        !          33450:        ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER,
        !          33451:        ZEND_PRE_INC_OBJ_SPEC_VAR_TMP_HANDLER,
        !          33452:        ZEND_PRE_INC_OBJ_SPEC_VAR_VAR_HANDLER,
        !          33453:        ZEND_NULL_HANDLER,
        !          33454:        ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER,
        !          33455:        ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER,
        !          33456:        ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMP_HANDLER,
        !          33457:        ZEND_PRE_INC_OBJ_SPEC_UNUSED_VAR_HANDLER,
        !          33458:        ZEND_NULL_HANDLER,
        !          33459:        ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER,
        !          33460:        ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER,
        !          33461:        ZEND_PRE_INC_OBJ_SPEC_CV_TMP_HANDLER,
        !          33462:        ZEND_PRE_INC_OBJ_SPEC_CV_VAR_HANDLER,
        !          33463:        ZEND_NULL_HANDLER,
        !          33464:        ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER,
        !          33465:        ZEND_NULL_HANDLER,
        !          33466:        ZEND_NULL_HANDLER,
        !          33467:        ZEND_NULL_HANDLER,
        !          33468:        ZEND_NULL_HANDLER,
        !          33469:        ZEND_NULL_HANDLER,
        !          33470:        ZEND_NULL_HANDLER,
        !          33471:        ZEND_NULL_HANDLER,
        !          33472:        ZEND_NULL_HANDLER,
        !          33473:        ZEND_NULL_HANDLER,
        !          33474:        ZEND_NULL_HANDLER,
        !          33475:        ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_HANDLER,
        !          33476:        ZEND_PRE_DEC_OBJ_SPEC_VAR_TMP_HANDLER,
        !          33477:        ZEND_PRE_DEC_OBJ_SPEC_VAR_VAR_HANDLER,
        !          33478:        ZEND_NULL_HANDLER,
        !          33479:        ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_HANDLER,
        !          33480:        ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER,
        !          33481:        ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMP_HANDLER,
        !          33482:        ZEND_PRE_DEC_OBJ_SPEC_UNUSED_VAR_HANDLER,
        !          33483:        ZEND_NULL_HANDLER,
        !          33484:        ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_HANDLER,
        !          33485:        ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_HANDLER,
        !          33486:        ZEND_PRE_DEC_OBJ_SPEC_CV_TMP_HANDLER,
        !          33487:        ZEND_PRE_DEC_OBJ_SPEC_CV_VAR_HANDLER,
        !          33488:        ZEND_NULL_HANDLER,
        !          33489:        ZEND_PRE_DEC_OBJ_SPEC_CV_CV_HANDLER,
        !          33490:        ZEND_NULL_HANDLER,
        !          33491:        ZEND_NULL_HANDLER,
        !          33492:        ZEND_NULL_HANDLER,
        !          33493:        ZEND_NULL_HANDLER,
        !          33494:        ZEND_NULL_HANDLER,
        !          33495:        ZEND_NULL_HANDLER,
        !          33496:        ZEND_NULL_HANDLER,
        !          33497:        ZEND_NULL_HANDLER,
        !          33498:        ZEND_NULL_HANDLER,
        !          33499:        ZEND_NULL_HANDLER,
        !          33500:        ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER,
        !          33501:        ZEND_POST_INC_OBJ_SPEC_VAR_TMP_HANDLER,
        !          33502:        ZEND_POST_INC_OBJ_SPEC_VAR_VAR_HANDLER,
        !          33503:        ZEND_NULL_HANDLER,
        !          33504:        ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER,
        !          33505:        ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER,
        !          33506:        ZEND_POST_INC_OBJ_SPEC_UNUSED_TMP_HANDLER,
        !          33507:        ZEND_POST_INC_OBJ_SPEC_UNUSED_VAR_HANDLER,
        !          33508:        ZEND_NULL_HANDLER,
        !          33509:        ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER,
        !          33510:        ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER,
        !          33511:        ZEND_POST_INC_OBJ_SPEC_CV_TMP_HANDLER,
        !          33512:        ZEND_POST_INC_OBJ_SPEC_CV_VAR_HANDLER,
        !          33513:        ZEND_NULL_HANDLER,
        !          33514:        ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER,
        !          33515:        ZEND_NULL_HANDLER,
        !          33516:        ZEND_NULL_HANDLER,
        !          33517:        ZEND_NULL_HANDLER,
        !          33518:        ZEND_NULL_HANDLER,
        !          33519:        ZEND_NULL_HANDLER,
        !          33520:        ZEND_NULL_HANDLER,
        !          33521:        ZEND_NULL_HANDLER,
        !          33522:        ZEND_NULL_HANDLER,
        !          33523:        ZEND_NULL_HANDLER,
        !          33524:        ZEND_NULL_HANDLER,
        !          33525:        ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_HANDLER,
        !          33526:        ZEND_POST_DEC_OBJ_SPEC_VAR_TMP_HANDLER,
        !          33527:        ZEND_POST_DEC_OBJ_SPEC_VAR_VAR_HANDLER,
        !          33528:        ZEND_NULL_HANDLER,
        !          33529:        ZEND_POST_DEC_OBJ_SPEC_VAR_CV_HANDLER,
        !          33530:        ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER,
        !          33531:        ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMP_HANDLER,
        !          33532:        ZEND_POST_DEC_OBJ_SPEC_UNUSED_VAR_HANDLER,
        !          33533:        ZEND_NULL_HANDLER,
        !          33534:        ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_HANDLER,
        !          33535:        ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER,
        !          33536:        ZEND_POST_DEC_OBJ_SPEC_CV_TMP_HANDLER,
        !          33537:        ZEND_POST_DEC_OBJ_SPEC_CV_VAR_HANDLER,
        !          33538:        ZEND_NULL_HANDLER,
        !          33539:        ZEND_POST_DEC_OBJ_SPEC_CV_CV_HANDLER,
        !          33540:        ZEND_NULL_HANDLER,
        !          33541:        ZEND_NULL_HANDLER,
        !          33542:        ZEND_NULL_HANDLER,
        !          33543:        ZEND_NULL_HANDLER,
        !          33544:        ZEND_NULL_HANDLER,
        !          33545:        ZEND_NULL_HANDLER,
        !          33546:        ZEND_NULL_HANDLER,
        !          33547:        ZEND_NULL_HANDLER,
        !          33548:        ZEND_NULL_HANDLER,
        !          33549:        ZEND_NULL_HANDLER,
        !          33550:        ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_HANDLER,
        !          33551:        ZEND_ASSIGN_OBJ_SPEC_VAR_TMP_HANDLER,
        !          33552:        ZEND_ASSIGN_OBJ_SPEC_VAR_VAR_HANDLER,
        !          33553:        ZEND_NULL_HANDLER,
        !          33554:        ZEND_ASSIGN_OBJ_SPEC_VAR_CV_HANDLER,
        !          33555:        ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_HANDLER,
        !          33556:        ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMP_HANDLER,
        !          33557:        ZEND_ASSIGN_OBJ_SPEC_UNUSED_VAR_HANDLER,
        !          33558:        ZEND_NULL_HANDLER,
        !          33559:        ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_HANDLER,
        !          33560:        ZEND_ASSIGN_OBJ_SPEC_CV_CONST_HANDLER,
        !          33561:        ZEND_ASSIGN_OBJ_SPEC_CV_TMP_HANDLER,
        !          33562:        ZEND_ASSIGN_OBJ_SPEC_CV_VAR_HANDLER,
        !          33563:        ZEND_NULL_HANDLER,
        !          33564:        ZEND_ASSIGN_OBJ_SPEC_CV_CV_HANDLER,
        !          33565:        ZEND_NULL_HANDLER,
        !          33566:        ZEND_NULL_HANDLER,
        !          33567:        ZEND_NULL_HANDLER,
        !          33568:        ZEND_NULL_HANDLER,
        !          33569:        ZEND_NULL_HANDLER,
        !          33570:        ZEND_NULL_HANDLER,
        !          33571:        ZEND_NULL_HANDLER,
        !          33572:        ZEND_NULL_HANDLER,
        !          33573:        ZEND_NULL_HANDLER,
        !          33574:        ZEND_NULL_HANDLER,
        !          33575:        ZEND_NULL_HANDLER,
        !          33576:        ZEND_NULL_HANDLER,
        !          33577:        ZEND_NULL_HANDLER,
        !          33578:        ZEND_NULL_HANDLER,
        !          33579:        ZEND_NULL_HANDLER,
        !          33580:        ZEND_NULL_HANDLER,
        !          33581:        ZEND_NULL_HANDLER,
        !          33582:        ZEND_NULL_HANDLER,
        !          33583:        ZEND_NULL_HANDLER,
        !          33584:        ZEND_NULL_HANDLER,
        !          33585:        ZEND_NULL_HANDLER,
        !          33586:        ZEND_NULL_HANDLER,
        !          33587:        ZEND_NULL_HANDLER,
        !          33588:        ZEND_NULL_HANDLER,
        !          33589:        ZEND_NULL_HANDLER,
        !          33590:        ZEND_NULL_HANDLER,
        !          33591:        ZEND_NULL_HANDLER,
        !          33592:        ZEND_NULL_HANDLER,
        !          33593:        ZEND_NULL_HANDLER,
        !          33594:        ZEND_NULL_HANDLER,
        !          33595:        ZEND_INSTANCEOF_SPEC_TMP_HANDLER,
        !          33596:        ZEND_INSTANCEOF_SPEC_TMP_HANDLER,
        !          33597:        ZEND_INSTANCEOF_SPEC_TMP_HANDLER,
        !          33598:        ZEND_INSTANCEOF_SPEC_TMP_HANDLER,
        !          33599:        ZEND_INSTANCEOF_SPEC_TMP_HANDLER,
        !          33600:        ZEND_INSTANCEOF_SPEC_VAR_HANDLER,
        !          33601:        ZEND_INSTANCEOF_SPEC_VAR_HANDLER,
        !          33602:        ZEND_INSTANCEOF_SPEC_VAR_HANDLER,
        !          33603:        ZEND_INSTANCEOF_SPEC_VAR_HANDLER,
        !          33604:        ZEND_INSTANCEOF_SPEC_VAR_HANDLER,
        !          33605:        ZEND_NULL_HANDLER,
        !          33606:        ZEND_NULL_HANDLER,
        !          33607:        ZEND_NULL_HANDLER,
        !          33608:        ZEND_NULL_HANDLER,
        !          33609:        ZEND_NULL_HANDLER,
        !          33610:        ZEND_INSTANCEOF_SPEC_CV_HANDLER,
        !          33611:        ZEND_INSTANCEOF_SPEC_CV_HANDLER,
        !          33612:        ZEND_INSTANCEOF_SPEC_CV_HANDLER,
        !          33613:        ZEND_INSTANCEOF_SPEC_CV_HANDLER,
        !          33614:        ZEND_INSTANCEOF_SPEC_CV_HANDLER,
        !          33615:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33616:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33617:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33618:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33619:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33620:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33621:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33622:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33623:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33624:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33625:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33626:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33627:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33628:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33629:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33630:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33631:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33632:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33633:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33634:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33635:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33636:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33637:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33638:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33639:        ZEND_DECLARE_CLASS_SPEC_HANDLER,
        !          33640:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33641:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33642:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33643:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33644:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33645:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33646:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33647:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33648:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33649:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33650:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33651:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33652:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33653:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33654:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33655:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33656:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33657:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33658:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33659:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33660:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33661:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33662:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33663:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33664:        ZEND_DECLARE_INHERITED_CLASS_SPEC_HANDLER,
        !          33665:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33666:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33667:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33668:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33669:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33670:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33671:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33672:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33673:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33674:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33675:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33676:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33677:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33678:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33679:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33680:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33681:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33682:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33683:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33684:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33685:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33686:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33687:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33688:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33689:        ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
        !          33690:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33691:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33692:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33693:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33694:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33695:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33696:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33697:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33698:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33699:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33700:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33701:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33702:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33703:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33704:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33705:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33706:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33707:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33708:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33709:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33710:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33711:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33712:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33713:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33714:        ZEND_RAISE_ABSTRACT_ERROR_SPEC_HANDLER,
        !          33715:        ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER,
        !          33716:        ZEND_NULL_HANDLER,
        !          33717:        ZEND_NULL_HANDLER,
        !          33718:        ZEND_NULL_HANDLER,
        !          33719:        ZEND_NULL_HANDLER,
        !          33720:        ZEND_NULL_HANDLER,
        !          33721:        ZEND_NULL_HANDLER,
        !          33722:        ZEND_NULL_HANDLER,
        !          33723:        ZEND_NULL_HANDLER,
        !          33724:        ZEND_NULL_HANDLER,
        !          33725:        ZEND_NULL_HANDLER,
        !          33726:        ZEND_NULL_HANDLER,
        !          33727:        ZEND_NULL_HANDLER,
        !          33728:        ZEND_NULL_HANDLER,
        !          33729:        ZEND_NULL_HANDLER,
        !          33730:        ZEND_NULL_HANDLER,
        !          33731:        ZEND_NULL_HANDLER,
        !          33732:        ZEND_NULL_HANDLER,
        !          33733:        ZEND_NULL_HANDLER,
        !          33734:        ZEND_NULL_HANDLER,
        !          33735:        ZEND_NULL_HANDLER,
        !          33736:        ZEND_NULL_HANDLER,
        !          33737:        ZEND_NULL_HANDLER,
        !          33738:        ZEND_NULL_HANDLER,
        !          33739:        ZEND_NULL_HANDLER,
        !          33740:        ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER,
        !          33741:        ZEND_NULL_HANDLER,
        !          33742:        ZEND_NULL_HANDLER,
        !          33743:        ZEND_NULL_HANDLER,
        !          33744:        ZEND_NULL_HANDLER,
        !          33745:        ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER,
        !          33746:        ZEND_NULL_HANDLER,
        !          33747:        ZEND_NULL_HANDLER,
        !          33748:        ZEND_NULL_HANDLER,
        !          33749:        ZEND_NULL_HANDLER,
        !          33750:        ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER,
        !          33751:        ZEND_NULL_HANDLER,
        !          33752:        ZEND_NULL_HANDLER,
        !          33753:        ZEND_NULL_HANDLER,
        !          33754:        ZEND_NULL_HANDLER,
        !          33755:        ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER,
        !          33756:        ZEND_NULL_HANDLER,
        !          33757:        ZEND_NULL_HANDLER,
        !          33758:        ZEND_NULL_HANDLER,
        !          33759:        ZEND_NULL_HANDLER,
        !          33760:        ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER,
        !          33761:        ZEND_NULL_HANDLER,
        !          33762:        ZEND_NULL_HANDLER,
        !          33763:        ZEND_NULL_HANDLER,
        !          33764:        ZEND_NULL_HANDLER,
        !          33765:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33766:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33767:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33768:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33769:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33770:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33771:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33772:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33773:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33774:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33775:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33776:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33777:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33778:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33779:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33780:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33781:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33782:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33783:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33784:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33785:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33786:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33787:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33788:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33789:        ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_HANDLER,
        !          33790:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33791:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33792:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33793:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33794:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33795:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33796:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33797:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33798:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33799:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33800:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33801:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33802:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33803:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33804:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33805:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33806:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33807:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33808:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33809:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33810:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33811:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33812:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33813:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33814:        ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
        !          33815:        ZEND_NULL_HANDLER,
        !          33816:        ZEND_NULL_HANDLER,
        !          33817:        ZEND_NULL_HANDLER,
        !          33818:        ZEND_NULL_HANDLER,
        !          33819:        ZEND_NULL_HANDLER,
        !          33820:        ZEND_NULL_HANDLER,
        !          33821:        ZEND_NULL_HANDLER,
        !          33822:        ZEND_NULL_HANDLER,
        !          33823:        ZEND_NULL_HANDLER,
        !          33824:        ZEND_NULL_HANDLER,
        !          33825:        ZEND_ASSIGN_DIM_SPEC_VAR_CONST_HANDLER,
        !          33826:        ZEND_ASSIGN_DIM_SPEC_VAR_TMP_HANDLER,
        !          33827:        ZEND_ASSIGN_DIM_SPEC_VAR_VAR_HANDLER,
        !          33828:        ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_HANDLER,
        !          33829:        ZEND_ASSIGN_DIM_SPEC_VAR_CV_HANDLER,
        !          33830:        ZEND_NULL_HANDLER,
        !          33831:        ZEND_NULL_HANDLER,
        !          33832:        ZEND_NULL_HANDLER,
        !          33833:        ZEND_NULL_HANDLER,
        !          33834:        ZEND_NULL_HANDLER,
        !          33835:        ZEND_ASSIGN_DIM_SPEC_CV_CONST_HANDLER,
        !          33836:        ZEND_ASSIGN_DIM_SPEC_CV_TMP_HANDLER,
        !          33837:        ZEND_ASSIGN_DIM_SPEC_CV_VAR_HANDLER,
        !          33838:        ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_HANDLER,
        !          33839:        ZEND_ASSIGN_DIM_SPEC_CV_CV_HANDLER,
        !          33840:        ZEND_NULL_HANDLER,
        !          33841:        ZEND_NULL_HANDLER,
        !          33842:        ZEND_NULL_HANDLER,
        !          33843:        ZEND_NULL_HANDLER,
        !          33844:        ZEND_NULL_HANDLER,
        !          33845:        ZEND_NULL_HANDLER,
        !          33846:        ZEND_NULL_HANDLER,
        !          33847:        ZEND_NULL_HANDLER,
        !          33848:        ZEND_NULL_HANDLER,
        !          33849:        ZEND_NULL_HANDLER,
        !          33850:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_CONST_HANDLER,
        !          33851:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_TMP_HANDLER,
        !          33852:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_VAR_HANDLER,
        !          33853:        ZEND_NULL_HANDLER,
        !          33854:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_VAR_CV_HANDLER,
        !          33855:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER,
        !          33856:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMP_HANDLER,
        !          33857:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_VAR_HANDLER,
        !          33858:        ZEND_NULL_HANDLER,
        !          33859:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER,
        !          33860:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER,
        !          33861:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMP_HANDLER,
        !          33862:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_VAR_HANDLER,
        !          33863:        ZEND_NULL_HANDLER,
        !          33864:        ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER,
        !          33865:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33866:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33867:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33868:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33869:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33870:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33871:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33872:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33873:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33874:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33875:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33876:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33877:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33878:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33879:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33880:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33881:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33882:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33883:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33884:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33885:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33886:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33887:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33888:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33889:        ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
        !          33890:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33891:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33892:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33893:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33894:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33895:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33896:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33897:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33898:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33899:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33900:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33901:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33902:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33903:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33904:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33905:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33906:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33907:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33908:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33909:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33910:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33911:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33912:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33913:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33914:        ZEND_USER_OPCODE_SPEC_HANDLER,
        !          33915:        ZEND_NULL_HANDLER,
        !          33916:        ZEND_NULL_HANDLER,
        !          33917:        ZEND_NULL_HANDLER,
        !          33918:        ZEND_NULL_HANDLER,
        !          33919:        ZEND_NULL_HANDLER,
        !          33920:        ZEND_NULL_HANDLER,
        !          33921:        ZEND_NULL_HANDLER,
        !          33922:        ZEND_NULL_HANDLER,
        !          33923:        ZEND_NULL_HANDLER,
        !          33924:        ZEND_NULL_HANDLER,
        !          33925:        ZEND_NULL_HANDLER,
        !          33926:        ZEND_NULL_HANDLER,
        !          33927:        ZEND_NULL_HANDLER,
        !          33928:        ZEND_NULL_HANDLER,
        !          33929:        ZEND_NULL_HANDLER,
        !          33930:        ZEND_NULL_HANDLER,
        !          33931:        ZEND_NULL_HANDLER,
        !          33932:        ZEND_NULL_HANDLER,
        !          33933:        ZEND_NULL_HANDLER,
        !          33934:        ZEND_NULL_HANDLER,
        !          33935:        ZEND_NULL_HANDLER,
        !          33936:        ZEND_NULL_HANDLER,
        !          33937:        ZEND_NULL_HANDLER,
        !          33938:        ZEND_NULL_HANDLER,
        !          33939:        ZEND_NULL_HANDLER,
        !          33940:        ZEND_JMP_SET_SPEC_CONST_HANDLER,
        !          33941:        ZEND_JMP_SET_SPEC_CONST_HANDLER,
        !          33942:        ZEND_JMP_SET_SPEC_CONST_HANDLER,
        !          33943:        ZEND_JMP_SET_SPEC_CONST_HANDLER,
        !          33944:        ZEND_JMP_SET_SPEC_CONST_HANDLER,
        !          33945:        ZEND_JMP_SET_SPEC_TMP_HANDLER,
        !          33946:        ZEND_JMP_SET_SPEC_TMP_HANDLER,
        !          33947:        ZEND_JMP_SET_SPEC_TMP_HANDLER,
        !          33948:        ZEND_JMP_SET_SPEC_TMP_HANDLER,
        !          33949:        ZEND_JMP_SET_SPEC_TMP_HANDLER,
        !          33950:        ZEND_JMP_SET_SPEC_VAR_HANDLER,
        !          33951:        ZEND_JMP_SET_SPEC_VAR_HANDLER,
        !          33952:        ZEND_JMP_SET_SPEC_VAR_HANDLER,
        !          33953:        ZEND_JMP_SET_SPEC_VAR_HANDLER,
        !          33954:        ZEND_JMP_SET_SPEC_VAR_HANDLER,
        !          33955:        ZEND_NULL_HANDLER,
        !          33956:        ZEND_NULL_HANDLER,
        !          33957:        ZEND_NULL_HANDLER,
        !          33958:        ZEND_NULL_HANDLER,
        !          33959:        ZEND_NULL_HANDLER,
        !          33960:        ZEND_JMP_SET_SPEC_CV_HANDLER,
        !          33961:        ZEND_JMP_SET_SPEC_CV_HANDLER,
        !          33962:        ZEND_JMP_SET_SPEC_CV_HANDLER,
        !          33963:        ZEND_JMP_SET_SPEC_CV_HANDLER,
        !          33964:        ZEND_JMP_SET_SPEC_CV_HANDLER,
        !          33965:        ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_CONST_HANDLER,
        !          33966:        ZEND_NULL_HANDLER,
        !          33967:        ZEND_NULL_HANDLER,
        !          33968:        ZEND_NULL_HANDLER,
        !          33969:        ZEND_NULL_HANDLER,
        !          33970:        ZEND_NULL_HANDLER,
        !          33971:        ZEND_NULL_HANDLER,
        !          33972:        ZEND_NULL_HANDLER,
        !          33973:        ZEND_NULL_HANDLER,
        !          33974:        ZEND_NULL_HANDLER,
        !          33975:        ZEND_NULL_HANDLER,
        !          33976:        ZEND_NULL_HANDLER,
        !          33977:        ZEND_NULL_HANDLER,
        !          33978:        ZEND_NULL_HANDLER,
        !          33979:        ZEND_NULL_HANDLER,
        !          33980:        ZEND_NULL_HANDLER,
        !          33981:        ZEND_NULL_HANDLER,
        !          33982:        ZEND_NULL_HANDLER,
        !          33983:        ZEND_NULL_HANDLER,
        !          33984:        ZEND_NULL_HANDLER,
        !          33985:        ZEND_NULL_HANDLER,
        !          33986:        ZEND_NULL_HANDLER,
        !          33987:        ZEND_NULL_HANDLER,
        !          33988:        ZEND_NULL_HANDLER,
        !          33989:        ZEND_NULL_HANDLER,
        !          33990:        ZEND_NULL_HANDLER
        !          33991:   };
        !          33992:   zend_opcode_handlers = (opcode_handler_t*)labels;
        !          33993: }
        !          33994: static opcode_handler_t zend_vm_get_opcode_handler(zend_uchar opcode, zend_op* op)
        !          33995: {
        !          33996:                static const int zend_vm_decode[] = {
        !          33997:                        _UNUSED_CODE, /* 0              */
        !          33998:                        _CONST_CODE,  /* 1 = IS_CONST   */
        !          33999:                        _TMP_CODE,    /* 2 = IS_TMP_VAR */
        !          34000:                        _UNUSED_CODE, /* 3              */
        !          34001:                        _VAR_CODE,    /* 4 = IS_VAR     */
        !          34002:                        _UNUSED_CODE, /* 5              */
        !          34003:                        _UNUSED_CODE, /* 6              */
        !          34004:                        _UNUSED_CODE, /* 7              */
        !          34005:                        _UNUSED_CODE, /* 8 = IS_UNUSED  */
        !          34006:                        _UNUSED_CODE, /* 9              */
        !          34007:                        _UNUSED_CODE, /* 10             */
        !          34008:                        _UNUSED_CODE, /* 11             */
        !          34009:                        _UNUSED_CODE, /* 12             */
        !          34010:                        _UNUSED_CODE, /* 13             */
        !          34011:                        _UNUSED_CODE, /* 14             */
        !          34012:                        _UNUSED_CODE, /* 15             */
        !          34013:                        _CV_CODE      /* 16 = IS_CV     */
        !          34014:                };
        !          34015:                return zend_opcode_handlers[opcode * 25 + zend_vm_decode[op->op1.op_type] * 5 + zend_vm_decode[op->op2.op_type]];
        !          34016: }
        !          34017: 
        !          34018: ZEND_API void zend_vm_set_opcode_handler(zend_op* op)
        !          34019: {
        !          34020:        op->handler = zend_vm_get_opcode_handler(zend_user_opcodes[op->opcode], op);
        !          34021: }
        !          34022: 
        !          34023: ZEND_API int zend_do_fcall(ZEND_OPCODE_HANDLER_ARGS)
        !          34024: {
        !          34025:        return zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
        !          34026: }
        !          34027: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>