Index: /trunk/xcache/xc_const_string_opcodes_php5.0.h
===================================================================
--- /trunk/xcache/xc_const_string_opcodes_php5.0.h	(revision 982)
+++ /trunk/xcache/xc_const_string_opcodes_php5.0.h	(revision 1095)
@@ -1,3 +1,3 @@
-/* size = 149 */
+/* size = 150 */
 static const char *const xc_opcode_names[] = {
 /* 0 */	"NOP",
Index: /trunk/xcache/xc_const_string_opcodes_php5.1.h
===================================================================
--- /trunk/xcache/xc_const_string_opcodes_php5.1.h	(revision 982)
+++ /trunk/xcache/xc_const_string_opcodes_php5.1.h	(revision 1095)
@@ -1,3 +1,3 @@
-/* size = 154 */
+/* size = 151 */
 static const char *const xc_opcode_names[] = {
 /* 0 */	"NOP",
@@ -70,5 +70,5 @@
 /* 67 */	"SEND_REF",
 /* 68 */	"NEW",
-/* 69 */	"INIT_NS_FCALL_BY_NAME",
+/* 69 */	"UNDEF",
 /* 70 */	"FREE",
 /* 71 */	"INIT_ARRAY",
@@ -101,5 +101,5 @@
 /* 98 */	"FETCH_DIM_TMP_VAR",
 /* 99 */	"FETCH_CONSTANT",
-/* 100 */	"GOTO",
+/* 100 */	"UNDEF",
 /* 101 */	"EXT_STMT",
 /* 102 */	"EXT_FCALL_BEGIN",
@@ -144,14 +144,11 @@
 /* 141 */	"DECLARE_FUNCTION",
 /* 142 */	"RAISE_ABSTRACT_ERROR",
-/* 143 */	"DECLARE_CONST",
+/* 143 */	"UNDEF",
 /* 144 */	"ADD_INTERFACE",
-/* 145 */	"DECLARE_INHERITED_CLASS_DELAYED",
+/* 145 */	"UNDEF",
 /* 146 */	"VERIFY_ABSTRACT_CLASS",
 /* 147 */	"ASSIGN_DIM",
 /* 148 */	"ISSET_ISEMPTY_PROP_OBJ",
 /* 149 */	"HANDLE_EXCEPTION",
-/* 150 */	"USER_OPCODE",
-/* 151 */	"UNDEF",
-/* 152 */	"JMP_SET",
-/* 153 */	"DECLARE_LAMBDA_FUNCTION"
+/* 150 */	"USER_OPCODE"
 };
Index: /trunk/xcache/xc_const_string_opcodes_php5.3.h
===================================================================
--- /trunk/xcache/xc_const_string_opcodes_php5.3.h	(revision 1095)
+++ /trunk/xcache/xc_const_string_opcodes_php5.3.h	(revision 1095)
@@ -0,0 +1,157 @@
+/* size = 154 */
+static const char *const xc_opcode_names[] = {
+/* 0 */	"NOP",
+/* 1 */	"ADD",
+/* 2 */	"SUB",
+/* 3 */	"MUL",
+/* 4 */	"DIV",
+/* 5 */	"MOD",
+/* 6 */	"SL",
+/* 7 */	"SR",
+/* 8 */	"CONCAT",
+/* 9 */	"BW_OR",
+/* 10 */	"BW_AND",
+/* 11 */	"BW_XOR",
+/* 12 */	"BW_NOT",
+/* 13 */	"BOOL_NOT",
+/* 14 */	"BOOL_XOR",
+/* 15 */	"IS_IDENTICAL",
+/* 16 */	"IS_NOT_IDENTICAL",
+/* 17 */	"IS_EQUAL",
+/* 18 */	"IS_NOT_EQUAL",
+/* 19 */	"IS_SMALLER",
+/* 20 */	"IS_SMALLER_OR_EQUAL",
+/* 21 */	"CAST",
+/* 22 */	"QM_ASSIGN",
+/* 23 */	"ASSIGN_ADD",
+/* 24 */	"ASSIGN_SUB",
+/* 25 */	"ASSIGN_MUL",
+/* 26 */	"ASSIGN_DIV",
+/* 27 */	"ASSIGN_MOD",
+/* 28 */	"ASSIGN_SL",
+/* 29 */	"ASSIGN_SR",
+/* 30 */	"ASSIGN_CONCAT",
+/* 31 */	"ASSIGN_BW_OR",
+/* 32 */	"ASSIGN_BW_AND",
+/* 33 */	"ASSIGN_BW_XOR",
+/* 34 */	"PRE_INC",
+/* 35 */	"PRE_DEC",
+/* 36 */	"POST_INC",
+/* 37 */	"POST_DEC",
+/* 38 */	"ASSIGN",
+/* 39 */	"ASSIGN_REF",
+/* 40 */	"ECHO",
+/* 41 */	"PRINT",
+/* 42 */	"JMP",
+/* 43 */	"JMPZ",
+/* 44 */	"JMPNZ",
+/* 45 */	"JMPZNZ",
+/* 46 */	"JMPZ_EX",
+/* 47 */	"JMPNZ_EX",
+/* 48 */	"CASE",
+/* 49 */	"SWITCH_FREE",
+/* 50 */	"BRK",
+/* 51 */	"CONT",
+/* 52 */	"BOOL",
+/* 53 */	"INIT_STRING",
+/* 54 */	"ADD_CHAR",
+/* 55 */	"ADD_STRING",
+/* 56 */	"ADD_VAR",
+/* 57 */	"BEGIN_SILENCE",
+/* 58 */	"END_SILENCE",
+/* 59 */	"INIT_FCALL_BY_NAME",
+/* 60 */	"DO_FCALL",
+/* 61 */	"DO_FCALL_BY_NAME",
+/* 62 */	"RETURN",
+/* 63 */	"RECV",
+/* 64 */	"RECV_INIT",
+/* 65 */	"SEND_VAL",
+/* 66 */	"SEND_VAR",
+/* 67 */	"SEND_REF",
+/* 68 */	"NEW",
+/* 69 */	"INIT_NS_FCALL_BY_NAME",
+/* 70 */	"FREE",
+/* 71 */	"INIT_ARRAY",
+/* 72 */	"ADD_ARRAY_ELEMENT",
+/* 73 */	"INCLUDE_OR_EVAL",
+/* 74 */	"UNSET_VAR",
+/* 75 */	"UNSET_DIM",
+/* 76 */	"UNSET_OBJ",
+/* 77 */	"FE_RESET",
+/* 78 */	"FE_FETCH",
+/* 79 */	"EXIT",
+/* 80 */	"FETCH_R",
+/* 81 */	"FETCH_DIM_R",
+/* 82 */	"FETCH_OBJ_R",
+/* 83 */	"FETCH_W",
+/* 84 */	"FETCH_DIM_W",
+/* 85 */	"FETCH_OBJ_W",
+/* 86 */	"FETCH_RW",
+/* 87 */	"FETCH_DIM_RW",
+/* 88 */	"FETCH_OBJ_RW",
+/* 89 */	"FETCH_IS",
+/* 90 */	"FETCH_DIM_IS",
+/* 91 */	"FETCH_OBJ_IS",
+/* 92 */	"FETCH_FUNC_ARG",
+/* 93 */	"FETCH_DIM_FUNC_ARG",
+/* 94 */	"FETCH_OBJ_FUNC_ARG",
+/* 95 */	"FETCH_UNSET",
+/* 96 */	"FETCH_DIM_UNSET",
+/* 97 */	"FETCH_OBJ_UNSET",
+/* 98 */	"FETCH_DIM_TMP_VAR",
+/* 99 */	"FETCH_CONSTANT",
+/* 100 */	"GOTO",
+/* 101 */	"EXT_STMT",
+/* 102 */	"EXT_FCALL_BEGIN",
+/* 103 */	"EXT_FCALL_END",
+/* 104 */	"EXT_NOP",
+/* 105 */	"TICKS",
+/* 106 */	"SEND_VAR_NO_REF",
+/* 107 */	"CATCH",
+/* 108 */	"THROW",
+/* 109 */	"FETCH_CLASS",
+/* 110 */	"CLONE",
+/* 111 */	"UNDEF",
+/* 112 */	"INIT_METHOD_CALL",
+/* 113 */	"INIT_STATIC_METHOD_CALL",
+/* 114 */	"ISSET_ISEMPTY_VAR",
+/* 115 */	"ISSET_ISEMPTY_DIM_OBJ",
+/* 116 */	"UNDEF",
+/* 117 */	"UNDEF",
+/* 118 */	"UNDEF",
+/* 119 */	"UNDEF",
+/* 120 */	"UNDEF",
+/* 121 */	"UNDEF",
+/* 122 */	"UNDEF",
+/* 123 */	"UNDEF",
+/* 124 */	"UNDEF",
+/* 125 */	"UNDEF",
+/* 126 */	"UNDEF",
+/* 127 */	"UNDEF",
+/* 128 */	"UNDEF",
+/* 129 */	"UNDEF",
+/* 130 */	"UNDEF",
+/* 131 */	"UNDEF",
+/* 132 */	"PRE_INC_OBJ",
+/* 133 */	"PRE_DEC_OBJ",
+/* 134 */	"POST_INC_OBJ",
+/* 135 */	"POST_DEC_OBJ",
+/* 136 */	"ASSIGN_OBJ",
+/* 137 */	"OP_DATA",
+/* 138 */	"INSTANCEOF",
+/* 139 */	"DECLARE_CLASS",
+/* 140 */	"DECLARE_INHERITED_CLASS",
+/* 141 */	"DECLARE_FUNCTION",
+/* 142 */	"RAISE_ABSTRACT_ERROR",
+/* 143 */	"DECLARE_CONST",
+/* 144 */	"ADD_INTERFACE",
+/* 145 */	"DECLARE_INHERITED_CLASS_DELAYED",
+/* 146 */	"VERIFY_ABSTRACT_CLASS",
+/* 147 */	"ASSIGN_DIM",
+/* 148 */	"ISSET_ISEMPTY_PROP_OBJ",
+/* 149 */	"HANDLE_EXCEPTION",
+/* 150 */	"USER_OPCODE",
+/* 151 */	"UNDEF",
+/* 152 */	"JMP_SET",
+/* 153 */	"DECLARE_LAMBDA_FUNCTION"
+};
Index: /trunk/xcache/xc_const_string.c
===================================================================
--- /trunk/xcache/xc_const_string.c	(revision 982)
+++ /trunk/xcache/xc_const_string.c	(revision 1095)
@@ -66,4 +66,6 @@
 #elif defined(ZEND_ENGINE_2_4)
 #	include "xc_const_string_opcodes_php5.4.h"
+#elif defined(ZEND_ENGINE_2_3)
+#	include "xc_const_string_opcodes_php5.3.h"
 #elif defined(ZEND_ENGINE_2_1)
 #	include "xc_const_string_opcodes_php5.1.h"
Index: /trunk/devel/run
===================================================================
--- /trunk/devel/run	(revision 1062)
+++ /trunk/devel/run	(revision 1095)
@@ -2,4 +2,5 @@
 # this script is for developers only
 set -e
+MAKE=/usr/bin/make
 
 . devel/run.cfg
@@ -10,5 +11,11 @@
 case "$type" in
 prep*)
