Date: Fri, 17 Feb 2006 13:10:49 -0200 (BRST) From: Marcus Alves Grando <mnag@FreeBSD.org> To: FreeBSD-gnats-submit@FreeBSD.org Cc: ale@FreeBSD.org Subject: ports/93479: Update port: www/eaccelerator to 0.9.4 and add EA_SNAPSHOT Message-ID: <20060217151049.8548C79@marcus.grupos.com.br> Resent-Message-ID: <200602171520.k1HFK4RR028263@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 93479 >Category: ports >Synopsis: Update port: www/eaccelerator to 0.9.4 and add EA_SNAPSHOT >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Fri Feb 17 15:20:04 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Marcus Alves Grando >Release: FreeBSD 6.1-PRERELEASE i386 >Organization: Grupos Internet S/A >Environment: System: FreeBSD marcus.grupos.com.br 6.1-PRERELEASE FreeBSD 6.1-PRERELEASE #15: Thu Feb 16 00:50:14 BRST 2006 root@marcus.grupos.com.br:/usr/obj/usr/src/sys/MARCUS i386 >Description: - Update to 0.9.4 - Add EA_SNAPSHOT option to people test support for PHP 5 I already test this in tinderbox for php 4 and 5. But you can test again. >How-To-Repeat: >Fix: --- ea.patch begins here --- Index: Makefile =================================================================== RCS file: /home/pcvs/ports/www/eaccelerator/Makefile,v retrieving revision 1.29 diff -u -r1.29 Makefile --- Makefile 2 Feb 2006 09:06:14 -0000 1.29 +++ Makefile 17 Feb 2006 14:55:22 -0000 @@ -6,22 +6,33 @@ # PORTNAME= eaccelerator -DISTVERSION= 0.9.4-rc1 -PORTREVISION= 2 +DISTVERSION= ${EA_VERSION} CATEGORIES= www -MASTER_SITES= ${MASTER_SITE_SOURCEFORGE_EXTENDED} +MASTER_SITES= # empty MASTER_SITE_SUBDIR= ${PORTNAME} MAINTAINER= ale@FreeBSD.org COMMENT= An opcode cache for PHP with encoder and loader +EA_VERSION= 0.9.4 +SNAP_VERSION= 5.1-cvs200602151309 + +.if defined(EA_SNAPSHOT) +DISTVERSION= ${EA_VERSION}-${SNAP_VERSION} +MASTER_SITES+= http://snapshots.eaccelerator.net/ +DISTNAME+= ${PORTNAME}-${SNAP_VERSION} +EXTRA_PATCHES= ${FILESDIR}/ea_restore.c.patch ${FILESDIR}/ea_store.c.patch +.else +MASTER_SITES+= ${MASTER_SITE_SOURCEFORGE_EXTENDED} +USE_BZIP2= yes +.endif + USE_PHP= session USE_PHPIZE= yes USE_PHP_BUILD= yes CONFIGURE_ARGS= --enable-eaccelerator=shared -USE_BZIP2= yes SUB_FILES= pkg-message PKGMESSAGE= ${WRKDIR}/pkg-message @@ -29,31 +40,30 @@ .include <bsd.port.pre.mk> -.if ${PHP_VER} == 5 -CONFIGURE_ARGS+=--without-eaccelerator-encoder -PLIST_SUB+= ENCODER="@comment " -.else -PLIST_SUB+= ENCODER="" +.if ${PHP_VER} == 5 && !defined(EA_SNAPSHOT) +BROKEN= does not support PHP ${PHP_VER}. Consider use EA_SNAPSHOT=yes (unstable) +.endif -post-build: - @${SED} "s|%%LOCALBASE%%|${LOCALBASE}|g; s|0777|0755|g" \ - ${WRKSRC}/encoder.php > ${WRKSRC}/encoder +.if ${PHP_VER} == 4 && defined(EA_SNAPSHOT) +BROKEN= option EA_SNAPSHOT does not support PHP ${PHP_VER}. Consider use normal installation .endif +post-build: + @${REINPLACE_CMD} -e "s|%%LOCALBASE%%|${LOCALBASE}|g" \ + -e "s|0777|0755|g" ${WRKSRC}/encoder.php + do-install: @${MKDIR} ${PREFIX}/lib/php/${PHP_EXT_DIR} - @${INSTALL_DATA} ${WRKSRC}/modules/${PORTNAME}.so \ + ${INSTALL_DATA} ${WRKSRC}/modules/${PORTNAME}.so \ ${PREFIX}/lib/php/${PHP_EXT_DIR} -.if ${PHP_VER} == 4 - @${INSTALL_SCRIPT} ${WRKSRC}/encoder ${PREFIX}/bin -.endif + ${INSTALL_SCRIPT} ${WRKSRC}/encoder.php ${PREFIX}/bin/encoder @${MKDIR} ${EXAMPLESDIR} - @${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.ini ${EXAMPLESDIR} - @${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.php ${EXAMPLESDIR} - @${INSTALL_DATA} ${WRKSRC}/${PORTNAME}_password.php ${EXAMPLESDIR} + ${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.ini ${EXAMPLESDIR} + ${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.php ${EXAMPLESDIR} + ${INSTALL_DATA} ${WRKSRC}/${PORTNAME}_password.php ${EXAMPLESDIR} .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} - @${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR} .endif post-install: Index: distinfo =================================================================== RCS file: /home/pcvs/ports/www/eaccelerator/distinfo,v retrieving revision 1.23 diff -u -r1.23 distinfo --- distinfo 20 Nov 2005 20:36:12 -0000 1.23 +++ distinfo 17 Feb 2006 14:55:22 -0000 @@ -1,3 +1,6 @@ -MD5 (eaccelerator-0.9.4-rc1.tar.bz2) = 5910ba3c3e9c8caa97600e950839f8b2 -SHA256 (eaccelerator-0.9.4-rc1.tar.bz2) = 4f20aa2197a0e484bea57a3f6183a172207a65003927c4ecea9449eb6af538ed -SIZE (eaccelerator-0.9.4-rc1.tar.bz2) = 104703 +MD5 (eaccelerator-0.9.4.tar.bz2) = e9143a592b2b8e2e0f9aed2d00df03ce +SHA256 (eaccelerator-0.9.4.tar.bz2) = 00977de989012474477539d9646e875dac8edd80659426ec619011c3672e1088 +SIZE (eaccelerator-0.9.4.tar.bz2) = 104672 +MD5 (eaccelerator-5.1-cvs200602151309.tar.gz) = 3bb4addb5a96bf31f51cae7333da0d11 +SHA256 (eaccelerator-5.1-cvs200602151309.tar.gz) = e33b04435754511dde075e3afaeb5e0876fe74da171d9b482cdb7b38c4ae765d +SIZE (eaccelerator-5.1-cvs200602151309.tar.gz) = 136799 Index: pkg-plist =================================================================== RCS file: /home/pcvs/ports/www/eaccelerator/pkg-plist,v retrieving revision 1.7 diff -u -r1.7 pkg-plist --- pkg-plist 2 Feb 2006 09:06:14 -0000 1.7 +++ pkg-plist 17 Feb 2006 14:55:22 -0000 @@ -1,4 +1,4 @@ -%%ENCODER%%bin/encoder +bin/encoder lib/php/%%PHP_EXT_DIR%%/eaccelerator.so @dirrmtry lib/php/%%PHP_EXT_DIR%% %%EXAMPLESDIR%%/eaccelerator.ini Index: files/ea_restore.c.patch =================================================================== RCS file: files/ea_restore.c.patch diff -N files/ea_restore.c.patch --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/ea_restore.c.patch 17 Feb 2006 14:55:22 -0000 @@ -0,0 +1,18 @@ +--- ea_restore.c.orig Thu Feb 16 16:51:50 2006 ++++ ea_restore.c Thu Feb 16 16:52:41 2006 +@@ -718,11 +718,14 @@ + void restore_class_parent(char *parent, int len, + zend_class_entry * to TSRMLS_DC) + { ++#ifdef ZEND_ENGINE_2 ++ zend_class_entry** parent_ptr = NULL; ++#endif ++ + ea_debug_printf(EA_DEBUG, "restore_class_parent: restoring parent class %s of class %s\n", (char *) parent, to->name); + #ifdef ZEND_ENGINE_2 + /* char *name_lc = zend_str_tolower_dup(parent, len); + if (zend_hash_find(CG(class_table), (void *) name_lc, len + 1, (void **) &to->parent) != SUCCESS)*/ +- zend_class_entry** parent_ptr = NULL; + if (zend_lookup_class(parent, len, &parent_ptr TSRMLS_CC) != SUCCESS) + #else + if (zend_hash_find(CG(class_table), (void *) parent, len + 1, (void **) &to->parent) != SUCCESS) Index: files/ea_store.c.patch =================================================================== RCS file: files/ea_store.c.patch diff -N files/ea_store.c.patch --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/ea_store.c.patch 17 Feb 2006 14:55:22 -0000 @@ -0,0 +1,14 @@ +--- ea_store.c.orig Wed Feb 15 09:24:51 2006 ++++ ea_store.c Fri Feb 17 11:23:53 2006 +@@ -807,7 +807,11 @@ + return ZEND_HASH_APPLY_REMOVE; + } + /* If the static member points to the same value in parent and child, remove for proper inheritance during restore */ ++#ifdef ZEND_ENGINE_2_1 + if(zend_hash_quick_find(&parent->default_static_members, p->arKey, p->nKeyLength, p->h, (void**)&pprop) == SUCCESS) { ++#else ++ if(zend_hash_quick_find(&parent->static_members, p->arKey, p->nKeyLength, p->h, (void**)&pprop) == SUCCESS) { ++#endif + ea_debug_printf(EA_DEBUG, "[%d] store_static_member_access_check: SUCCESS looking up arKey\n",getpid()); + ea_debug_printf(EA_DEBUG, "[%d] store_static_member_access_check: pprop=%x cprop=%x\n",getpid(), *pprop, *cprop); + if(*pprop == *cprop) { Index: files/patch-content.c =================================================================== RCS file: files/patch-content.c diff -N files/patch-content.c --- files/patch-content.c 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ ---- content.c.orig Sun Jul 10 10:12:33 2005 -+++ content.c Thu Feb 2 09:40:00 2006 -@@ -593,10 +593,13 @@ PHP_FUNCTION(eaccelerator_cache_result) - if (zend_eval_string(code, return_value, eval_name TSRMLS_CC) == SUCCESS && - eaccelerator_content_cache_place != eaccelerator_none) { - -+#ifndef ZEND_ENGINE_2_1 -+/* No worko on php >= 5.1.0 */ - /* clean garbage */ - while (EG(garbage_ptr)) { - zval_ptr_dtor(&EG(garbage)[--EG(garbage_ptr)]); - } -+#endif - - eaccelerator_put(key, key_len, return_value, ttl, eaccelerator_content_cache_place TSRMLS_CC); - } Index: files/patch-debug.c =================================================================== RCS file: files/patch-debug.c diff -N files/patch-debug.c --- files/patch-debug.c 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ ---- debug.c.orig Sun Jul 10 10:12:33 2005 -+++ debug.c Thu Feb 2 09:40:00 2006 -@@ -66,7 +66,8 @@ void ea_debug_init (TSRMLS_D) - void ea_debug_shutdown () - { - fflush (F_fp); -- fclose (F_fp); -+ if (F_fp != stderr) -+ fclose (F_fp); - F_fp = NULL; - } - Index: files/patch-ea_restore.c =================================================================== RCS file: files/patch-ea_restore.c diff -N files/patch-ea_restore.c --- files/patch-ea_restore.c 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,216 +0,0 @@ ---- ea_restore.c.orig Wed Aug 3 20:54:32 2005 -+++ ea_restore.c Thu Feb 2 09:40:00 2006 -@@ -39,6 +39,9 @@ - #include "zend.h" - #include "zend_API.h" - #include "zend_extensions.h" -+#ifdef ZEND_ENGINE_2_1 -+#include "zend_vm.h" -+#endif - - #ifndef INCOMPLETE_CLASS - # define INCOMPLETE_CLASS "__PHP_Incomplete_Class" -@@ -69,12 +72,16 @@ dtor_func_t get_zend_destroy_property_in - property_dtor = dummy_class_entry.properties_info.pDestructor; - - zend_hash_destroy(&dummy_class_entry.default_properties); -- zend_hash_destroy(&dummy_class_entry.properties_info); -- zend_hash_destroy(dummy_class_entry.static_members); - zend_hash_destroy(&dummy_class_entry.function_table); -- FREE_HASHTABLE(dummy_class_entry.static_members); - zend_hash_destroy(&dummy_class_entry.constants_table); -- -+ zend_hash_destroy(&dummy_class_entry.properties_info); -+# ifdef ZEND_ENGINE_2_1 -+ zend_hash_destroy(&dummy_class_entry.default_static_members); -+# endif -+# if defined(ZEND_ENGINE_2) && !defined(ZEND_ENGINE_2_1) -+ zend_hash_destroy(dummy_class_entry.static_members); -+ FREE_HASHTABLE(dummy_class_entry.static_members); -+# endif - return property_dtor; - } - #endif -@@ -92,6 +99,9 @@ typedef void (*fixup_bucket_t) (void *TS - static void fixup_property_info(zend_property_info * from TSRMLS_DC) - { - FIXUP(from->name); -+#ifdef ZEND_ENGINE_2_1 -+ FIXUP(from->doc_comment); -+#endif - } - #endif - -@@ -221,7 +231,12 @@ void fixup_op_array(eaccelerator_op_arra - FIXUP(opline->op2.u.jmp_addr); - break; - } -+# ifdef ZEND_ENGINE_2_1 -+ ZEND_VM_SET_OPCODE_HANDLER(opline); -+# else - opline->handler = get_opcode_handler(opline->opcode TSRMLS_CC); -+# endif -+ - #endif - } - EAG(compress) = 1; -@@ -234,6 +249,15 @@ void fixup_op_array(eaccelerator_op_arra - FIXUP(from->static_variables); - fixup_zval_hash(from->static_variables); - } -+#ifdef ZEND_ENGINE_2_1 -+ if (from->vars != NULL) { -+ zend_uint i; -+ FIXUP(from->vars); -+ for (i = 0; i < from->last_var; i++) { -+ FIXUP(from->vars[i].name); -+ } -+ } -+#endif - FIXUP(from->filename); - #ifdef ZEND_ENGINE_2 - FIXUP(from->doc_comment); -@@ -255,6 +279,9 @@ void fixup_class_entry(eaccelerator_clas - FIXUP(from->static_members); - fixup_zval_hash(from->static_members); - } -+# ifdef ZEND_ENGINE_2_1 -+ fixup_zval_hash(&from->default_static_members); -+# endif - #else - fixup_zval_hash(&from->default_properties); - #endif -@@ -570,12 +597,12 @@ zend_op_array *restore_op_array(zend_op_ - to->T = from->T; - to->brk_cont_array = from->brk_cont_array; - to->last_brk_cont = from->last_brk_cont; -- /* -+ - to->current_brk_cont = -1; - to->static_variables = from->static_variables; -- to->start_op = to->opcodes; -+/* to->start_op = to->opcodes; */ - to->backpatch_count = 0; -- */ -+ - to->return_reference = from->return_reference; - to->done_pass_two = 1; - to->filename = from->filename; -@@ -612,6 +639,20 @@ zend_op_array *restore_op_array(zend_op_ - #endif - } - -+#ifdef ZEND_ENGINE_2_1 -+ to->vars = from->vars; -+ to->last_var = from->last_var; -+ to->size_var = 0; -+ if (to->vars) { -+ zend_uint i; -+ to->vars = (zend_compiled_variable*)emalloc(from->last_var*sizeof(zend_compiled_variable)); -+ memcpy(to->vars, from->vars, sizeof(zend_compiled_variable) * from->last_var); -+ for (i = 0; i < from->last_var; i ++) { -+ to->vars[i].name = estrndup(from->vars[i].name, from->vars[i].name_len); -+ } -+ } -+#endif -+ - /* disable deletion in destroy_op_array */ - ++EAG(refcount_helper); - to->refcount = &EAG(refcount_helper); -@@ -633,6 +674,12 @@ static zend_property_info *restore_prope - memcpy(to, from, sizeof(zend_property_info)); - to->name = emalloc(from->name_length + 1); - memcpy(to->name, from->name, from->name_length + 1); -+#ifdef ZEND_ENGINE_2_1 -+ if (from->doc_comment != NULL) { -+ to->doc_comment = emalloc(from->doc_comment_len+1); -+ memcpy(to->doc_comment, from->doc_comment, from->doc_comment_len+1); -+ } -+#endif - return to; - } - #endif -@@ -660,6 +707,12 @@ void restore_class_parent(char *parent, - to->clone = to->parent->clone; - to->__get = to->parent->__get; - to->__set = to->parent->__set; -+# ifdef ZEND_ENGINE_2_1 -+ to->__unset = to->parent->__unset; -+ to->__isset = to->parent->__isset; -+ to->serialize_func = to->parent->serialize_func; -+ to->unserialize_func = to->parent->unserialize_func; -+# endif - to->__call = to->parent->__call; - to->create_object = to->parent->create_object; - #else -@@ -708,6 +761,14 @@ void restore_class_methods(zend_class_en - else if (fname_len == sizeof(ZEND_SET_FUNC_NAME) - 1 && - memcmp(fname_lc, ZEND_SET_FUNC_NAME, sizeof(ZEND_SET_FUNC_NAME)) == 0) - to->__set = f; -+# ifdef ZEND_ENGINE_2_1 -+ else if (fname_len == sizeof(ZEND_UNSET_FUNC_NAME) - 1 && -+ memcmp(fname_lc, ZEND_UNSET_FUNC_NAME, sizeof(ZEND_UNSET_FUNC_NAME)) == 0) -+ to->__unset = f; -+ else if (fname_len == sizeof(ZEND_ISSET_FUNC_NAME) - 1 && -+ memcmp(fname_lc, ZEND_ISSET_FUNC_NAME, sizeof(ZEND_ISSET_FUNC_NAME)) == 0) -+ to->__isset = f; -+# endif - else if (fname_len == sizeof(ZEND_CALL_FUNC_NAME) - 1 && - memcmp(fname_lc, ZEND_CALL_FUNC_NAME, sizeof(ZEND_CALL_FUNC_NAME)) == 0) - to->__call = f; -@@ -734,11 +795,10 @@ zend_class_entry *restore_class_entry(ze - #endif - - ea_debug_pad(EA_DEBUG TSRMLS_CC); -- ea_debug_printf(EA_DEBUG, "[%d] retore_class_entry: %s\n", getpid(), from->name ? from->name : "(top)"); -+ ea_debug_printf(EA_DEBUG, "[%d] restore_class_entry: %s\n", getpid(), from->name ? from->name : "(top)"); - #ifdef DEBUG - EAG(xpad)++; - #endif -- - if (to == NULL) { - to = emalloc(sizeof(zend_class_entry)); - } -@@ -752,9 +812,6 @@ zend_class_entry *restore_class_entry(ze - */ - #ifdef ZEND_ENGINE_2 - to->ce_flags = from->ce_flags; -- /* -- to->static_members = NULL; -- */ - to->num_interfaces = from->num_interfaces; - if (to->num_interfaces > 0) { - to->interfaces = (zend_class_entry **) emalloc(sizeof(zend_class_entry *) * to->num_interfaces); -@@ -765,6 +822,7 @@ zend_class_entry *restore_class_entry(ze - } - - to->iterator_funcs = from->iterator_funcs; -+ to->create_object = from->create_object; - to->get_iterator = from->get_iterator; - to->interface_gets_implemented = from->interface_gets_implemented; - #endif -@@ -813,16 +871,19 @@ zend_class_entry *restore_class_entry(ze - (restore_bucket_t) restore_property_info TSRMLS_CC); - to->properties_info.pDestructor = properties_info_dtor; - -+# ifdef ZEND_ENGINE_2_1 -+ /* restore default_static_members */ -+ restore_zval_hash(&to->default_static_members, &from->default_static_members); -+ to->default_static_members.pDestructor = ZVAL_PTR_DTOR; -+ -+ to->static_members = (from->type == ZEND_INTERNAL_CLASS) ? NULL : &to->default_static_members; -+# else - if (from->static_members != NULL) { - ALLOC_HASHTABLE(to->static_members); - restore_zval_hash(to->static_members, from->static_members); - to->static_members->pDestructor = ZVAL_PTR_DTOR; -- /* -- } else { -- ALLOC_HASHTABLE(to->static_members); -- zend_hash_init_ex(to->static_members, 0, NULL, ZVAL_PTR_DTOR, 0, 0); -- */ - } -+# endif - #else - to->refcount = emalloc(sizeof(*to->refcount)); - *to->refcount = 1; Index: files/patch-ea_restore.h =================================================================== RCS file: files/patch-ea_restore.h diff -N files/patch-ea_restore.h --- files/patch-ea_restore.h 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,10 +0,0 @@ ---- ea_restore.h.orig Mon Jul 11 19:25:38 2005 -+++ ea_restore.h Thu Feb 2 09:40:00 2006 -@@ -34,6 +34,7 @@ - void fixup_op_array (eaccelerator_op_array * from TSRMLS_DC); - void fixup_class_entry (eaccelerator_class_entry * from TSRMLS_DC); - -+void restore_zval(zval * zv TSRMLS_DC); - void restore_class(mm_fc_entry *p TSRMLS_DC); - void restore_function(mm_fc_entry *p TSRMLS_DC); - zend_op_array* restore_op_array(zend_op_array *to, eaccelerator_op_array *from TSRMLS_DC); Index: files/patch-ea_store.c =================================================================== RCS file: files/patch-ea_store.c diff -N files/patch-ea_store.c --- files/patch-ea_store.c 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,104 +0,0 @@ ---- ea_store.c.orig Mon Jul 11 19:25:38 2005 -+++ ea_store.c Thu Feb 2 09:40:00 2006 -@@ -82,6 +82,11 @@ static void calc_property_info(zend_prop - EACCELERATOR_ALIGN(EAG(mem)); - EAG(mem) += sizeof(zend_property_info); - calc_string(from->name, from->name_length + 1 TSRMLS_CC); -+#ifdef ZEND_ENGINE_2_1 -+ if (from->doc_comment != NULL) { -+ calc_string(from->doc_comment, from->doc_comment_len + 1 TSRMLS_CC); -+ } -+#endif - } - - /* Calculate the size of a point to a class entry */ -@@ -246,6 +251,16 @@ void calc_op_array(zend_op_array * from - EAG(mem) += sizeof(HashTable); - calc_zval_hash(from->static_variables); - } -+#ifdef ZEND_ENGINE_2_1 -+ if (from->vars != NULL) { -+ zend_uint i; -+ EACCELERATOR_ALIGN(EAG(mem)); -+ EAG(mem) += sizeof(zend_compiled_variable) * from->last_var; -+ for (i = 0; i < from->last_var; i ++) { -+ calc_string(from->vars[i].name, from->vars[i].name_len+1 TSRMLS_CC); -+ } -+ } -+#endif - if (from->filename != NULL) - calc_string(from->filename, strlen(from->filename) + 1 TSRMLS_CC); - #ifdef ZEND_ENGINE_2 -@@ -285,6 +300,11 @@ void calc_class_entry(zend_class_entry * - - calc_zval_hash(&from->constants_table); - calc_zval_hash(&from->default_properties); -+ -+#ifdef ZEND_ENGINE_2_1 -+ calc_zval_hash(&from->default_static_members); -+#endif -+ - calc_hash(&from->properties_info, (calc_bucket_t) calc_property_info); - if (from->static_members != NULL) { - EACCELERATOR_ALIGN(EAG(mem)); -@@ -610,6 +630,10 @@ eaccelerator_op_array *store_op_array(ze - to->uses_globals = from->uses_globals; - #endif - to->static_variables = from->static_variables; -+#ifdef ZEND_ENGINE_2_1 -+ to->vars = from->vars; -+ to->last_var = from->last_var; -+#endif - to->return_reference = from->return_reference; - to->filename = from->filename; - -@@ -671,8 +695,24 @@ eaccelerator_op_array *store_op_array(ze - EAG(mem) += sizeof(HashTable); - store_zval_hash(to->static_variables, from->static_variables); - } -+#ifdef ZEND_ENGINE_2_1 -+ if (from->vars != NULL) { -+ zend_uint i; -+ EACCELERATOR_ALIGN(EAG(mem)); -+ to->last_var = from->last_var; -+ to->vars = (zend_compiled_variable*)EAG(mem); -+ EAG(mem) += sizeof(zend_compiled_variable) * from->last_var; -+ memcpy(to->vars, from->vars, sizeof(zend_compiled_variable) * from->last_var); -+ for (i = 0; i < from->last_var; i ++) { -+ to->vars[i].name = store_string(from->vars[i].name, from->vars[i].name_len+1 TSRMLS_CC); -+ } -+ } else { -+ to->last_var = 0; -+ to->vars = NULL; -+ } -+#endif - if (from->filename != NULL) { -- to->filename = store_string(to->filename, strlen(from->filename) + 1 TSRMLS_CC); -+ to->filename = store_string(from->filename, strlen(from->filename) + 1 TSRMLS_CC); - } - #ifdef ZEND_ENGINE_2 - to->line_start = from->line_start; -@@ -693,6 +733,12 @@ static zend_property_info *store_propert - EAG(mem) += sizeof(zend_property_info); - memcpy(to, from, sizeof(zend_property_info)); - to->name = store_string(from->name, from->name_length + 1 TSRMLS_CC); -+#ifdef ZEND_ENGINE_2_1 -+ to->doc_comment_len = from->doc_comment_len; -+ if (from->doc_comment != NULL) { -+ to->doc_comment = store_string(from->doc_comment, from->doc_comment_len + 1 TSRMLS_CC); -+ } -+#endif - return to; - } - #endif -@@ -770,6 +816,10 @@ eaccelerator_class_entry *store_class_en - } - #else - store_zval_hash(&to->default_properties, &from->default_properties); -+#endif -+ -+#ifdef ZEND_ENGINE_2_1 -+ store_zval_hash(&to->default_static_members, &from->default_static_members); - #endif - store_hash(&to->function_table, &from->function_table, (store_bucket_t) store_op_array); - Index: files/patch-eaccelerator.c =================================================================== RCS file: files/patch-eaccelerator.c diff -N files/patch-eaccelerator.c --- files/patch-eaccelerator.c 2 Feb 2006 09:06:14 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,142 +0,0 @@ ---- eaccelerator.c.orig Sun Nov 20 18:53:43 2005 -+++ eaccelerator.c Thu Feb 2 09:40:00 2006 -@@ -110,6 +110,10 @@ extern dtor_func_t properties_info_dtor; - /* saved original functions */ - static zend_op_array *(*mm_saved_zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC); - -+#ifdef DEBUG -+static void (*mm_saved_zend_execute)(zend_op_array *op_array TSRMLS_DC); -+#endif -+ - /* external declarations */ - PHPAPI void php_stripslashes(char *str, int *len TSRMLS_DC); - -@@ -251,16 +255,16 @@ static void hash_add_mm(mm_cache_entry * - /* check the cache dir */ - static int check_cache_dir(char *cache_dir) { - struct stat buf; -- int uid = 0; -- int gid = 0; -- -+// int uid = 0; -+// int gid = 0; -+ - if (stat(cache_dir, &buf) == -1) { - ea_debug_error("Cache dir does not exist (could not stat %s)\n", cache_dir); -- return 0; -+ return FAILURE; - } - if (!(buf.st_mode & S_IFDIR)) { - ea_debug_error("%s is not a directory!\n", cache_dir); -- return 0; -+ return FAILURE; - } - #if 0 - uid = getuid(); -@@ -272,7 +276,7 @@ static int check_cache_dir(char *cache_d - return 0; - } - #endif -- return 1; -+ return SUCCESS; - } - - /* Initialise the shared memory */ -@@ -326,11 +330,6 @@ static int init_mm(TSRMLS_D) { - eaccelerator_mm_instance->user_hash_cnt = 0; - eaccelerator_mm_instance->last_prune = time(0); - EACCELERATOR_PROTECT(); -- -- if (!check_cache_dir(EAG(cache_dir))) { -- return FAILURE; -- } -- - return SUCCESS; - } - -@@ -847,7 +846,7 @@ static mm_cache_entry *eaccelerator_stor - q = p->c_head; - while (q != NULL) { - #ifdef ZEND_ENGINE_2 -- q->fc = store_class_entry ((zend_class_entry *) q->fc TSRMLS_CC); -+ q->fc = store_class_entry ((zend_class_entry *) q->fc TSRMLS_CC); // hra: exactly the same?! - #else - q->fc = store_class_entry ((zend_class_entry *) q->fc TSRMLS_CC); - #endif -@@ -1131,9 +1130,10 @@ static int eaccelerator_stat(zend_file_h - } - - if (zend_is_executing(TSRMLS_C)) { -+ int tryname_length; - strncpy(tryname, zend_get_executed_filename(TSRMLS_C), MAXPATHLEN); - tryname[MAXPATHLEN - 1] = 0; -- int tryname_length = strlen(tryname); -+ tryname_length = strlen(tryname); - - while (tryname_length >= 0 && !IS_SLASH(tryname[tryname_length])) - tryname_length--; -@@ -1256,12 +1256,12 @@ ZEND_DLEXPORT zend_op_array* eaccelerato - int nreloads; - time_t compile_time; - int stat_result = 0; -+ struct timeval tv_start; - - #ifdef EACCELERATOR_USE_INODE - realname[0] = '\000'; - #endif - -- struct timeval tv_start; - ea_debug_printf(EA_TEST_PERFORMANCE, "[%d] Enter COMPILE\n",getpid()); - ea_debug_start_time(&tv_start); - ea_debug_printf(EA_DEBUG, "[%d] Enter COMPILE\n",getpid()); -@@ -1565,18 +1565,20 @@ static void profile_execute(zend_op_arra - - for (i=0;i<EAG(profile_level);i++) - ea_debug_put(EA_PROFILE_OPCODES, " "); -- ea_debug_printf(EA_PROFILE_OPCODES, "enter: %s:%s\n", op_array->filename, op_array->function_name); -+ ea_debug_printf(EA_PROFILE_OPCODES, "enter profile_execute: %s:%s\n", op_array->filename, op_array->function_name); - ea_debug_start_time(&tv_start); - EAG(self_time)[EAG(profile_level)] = 0; - EAG(profile_level)++; -+ ea_debug_printf(EA_PROFILE_OPCODES, "About to enter zend_execute...\n"); - mm_saved_zend_execute(op_array TSRMLS_CC); -+ ea_debug_printf(EA_PROFILE_OPCODES, "Finished zend_execute...\n"); - usec = ea_debug_elapsed_time(&tv_start); - EAG(profile_level)--; - if (EAG(profile_level) > 0) - EAG(self_time)[EAG(profile_level)-1] += usec; - for (i=0;i<EAG(profile_level);i++) - ea_debug_put(EA_PROFILE_OPCODES, " "); -- ea_debug_printf(EA_PROFILE_OPCODES, "leave: %s:%s (%ld,%ld)\n", op_array->filename, op_array->function_name, usec, usec-EAG(self_time)[EAG(profile_level)]); -+ ea_debug_printf(EA_PROFILE_OPCODES, "leave profile_execute: %s:%s (%ld,%ld)\n", op_array->filename, op_array->function_name, usec, usec-EAG(self_time)[EAG(profile_level)]); - } - - ZEND_DLEXPORT zend_op_array* profile_compile_file(zend_file_handle *file_handle, int type TSRMLS_DC) { -@@ -1593,7 +1595,7 @@ ZEND_DLEXPORT zend_op_array* profile_com - EAG(self_time)[EAG(profile_level)-1] += usec; - for (i=0;i<EAG(profile_level);i++) - ea_debug_put(EA_PROFILE_OPCODES, " "); -- ea_debug_printf(EA_DEBUG, "compile: %s (%ld)\n", file_handle->filename, usec); -+ ea_debug_printf(EA_DEBUG, "zend_op_array compile: %s (%ld)\n", file_handle->filename, usec); - return t; - } - -@@ -2023,9 +2025,16 @@ PHP_MINIT_FUNCTION(eaccelerator) { - - if (init_mm(TSRMLS_C) == FAILURE) { - zend_error(E_CORE_WARNING,"[%s] Can not create shared memory area", EACCELERATOR_EXTENSION_NAME); -- return FAILURE; -+ /* disable eA */ -+ eaccelerator_mm_instance->enabled = 0; - } -- -+#if 0 -+ if (!eaccelerator_scripts_shm_only && check_cache_dir(EAG(cache_dir)) == FAILURE) { -+ zend_error(E_CORE_WARNING,"[%s] Can not init the cache directory", EACCELERATOR_EXTENSION_NAME); -+ /* disable eA */ -+ eaccelerator_mm_instance->enabled = 0; -+ } -+#endif - mm_saved_zend_compile_file = zend_compile_file; - - #ifdef DEBUG Index: files/patch-eaccelerator.h =================================================================== RCS file: files/patch-eaccelerator.h diff -N files/patch-eaccelerator.h --- files/patch-eaccelerator.h 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,124 +0,0 @@ ---- eaccelerator.h.orig Mon Jul 11 19:25:38 2005 -+++ eaccelerator.h Thu Feb 2 09:40:00 2006 -@@ -44,6 +44,10 @@ - # endif - #endif - -+#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1 -+# define ZEND_ENGINE_2_1 -+#endif -+ - /* fixes compile errors on php5.1 */ - #ifdef STR_EMPTY_ALLOC - #define empty_string STR_EMPTY_ALLOC() -@@ -166,12 +170,14 @@ - - #define MAX_DUP_STR_LEN 256 - -+/******************************************************************************/ -+ -+#endif /* HAVE_EACCELERATOR_STANDALONE_LOADER */ -+ - #ifndef offsetof - # define offsetof(str,fld) ((size_t)&(((str*)NULL)->fld)) - #endif - --/******************************************************************************/ -- - typedef struct _eaccelerator_op_array { - zend_uchar type; - #ifdef ZEND_ENGINE_2 -@@ -197,6 +203,10 @@ typedef struct _eaccelerator_op_array { - #endif - zend_op *opcodes; - zend_uint last; -+#ifdef ZEND_ENGINE_2_1 -+ zend_compiled_variable *vars; -+ int last_var; -+#endif - zend_uint T; - zend_brk_cont_element *brk_cont_array; - zend_uint last_brk_cont; -@@ -218,24 +228,29 @@ typedef struct _eaccelerator_class_entry - char type; - char *name; - char *name_lc; -- uint name_length; -+ zend_uint name_length; - char *parent; - HashTable function_table; - HashTable default_properties; - #ifdef ZEND_ENGINE_2 -- zend_uint ce_flags; -- HashTable *static_members; - HashTable properties_info; -+# ifdef ZEND_ENGINE_2_1 -+ HashTable default_static_members; -+# endif -+ HashTable *static_members; - HashTable constants_table; -+ zend_uint ce_flags; - zend_uint num_interfaces; -+ - char **interfaces; - zend_class_iterator_funcs iterator_funcs; - -- zend_object_value (*create_object) (zend_class_entry * -- class_type TSRMLS_DC); -- zend_object_iterator *(*get_iterator) (zend_class_entry * ce, -- zval * object TSRMLS_DC); -- int (*interface_gets_implemented) (zend_class_entry * iface, zend_class_entry * class_type TSRMLS_DC); /* a class implements this interface */ -+ /* handlers */ -+ zend_object_value (*create_object) (zend_class_entry *class_type TSRMLS_DC); -+ zend_object_iterator *(*get_iterator) (zend_class_entry *ce, zval *object TSRMLS_DC); -+ int (*interface_gets_implemented) (zend_class_entry *iface, zend_class_entry *class_type TSRMLS_DC); /* a class implements this interface */ -+ -+ /* hra: serializer callbacks may need to be added here in the future for php 5.1 */ - - char *filename; - zend_uint line_start; -@@ -255,6 +270,8 @@ typedef struct _mm_fc_entry { - char htabkey[1]; /* must be last element */ - } mm_fc_entry; - -+#ifndef HAVE_EACCELERATOR_STANDALONE_LOADER -+ - /* - * A mm_cache_entry is a bucket for one PHP script file. - * Nested functions and classes which defined in the file goes -@@ -381,17 +398,13 @@ void *eaccelerator_malloc2 (size_t size - unsigned int eaccelerator_crc32 (const char *p, size_t n); - int eaccelerator_md5 (char *s, const char *prefix, const char *key TSRMLS_DC); - --void restore_zval (zval * TSRMLS_DC); - void calc_zval (zval * z TSRMLS_DC); - void store_zval (zval * z TSRMLS_DC); - void fixup_zval (zval * z TSRMLS_DC); -+void restore_zval (zval * TSRMLS_DC); - - unsigned int hash_mm(const char *data, int len); - --# ifdef WITH_EACCELERATOR_EXECUTOR --ZEND_DLEXPORT void eaccelerator_execute (zend_op_array * op_array TSRMLS_DC); --# endif -- - # ifdef WITH_EACCELERATOR_OPTIMIZER - void eaccelerator_optimize (zend_op_array * op_array); - # endif -@@ -399,15 +412,13 @@ void eaccelerator_optimize (zend_op_arra - #ifdef WITH_EACCELERATOR_ENCODER - PHP_FUNCTION (eaccelerator_encode); - #endif --#endif /* HAVE_EACCELERATOR_LOADER_STANDALONE */ -+#endif /* HAVE_EACCELERATOR_STANDALONE_LOADER */ - - #ifdef ZTS - # define EAG(v) TSRMG(eaccelerator_globals_id, zend_eaccelerator_globals*, v) - #else - # define EAG(v) (eaccelerator_globals.v) - #endif -- --#define MMCG(v) EAG(v) - - /* - * conditional filter Index: files/patch-encoder.php =================================================================== RCS file: /home/pcvs/ports/www/eaccelerator/files/patch-encoder.php,v retrieving revision 1.5 diff -u -r1.5 patch-encoder.php --- files/patch-encoder.php 2 Feb 2006 09:06:14 -0000 1.5 +++ files/patch-encoder.php 17 Feb 2006 14:55:22 -0000 @@ -1,5 +1,5 @@ ---- encoder.php.orig Fri May 6 10:26:43 2005 -+++ encoder.php Thu Feb 2 09:39:47 2006 +--- encoder.php.orig Mon Dec 27 07:35:20 2004 ++++ encoder.php Wed Jan 19 08:14:49 2005 @@ -1,10 +1,12 @@ +#!%%LOCALBASE%%/bin/php -f + @@ -16,7 +16,7 @@ echo "Options:\n"; echo "\t-s suffix\n\t\tencode files only with following suffix (default is \"php\")\n"; echo "\t-a\n\t\tencode all files (no by default)\n"; -@@ -17,10 +19,10 @@ +@@ -16,10 +18,10 @@ echo "\t\tfile name. If you encode directory or several files at once\n"; echo "\t\tthen 'target' specifyes an output directory name.\n"; echo "\nExamples:\n"; Index: files/patch-loader.c =================================================================== RCS file: files/patch-loader.c diff -N files/patch-loader.c --- files/patch-loader.c 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ ---- loader.c.orig Wed Aug 3 20:54:32 2005 -+++ loader.c Thu Feb 2 09:40:00 2006 -@@ -39,6 +39,10 @@ - #include "php.h" - #include "ea_restore.h" - #include <math.h> -+ -+#ifdef HAVE_EACCELERATOR_STANDALONE_LOADER -+zend_extension* ZendOptimizer = NULL; -+#endif - - typedef struct loader_data { - long version; Index: files/patch-opcodes.c =================================================================== RCS file: files/patch-opcodes.c diff -N files/patch-opcodes.c --- files/patch-opcodes.c 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,113 +0,0 @@ ---- opcodes.c.orig Mon May 16 11:56:42 2005 -+++ opcodes.c Thu Feb 2 09:40:00 2006 -@@ -43,11 +43,7 @@ - # define OP1_VAR_2 OP1_VAR - #endif - --#ifdef ZEND_ENGINE_2 --# define LAST_OPCODE 149 --#else --# define LAST_OPCODE 106 --#endif -+#define LAST_OPCODE (sizeof(opcodes)/sizeof(opcodes[0])) - - static const opcode_dsc opcodes[] = { - OPDEF("NOP", EXT_UNUSED | OP1_UNUSED | OP2_UNUSED | RES_UNUSED), /* 0 */ -@@ -158,16 +154,20 @@ static const opcode_dsc opcodes[] = { - OPDEF("INIT_ARRAY", EXT_BIT | OP1_STD | OP2_STD | RES_TMP), /* 71 */ - OPDEF("ADD_ARRAY_ELEMENT", EXT_BIT | OP1_STD | OP2_STD | RES_TMP), /* 72 */ - OPDEF("INCLUDE_OR_EVAL", EXT_UNUSED | OP1_STD | OP2_INCLUDE| RES_VAR), /* 73 */ --#ifdef ZEND_ENGINE_2 -+#ifdef ZEND_ENGINE_2_1 -+ /* php 5.1 and up */ - OPDEF("UNSET_VAR", EXT_UNUSED | OP1_STD | OP2_FETCH | RES_UNUSED), /* 74 */ -- OPDEF("UNSET_DIM_OBJ", EXT_STD | OP1_STD | OP2_STD | RES_UNUSED), /* 75 */ -- OPDEF("ISSET_ISEMPTY", EXT_ISSET | OP1_VAR | OP2_UNUSED | RES_TMP), /* 76 */ -+ OPDEF("UNSET_DIM", EXT_STD | OP1_STD | OP2_STD | RES_UNUSED), /* 75 */ -+ OPDEF("UNSET_OBJ", EXT_STD | OP1_STD | OP2_STD | RES_UNUSED), /* 76 */ -+ OPDEF("FE_RESET", EXT_BIT | OP1_STD | OP2_OPLINE | RES_VAR), /* 77 */ - #else -+ /* <= php 5.0 */ -+ /* though there is no ISSET_ISEMPTY in php 5.0 it's better to leave it here i guess */ - OPDEF("UNSET_VAR", EXT_UNUSED | OP1_STD | OP2_UNUSED | RES_UNUSED), /* 74 */ - OPDEF("UNSET_DIM_OBJ", EXT_UNUSED | OP1_VAR | OP2_STD | RES_UNUSED), /* 75 */ - OPDEF("ISSET_ISEMPTY", EXT_UNUSED | OP1_VAR | OP2_ISSET | RES_TMP), /* 76 */ --#endif - OPDEF("FE_RESET", EXT_BIT | OP1_STD | OP2_UNUSED | RES_VAR), /* 77 */ -+#endif - OPDEF("FE_FETCH", EXT_FE | OP1_STD | OP2_OPLINE | RES_TMP), /* 78 */ - OPDEF("EXIT", EXT_UNUSED | OP1_STD | OP2_UNUSED | RES_UNUSED), /* 79 */ - OPDEF("FETCH_R", EXT_UNUSED | OP1_STD | OP2_FETCH | RES_VAR), /* 80 */ -@@ -234,7 +234,7 @@ static const opcode_dsc opcodes[] = { - OPDEF("POST_INC_OBJ", EXT_UNUSED | OP1_STD | OP2_STD | RES_TMP), /* 134 */ - OPDEF("POST_DEC_OBJ", EXT_UNUSED | OP1_STD | OP2_STD | RES_TMP), /* 135 */ - OPDEF("ASSIGN_OBJ", EXT_UNUSED | OP1_STD | OP2_STD | RES_VAR), /* 136 */ -- OPDEF("OP_DATA", EXT_UNUSED | OP1_STD | OP2_STD | RES_UNUSED), /* 137 */ -+ OPDEF("OP_DATA", EXT_UNUSED | OP1_STD | OP2_STD | RES_STD), /* 137 */ - OPDEF("INSTANCEOF", EXT_UNUSED | OP1_STD | OP2_CLASS | RES_TMP), /* 138 */ - OPDEF("DECLARE_CLASS", EXT_UNUSED | OP1_STD | OP2_STD | RES_CLASS), /* 139 */ - OPDEF("DECLARE_INHERITED_CLASS", EXT_CLASS | OP1_STD | OP2_STD | RES_CLASS), /* 140 */ -@@ -245,14 +245,17 @@ static const opcode_dsc opcodes[] = { - OPDEF("VERIFY_INSTANCEOF", EXT_UNUSED | OP1_CLASS | OP2_STD | RES_UNUSED), /* 145 */ - OPDEF("VERIFY_ABSTRACT_CLASS", EXT_UNUSED | OP1_CLASS | OP2_UNUSED | RES_UNUSED), /* 146 */ - OPDEF("ASSIGN_DIM", EXT_UNUSED | OP1_STD | OP2_STD | RES_VAR), /* 147 */ -- - OPDEF("ISSET_ISEMPTY_PROP_OBJ", EXT_ISSET | OP1_STD | OP2_STD | RES_TMP), /* 148 */ - OPDEF("HANDLE_EXCEPTION", EXT_STD | OP1_UNUSED | OP2_UNUSED | RES_STD) /* 149 */ -+# ifdef ZEND_ENGINE_2_1 -+ , -+ OPDEF("USER_OPCODE", EXT_STD | OP1_UNUSED | OP2_UNUSED | RES_STD) /* 150 */ -+# endif - #endif - }; - - const opcode_dsc* get_opcode_dsc(unsigned int n) { -- if (n <= LAST_OPCODE) { -+ if (n < LAST_OPCODE) { - return &opcodes[n]; - } else { - return NULL; -@@ -261,17 +264,17 @@ const opcode_dsc* get_opcode_dsc(unsigne - #endif - - #ifdef ZEND_ENGINE_2 --static opcode_handler_t eaccelerator_opcode_handlers[LAST_OPCODE+1]; -+static opcode_handler_t eaccelerator_opcode_handlers[LAST_OPCODE]; - static int handlers_retrived = 0; - - ZEND_DLEXPORT void retrive_opcode_handlers_handler(zend_op_array *op_array) { - unsigned char i; - efree(op_array->opcodes); -- op_array->opcodes = (zend_op*)emalloc(sizeof(zend_op)*(LAST_OPCODE+1)); -- op_array->last = LAST_OPCODE+1; -- op_array->size = LAST_OPCODE+1; -+ op_array->opcodes = (zend_op*)emalloc(sizeof(zend_op)*(LAST_OPCODE)); -+ op_array->last = LAST_OPCODE; -+ op_array->size = LAST_OPCODE; - op_array->T = 0; -- for (i=0; i<=LAST_OPCODE; i++) { -+ for (i=0; i<LAST_OPCODE; i++) { - op_array->opcodes[i].opcode = i; - op_array->opcodes[i].op1.op_type = IS_UNUSED; - op_array->opcodes[i].op1.u.opline_num = i; -@@ -298,9 +301,9 @@ static int retrive_opcode_handlers(TSRML - ext->op_array_handler = retrive_opcode_handlers_handler; - p = compile_string(&str, empty_string TSRMLS_CC); - ext->op_array_handler = old; -- if (p != NULL && p->last == LAST_OPCODE+1) { -+ if (p != NULL && p->last == (LAST_OPCODE - 1)) { - int i = 0; -- while (i <= LAST_OPCODE) { -+ while (i < LAST_OPCODE) { - eaccelerator_opcode_handlers[p->opcodes[i].opcode] = p->opcodes[i].handler; - ++i; - } -@@ -318,7 +321,7 @@ opcode_handler_t get_opcode_handler(zend - return NULL; - } - } -- if (opcode <= LAST_OPCODE) { -+ if (opcode < LAST_OPCODE) { - return eaccelerator_opcode_handlers[opcode]; - } else { - return (opcode_handler_t) NULL; Index: files/patch-optimize.c =================================================================== RCS file: files/patch-optimize.c diff -N files/patch-optimize.c --- files/patch-optimize.c 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,217 +0,0 @@ ---- optimize.c.orig Thu Nov 17 21:25:11 2005 -+++ optimize.c Thu Feb 2 09:40:00 2006 -@@ -64,7 +64,6 @@ typedef struct _BBlink { - struct _BBlink* next; - } BBlink; - --#if 0 - static void dump_bb(BB* bb, zend_op_array *op_array) { - BB* p = bb; - BBlink *q; -@@ -130,7 +129,45 @@ static void dump_bb(BB* bb, zend_op_arra - zend_printf("</pre><hr>\n"); - fflush(stdout); - } --#endif -+ -+static void dump_array(int nb,void *pos,char type) -+{ int j; -+ -+ switch(type) { -+ case 'i': { -+ int *ptr=pos; -+ for (j=0;j<nb;j++) { -+ zend_printf("%d:%6d ",j,*ptr); -+ ptr++; -+ } -+ } -+ break; -+ case 'x': { -+ int *ptr=pos; -+ for (j=0;j<nb;j++) { -+ zend_printf("%d:%x ",j,*ptr); -+ ptr++; -+ } -+ } -+ break; -+ case 'c': { -+ unsigned char *ptr=pos; -+ for (j=0;j<nb;j++) { -+/* if (*ptr>=32 && *ptr<128) zend_printf("%d:%c",j,*ptr); -+ else if (*ptr>=128) zend_printf("%d:%2x",j,*ptr); -+ else if (*ptr<16) zend_printf("%d:&%1x",j,*ptr); -+ else zend_printf("%d:$%1x",j,(*ptr)-16); */ -+ zend_printf("%d:%1x ",j,*ptr); -+ ptr++; -+ } -+ } -+ break; -+ default: -+ for (j=0;j<nb;j++) -+ zend_printf("# "); -+ } -+ zend_printf("<br>\n"); -+} - - #define SET_TO_NOP(op) \ - (op)->opcode = ZEND_NOP; \ -@@ -250,14 +287,27 @@ static void compute_live_var(BB* bb, zen - } - break; - case ZEND_UNSET_VAR: -+#ifndef ZEND_ENGINE_2_1 -+/* Pre-PHP 5.1 only */ - case ZEND_UNSET_DIM_OBJ: - end->result.op_type = IS_UNUSED; - break; -+#else -+ case ZEND_UNSET_DIM: -+ case ZEND_UNSET_OBJ: -+ end->result.op_type = IS_UNUSED; -+ break; -+#endif - case ZEND_RECV: - case ZEND_RECV_INIT: - /*case ZEND_ADD_ARRAY_ELEMENT:*/ - case ZEND_INCLUDE_OR_EVAL: -+#ifndef ZEND_ENGINE_2_1 -+/* Pre-PHP 5.1 only */ - case ZEND_JMP_NO_CTOR: -+#else -+ case ZEND_NEW: -+#endif - case ZEND_FE_FETCH: - #ifdef ZEND_ENGINE_2 - case ZEND_ASSIGN_DIM: -@@ -1279,7 +1329,12 @@ jmp_nz_ex: - goto jmp_nz; - } - goto jmp_2; -+#ifndef ZEND_ENGINE_2_1 -+/* Pre-PHP 5.1 only */ - case ZEND_JMP_NO_CTOR: -+#else -+ case ZEND_NEW: -+#endif - case ZEND_FE_FETCH: - jmp_2: - while (p->jmp_2->len == 1 && p->jmp_2->start->opcode == ZEND_JMP) { -@@ -1714,6 +1769,7 @@ static void optimize_bb(BB* bb, zend_op_ - } - } else - #endif -+ - if ((op->opcode == ZEND_ADD || - op->opcode == ZEND_SUB || - op->opcode == ZEND_MUL || -@@ -2443,7 +2499,13 @@ else if (prev != NULL && - op->opcode == ZEND_DO_FCALL_BY_NAME || - op->opcode == ZEND_POST_INC || - op->opcode == ZEND_POST_DEC || -+#ifndef ZEND_ENGINE_2_1 -+/* Pre-PHP 5.1 only */ - op->opcode == ZEND_UNSET_DIM_OBJ || -+#else -+ op->opcode == ZEND_UNSET_DIM || -+ op->opcode == ZEND_UNSET_OBJ || -+#endif - op->opcode == ZEND_INCLUDE_OR_EVAL - #ifdef ZEND_ENGINE_2 - || op->opcode == ZEND_ASSIGN_DIM -@@ -2721,7 +2783,13 @@ static int build_cfg(zend_op_array *op_a - case ZEND_JMPNZ: - case ZEND_JMPZ_EX: - case ZEND_JMPNZ_EX: -+#ifndef ZEND_ENGINE_2_1 -+/* Pre-PHP 5.1 only */ - case ZEND_JMP_NO_CTOR: -+#else -+ case ZEND_NEW: -+ case ZEND_FE_RESET: -+#endif - case ZEND_FE_FETCH: - bb[line_num+1].start = op+1; - bb[op->op2.u.opline_num].start = &op_array->opcodes[op->op2.u.opline_num]; -@@ -2840,9 +2908,19 @@ cont_failed: - break; - #endif - case ZEND_UNSET_VAR: -+#ifndef ZEND_ENGINE_2_1 -+/* Pre-PHP 5.1 only */ - case ZEND_UNSET_DIM_OBJ: - op->result.op_type = IS_UNUSED; - break; -+#else -+ case ZEND_UNSET_DIM: -+ op->result.op_type = IS_UNUSED; -+ break; -+ case ZEND_UNSET_OBJ: -+ op->result.op_type = IS_UNUSED; -+ break; -+#endif - default: - break; - } -@@ -2894,7 +2972,13 @@ cont_failed: - case ZEND_JMPNZ: - case ZEND_JMPZ_EX: - case ZEND_JMPNZ_EX: -+#ifndef ZEND_ENGINE_2_1 -+/* Pre-PHP 5.1 only */ - case ZEND_JMP_NO_CTOR: -+#else -+ case ZEND_NEW: -+ case ZEND_FE_RESET: -+#endif - case ZEND_FE_FETCH: - p->jmp_2 = &bb[op->op2.u.opline_num]; - p->follow = &bb[line_num]; -@@ -3109,6 +3193,7 @@ void reassign_registers(zend_op_array *o - - while (start < op) { - --op; -+ /* zend_printf("op=%d\n", op-op_array->opcodes); */ - #ifdef ZEND_ENGINE_2 - op_data = NULL; - #else -@@ -3151,20 +3236,6 @@ void reassign_registers(zend_op_array *o - GET_REG(r); - op->extended_value = VAR_VAL(assigned[r]); - } -- if (op->opcode == ZEND_OP_DATA) { -- op_data = op; -- --op; -- if (op->op1.op_type == IS_VAR || op->op1.op_type == IS_TMP_VAR) { -- int r = VAR_NUM(op->op1.u.var); -- GET_REG(r); -- op->op1.u.var = VAR_VAL(assigned[r]); -- } -- if (op->op2.op_type == IS_VAR || op->op2.op_type == IS_TMP_VAR) { -- int r = VAR_NUM(op->op2.u.var); -- GET_REG(r); -- op->op2.u.var = VAR_VAL(assigned[r]); -- } -- } - #endif - if (op->result.op_type == IS_VAR || - op->result.op_type == IS_TMP_VAR) { -@@ -3192,11 +3263,6 @@ void reassign_registers(zend_op_array *o - } - } - } --#ifdef ZEND_ENGINE_2 -- if (op_data != NULL && op_data->op2.op_type == IS_VAR) { -- FREE_REG(VAR_NUM(op_data->op2.u.var)); -- } --#endif - } - } - p = p->next; -@@ -3279,6 +3345,7 @@ void eaccelerator_optimize(zend_op_array - /* Store Optimized Code */ - emit_cfg(op_array, bb); - reassign_registers(op_array, bb, global); -+ /* dump_bb(bb, op_array); */ - - free_alloca(global); - } Index: files/patch-webui.c =================================================================== RCS file: files/patch-webui.c diff -N files/patch-webui.c --- files/patch-webui.c 2 Feb 2006 09:06:14 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,204 +0,0 @@ ---- webui.c.orig Sun Jul 10 10:12:33 2005 -+++ webui.c Thu Feb 2 09:40:00 2006 -@@ -263,7 +263,7 @@ static void dump_zval (zval * v, int com - ZEND_PUTS ("constant('"); - goto string_dump; - case IS_CONSTANT_ARRAY: -- ZEND_PUTS ("constatnt_array("); -+ ZEND_PUTS ("constant_array("); - goto array_dump; - default: - zend_printf ("unknown(%d)", v->type); -@@ -271,21 +271,26 @@ static void dump_zval (zval * v, int com - } - - static const char *color_list[] = { -- "#FF0000", -- "#00FF00", -- "#0000FF", -- "#FFFF00", -- "#00FFFF", -- "#FF00FF", -- "#800000", -- "#008000", -- "#000080", -- "#808000", -- "#008080", -- "#800080" -+ /* color from irc */ -+ /* 0 // "#ffffff", white */ -+ /* 1 // "#000000", black */ -+ /* 4 */ "#ff0000", /* light red */ -+ /* 7 */ "#fc7f00", /* orange */ -+ /* 6 */ "#9c009c", /* magenta */ -+ /* 5 */ "#7f0000", /* red */ -+ /* 9 */ "#00fc00", /* light green (lime) */ -+ /* 10 */ "#009393", /* cyan */ -+ /* 12 */ "#0000fc", /* light blue */ -+ /* 13 */ "#ff00ff", /* light magenta (pink) */ -+ /* 2 */ "#00007f", /* blue */ -+ /* 3 */ "#009300", /* green */ -+ /* 8 // "#ffff00", yellow */ -+ /* 11 // "#00ffff", light cyan (aqua) */ -+ /* 14 */ "#7f7f7f", /* grey */ -+ /* 15 */ "#d2d2d2" /* light grey (silver) */ - }; - --static char const *color (int num) -+static const char *color (int num) - { - return color_list[num % (sizeof (color_list) / sizeof (char *))]; - } -@@ -322,6 +327,11 @@ static void print_file_line (char *p, in - while (line > 0 && *p) { - if (*p == '\n') { - line--; -+ } else if (*p == '\r') { -+ line--; -+ if (p[1] == '\n') { -+ p++; -+ } - } else if (line == 1) { - if (*p == '<') - zend_printf ("<"); -@@ -343,6 +353,9 @@ static void dump_op_array (eaccelerator_ - unsigned last_line = 0; - - #ifdef ZEND_ENGINE_2 -+#ifdef ZEND_ENGINE_2_1 -+ zend_printf ("last_var = %u, ", p->last_var); -+#endif - zend_printf ("T = %u, size = %u\n, brk_count = %u, file = %s<br>\n", - p->T, p->last, p->last_brk_cont, p->filename); - #else -@@ -367,9 +380,25 @@ static void dump_op_array (eaccelerator_ - ZEND_PUTS (" </td></tr>\n"); - q = q->pListNext; - } -- ZEND_PUTS ("<tbody></table><br>\n"); -+ ZEND_PUTS ("</tbody></table><br>\n"); - } -- -+#ifdef ZEND_ENGINE_2_1 -+ if (p->last_var) { -+ int i; -+ -+ ZEND_PUTS("<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" width=\"600\" bgcolor=\"#000000\" align=\"center\" style=\"table-layout:fixed\">\n"); -+ ZEND_PUTS("<thead valign=\"middle\" bgcolor=\"#9999cc\"><tr><th width=\"200\">Compiled variable</th><th width=\"200\">Len</th><th width=\"200\">Hash</th></tr></thead>\n"); -+ ZEND_PUTS("<tbody valign=\"top\" bgcolor=\"#cccccc\" style=\"word-break:break-all\">\n"); -+ -+ for (i = 0; i < p->last_var; i ++) { -+ zend_printf ("<tr><td bgcolor=\"#ccccff\">$%s </td>", p->vars[i].name); -+ zend_printf ("<td bgcolor=\"#ccccff\">%u </td>", p->vars[i].name_len); -+ zend_printf ("<td bgcolor=\"#ccccff\">%u </td></tr>\n", p->vars[i].hash_value); -+ } -+ ZEND_PUTS ("</tbody></table><br>\n"); -+ } -+#endif -+ - if (p->opcodes) { - int n = 0; - opline = p->opcodes; -@@ -377,20 +406,20 @@ static void dump_op_array (eaccelerator_ - - filebuf = get_file_contents (p->filename); - -- ZEND_PUTS -- ("<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" width=\"900\" bgcolor=\"#000000\" align=\"center\" style=\"table-layout:fixed\">\n"); -- ZEND_PUTS -- ("<thead valign=\"middle\" bgcolor=\"#9999cc\"><tr><th width=\"40\">N</th><th width=\"160\">OPCODE</th><th width=\"160\">EXTENDED_VALUE</th><th width=\"220\">OP1</th><th width=\"220\">OP2</th><th width=\"80\">RESULT</th></tr></thead>\n"); -- ZEND_PUTS -- ("<tbody valign=\"top\" bgcolor=\"#cccccc\" style=\"word-break:break-all; font-size: x-small\">\n"); -+ ZEND_PUTS("<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" width=\"900\" bgcolor=\"#000000\" align=\"center\" style=\"table-layout:fixed\">\n"); -+ ZEND_PUTS("<thead valign=\"middle\" bgcolor=\"#9999cc\"><tr><th width=\"40\">N</th><th width=\"160\">OPCODE</th><th width=\"160\">EXTENDED_VALUE</th><th width=\"220\">OP1</th><th width=\"220\">OP2</th><th width=\"80\">RESULT</th></tr></thead>\n"); -+ ZEND_PUTS("<tbody valign=\"top\" bgcolor=\"#cccccc\" style=\"word-break:break-all; font-size: x-small\">\n"); -+ - for (; opline < end; opline++) { - const opcode_dsc *op = get_opcode_dsc (opline->opcode); - -- while (last_line < opline->lineno) { -- last_line++; -- zend_printf -- ("<tr><td colspan=6 bgcolor=black><pre><font color=#80ff80>"); -- print_file_line (filebuf, last_line); -+ if (last_line < opline->lineno) { -+ zend_printf("<tr><td colspan=6 bgcolor=black><pre><font color=#80ff80>"); -+ while (last_line < opline->lineno) { -+ last_line++; -+ print_file_line(filebuf, last_line); -+ ZEND_PUTS("\n"); -+ } - zend_printf ("</font></pre></td></tr>\n"); - } - -@@ -459,6 +488,7 @@ static void dump_op_array (eaccelerator_ - } else { - ZEND_PUTS ("<td> </td>"); - } -+#ifndef ZEND_ENGINE_2_1 - } else if (opline->opcode == ZEND_UNSET_DIM_OBJ) { - if (opline->extended_value == ZEND_UNSET_DIM) { - ZEND_PUTS ("<td>ZEND_UNSET_DIM </td>"); -@@ -468,6 +498,7 @@ static void dump_op_array (eaccelerator_ - ZEND_PUTS ("<td> </td>"); - } - #endif -+#endif - } else if (opline->extended_value != 0) { - zend_printf ("<td>%ld </td>", opline->extended_value); - } else { -@@ -479,7 +510,13 @@ static void dump_op_array (eaccelerator_ - n, opline->opcode, opline->extended_value); - op = get_opcode_dsc (0); - } -- -+#ifdef ZEND_ENGINE_2_1 -+ if (opline->op1.op_type == IS_CV) { -+ zend_printf("<td><font color=%s>$cv%u(%s)</font> </td>", -+ color (opline->op1.u.var), opline->op1.u.var, -+ p->vars[opline->op1.u.var].name); -+ } else -+#endif - if ((op->ops & OP1_MASK) == OP1_OPLINE) { - zend_printf - ("<td><font color=%s>opline(%d)</font> </td>", -@@ -586,7 +623,13 @@ static void dump_op_array (eaccelerator_ - ("<td>UNKNOWN NODE %d </td>", opline->op1.op_type); - } - } -- -+#ifdef ZEND_ENGINE_2_1 -+ if (opline->op2.op_type == IS_CV) { -+ zend_printf("<td><font color=%s>$cv%u(%s)</font> </td>", -+ color (opline->op2.u.var), opline->op2.u.var, -+ p->vars[opline->op2.u.var].name); -+ } else -+#endif - if ((op->ops & OP2_MASK) == OP2_OPLINE) { - zend_printf - ("<td><font color=%s>opline(%d)</font> </td>", -@@ -674,7 +717,14 @@ static void dump_op_array (eaccelerator_ - ("<td>UNKNOWN NODE %d </td>", opline->op2.op_type); - } - } -- -+#ifdef ZEND_ENGINE_2_1 -+ if (opline->result.op_type == IS_CV) { -+ zend_printf("<td><font color=%s>$cv%u(%s)</font> </td>", -+ color (opline->result.u.var), opline->result.u.var, -+ p->vars[opline->result.u.var].name); -+ } else -+#endif -+ - switch (op->ops & RES_MASK) { - case RES_STD: - if (opline->result.op_type == IS_CONST) { -@@ -1833,7 +1883,7 @@ PHP_FUNCTION (eaccelerator) - } - - { -- char *s = php_get_uname (); -+ char *s = php_get_uname ('a'); - zend_printf ("<nobr>%s</nobr>\n", s); - efree (s); - } --- ea.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060217151049.8548C79>