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

1.1     ! misho       1: {%DEFINES%}
        !             2: 
        !             3: ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
        !             4: {
        !             5:        zend_execute_data *execute_data;
        !             6:        zend_bool nested = 0;
        !             7:        zend_bool original_in_execution = EG(in_execution);
        !             8:        {%HELPER_VARS%}
        !             9: 
        !            10:        {%INTERNAL_LABELS%}
        !            11: 
        !            12:        if (EG(exception)) {
        !            13:                return;
        !            14:        }
        !            15: 
        !            16:        EG(in_execution) = 1;
        !            17: 
        !            18: zend_vm_enter:
        !            19:        /* Initialize execute_data */
        !            20:        execute_data = (zend_execute_data *)zend_vm_stack_alloc(
        !            21:                ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)) +
        !            22:                ZEND_MM_ALIGNED_SIZE(sizeof(zval**) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2)) +
        !            23:                ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * op_array->T TSRMLS_CC);
        !            24: 
        !            25:        EX(CVs) = (zval***)((char*)execute_data + ZEND_MM_ALIGNED_SIZE(sizeof(zend_execute_data)));
        !            26:        memset(EX(CVs), 0, sizeof(zval**) * op_array->last_var);
        !            27:        EX(Ts) = (temp_variable *)(((char*)EX(CVs)) + ZEND_MM_ALIGNED_SIZE(sizeof(zval**) * op_array->last_var * (EG(active_symbol_table) ? 1 : 2)));
        !            28:        EX(fbc) = NULL;
        !            29:        EX(called_scope) = NULL;
        !            30:        EX(object) = NULL;
        !            31:        EX(old_error_reporting) = NULL;
        !            32:        EX(op_array) = op_array;
        !            33:        EX(symbol_table) = EG(active_symbol_table);
        !            34:        EX(prev_execute_data) = EG(current_execute_data);
        !            35:        EG(current_execute_data) = execute_data;
        !            36:        EX(nested) = nested;
        !            37:        nested = 1;
        !            38: 
        !            39:        if (op_array->start_op) {
        !            40:                ZEND_VM_SET_OPCODE(op_array->start_op);
        !            41:        } else {
        !            42:                ZEND_VM_SET_OPCODE(op_array->opcodes);
        !            43:        }
        !            44: 
        !            45:        if (op_array->this_var != -1 && EG(This)) {
        !            46:                Z_ADDREF_P(EG(This)); /* For $this pointer */
        !            47:                if (!EG(active_symbol_table)) {
        !            48:                        EX(CVs)[op_array->this_var] = (zval**)EX(CVs) + (op_array->last_var + op_array->this_var);
        !            49:                        *EX(CVs)[op_array->this_var] = EG(This);
        !            50:                } else {
        !            51:                        if (zend_hash_add(EG(active_symbol_table), "this", sizeof("this"), &EG(This), sizeof(zval *), (void**)&EX(CVs)[op_array->this_var])==FAILURE) {
        !            52:                                Z_DELREF_P(EG(This));
        !            53:                        }
        !            54:                }
        !            55:        }
        !            56: 
        !            57:        EG(opline_ptr) = &EX(opline);
        !            58: 
        !            59:        EX(function_state).function = (zend_function *) op_array;
        !            60:        EX(function_state).arguments = NULL;
        !            61:        
        !            62:        while (1) {
        !            63:     {%ZEND_VM_CONTINUE_LABEL%}
        !            64: #ifdef ZEND_WIN32
        !            65:                if (EG(timed_out)) {
        !            66:                        zend_timeout(0);
        !            67:                }
        !            68: #endif
        !            69: 
        !            70:                {%ZEND_VM_DISPATCH%} {
        !            71:                        {%INTERNAL_EXECUTOR%}
        !            72:                }
        !            73: 
        !            74:        }
        !            75:        zend_error_noreturn(E_ERROR, "Arrived at end of main loop which shouldn't happen");
        !            76: }
        !            77: 
        !            78: {%EXTERNAL_EXECUTOR%}
        !            79: 
        !            80: void {%INITIALIZER_NAME%}(void)
        !            81: {
        !            82:   {%EXTERNAL_LABELS%}
        !            83: }

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