Annotation of embedaddon/php/Zend/zend_vm_execute.skl, revision 1.1.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>