[Bast-commits] r5867 - Devel-Declare/1.000/trunk

rafl at dev.catalyst.perl.org rafl at dev.catalyst.perl.org
Thu Apr 9 00:35:26 GMT 2009


Author: rafl
Date: 2009-04-09 01:35:26 +0100 (Thu, 09 Apr 2009)
New Revision: 5867

Modified:
   Devel-Declare/1.000/trunk/Declare.xs
Log:
Remember the previously compiled op.

Modified: Devel-Declare/1.000/trunk/Declare.xs
===================================================================
--- Devel-Declare/1.000/trunk/Declare.xs	2009-04-09 00:09:12 UTC (rev 5866)
+++ Devel-Declare/1.000/trunk/Declare.xs	2009-04-09 00:35:26 UTC (rev 5867)
@@ -36,6 +36,8 @@
 #define DD_AM_LEXING DD_AM_LEXING_CHECK
 #endif
 
+static OP *previous_op = NULL;
+
 /* thing that decides whether we're dealing with a declarator */
 
 int dd_is_declarator(pTHX_ char* name) {
@@ -340,9 +342,17 @@
 
   dd_linestr_callback(aTHX_ "const", name);
 
-  return o;  
+  return o;
 }
 
+STATIC OP *
+remember_previous_op (pTHX_ OP *o, void *user_data)
+{
+  PERL_UNUSED_VAR (user_data);
+  previous_op = o;
+  return o;
+}
+
 static int initialized = 0;
 
 MODULE = Devel::Declare  PACKAGE = Devel::Declare
@@ -351,12 +361,17 @@
 
 void
 setup()
+  PREINIT:
+    I32 i;
   CODE:
   if (!initialized++) {
     hook_op_check(OP_RV2CV, dd_ck_rv2cv, NULL);
     hook_op_check(OP_ENTEREVAL, dd_ck_entereval, NULL);
     hook_op_check(OP_CONST, dd_ck_const, NULL);
   }
+  for (i = 0; i < OP_max; i++) {
+    (void)hook_op_check(i, remember_previous_op, NULL);
+  }
   filter_add(dd_filter_realloc, NULL);
 
 char*




More information about the Bast-commits mailing list