Index: /trunk/xcache.h
===================================================================
--- /trunk/xcache.h	(revision 485)
+++ /trunk/xcache.h	(revision 491)
@@ -55,4 +55,7 @@
 #ifndef Z_SET_REFCOUNT
 #	define Z_SET_REFCOUNT(z, rc) (z).refcount = rc;
+#endif
+#ifndef IS_CONSTANT_TYPE_MASK
+#	define IS_CONSTANT_TYPE_MASK 0xf
 #endif
 
Index: /trunk/processor/processor.m4
===================================================================
--- /trunk/processor/processor.m4	(revision 487)
+++ /trunk/processor/processor.m4	(revision 491)
@@ -96,5 +96,5 @@
 dnl {{{ zvalue_value
 		DISABLECHECK(`
-		switch (src->type & ~IS_CONSTANT_INDEX) {
+		switch ((Z_TYPE_P(src) & IS_CONSTANT_TYPE_MASK)) {
 			case IS_LONG:
 			case IS_RESOURCE:
Index: /trunk/const_string.c
===================================================================
--- /trunk/const_string.c	(revision 485)
+++ /trunk/const_string.c	(revision 491)
@@ -48,25 +48,5 @@
 	/* 8 */ "IS_CONSTANT",
 	/* 9 */ "IS_CONSTANT_ARRAY",
-	/* 10 */ "IS_UNICODE",
-#if 0
-	/* 11 */ "",
-	/* 12 */ "",
-	/* 13 */ "",
-	/* 14 */ "",
-	/* 15 */ "", "", "", "", "",
-
-/* IS_CONSTANT_INDEX */
-	/* 20 */ "CIDX IS_NULL",
-	/* 21 */ "CIDX IS_LONG",
-	/* 22 */ "CIDX IS_DOUBLE",
-	/* 23 */ "CIDX IS_BOOL",
-	/* 24 */ "CIDX IS_ARRAY",
-	/* 25 */ "CIDX IS_OBJECT",
-	/* 26 */ "CIDX IS_STRING",
-	/* 27 */ "CIDX IS_RESOURCE",
-	/* 28 */ "CIDX IS_CONSTANT",
-	/* 29 */ "CIDX IS_CONSTANT_ARRAY"
-	/* 20 */ "CIDX IS_UNICODE",
-#endif
+	/* 10 */ "IS_UNICODE"
 };
 
@@ -78,11 +58,5 @@
 const char *xc_get_data_type(zend_uchar data_type)
 {
-#if 0
-	if (data_type & IS_CONSTANT_INDEX) {
-		data_type = (data_type & ~IS_CONSTANT_INDEX) + 20;
-	}
-#endif
-	data_type &= ~IS_CONSTANT_INDEX;
-	return data_type_names[data_type];
+	return data_type_names[(data_type & IS_CONSTANT_TYPE_MASK)];
 }
 /* }}} */