-	exec ./devel/prepare
+	shift
+	exec $MAKE -f devel/prepare.mak "$@"
+	;;
+tags)
+	rm -f tags
+	shift
+	exec $MAKE -f devel/prepare.mak tags "$@"
 	;;
 dep*)
@@ -60,8 +67,5 @@
 	;;
 xtest)
-	exec /usr/bin/make -f devel/test.mak
-	;;
-tags)
-	exec ./devel/prepare tags
+	exec $MAKE -f devel/test.mak
 	;;
 esac
@@ -102,5 +106,5 @@
 phpize)
 	if [[ -r Makefile ]]; then
-		make xcachesvnclean || true
+		$MAKE xcachesvnclean || true
 	fi
 	;;
@@ -146,5 +150,5 @@
 esac
 
-LANG=C /usr/bin/make $MAKEOPTS "${MAKEARGS[@]}" 2>&1 \
+LANG=C $MAKE $MAKEOPTS "${MAKEARGS[@]}" 2>&1 \
 | sed -ur \
 	-e 's#Werror=implicit-function-declaration#We/rror=i/mplicit-function-declaration#' \
@@ -207,16 +211,16 @@
 	;;
 retest)
-	exec make xcachetest "$@" TESTS="`grep '^/.*\.phpt$' php_test_results_*.txt | uniq | xargs`"
+	exec $MAKE xcachetest "$@" TESTS="`grep '^/.*\.phpt$' php_test_results_*.txt | uniq | xargs`"
 	;;
 test)
 	case "${args[0]}" in
 	*.phpt)
