Author: Maciej Fijalkowski <[email protected]>
Branch: kill-gen-store-back-in
Changeset: r62773:de81399b8ba6
Date: 2013-03-25 17:28 -0700
http://bitbucket.org/pypy/pypy/changeset/de81399b8ba6/
Log: write a test
diff --git a/rpython/jit/backend/test/runner_test.py
b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -348,7 +348,7 @@
i0 = BoxInt()
class UntouchableFailDescr(AbstractFailDescr):
final_descr = True
-
+
def __setattr__(self, name, value):
if (name == 'index' or name == '_carry_around_for_tests'
or name == '_TYPE' or name == '_cpu'):
@@ -3375,7 +3375,7 @@
calldescr = self.cpu.calldescrof(FUNC, FUNC.ARGS, FUNC.RESULT,
effectinfo)
testcases = [(4.0, 2.0), (6.25, 2.5)]
for arg, expected in testcases:
- res = self.execute_operation(rop.CALL,
+ res = self.execute_operation(rop.CALL,
[funcbox, boxfloat(arg)],
'float', descr=calldescr)
assert res.getfloat() == expected
@@ -3729,7 +3729,7 @@
# memory
assert values[0] == 0
- def test_compile_bridge_while_running(self):
+ def test_compile_bridge_while_running(self):
def func():
bridge = parse("""
[i1, i2, px]
@@ -3776,9 +3776,9 @@
func2_ptr = llhelper(FPTR2, func2)
calldescr2 = cpu.calldescrof(FUNC2, FUNC2.ARGS, FUNC2.RESULT,
EffectInfo.MOST_GENERAL)
-
+
faildescr = BasicFailDescr(0)
-
+
looptoken = JitCellToken()
loop = parse("""
[i0, i1, i2]
@@ -3794,7 +3794,7 @@
if not isinstance(self.cpu, AbstractLLCPU):
py.test.skip("pointless test on non-asm")
-
+
frame = lltype.cast_opaque_ptr(jitframe.JITFRAMEPTR, frame)
assert len(frame.jf_frame) == frame.jf_frame_info.jfi_frame_depth
ref = self.cpu.get_ref_value(frame, 9)
@@ -3856,9 +3856,33 @@
'calldescr': calldescr,
'faildescr': faildescr,
'finaldescr2': BasicFinalDescr(1)})
-
+
self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
frame = self.cpu.execute_token(looptoken, 1, 2, 3)
descr = self.cpu.get_latest_descr(frame)
assert descr.identifier == 42
assert not self.cpu.grab_exc_value(frame)
+
+ def test_force_virtualizable(self):
+
+ class FakeVinfo(object):
+ # for llgraph
+ def clear_vable_token(self, token):
+ lltype.cast_opaque_ptr(lltype.Ptr(S), token).x = 18
+
+ S = lltype.GcStruct('x', ('x', lltype.Signed))
+
+ pdescr = self.cpu.fielddescrof(S, 'x')
+ pdescr.vinfo = FakeVinfo()
+ loop = parse("""
+ [p0]
+ force_virtualizable(p0, descr=pdescr)
+ i1 = getfield_gc(p0, descr=pdescr)
+ finish(i1)
+ """, namespace={'pdescr': pdescr})
+ looptoken = JitCellToken()
+ self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ s = lltype.malloc(S)
+ s.x = 13
+ frame = self.cpu.execute_token(looptoken,
lltype.cast_opaque_ptr(llmemory.GCREF, s))
+ assert self.cpu.get_int_value(frame, 0) == 18
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit