]> granicus.if.org Git - php/commitdiff
-Tiny patches
authorAndi Gutmans <andi@php.net>
Wed, 14 Apr 1999 19:53:33 +0000 (19:53 +0000)
committerAndi Gutmans <andi@php.net>
Wed, 14 Apr 1999 19:53:33 +0000 (19:53 +0000)
Zend/config.w32.h
Zend/libzend.dsp
Zend/zend-scanner.l
Zend/zend_API.c
Zend/zend_API.h
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_opcode.c

index dac03e3b46e517ab1ac6557ab188d3b748407155..1a416de9747a5fcc3d672efbd2213951942722ec 100644 (file)
@@ -17,7 +17,7 @@ typedef unsigned int uint;
 #undef inline
 #endif
 
-#define ZEND_DEBUG 1
+#define ZEND_DEBUG 0
 
 #define zend_sprintf sprintf
 
index 9dfde8e1514a262d7c12d0ff63fccb824962bbd3..dca4dcd67c028048d27ebf3e528d9d5671b8e8d5 100644 (file)
@@ -41,7 +41,8 @@ RSC=rc.exe
 # PROP Intermediate_Dir "Release"
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILE_LIBZEND" /FR /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILE_LIBZEND" /FR /FD /c
+# SUBTRACT CPP /YX
 # ADD BASE RSC /l 0x40d /d "NDEBUG"
 # ADD RSC /l 0x40d /d "NDEBUG"
 BSC32=bscmake.exe
index 173e06b7efd45ce9cbfcf0f697e4f0290f393b1d..f6132dee7628b56f1948348d0b8fbace2a235adc 100644 (file)
@@ -170,18 +170,28 @@ inline int open_file_for_scanning(zend_file_handle *file_handle CLS_DC)
 }
 
 
-zend_op_array *compile_files(int mark_as_ref CLS_DC, int file_count, ...)
+
+ZEND_API zend_op_array *compile_files(int mark_as_ref ELS_DC, int file_count, ...)
+{
+       va_list files;
+       zend_op_array *op_array;
+
+       va_start(files, file_count);
+       op_array = v_compile_files(mark_as_ref ELS_CC, file_count, files);
+       va_end(files);
+       return op_array;
+}
+
+
+ZEND_API zend_op_array *v_compile_files(int mark_as_ref ELS_DC, int file_count, va_list files)
 {
        zend_lex_state original_lex_state;
        zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array));
        zend_op_array *original_active_op_array = CG(active_op_array);
        zend_op_array *retval=NULL;
        zend_file_handle *file_handle;
-       va_list files;
        int i;
 
-       va_start(files, file_count);
-
        init_op_array(op_array, INITIAL_OP_ARRAY_SIZE);
        save_lexical_state(&original_lex_state CLS_CC);
 
@@ -215,7 +225,6 @@ zend_op_array *compile_files(int mark_as_ref CLS_DC, int file_count, ...)
                        pass_include_eval(op_array);
                }
        }
-       va_end(files);
        return retval;
 }
 
index caf097b01b6e411737e661ae6f1d2cfc78b79bf1..67cfd785465a91c35c3be08ab3abe28e39b33745 100644 (file)
@@ -103,6 +103,51 @@ int getParametersArray(int ht, int param_count, zval **argument_array)
 }
 
 
