Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r76485:8438bb05ecf2
Date: 2015-03-21 09:21 +0100
http://bitbucket.org/pypy/pypy/changeset/8438bb05ecf2/

Log:    Test and fix for EmptyProfiler

diff --git a/rpython/jit/metainterp/jitprof.py 
b/rpython/jit/metainterp/jitprof.py
--- a/rpython/jit/metainterp/jitprof.py
+++ b/rpython/jit/metainterp/jitprof.py
@@ -44,7 +44,10 @@
         pass
 
     def get_counter(self, num):
-        return -1.0
+        return 0
+
+    def get_times(self, num):
+        return 0.0
 
 class Profiler(BaseProfiler):
     initialized = False
@@ -109,6 +112,9 @@
             return self.cpu.tracker.total_freed_bridges
         return self.counters[num]
 
+    def get_times(self, num):
+        return self.times[num]
+
     def count_ops(self, opnum, kind=Counters.OPS):
         from rpython.jit.metainterp.resoperation import rop
         self.counters[kind] += 1
diff --git a/rpython/jit/metainterp/test/test_jitiface.py 
b/rpython/jit/metainterp/test/test_jitiface.py
--- a/rpython/jit/metainterp/test/test_jitiface.py
+++ b/rpython/jit/metainterp/test/test_jitiface.py
@@ -5,7 +5,7 @@
 from rpython.jit.codewriter.policy import JitPolicy
 from rpython.jit.metainterp.resoperation import rop
 from rpython.rtyper.annlowlevel import hlstr
-from rpython.jit.metainterp.jitprof import Profiler
+from rpython.jit.metainterp.jitprof import Profiler, EmptyProfiler
 
 
 class JitHookInterfaceTests(object):
@@ -178,6 +178,20 @@
 
         self.meta_interp(main, [], ProfilerClass=Profiler)
 
+    def test_get_stats_empty(self):
+        driver = JitDriver(greens = [], reds = ['i'])
+        def loop(i):
+            while i > 0:
+                driver.jit_merge_point(i=i)
+                i -= 1
+        def main():
+            loop(30)
+            assert jit_hooks.stats_get_counter_value(None,
+                                           Counters.TOTAL_COMPILED_LOOPS) == 0
+            assert jit_hooks.stats_get_times_value(None, Counters.TRACING) == 0
+        self.meta_interp(main, [], ProfilerClass=EmptyProfiler)
+
+
 class LLJitHookInterfaceTests(JitHookInterfaceTests):
     # use this for any backend, instead of the super class
     
diff --git a/rpython/rlib/jit_hooks.py b/rpython/rlib/jit_hooks.py
--- a/rpython/rlib/jit_hooks.py
+++ b/rpython/rlib/jit_hooks.py
@@ -130,7 +130,7 @@
 
 @register_helper(annmodel.SomeFloat())
 def stats_get_times_value(warmrunnerdesc, no):
-    return warmrunnerdesc.metainterp_sd.profiler.times[no]
+    return warmrunnerdesc.metainterp_sd.profiler.get_times(no)
 
 LOOP_RUN_CONTAINER = lltype.GcArray(lltype.Struct('elem',
                                                   ('type', lltype.Char),
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to