ports/93479: Update port: www/eaccelerator to 0.9.4 and add EA_SNAPSHOT

Marcus Alves Grando mnag at FreeBSD.org
Fri Feb 17 15:20:06 UTC 2006


>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 at 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 at 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:



More information about the freebsd-ports-bugs mailing list