+
+
+/* Zend-optimized Extended functions */
+/* this function doesn't check for too many parameters */
+int getParametersEx(int param_count,...)
+{
+       void **p = EG(argument_stack).top_element-1;
+       int arg_count = (ulong) *p;
+       va_list ptr;
+       zval ***param;
+       ELS_FETCH();
+
+       if (param_count>arg_count) {
+               return FAILURE;
+       }
+
+       va_start(ptr, param_count);
+       while (param_count>0) {
+               param = va_arg(ptr, zval ***);
+               *param = (zval **) p-(param_count--);
+       }
+       va_end(ptr);
+
+       return SUCCESS;
+}
+
+
+int getParametersArrayEx(int param_count, zval ***argument_array)
+{
+       void **p = EG(argument_stack).top_element-1;
+       int arg_count = (ulong) *p;
+       ELS_FETCH();
+
+       if (param_count>arg_count) {
+               return FAILURE;
+       }
+
+       while (param_count>0) {
+               *(argument_array++) = (zval **) p-(param_count--);
+       }
+
+       return SUCCESS;
+}
+
+
 int getThis(zval **this)
 {
        /* NEEDS TO BE IMPLEMENTED FOR ZEND */
index b2d6a4c81e91a253c337cef05ed1cb57a64f45f2..0399748cb3b2813535a3fd74c4ad892faf5a3bac 100644 (file)
@@ -25,7 +25,12 @@ int zend_next_free_module(void);
 
 int getParameters(int ht, int param_count,...);
 int getParametersArray(int ht, int param_count, zval **argument_array);
+int getParametersEx(int param_count,...);
+int getParametersArrayEx(int param_count, zval ***argument_array);
+
 int getThis(zval **this);
+
+
 int ParameterPassedByReference(int ht, uint n);
 int register_functions(function_entry *functions);
 void unregister_functions(function_entry *functions, int count);
index d1e4a9208851d6e33bb3884a31ec7188383ab8f2..c7c6d842de36709caf0e495a2103815d489ca481 100644 (file)
@@ -22,7 +22,7 @@
 #include "zend_operators.h"
 
 
-zend_op_array *(*zend_compile_files)(int mark_as_ref CLS_DC, int file_count, ...);
+ZEND_API zend_op_array *(*zend_compile_files)(int mark_as_ref CLS_DC, int file_count, ...);
 
 
 #ifndef ZTS
index ff66074cd5c125bd80e34b1be72d276adba38c63..1477d95e506689e101b980d9b1a123b9728714b3 100644 (file)
@@ -150,7 +150,7 @@ typedef struct {
 } list_llist_element;
 
 
-typedef struct {
+typedef struct _zend_file_handle {
        int type;
        char *filename;
        union {
@@ -176,7 +176,7 @@ typedef struct {
 void init_compiler(CLS_D ELS_DC);
 void shutdown_compiler(CLS_D);
 
-extern zend_op_array *(*zend_compile_files)(int mark_as_ref CLS_DC, int file_count, ...);
+extern ZEND_API zend_op_array *(*zend_compile_files)(int mark_as_ref CLS_DC, int file_count, ...);
 
 int lex_scan(zval *zendlval CLS_DC);
 void reset_scanner(CLS_D);
@@ -315,6 +315,7 @@ void do_extended_fcall_end(CLS_D);
 ZEND_API int require_file(zend_file_handle *file_handle CLS_DC);       
 ZEND_API int require_filename(char *filename CLS_DC);                          
 ZEND_API zend_op_array *compile_files(int mark_as_ref CLS_DC, int file_count, ...);
+ZEND_API zend_op_array *v_compile_files(int mark_as_ref ELS_DC, int file_count, va_list files);
 ZEND_API zend_op_array *compile_string(zval *source_string CLS_DC);    
 ZEND_API zend_op_array *compile_filename(zval *filename CLS_DC);
 inline int open_file_for_scanning(zend_file_handle *file_handle CLS_DC);
@@ -325,8 +326,8 @@ inline int open_file_for_scanning(zend_file_handle *file_handle CLS_DC);
 ZEND_API void init_op_array(zend_op_array *op_array, int initial_ops_size);
 ZEND_API void destroy_op_array(zend_op_array *op_array);
 
-void destroy_zend_function(zend_function *function);
-void destroy_zend_class(zend_class_entry *ce);
+ZEND_API void destroy_zend_function(zend_function *function);
+ZEND_API void destroy_zend_class(zend_class_entry *ce);
 zend_op *get_next_op(zend_op_array *op_array CLS_DC);
 int get_next_op_number(zend_op_array *op_array);
 int print_class(zend_class_entry *class_entry);
index 551f7366a0da21eca15a2592329ade0faa457be5..a6d9e8aca023187d45b4f9a559bd7ea72b097177 100644 (file)
@@ -96,7 +96,7 @@ void init_op_array(zend_op_array *op_array, int initial_ops_size)
 }
 
 
-void destroy_zend_function(zend_function *function)
+ZEND_API void destroy_zend_function(zend_function *function)
 {
        switch (function->type) {
                case ZEND_USER_FUNCTION:
@@ -108,7 +108,8 @@ void destroy_zend_function(zend_function *function)
        }
 }
 
-void destroy_zend_class(zend_class_entry *ce)
+
+ZEND_API void destroy_zend_class(zend_class_entry *ce)
 {
        switch (ce->type) {
                case ZEND_USER_CLASS: