Annotation of embedaddon/php/Zend/zend_globals.h, revision 1.1.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:    +----------------------------------------------------------------------+
                     18: */
                     19: 
                     20: /* $Id: zend_globals.h 321634 2012-01-01 13:15:04Z felipe $ */
                     21: 
                     22: #ifndef ZEND_GLOBALS_H
                     23: #define ZEND_GLOBALS_H
                     24: 
                     25: 
                     26: #include <setjmp.h>
                     27: 
                     28: #include "zend_globals_macros.h"
                     29: 
                     30: #include "zend_stack.h"
                     31: #include "zend_ptr_stack.h"
                     32: #include "zend_hash.h"
                     33: #include "zend_llist.h"
                     34: #include "zend_objects.h"
                     35: #include "zend_objects_API.h"
                     36: #include "zend_modules.h"
                     37: 
                     38: #ifdef ZEND_MULTIBYTE
                     39: #include "zend_multibyte.h"
                     40: #endif /* ZEND_MULTIBYTE */
                     41: 
                     42: /* Define ZTS if you want a thread-safe Zend */
                     43: /*#undef ZTS*/
                     44: 
                     45: #ifdef ZTS
                     46: 
                     47: BEGIN_EXTERN_C()
                     48: ZEND_API extern int compiler_globals_id;
                     49: ZEND_API extern int executor_globals_id;
                     50: END_EXTERN_C()
                     51: 
                     52: #endif
                     53: 
                     54: #define SYMTABLE_CACHE_SIZE 32
                     55: 
                     56: 
                     57: #include "zend_compile.h"
                     58: 
                     59: /* excpt.h on Digital Unix 4.0 defines function_table */
                     60: #undef function_table
                     61: 
                     62: #define ZEND_EARLY_BINDING_COMPILE_TIME 0
                     63: #define ZEND_EARLY_BINDING_DELAYED      1
                     64: #define ZEND_EARLY_BINDING_DELAYED_ALL  2
                     65: 
                     66: typedef struct _zend_declarables {
                     67:        zval ticks;
                     68: } zend_declarables;
                     69: 
                     70: typedef struct _zend_vm_stack *zend_vm_stack;
                     71: 
                     72: struct _zend_compiler_globals {
                     73:        zend_stack bp_stack;
                     74:        zend_stack switch_cond_stack;
                     75:        zend_stack foreach_copy_stack;
                     76:        zend_stack object_stack;
                     77:        zend_stack declare_stack;
                     78: 
                     79:        zend_class_entry *active_class_entry;
                     80: 
                     81:        /* variables for list() compilation */
                     82:        zend_llist list_llist;
                     83:        zend_llist dimension_llist;
                     84:        zend_stack list_stack;
                     85: 
                     86:        zend_stack function_call_stack;
                     87: 
                     88:        char *compiled_filename;
                     89: 
                     90:        int zend_lineno;
                     91: 
                     92:        char *heredoc;
                     93:        int heredoc_len;
                     94: 
                     95:        zend_op_array *active_op_array;
                     96: 
                     97:        HashTable *function_table;      /* function symbol table */
                     98:        HashTable *class_table;         /* class table */
                     99: 
                    100:        HashTable filenames_table;
                    101: 
                    102:        HashTable *auto_globals;
                    103: 
                    104:        zend_bool in_compilation;
                    105:        zend_bool short_tags;
                    106:        zend_bool asp_tags;
                    107:        zend_bool allow_call_time_pass_reference;
                    108: 
                    109:        zend_declarables declarables;
                    110: 
                    111:        zend_bool unclean_shutdown;
                    112: 
                    113:        zend_bool ini_parser_unbuffered_errors;
                    114: 
                    115:        zend_llist open_files;
                    116: 
                    117:        long catch_begin;
                    118: 
                    119:        struct _zend_ini_parser_param *ini_parser_param;
                    120: 
                    121:        int interactive;
                    122: 
                    123:        zend_uint start_lineno;
                    124:        zend_bool increment_lineno;
                    125: 
                    126:        znode implementing_class;
                    127: 
                    128:        zend_uint access_type;
                    129: 
                    130:        char *doc_comment;
                    131:        zend_uint doc_comment_len;
                    132: 
                    133:        zend_uint compiler_options; /* set of ZEND_COMPILE_* constants */
                    134: 
                    135:        zval      *current_namespace;
                    136:        HashTable *current_import;
                    137:        zend_bool  in_namespace;
                    138:        zend_bool  has_bracketed_namespaces;
                    139: 
                    140:        HashTable *labels;
                    141:        zend_stack labels_stack;
                    142: 
                    143: #ifdef ZEND_MULTIBYTE
                    144:        zend_encoding **script_encoding_list;
                    145:        size_t script_encoding_list_size;
                    146:        zend_bool detect_unicode;
                    147:        zend_bool encoding_declared;
                    148: 
                    149:        zend_encoding *internal_encoding;
                    150: 
                    151:        /* multibyte utility functions */
                    152:        zend_encoding_detector encoding_detector;
                    153:        zend_encoding_converter encoding_converter;
                    154:        zend_encoding_oddlen encoding_oddlen;
                    155: #endif /* ZEND_MULTIBYTE */
                    156: 
                    157: #ifdef ZTS
                    158:        HashTable **static_members;
                    159:        int last_static_member;
                    160: #endif
                    161: };
                    162: 
                    163: 
                    164: struct _zend_executor_globals {
                    165:        zval **return_value_ptr_ptr;
                    166: 
                    167:        zval uninitialized_zval;
                    168:        zval *uninitialized_zval_ptr;
                    169: 
                    170:        zval error_zval;
                    171:        zval *error_zval_ptr;
                    172: 
                    173:        zend_ptr_stack arg_types_stack;
                    174: 
                    175:        /* symbol table cache */
                    176:        HashTable *symtable_cache[SYMTABLE_CACHE_SIZE];
                    177:        HashTable **symtable_cache_limit;
                    178:        HashTable **symtable_cache_ptr;
                    179: 
                    180:        zend_op **opline_ptr;
                    181: 
                    182:        HashTable *active_symbol_table;
                    183:        HashTable symbol_table;         /* main symbol table */
                    184: 
                    185:        HashTable included_files;       /* files already included */
                    186: 
                    187:        JMP_BUF *bailout;
                    188: 
                    189:        int error_reporting;
                    190:        int orig_error_reporting;
                    191:        int exit_status;
                    192: 
                    193:        zend_op_array *active_op_array;
                    194: 
                    195:        HashTable *function_table;      /* function symbol table */
                    196:        HashTable *class_table;         /* class table */
                    197:        HashTable *zend_constants;      /* constants table */
                    198: 
                    199:        zend_class_entry *scope;
                    200:        zend_class_entry *called_scope; /* Scope of the calling class */
                    201: 
                    202:        zval *This;
                    203: 
                    204:        long precision;
                    205: 
                    206:        int ticks_count;
                    207: 
                    208:        zend_bool in_execution;
                    209:        HashTable *in_autoload;
                    210:        zend_function *autoload_func;
                    211:        zend_bool full_tables_cleanup;
                    212: 
                    213:        /* for extended information support */
                    214:        zend_bool no_extensions;
                    215: 
                    216: #ifdef ZEND_WIN32
                    217:        zend_bool timed_out;
                    218:        OSVERSIONINFOEX windows_version_info;
                    219: #endif
                    220: 
                    221:        HashTable regular_list;
                    222:        HashTable persistent_list;
                    223: 
                    224:        zend_vm_stack argument_stack;
                    225: 
                    226:        int user_error_handler_error_reporting;
                    227:        zval *user_error_handler;
                    228:        zval *user_exception_handler;
                    229:        zend_stack user_error_handlers_error_reporting;
                    230:        zend_ptr_stack user_error_handlers;
                    231:        zend_ptr_stack user_exception_handlers;
                    232: 
                    233:        zend_error_handling_t  error_handling;
                    234:        zend_class_entry      *exception_class;
                    235: 
                    236:        /* timeout support */
                    237:        int timeout_seconds;
                    238: 
                    239:        int lambda_count;
                    240: 
                    241:        HashTable *ini_directives;
                    242:        HashTable *modified_ini_directives;
                    243: 
                    244:        zend_objects_store objects_store;
                    245:        zval *exception, *prev_exception;
                    246:        zend_op *opline_before_exception;
                    247:        zend_op exception_op[3];
                    248: 
                    249:        struct _zend_execute_data *current_execute_data;
                    250: 
                    251:        struct _zend_module_entry *current_module;
                    252: 
                    253:        zend_property_info std_property_info;
                    254: 
                    255:        zend_bool active; 
                    256: 
                    257:        void *saved_fpu_cw;
                    258: 
                    259:        void *reserved[ZEND_MAX_RESERVED_RESOURCES];
                    260: };
                    261: 
                    262: struct _zend_ini_scanner_globals {
                    263:        zend_file_handle *yy_in;
                    264:        zend_file_handle *yy_out;
                    265: 
                    266:        unsigned int yy_leng;
                    267:        unsigned char *yy_start;
                    268:        unsigned char *yy_text;
                    269:        unsigned char *yy_cursor;
                    270:        unsigned char *yy_marker;
                    271:        unsigned char *yy_limit;
                    272:        int yy_state;
                    273:        zend_stack state_stack;
                    274: 
                    275:        char *filename;
                    276:        int lineno;
                    277: 
                    278:        /* Modes are: ZEND_INI_SCANNER_NORMAL, ZEND_INI_SCANNER_RAW */
                    279:        int scanner_mode;
                    280: };
                    281: 
                    282: struct _zend_php_scanner_globals {
                    283:        zend_file_handle *yy_in;
                    284:        zend_file_handle *yy_out;
                    285: 
                    286:        unsigned int yy_leng;
                    287:        unsigned char *yy_start;
                    288:        unsigned char *yy_text;
                    289:        unsigned char *yy_cursor;
                    290:        unsigned char *yy_marker;
                    291:        unsigned char *yy_limit;
                    292:        int yy_state;
                    293:        zend_stack state_stack;
                    294:        
                    295: #ifdef ZEND_MULTIBYTE
                    296:        /* original (unfiltered) script */
                    297:        unsigned char *script_org;
                    298:        size_t script_org_size;
                    299: 
                    300:        /* filtered script */
                    301:        unsigned char *script_filtered;
                    302:        size_t script_filtered_size;
                    303: 
                    304:        /* input/ouput filters */
                    305:        zend_encoding_filter input_filter;
                    306:        zend_encoding_filter output_filter;
                    307:        zend_encoding *script_encoding;
                    308:        zend_encoding *internal_encoding;
                    309: #endif /* ZEND_MULTIBYTE */
                    310: };
                    311: 
                    312: #endif /* ZEND_GLOBALS_H */
                    313: 
                    314: /*
                    315:  * Local variables:
                    316:  * tab-width: 4
                    317:  * c-basic-offset: 4
                    318:  * indent-tabs-mode: t
                    319:  * End:
                    320:  */

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