[pypy-svn] r69904 - in pypy/branch/virtual-forcing/pypy/jit/metainterp: . test

arigo at codespeak.net arigo at codespeak.net
Fri Dec 4 20:53:08 CET 2009


Author: arigo
Date: Fri Dec  4 20:53:07 2009
New Revision: 69904

Modified:
   pypy/branch/virtual-forcing/pypy/jit/metainterp/compile.py
   pypy/branch/virtual-forcing/pypy/jit/metainterp/pyjitpl.py
   pypy/branch/virtual-forcing/pypy/jit/metainterp/test/test_virtualizable.py
Log:
Fix.


Modified: pypy/branch/virtual-forcing/pypy/jit/metainterp/compile.py
==============================================================================
--- pypy/branch/virtual-forcing/pypy/jit/metainterp/compile.py	(original)
+++ pypy/branch/virtual-forcing/pypy/jit/metainterp/compile.py	Fri Dec  4 20:53:07 2009
@@ -237,7 +237,10 @@
         from pypy.jit.metainterp.pyjitpl import MetaInterp
         metainterp = MetaInterp(metainterp_sd)
         token = metainterp_sd.cpu.get_latest_force_token()
-        metainterp._already_allocated_resume_virtuals = self.fetch_data(token)
+        data = self.fetch_data(token)
+        if data is None:
+            data = []
+        metainterp._already_allocated_resume_virtuals = data
         self.counter = -2     # never compile
         return metainterp.handle_guard_failure(self)
 

Modified: pypy/branch/virtual-forcing/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/virtual-forcing/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/branch/virtual-forcing/pypy/jit/metainterp/pyjitpl.py	Fri Dec  4 20:53:07 2009
@@ -1821,6 +1821,11 @@
         virtualizable_boxes = resume.rebuild_from_resumedata(self, newboxes, resumedescr, expect_virtualizable)
         if expect_virtualizable:
             self.virtualizable_boxes = virtualizable_boxes
+            if self._already_allocated_resume_virtuals is not None:
+                # resuming from a ResumeGuardForcedDescr: load the new values
+                # currently stored on the virtualizable fields
+                self.load_fields_from_virtualizable()
+                return
             # just jumped away from assembler (case 4 in the comment in
             # virtualizable.py) into tracing (case 2); check that vable_rti
             # is and stays NULL.

Modified: pypy/branch/virtual-forcing/pypy/jit/metainterp/test/test_virtualizable.py
==============================================================================
--- pypy/branch/virtual-forcing/pypy/jit/metainterp/test/test_virtualizable.py	(original)
+++ pypy/branch/virtual-forcing/pypy/jit/metainterp/test/test_virtualizable.py	Fri Dec  4 20:53:07 2009
@@ -905,7 +905,6 @@
             return frame.y
 
         res = self.meta_interp(f, [123], policy=StopAtXPolicy(g))
-        py.test.skip("in-progress")
         assert res == f(123)
 
     def test_promote_index_in_virtualizable_list(self):



More information about the Pypy-commit mailing list