[Jifty-commit] r5596 - in Runops-Trace/trunk: .

Jifty commits jifty-commit at lists.jifty.org
Sun Jul 27 11:31:08 EDT 2008


Author: nothingmuch
Date: Sun Jul 27 11:31:05 2008
New Revision: 5596

Modified:
   Runops-Trace/trunk/Trace.xs
   Runops-Trace/trunk/lib/Runops/Trace.pm

Log:
don't do weird dynamic loading shit to get B::UNOP::first

Modified: Runops-Trace/trunk/Trace.xs
==============================================================================
--- Runops-Trace/trunk/Trace.xs	(original)
+++ Runops-Trace/trunk/Trace.xs	Sun Jul 27 11:31:05 2008
@@ -25,6 +25,9 @@
 STATIC int Runops_Trace_perl_ignore_ret = 1;
 
 STATIC int Runops_Trace_loaded_B;
+STATIC CV *Runops_Trace_B_UNOP_first;
+STATIC XSUBADDR_t Runops_Trace_B_UNOP_first_xsub;
+
 STATIC GV *Runops_Trace_B_UNOP_stash;
 STATIC UNOP Runops_Trace_fakeop;
 STATIC SV *Runops_Trace_fakeop_sv;
@@ -95,7 +98,10 @@
   PUTBACK;
 
   /* call_pv("B::UNOP::first", G_SCALAR); */
-  XS_B__UNOP_first(aTHX);
+  assert(Runops_Trace_loaded_B);
+  assert(Runops_Trace_B_UNOP_first);
+  assert(Runops_Trace_B_UNOP_first_xsub != NULL);
+  Runops_Trace_B_UNOP_first_xsub(aTHX, Runops_Trace_B_UNOP_first);
 
   SPAGAIN;
 
@@ -325,6 +331,12 @@
 Runops_Trace_load_B (pTHX) {
   if (!Runops_Trace_loaded_B) {
     load_module( PERL_LOADMOD_NOIMPORT, newSVpv("B", 0), (SV *)NULL );
+
+    Runops_Trace_B_UNOP_first = get_cv("B::UNOP::first", TRUE);
+    Runops_Trace_B_UNOP_first_xsub = CvXSUB(Runops_Trace_B_UNOP_first);
+
+    Runops_Trace_fakeop_sv = sv_bless(newRV_noinc(newSVuv((UV)&Runops_Trace_fakeop)), gv_stashpv("B::UNOP", 0));
+
     Runops_Trace_loaded_B = 1;
   }
 }
@@ -336,6 +348,8 @@
     croak("the hook must be a code reference");
   }
 
+  Runops_Trace_load_B(aTHX);
+
   Runops_Trace_clear_perl_hook(aTHX);
 
   /* Initialize/set the tracing function */
@@ -430,7 +444,6 @@
 PROTOTYPES: ENABLE
 
 BOOT:
-  Runops_Trace_fakeop_sv = sv_bless(newRV_noinc(newSVuv((UV)&Runops_Trace_fakeop)), gv_stashpv("B::UNOP", 0));
   Runops_Trace_clear_hook();
   Runops_Trace_old_runops = PL_runops;
   PL_runops = runops_trace;

Modified: Runops-Trace/trunk/lib/Runops/Trace.pm
==============================================================================
--- Runops-Trace/trunk/lib/Runops/Trace.pm	(original)
+++ Runops-Trace/trunk/lib/Runops/Trace.pm	Sun Jul 27 11:31:05 2008
@@ -10,9 +10,6 @@
 
 our $VERSION = '0.11';
 
-# load XS_B__UNOP_first
-BEGIN { require B };
-
 use DynaLoader ();
 our @ISA = qw( DynaLoader Exporter );
 Runops::Trace->bootstrap($VERSION);


More information about the Jifty-commit mailing list