[pypy-svn] r52941 - in pypy/branch/jit-hotpath/pypy/jit: rainbow rainbow/test timeshifter

antocuni at codespeak.net antocuni at codespeak.net
Tue Mar 25 21:03:46 CET 2008


Author: antocuni
Date: Tue Mar 25 21:03:44 2008
New Revision: 52941

Modified:
   pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py
   pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_interpreter.py
   pypy/branch/jit-hotpath/pypy/jit/timeshifter/rtimeshift.py
   pypy/branch/jit-hotpath/pypy/jit/timeshifter/rvalue.py
Log:
test_green_with_side_effects passes for ootype



Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py	Tue Mar 25 21:03:44 2008
@@ -1033,6 +1033,11 @@
         return rtimeshift.gengetfield(self.jitstate, deepfrozen, fielddesc,
                                       structbox)
 
+    @arguments("red", "fielddesc", "red")
+    def opimpl_red_oosetfield(self, destbox, fielddesc, valuebox):
+        rtimeshift.gensetfield(self.jitstate, fielddesc, destbox,
+                               valuebox)
+
 
 class DebugTrace(object):
     def __init__(self, *args):

Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_interpreter.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_interpreter.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_interpreter.py	Tue Mar 25 21:03:44 2008
@@ -2015,8 +2015,6 @@
     def _skip(self):
         py.test.skip('in progress')
 
-    #test_green_with_side_effects = _skip
-    
     test_degenerated_before_return = _skip
     test_degenerated_before_return_2 = _skip
     test_degenerated_at_return = _skip

Modified: pypy/branch/jit-hotpath/pypy/jit/timeshifter/rtimeshift.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/timeshifter/rtimeshift.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/timeshifter/rtimeshift.py	Tue Mar 25 21:03:44 2008
@@ -170,7 +170,7 @@
     return argbox.op_getfield(jitstate, fielddesc)
 
 def gensetfield(jitstate, fielddesc, destbox, valuebox):
-    assert isinstance(destbox, rvalue.PtrRedBox)
+    assert isinstance(destbox, (rvalue.PtrRedBox, rvalue.InstanceRedBox))
     destbox.op_setfield(jitstate, fielddesc, valuebox)
 
 def ll_gengetsubstruct(jitstate, fielddesc, argbox):

Modified: pypy/branch/jit-hotpath/pypy/jit/timeshifter/rvalue.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/timeshifter/rvalue.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/timeshifter/rvalue.py	Tue Mar 25 21:03:44 2008
@@ -347,6 +347,16 @@
             self.remember_field(fielddesc, box)
         return box
 
+    def op_setfield(self, jitstate, fielddesc, valuebox):
+        self.learn_nonzeroness(jitstate, True)
+        gv_ptr = self.genvar
+        if gv_ptr:
+            fielddesc.generate_set(jitstate, gv_ptr,
+                                   valuebox.getgenvar(jitstate))
+        else:
+            assert self.content is not None
+            self.content.op_setfield(jitstate, fielddesc, valuebox)
+
     def remember_field(self, fielddesc, box):
         if self.genvar.is_const:
             return      # no point in remembering field then
@@ -358,16 +368,6 @@
 
 class PtrRedBox(AbstractPtrRedBox, LLTypeMixin):
 
-    def op_setfield(self, jitstate, fielddesc, valuebox):
-        self.learn_nonzeroness(jitstate, True)
-        gv_ptr = self.genvar
-        if gv_ptr:
-            fielddesc.generate_set(jitstate, gv_ptr,
-                                   valuebox.getgenvar(jitstate))
-        else:
-            assert self.content is not None
-            self.content.op_setfield(jitstate, fielddesc, valuebox)
-
     def op_getsubstruct(self, jitstate, fielddesc):
         self.learn_nonzeroness(jitstate, True)
         gv_ptr = self.genvar



More information about the Pypy-commit mailing list