Index: trunk/processor/processor.m4
===================================================================
--- trunk/processor/processor.m4	(revision 122)
+++ trunk/processor/processor.m4	(revision 189)
@@ -474,14 +474,4 @@
 		STRUCT_P(HashTable, static_variables, HashTable_zval_ptr)
 		define(`SKIPASSERT_ONCE')
-
-	IFRESTORE(`
-#ifdef ZEND_ENGINE_2
-		if (dst->scope) {
-			dst->scope = xc_get_class(processor, (zend_ulong) dst->scope);
-			xc_fix_method(processor, dst);
-		}
-#endif
-	')
-
 	}
 	else
@@ -496,13 +486,4 @@
 	PROC_ZSTRING(, function_name)
 #ifdef ZEND_ENGINE_2
-	IFRESTORE(`
-		if (dst->scope) {
-			dst->scope = xc_get_class(processor, (zend_ulong) dst->scope);
-			xc_fix_method(processor, dst);
-		}
-		DONE(scope)
-	', `
-		PROC_CLASS_ENTRY_P(scope)
-	')
 	DISPATCH(zend_uint, fn_flags)
 	dnl mark it as -1 on store, and lookup parent on restore
@@ -637,4 +618,24 @@
 #endif
 	} while (0);
+
+	IFRESTORE(`
+#ifdef ZEND_ENGINE_2
+		if (dst->scope) {
+			dst->scope = xc_get_class(processor, (zend_ulong) dst->scope);
+			xc_fix_method(processor, dst);
+		}
+		DONE(scope)
+#endif
+	', `
+#ifdef ZEND_ENGINE_2
+		PROC_CLASS_ENTRY_P(scope)
+#endif
+	')
+
+	IFRESTORE(`
+		if (xc_have_op_array_ctor) {
+			zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) xc_zend_extension_op_array_ctor_handler, dst TSRMLS_CC);
+		}
+	')
 ')
 dnl }}}
