[Jifty-commit] r5426 - Runops-Hook/trunk

Jifty commits jifty-commit at lists.jifty.org
Sat May 10 07:45:29 EDT 2008


Author: nothingmuch
Date: Sat May 10 07:45:29 2008
New Revision: 5426

Modified:
   Runops-Hook/trunk/Hook.xs

Log:
integrate Trace.xs code into Hook.xs

Modified: Runops-Hook/trunk/Hook.xs
==============================================================================
--- Runops-Hook/trunk/Hook.xs	(original)
+++ Runops-Hook/trunk/Hook.xs	Sat May 10 07:45:29 2008
@@ -294,9 +294,20 @@
 }
 
 void
+Runops_Hook_load_B (pTHX) {
+  if (!Runops_Hook_loaded_B) {
+    load_module( PERL_LOADMOD_NOIMPORT, newSVpv("B", 0), newSViv(0) );
+    Runops_Hook_fakeop_sv = sv_bless(newRV_noinc(newSVuv((UV)&Runops_Hook_fakeop)), gv_stashpv("B::UNOP", 0));
+    Runops_Hook_loaded_B = 1;
+  }
+}
+
+void
 Runops_Hook_set_perl_hook (pTHX_ SV *hook) {
   Runops_Hook_clear_perl_hook(aTHX);
 
+  Runops_Hook_load_B(aTHX);
+
   Runops_Hook_perl_hook = hook;
   SvREFCNT_inc(Runops_Hook_perl_hook);
 
@@ -313,14 +324,6 @@
   Runops_Hook_threshold = t;
 }
 
-void
-Runops_Hook_load_B (pTHX) {
-  if (!Runops_Hook_loaded_B) {
-    load_module( PERL_LOADMOD_NOIMPORT, newSVpv("B", 0), newSViv(0) );
-    Runops_Hook_fakeop_sv = sv_bless(newRV_noinc(newSVuv((UV)&Runops_Hook_fakeop)), gv_stashpv("B::UNOP", 0));
-    Runops_Hook_loaded_B = 1;
-  }
-}
 
 MODULE = Runops::Hook PACKAGE = Runops::Hook
 
@@ -328,7 +331,8 @@
 
 BOOT:
   Runops_Hook_clear_hook();
-    PL_runops = runops_trace;
+  old_runops = PL_runops;
+  PL_runops = runops_trace;
 
 HV *
 counters()
@@ -385,7 +389,6 @@
 set_hook(SV *hook)
   CODE:
 {
-  Runops_Hook_load_B(aTHX);
   Runops_Hook_set_perl_hook(aTHX_ hook);
 }
 
@@ -411,3 +414,30 @@
   Runops_Hook_perl_ignore_ret = 0;
 }
 
+void
+_trace_function( tracer_rv, to_trace_rv)
+    SV * tracer_rv
+    SV * to_trace_rv
+  PROTOTYPE: $$
+  CODE:
+    Runops_Hook_set_perl_hook( aTHX_ tracer_rv );
+
+    /* Call the function to trace */
+    Runops_Hook_enable();
+    call_sv( to_trace_rv, G_VOID | G_DISCARD | G_EVAL | G_KEEPERR );
+    Runops_Hook_disable();
+
+void
+enable_global_tracing(tracer_rv)
+    SV * tracer_rv
+  PROTOTYPE: $
+  CODE:
+    Runops_Hook_set_perl_hook( aTHX_ tracer_rv );
+    Runops_Hook_enable();
+
+void
+disable_global_tracing()
+  PROTOTYPE:
+  CODE:
+    Runops_Hook_disable();
+


More information about the Jifty-commit mailing list