[pypy-commit] pypy jit-counter: Fix for tests
arigo
noreply at buildbot.pypy.org
Wed Oct 30 19:48:09 CET 2013
Author: Armin Rigo <arigo at tunes.org>
Branch: jit-counter
Changeset: r67750:7ab619834c25
Date: 2013-10-30 19:47 +0100
http://bitbucket.org/pypy/pypy/changeset/7ab619834c25/
Log: Fix for tests
diff --git a/rpython/jit/metainterp/compile.py b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -583,7 +583,7 @@
intval = metainterp_sd.cpu.get_int_value(deadframe, index)
elif typetag == self.TY_REF:
refval = metainterp_sd.cpu.get_ref_value(deadframe, index)
- intval = current_object_addr_as_int(refval)
+ intval = lltype.cast_ptr_to_int(refval)
elif typetag == self.TY_FLOAT:
floatval = metainterp_sd.cpu.get_float_value(deadframe, index)
intval = longlong.gethash_fast(floatval)
diff --git a/rpython/jit/metainterp/counter.py b/rpython/jit/metainterp/counter.py
--- a/rpython/jit/metainterp/counter.py
+++ b/rpython/jit/metainterp/counter.py
@@ -30,7 +30,7 @@
return 0.0 # no increment, never reach 1.0
if threshold < 2:
threshold = 2
- return 1.0 / threshold # the number is at most 0.5
+ return 1.0 / (threshold - 0.001) # the number is at most 0.500xx
def get_index(self, hash):
"""Return the index (< self.size) from a hash value. This keeps
@@ -110,3 +110,21 @@
pypy__decay_jit_counters = rffi.llexternal(
"pypy__decay_jit_counters", [rffi.FLOATP, lltype.Float, lltype.Signed],
lltype.Void, compilation_info=eci, _nowrapper=True, sandboxsafe=True)
+
+
+# ____________________________________________________________
+#
+# A non-RPython version that avoids issues with rare random collisions,
+# which make all tests brittle
+
+class DeterministicJitCounter(JitCounter):
+ def __init__(self):
+ from collections import defaultdict
+ JitCounter.__init__(self, size=8)
+ zero = r_singlefloat(0.0)
+ self.timetable = defaultdict(lambda: zero)
+ self.celltable = defaultdict(lambda: None)
+
+ def get_index(self, hash):
+ "NOT_RPYTHON"
+ return hash
diff --git a/rpython/jit/metainterp/warmspot.py b/rpython/jit/metainterp/warmspot.py
--- a/rpython/jit/metainterp/warmspot.py
+++ b/rpython/jit/metainterp/warmspot.py
@@ -205,8 +205,11 @@
vrefinfo = VirtualRefInfo(self)
self.codewriter.setup_vrefinfo(vrefinfo)
#
- from rpython.jit.metainterp.counter import JitCounter
- self.jitcounter = JitCounter()
+ from rpython.jit.metainterp import counter
+ if self.cpu.translate_support_code:
+ self.jitcounter = counter.JitCounter()
+ else:
+ self.jitcounter = counter.DeterministicJitCounter()
#
self.hooks = policy.jithookiface
self.make_virtualizable_infos()
More information about the pypy-commit
mailing list