[pypy-svn] r76139 - in pypy/branch/kill-caninline/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Mon Jul 12 14:59:41 CEST 2010
Author: arigo
Date: Mon Jul 12 14:59:40 2010
New Revision: 76139
Modified:
pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_virtualizable.py
pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_warmstate.py
pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_ztranslation.py
pypy/branch/kill-caninline/pypy/jit/metainterp/warmstate.py
Log:
Fix tests.
Modified: pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_virtualizable.py
==============================================================================
--- pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_virtualizable.py (original)
+++ pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_virtualizable.py Mon Jul 12 14:59:40 2010
@@ -1330,11 +1330,9 @@
def p(pc, code):
code = hlstr(code)
return "%s %d %s" % (code, pc, code[pc])
- def c(pc, code):
- return "l" not in hlstr(code)
myjitdriver = JitDriver(greens=['pc', 'code'], reds=['frame'],
virtualizables=["frame"],
- get_printable_location=p, can_inline=c)
+ get_printable_location=p)
def f(code, frame):
pc = 0
while pc < len(code):
Modified: pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_warmstate.py
==============================================================================
--- pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_warmstate.py (original)
+++ pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_warmstate.py Mon Jul 12 14:59:40 2010
@@ -61,12 +61,14 @@
_green_args_spec = [lltype.Signed, lltype.Float]
state = WarmEnterState(None, FakeJitDriverSD())
get_jitcell = state._make_jitcell_getter_default()
- cell1 = get_jitcell(42, 42.5)
+ cell1 = get_jitcell(True, 42, 42.5)
assert isinstance(cell1, JitCell)
- cell2 = get_jitcell(42, 42.5)
+ cell2 = get_jitcell(True, 42, 42.5)
assert cell1 is cell2
- cell3 = get_jitcell(41, 42.5)
- cell4 = get_jitcell(42, 0.25)
+ cell3 = get_jitcell(True, 41, 42.5)
+ assert get_jitcell(False, 42, 0.25) is None
+ cell4 = get_jitcell(True, 42, 0.25)
+ assert get_jitcell(False, 42, 0.25) is cell4
assert cell1 is not cell3 is not cell4 is not cell1
def test_make_jitcell_getter():
@@ -75,8 +77,8 @@
_get_jitcell_at_ptr = None
state = WarmEnterState(None, FakeJitDriverSD())
get_jitcell = state.make_jitcell_getter()
- cell1 = get_jitcell(1.75)
- cell2 = get_jitcell(1.75)
+ cell1 = get_jitcell(True, 1.75)
+ cell2 = get_jitcell(True, 1.75)
assert cell1 is cell2
assert get_jitcell is state.make_jitcell_getter()
@@ -103,14 +105,16 @@
#
state = WarmEnterState(FakeWarmRunnerDesc(), FakeJitDriverSD())
get_jitcell = state._make_jitcell_getter_custom()
- cell1 = get_jitcell(5, 42.5)
+ cell1 = get_jitcell(True, 5, 42.5)
assert isinstance(cell1, JitCell)
assert cell1.x == 5
assert cell1.y == 42.5
- cell2 = get_jitcell(5, 42.5)
+ cell2 = get_jitcell(True, 5, 42.5)
assert cell2 is cell1
- cell3 = get_jitcell(41, 42.5)
- cell4 = get_jitcell(42, 0.25)
+ cell3 = get_jitcell(True, 41, 42.5)
+ assert get_jitcell(False, 42, 0.25) is None
+ cell4 = get_jitcell(True, 42, 0.25)
+ assert get_jitcell(False, 42, 0.25) is cell4
assert cell1 is not cell3 is not cell4 is not cell1
def test_make_set_future_values():
@@ -153,52 +157,25 @@
state.attach_unoptimized_bridge_from_interp([ConstInt(5),
ConstFloat(2.25)],
"entry loop token")
- cell1 = get_jitcell(5, 2.25)
+ cell1 = get_jitcell(True, 5, 2.25)
assert cell1.counter < 0
assert cell1.entry_loop_token == "entry loop token"
def test_make_jitdriver_callbacks_1():
class FakeJitDriverSD:
_green_args_spec = [lltype.Signed, lltype.Float]
- _can_inline_ptr = None
_get_printable_location_ptr = None
_confirm_enter_jit_ptr = None
class FakeCell:
dont_trace_here = False
state = WarmEnterState(None, FakeJitDriverSD())
- def jit_getter(*args):
+ def jit_getter(build, *args):
return FakeCell()
state.jit_getter = jit_getter
state.make_jitdriver_callbacks()
- res = state.can_inline_callable([ConstInt(5), ConstFloat(42.5)])
- assert res is True
res = state.get_location_str([ConstInt(5), ConstFloat(42.5)])
assert res == '(no jitdriver.get_printable_location!)'
-def test_make_jitdriver_callbacks_2():
- def can_inline(x, y):
- assert x == 5
- assert y == 42.5
- return False
- CAN_INLINE = lltype.Ptr(lltype.FuncType([lltype.Signed, lltype.Float],
- lltype.Bool))
- class FakeCell:
- dont_trace_here = False
- class FakeWarmRunnerDesc:
- rtyper = None
- class FakeJitDriverSD:
- _green_args_spec = [lltype.Signed, lltype.Float]
- _can_inline_ptr = llhelper(CAN_INLINE, can_inline)
- _get_printable_location_ptr = None
- _confirm_enter_jit_ptr = None
- state = WarmEnterState(FakeWarmRunnerDesc(), FakeJitDriverSD())
- def jit_getter(*args):
- return FakeCell()
- state.jit_getter = jit_getter
- state.make_jitdriver_callbacks()
- res = state.can_inline_callable([ConstInt(5), ConstFloat(42.5)])
- assert res is False
-
def test_make_jitdriver_callbacks_3():
def get_location(x, y):
assert x == 5
@@ -210,7 +187,6 @@
rtyper = None
class FakeJitDriverSD:
_green_args_spec = [lltype.Signed, lltype.Float]
- _can_inline_ptr = None
_get_printable_location_ptr = llhelper(GET_LOCATION, get_location)
_confirm_enter_jit_ptr = None
_get_jitcell_at_ptr = None
@@ -231,7 +207,6 @@
rtyper = None
class FakeJitDriverSD:
_green_args_spec = [lltype.Signed, lltype.Float]
- _can_inline_ptr = None
_get_printable_location_ptr = None
_confirm_enter_jit_ptr = llhelper(ENTER_JIT, confirm_enter_jit)
_get_jitcell_at_ptr = None
Modified: pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_ztranslation.py
==============================================================================
--- pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_ztranslation.py (original)
+++ pypy/branch/kill-caninline/pypy/jit/metainterp/test/test_ztranslation.py Mon Jul 12 14:59:40 2010
@@ -37,15 +37,12 @@
return jitcellcache.entry
def get_printable_location():
return '(hello world)'
- def can_inline():
- return False
jitdriver = JitDriver(greens = [], reds = ['total', 'frame'],
virtualizables = ['frame'],
get_jitcell_at=get_jitcell_at,
set_jitcell_at=set_jitcell_at,
- get_printable_location=get_printable_location,
- can_inline=can_inline)
+ get_printable_location=get_printable_location)
def f(i):
for param in unroll_parameters:
defl = PARAMETERS[param]
@@ -63,8 +60,7 @@
frame.i -= 1
return total * 10
#
- myjitdriver2 = JitDriver(greens = ['g'], reds = ['m', 'x'],
- can_inline = lambda *args: False)
+ myjitdriver2 = JitDriver(greens = ['g'], reds = ['m', 'x'])
def f2(g, m, x):
while m > 0:
myjitdriver2.can_enter_jit(g=g, m=m, x=x)
Modified: pypy/branch/kill-caninline/pypy/jit/metainterp/warmstate.py
==============================================================================
--- pypy/branch/kill-caninline/pypy/jit/metainterp/warmstate.py (original)
+++ pypy/branch/kill-caninline/pypy/jit/metainterp/warmstate.py Mon Jul 12 14:59:40 2010
@@ -232,7 +232,7 @@
# look for the cell corresponding to the current greenargs
greenargs = args[:num_green_args]
- cell = get_jitcell(*greenargs)
+ cell = get_jitcell(True, *greenargs)
if cell.counter >= 0:
# update the profiling counter
@@ -316,17 +316,16 @@
return self.jit_getter
#
if self.jitdriver_sd._get_jitcell_at_ptr is None:
- jit_getter_maybe, jit_getter = self._make_jitcell_getter_default()
+ jit_getter = self._make_jitcell_getter_default()
else:
- jit_getter_maybe, jit_getter = self._make_jitcell_getter_custom()
+ jit_getter = self._make_jitcell_getter_custom()
#
unwrap_greenkey = self.make_unwrap_greenkey()
#
def jit_cell_at_key(greenkey):
greenargs = unwrap_greenkey(greenkey)
- return jit_getter(*greenargs)
+ return jit_getter(True, *greenargs)
self.jit_cell_at_key = jit_cell_at_key
- self.jit_getter_maybe = jit_getter_maybe
self.jit_getter = jit_getter
#
return jit_getter
@@ -356,16 +355,16 @@
#
jitcell_dict = r_dict(comparekey, hashkey)
#
- def get_jitcell(*greenargs):
- return jitcell_dict.get(greenargs, None)
- def get_or_build_jitcell(*greenargs):
+ def get_jitcell(build, *greenargs):
try:
cell = jitcell_dict[greenargs]
except KeyError:
+ if not build:
+ return None
cell = JitCell()
jitcell_dict[greenargs] = cell
return cell
- return get_jitcell, get_or_build_jitcell
+ return get_jitcell
def _make_jitcell_getter_custom(self):
"NOT_RPYTHON"
@@ -374,47 +373,47 @@
set_jitcell_at_ptr = self.jitdriver_sd._set_jitcell_at_ptr
lltohlhack = {}
#
- def get_jitcell(*greenargs):
+ def get_jitcell(build, *greenargs):
fn = support.maybe_on_top_of_llinterp(rtyper, get_jitcell_at_ptr)
cellref = fn(*greenargs)
# <hacks>
if we_are_translated():
BASEJITCELL = lltype.typeOf(cellref)
cell = cast_base_ptr_to_instance(JitCell, cellref)
- elif isinstance(cellref, (BaseJitCell, type(None))):
- BASEJITCELL = None
- cell = cellref
else:
- BASEJITCELL = lltype.typeOf(cellref)
- if cellref:
- cell = lltohlhack[rtyper.type_system.deref(cellref)]
+ if isinstance(cellref, (BaseJitCell, type(None))):
+ BASEJITCELL = None
+ cell = cellref
else:
- cell = None
- # </hacks>
- return cell
- def get_or_build_jitcell(*greenargs):
- cell = get_jitcell_or_none(greenargs)
+ BASEJITCELL = lltype.typeOf(cellref)
+ if cellref:
+ cell = lltohlhack[rtyper.type_system.deref(cellref)]
+ else:
+ cell = None
+ if not build:
+ return cell
if cell is None:
cell = JitCell()
# <hacks>
if we_are_translated():
cellref = cast_object_to_ptr(BASEJITCELL, cell)
- elif BASEJITCELL is None:
- cellref = cell
else:
- if isinstance(BASEJITCELL, lltype.Ptr):
- cellref = lltype.malloc(BASEJITCELL.TO)
- elif isinstance(BASEJITCELL, ootype.Instance):
- cellref = ootype.new(BASEJITCELL)
+ if BASEJITCELL is None:
+ cellref = cell
else:
- assert False, "no clue"
- lltohlhack[rtyper.type_system.deref(cellref)] = cell
+ if isinstance(BASEJITCELL, lltype.Ptr):
+ cellref = lltype.malloc(BASEJITCELL.TO)
+ elif isinstance(BASEJITCELL, ootype.Instance):
+ cellref = ootype.new(BASEJITCELL)
+ else:
+ assert False, "no clue"
+ lltohlhack[rtyper.type_system.deref(cellref)] = cell
# </hacks>
fn = support.maybe_on_top_of_llinterp(rtyper,
set_jitcell_at_ptr)
fn(cellref, *greenargs)
return cell
- return get_jitcell, get_or_build_jitcell
+ return get_jitcell
# ----------
@@ -475,11 +474,10 @@
return
#
unwrap_greenkey = self.make_unwrap_greenkey()
- self.make_jitcell_getter()
- jit_getter_maybe = self.jit_getter_maybe
+ jit_getter = self.make_jitcell_getter()
def can_inline_greenargs(*greenargs):
- cell = jit_getter_maybe(*greenargs)
+ cell = jit_getter(False, *greenargs)
if cell is not None and cell.dont_trace_here:
return False
return True
@@ -491,7 +489,7 @@
def get_assembler_token(greenkey):
greenargs = unwrap_greenkey(greenkey)
- cell = jit_getter_maybe(*greenargs)
+ cell = jit_getter(False, *greenargs)
if cell is None or cell.counter >= 0:
return None
return cell.entry_loop_token
More information about the Pypy-commit
mailing list