-		exec make xcachetest TEST_ARGS=-v TESTS="${args[*]}"
+		exec $MAKE xcachetest TEST_ARGS=-v TESTS="${args[*]}"
 		;;
 	*/)
-		exec make xcachetest TESTS="${args[@]}"
+		exec $MAKE xcachetest TESTS="${args[@]}"
 		;;
 	*)
-		exec make xcachetest
+		exec $MAKE xcachetest
 		;;
 	esac
Index: /trunk/devel/prepare.mak
===================================================================
--- /trunk/devel/prepare.mak	(revision 1095)
+++ /trunk/devel/prepare.mak	(revision 1095)
@@ -0,0 +1,98 @@
+CTAGS=$(shell which ctags 2>/dev/null || which exuberant-ctags 2>/dev/null)
+AWK=$(shell which gawk 2>/dev/null || which awk 2>/dev/null)
+
+include devel/prepare.cfg
+
+.PHONY: dummy
+.PHONY: all
+all: xcache/xc_opcode_spec_def.h xc_const_string tags
+
+.PHONY: clean
+clean: clean_xc_const_string
+	rm -f tags xcache/xc_opcode_spec_def.h
+
+.PHONY: clean_xc_const_string
+clean_xc_const_string:
+	rm -f xcache/xc_const_string_opcodes_php*.h
+
+.PHONY: xc_const_string
+xc_const_string: \
+	xcache/xc_const_string_opcodes_php4.x.h \
+	xcache/xc_const_string_opcodes_php5.0.h \
+	xcache/xc_const_string_opcodes_php5.1.h \
+	xcache/xc_const_string_opcodes_php5.3.h \
+	xcache/xc_const_string_opcodes_php5.4.h \
+	xcache/xc_const_string_opcodes_php6.x.h
+
+ifeq (${EA_DIR},)
+xcache/xc_opcode_spec_def.h: dummy
+	@echo "Skipped $@: EA_DIR not set"
+else
+xcache/xc_opcode_spec_def.h: ${EA_DIR}/opcodes.c
+	$(AWK) -f ./devel/gen_xc_opcode_spec.awk < "$<" > "$@".tmp
+	mv "$@".tmp "$@"
+endif
+
+ifeq (${PHP4_x_DIR},)
+xcache/xc_const_string_opcodes_php4.x.h: dummy
+	@echo "Skipped $@: PHP_4_x_DIR not set"
+else
+xcache/xc_const_string_opcodes_php4.x.h: ${PHP4_x_DIR}/Zend/zend_compile.h
+	$(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
+	mv "$@.tmp" "$@"
+endif
+
+ifeq (${PHP5_0_DIR},)
+xcache/xc_const_string_opcodes_php5.0.h: dummy
+	@echo "Skipped $@: PHP_5_0_DIR not set"
+else
+xcache/xc_const_string_opcodes_php5.0.h: ${PHP5_0_DIR}/Zend/zend_compile.h
+	$(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
+	mv "$@.tmp" "$@"
+endif
+
+ifeq (${PHP5_1_DIR},)
+xcache/xc_const_string_opcodes_php5.1.h: dummy
+	@echo "Skipped $@: PHP_5_1_DIR not set"
+else
+xcache/xc_const_string_opcodes_php5.1.h: ${PHP5_1_DIR}/Zend/zend_vm_def.h
+	$(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
+	mv "$@.tmp" "$@"
+endif
+
+ifeq (${PHP5_3_DIR},)
+xcache/xc_const_string_opcodes_php5.3.h: dummy
+	@echo "Skipped $@: PHP_5_3_DIR not set"
+else
+xcache/xc_const_string_opcodes_php5.3.h: ${PHP5_3_DIR}/Zend/zend_vm_def.h
+	$(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
+	mv "$@.tmp" "$@"
+endif
+
+ifeq (${PHP5_4_DIR},)
+xcache/xc_const_string_opcodes_php5.4.h: dummy
+	@echo "Skipped $@: PHP_5_4_DIR not set"
+else
+xcache/xc_const_string_opcodes_php5.4.h: ${PHP5_4_DIR}/Zend/zend_vm_def.h
+	$(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
+	mv "$@.tmp" "$@"
+endif
+
+ifeq (${PHP6_x_DIR},)
+xcache/xc_const_string_opcodes_php6.x.h: dummy
+	@echo "Skipped $@: PHP_6_x_DIR not set"
+else
+xcache/xc_const_string_opcodes_php6.x.h: ${PHP6_x_DIR}/Zend/zend_vm_def.h
+	$(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
+	mv "$@.tmp" "$@"
+endif
+
+ifeq (${PHP_DEVEL_DIR},)
+tags:
+	echo "* Making tags without php source files"
+	"$(CTAGS)" -R .
+else
+tags:
+	echo "* Making tags with ${PHP_DEVEL_DIR}"
+	"$(CTAGS)" -R . "${PHP_DEVEL_DIR}/main" "${PHP_DEVEL_DIR}/Zend" "${PHP_DEVEL_DIR}/TSRM" "${PHP_DEVEL_DIR}/ext/standard"
+endif
Index: /trunk/devel/prepare.cfg.example
===================================================================
--- /trunk/devel/prepare.cfg.example	(revision 998)
+++ /trunk/devel/prepare.cfg.example	(revision 1095)
@@ -4,4 +4,5 @@
 PHP5_1_DIR=
 PHP5_3_DIR=
+PHP5_4_DIR=
 PHP6_x_DIR=
 
Index: /unk/devel/prepare
===================================================================
--- /trunk/devel/prepare	(revision 1094)
+++ 	(revision )
@@ -1,105 +1,0 @@
-#! /bin/bash
-SELF="$0"
-
-if test -e devel/prepare.cfg ; then
-	. devel/prepare.cfg
-else
-	echo devel/prepare.cfg is required, see devel/prepare.cfg >&2
-	exit
-fi
-
-CTAGS=`which ctags 2>/dev/null || which exuberant-ctags 2>/dev/null `
-AWK=`which gawk 2>/dev/null || which awk 2>/dev/null `
-
-make_all() {
-	make_xc_opcode_spec_def.h
-	make_xc_const_string
-	test -e tags && echo tags exists, skipping. use \""$0" tags\" to rebuild || make_tags
-}
-
-make_clean() {
- 	make_clean_xc_const_string
-	echo "*" rm -f tags xc_opcode_spec_def.h
-	rm -f tags xc_opcode_spec_def.h
-}
-
-make_xc_const_string() {
-	make_xc_const_string_opcodes_php4.x.h
-	make_xc_const_string_opcodes_php5.0.h
-	make_xc_const_string_opcodes_php5.1.h
-	make_xc_const_string_opcodes_php5.4.h
-	make_xc_const_string_opcodes_php6.x.h
-}
-
-make_clean_xc_const_string() {
-	echo "*" rm -f xcache/xc_const_string_opcodes_php*.h{,.tmp}
-	rm -f xcache/xc_const_string_opcodes_php*.h
-}
-
-make_xc_const_string_opcodes_php4.x.h() {
-	precheck xcache/xc_const_string_opcodes_php4.x.h "${PHP4_x_DIR}/Zend/zend_compile.h" && "$AWK" -f ./devel/gen_const_string_opcodes.awk < "$I" > "$O.tmp" && mv "$O.tmp" "$O"
-}
-
-make_xc_const_string_opcodes_php5.0.h() {
-	precheck xcache/xc_const_string_opcodes_php5.0.h "${PHP5_0_DIR}/Zend/zend_compile.h" && "$AWK" -f ./devel/gen_const_string_opcodes.awk < "$I" > "$O.tmp" && mv "$O.tmp" "$O"
-}
-
-make_xc_const_string_opcodes_php5.1.h() {
-	precheck xcache/xc_const_string_opcodes_php5.1.h "${PHP5_1_DIR}/Zend/zend_vm_def.h"  && "$AWK" -f ./devel/gen_const_string_opcodes.awk < "$I" > "$O.tmp" && mv "$O.tmp" "$O"
-}
-
-make_xc_const_string_opcodes_php5.4.h() {
-	precheck xcache/xc_const_string_opcodes_php5.4.h "${PHP5_4_DIR}/Zend/zend_vm_def.h"  && "$AWK" -f ./devel/gen_const_string_opcodes.awk < "$I" > "$O.tmp" && mv "$O.tmp" "$O"
-}
-
-make_xc_const_string_opcodes_php6.x.h() {
-	precheck xcache/xc_const_string_opcodes_php6.x.h "${PHP6_x_DIR}/Zend/zend_vm_def.h"  && "$AWK" -f ./devel/gen_const_string_opcodes.awk < "$I" > "$O.tmp" && mv "$O.tmp" "$O"
-}
-
-make_xc_opcode_spec_def.h() {
-	precheck xcache/xc_opcode_spec_def.h "${EA_DIR}/opcodes.c" && "$AWK" -f ./devel/gen_xc_opcode_spec.awk < "$I" > "$O"
-}
-
-make_tags() {
-	if test -z "$CTAGS" ; then
-		echo tool ctags not found, skip building tags >&2
-		return
-	fi
-
-	if test -d "${PHP_DEVEL_DIR}" ; then
-		echo "* Making tags with ${PHP_DEVEL_DIR}"
-		"$CTAGS" -R . "${PHP_DEVEL_DIR}/main" "${PHP_DEVEL_DIR}/Zend" "${PHP_DEVEL_DIR}/TSRM" "${PHP_DEVEL_DIR}/ext/standard"
-	else
-		echo "* Making tags without php source files"
-		"$CTAGS" -R .
-	fi
-}
-
-error() {
-	echo "$@" >&2
-}
-
-precheck() {
-	if test -e "$2" ; then :; else
-		error X skipping "$1" because "$2" not found
-		return 1
-	fi
-	if test "$1" -ot "$2" ; then :; else
-		echo O "$1" is up to date.
-		return 1
-	fi
-	O="$1"
-	I="$2"
-	echo "* Making $1 from $2"
-	return 0
-}
-
-if test -z "$1" ; then
-	make_all
-else
-	while ! test -z "$1" ; do
-		eval "make_$1"
-		shift
-	done
-fi
-
