static void register_standard_class()
{
- CLS_FETCH();
-
standard_class.type = ZEND_INTERNAL_CLASS;
standard_class.name_length = sizeof("stdClass") - 1;
standard_class.name = zend_strndup("stdClass", standard_class.name_length);
zend_hash_destroy(compiler_globals->class_table);
free(compiler_globals->class_table);
}
+
+
+static void executor_globals_ctor(zend_executor_globals *executor_globals)
+{
+ zend_startup_constants(ELS_C);
+}
+
+
+static void executor_globals_dtor(zend_executor_globals *executor_globals)
+{
+ zend_shutdown_constants(ELS_C);
+}
+
+
#endif
int zend_startup(zend_utility_functions *utility_functions, char **extensions)
{
+#ifdef ZTS
+ zend_executor_globals *executor_globals;
+
+ tsrm_startup(1,1,0);
+ alloc_globals_id = ts_allocate_id(sizeof(zend_alloc_globals), NULL, NULL);
+#endif
+
start_memory_manager();
/* Set up utility functions and values */
/* Prepare data structures */
#ifndef ZTS
- zend_startup_constants();
+ zend_startup_constants(ELS_C);
#endif
GLOBAL_FUNCTION_TABLE = (HashTable *) malloc(sizeof(HashTable));
GLOBAL_CLASS_TABLE = (HashTable *) malloc(sizeof(HashTable));
zend_hash_init(GLOBAL_CLASS_TABLE, 10, NULL, (void (*)(void *)) destroy_zend_class, 1);
register_standard_class();
zend_hash_init(&module_registry, 50, NULL, (void (*)(void *)) module_destructor, 1);
- init_resource_plist();
zend_hash_init(&list_destructors, 50, NULL, NULL, 1);
#ifdef ZTS
- tsrm_startup(1,1,0);
compiler_globals_id = ts_allocate_id(sizeof(zend_compiler_globals), (void (*)(void *)) compiler_globals_ctor, (void (*)(void *)) compiler_globals_dtor);
- executor_globals_id = ts_allocate_id(sizeof(zend_executor_globals), NULL, NULL);
- alloc_globals_id = ts_allocate_id(sizeof(zend_alloc_globals), NULL, NULL);
+ executor_globals_id = ts_allocate_id(sizeof(zend_executor_globals), (void (*)(void *)) executor_globals_ctor, (void (*)(void *)) executor_globals_dtor);
+ executor_globals = ts_resource(executor_globals_id);
#endif
+ init_resource_plist(ELS_C);
+
return SUCCESS;
}
zend_shutdown_extensions();
free(zend_version_info);
#ifndef ZTS
- zend_shutdown_constants();
+ zend_shutdown_constants(ELS_C);
#endif
}
CG(asp_tags) = ZEND_UV(asp_tags);
CG(handle_op_arrays) = 1;
zend_hash_apply(&module_registry, (int (*)(void *)) module_registry_request_startup);
- init_resource_list();
+ init_resource_list(ELS_C);
}
}
-int zend_startup_constants(void)
+int zend_startup_constants(ELS_D)
{
#if WIN32|WINNT
DWORD dwBuild=0;
DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
DWORD dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
#endif
- ELS_FETCH();
/* ZEND_FIX: Move to PHP */
c.name_len = 5;
c.value.value.lval = 1;
c.value.type = IS_BOOL;
- zend_register_constant(&c);
+ zend_register_constant(&c ELS_CC);
c.name = zend_strndup("FALSE",5);
c.name_len = 6;
c.value.value.lval = 0;
c.value.type = IS_BOOL;
- zend_register_constant(&c);
+ zend_register_constant(&c ELS_CC);
}
return SUCCESS;
}
-int zend_shutdown_constants(void)
+int zend_shutdown_constants(ELS_D)
{
- ELS_FETCH();
-
zend_hash_destroy(EG(zend_constants));
free(EG(zend_constants));
return SUCCESS;
}
-ZEND_API void zend_register_long_constant(char *name, uint name_len, long lval, int flags, int module_number)
+ZEND_API void zend_register_long_constant(char *name, uint name_len, long lval, int flags, int module_number ELS_DC)
{
zend_constant c;
c.name = zend_strndup(name,name_len);
c.name_len = name_len;
c.module_number = module_number;
- zend_register_constant(&c);
+ zend_register_constant(&c ELS_CC);
}
-ZEND_API void zend_register_double_constant(char *name, uint name_len, double dval, int flags, int module_number)
+ZEND_API void zend_register_double_constant(char *name, uint name_len, double dval, int flags, int module_number ELS_DC)
{
zend_constant c;
c.name = zend_strndup(name,name_len);
c.name_len = name_len;
c.module_number = module_number;
- zend_register_constant(&c);
+ zend_register_constant(&c ELS_CC);
}
-ZEND_API void zend_register_stringl_constant(char *name, uint name_len, char *strval, uint strlen, int flags, int module_number)
+ZEND_API void zend_register_stringl_constant(char *name, uint name_len, char *strval, uint strlen, int flags, int module_number ELS_DC)
{
zend_constant c;
c.name = zend_strndup(name,name_len);
c.name_len = name_len;
c.module_number = module_number;
- zend_register_constant(&c);
+ zend_register_constant(&c ELS_CC);
}
-ZEND_API void zend_register_string_constant(char *name, uint name_len, char *strval, int flags, int module_number)
+ZEND_API void zend_register_string_constant(char *name, uint name_len, char *strval, int flags, int module_number ELS_DC)
{
- zend_register_stringl_constant(name, name_len, strval, strlen(strval), flags, module_number);
+ zend_register_stringl_constant(name, name_len, strval, strlen(strval), flags, module_number ELS_CC);
}
}
-ZEND_API void zend_register_constant(zend_constant *c)
+ZEND_API void zend_register_constant(zend_constant *c ELS_DC)
{
char *lowercase_name = zend_strndup(c->name, c->name_len);
- ELS_FETCH();
#if 0
printf("Registering constant for module %d\n",c->module_number);
#ifndef _CONSTANTS_H
#define _CONSTANTS_H
+#include "zend_globals.h"
+
#define CONST_CS 0x1 /* Case Sensitive */
#define CONST_PERSISTENT 0x2
int module_number;
} zend_constant;
-#define REGISTER_LONG_CONSTANT(name,lval,flags) zend_register_long_constant((name),sizeof(name),(lval),(flags),module_number)
-#define REGISTER_DOUBLE_CONSTANT(name,dval,flags) zend_register_double_constant((name),sizeof(name),(dval),(flags),module_number)
-#define REGISTER_STRING_CONSTANT(name,str,flags) zend_register_string_constant((name),sizeof(name),(str),(flags),module_number)
-#define REGISTER_STRINGL_CONSTANT(name,str,len,flags) zend_register_stringl_constant((name),sizeof(name),(str),(len),(flags),module_number)
+#define REGISTER_LONG_CONSTANT(name,lval,flags) zend_register_long_constant((name),sizeof(name),(lval),(flags),module_number ELS_CC)
+#define REGISTER_DOUBLE_CONSTANT(name,dval,flags) zend_register_double_constant((name),sizeof(name),(dval),(flags),module_number ELS_CC)
+#define REGISTER_STRING_CONSTANT(name,str,flags) zend_register_string_constant((name),sizeof(name),(str),(flags),module_number ELS_CC)
+#define REGISTER_STRINGL_CONSTANT(name,str,len,flags) zend_register_stringl_constant((name),sizeof(name),(str),(len),(flags),module_number ELS_CC)
-#define REGISTER_MAIN_LONG_CONSTANT(name,lval,flags) zend_register_long_constant((name),sizeof(name),(lval),(flags),0)
-#define REGISTER_MAIN_DOUBLE_CONSTANT(name,dval,flags) zend_register_double_constant((name),sizeof(name),(dval),(flags),0)
-#define REGISTER_MAIN_STRING_CONSTANT(name,str,flags) zend_register_string_constant((name),sizeof(name),(str),(flags),0)
-#define REGISTER_MAIN_STRINGL_CONSTANT(name,str,len,flags) zend_register_stringl_constant((name),sizeof(name),(str),(len),(flags),0)
+#define REGISTER_MAIN_LONG_CONSTANT(name,lval,flags) zend_register_long_constant((name),sizeof(name),(lval),(flags),0 ELS_CC)
+#define REGISTER_MAIN_DOUBLE_CONSTANT(name,dval,flags) zend_register_double_constant((name),sizeof(name),(dval),(flags),0 ELS_CC)
+#define REGISTER_MAIN_STRING_CONSTANT(name,str,flags) zend_register_string_constant((name),sizeof(name),(str),(flags),0 ELS_CC)
+#define REGISTER_MAIN_STRINGL_CONSTANT(name,str,len,flags) zend_register_stringl_constant((name),sizeof(name),(str),(len),(flags),0 ELS_CC)
void clean_module_constants(int module_number);
void free_zend_constant(zend_constant *c);
-int zend_startup_constants(void);
-int zend_shutdown_constants(void);
+int zend_startup_constants(ELS_D);
+int zend_shutdown_constants(ELS_D);
void clean_non_persistent_constants(void);
ZEND_API int zend_get_constant(char *name, uint name_len, zval *result);
-ZEND_API void zend_register_long_constant(char *name, uint name_len, long lval, int flags, int module_number);
-ZEND_API void zend_register_double_constant(char *name, uint name_len, double dval, int flags, int module_number);
-ZEND_API void zend_register_string_constant(char *name, uint name_len, char *strval, int flags, int module_number);
-ZEND_API void zend_register_stringl_constant(char *name, uint name_len, char *strval, uint strlen, int flags, int module_number);
-ZEND_API void zend_register_constant(zend_constant *c);
+ZEND_API void zend_register_long_constant(char *name, uint name_len, long lval, int flags, int module_number ELS_DC);
+ZEND_API void zend_register_double_constant(char *name, uint name_len, double dval, int flags, int module_number ELS_DC);
+ZEND_API void zend_register_string_constant(char *name, uint name_len, char *strval, int flags, int module_number ELS_DC);
+ZEND_API void zend_register_stringl_constant(char *name, uint name_len, char *strval, uint strlen, int flags, int module_number ELS_DC);
+ZEND_API void zend_register_constant(zend_constant *c ELS_DC);
#endif
}
-int init_resource_list(void)
+int init_resource_list(ELS_D)
{
- ELS_FETCH();
-
return zend_hash_init(&EG(regular_list), 0, NULL, list_entry_destructor, 0);
}
-int init_resource_plist(void)
+int init_resource_plist(ELS_D)
{
- ELS_FETCH();
-
return zend_hash_init(&EG(persistent_list), 0, NULL, plist_entry_destructor, 1);
}
void plist_entry_destructor(void *ptr);
int clean_module_resource_destructors(list_destructors_entry *ld, int *module_number);
-int init_resource_list(void);
-int init_resource_plist(void);
+int init_resource_list(ELS_D);
+int init_resource_plist(ELS_D);
void destroy_resource_list(void);
void destroy_resource_plist(void);