Author: Maciej Fijalkowski <fij...@gmail.com>
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
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to