[pypy-commit] pypy jit-targets: reenable autoconstruction of jump descr in oparser

hakanardo noreply at buildbot.pypy.org
Wed Nov 23 19:18:35 CET 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-targets
Changeset: r49701:175f0efa03c1
Date: 2011-11-23 19:18 +0100
http://bitbucket.org/pypy/pypy/changeset/175f0efa03c1/

Log:	reenable autoconstruction of jump descr in oparser

diff --git a/pypy/jit/tool/oparser.py b/pypy/jit/tool/oparser.py
--- a/pypy/jit/tool/oparser.py
+++ b/pypy/jit/tool/oparser.py
@@ -70,7 +70,7 @@
         self.invent_fail_descr = invent_fail_descr
         self.nonstrict = nonstrict
         self.model = get_model(self.use_mock_model)
-        self.celltoken = self.model.JitCellToken()
+        self.original_jitcell_token = self.model.JitCellToken()
 
     def get_const(self, name, typ):
         if self._consts is None:
@@ -241,9 +241,10 @@
             if opnum == rop.FINISH:
                 if descr is None and self.invent_fail_descr:
                     descr = self.invent_fail_descr(self.model, fail_args)
-##            elif opnum == rop.JUMP:
-##                if descr is None and self.invent_fail_descr:
-##                    ...
+            elif opnum == rop.JUMP:
+                if descr is None and self.invent_fail_descr:
+                    descr = self.original_jitcell_token
+
         return opnum, args, descr, fail_args
 
     def create_op(self, opnum, args, result, descr):
@@ -307,6 +308,7 @@
             raise ParseError("unexpected dedent at line: %s" % newlines[num])
         loop = self.model.ExtendedTreeLoop("loop")
         loop.comment = first_comment
+        loop.original_jitcell_token = self.original_jitcell_token
         loop.operations = ops
         loop.inputargs = inpargs
         loop.last_offset = last_offset
diff --git a/pypy/jit/tool/oparser_model.py b/pypy/jit/tool/oparser_model.py
--- a/pypy/jit/tool/oparser_model.py
+++ b/pypy/jit/tool/oparser_model.py
@@ -33,13 +33,13 @@
     return LoopModel
 
 def get_mock_model():
-    class LoopModel(object):
+    class MockLoopModel(object):
 
         class TreeLoop(object):
             def __init__(self, name):
                 self.name = name
 
-        class LoopToken(object):
+        class JitCellToken(object):
             I_am_a_descr = True
 
         class BasicFailDescr(object):
@@ -107,9 +107,9 @@
         class llhelper(object):
             pass
 
-    LoopModel.llhelper.BoxRef = LoopModel.BoxRef
+    MockLoopModel.llhelper.BoxRef = MockLoopModel.BoxRef
 
-    return LoopModel
+    return MockLoopModel
 
 
 def get_model(use_mock):
diff --git a/pypy/jit/tool/test/test_oparser.py b/pypy/jit/tool/test/test_oparser.py
--- a/pypy/jit/tool/test/test_oparser.py
+++ b/pypy/jit/tool/test/test_oparser.py
@@ -119,7 +119,7 @@
         jump()
         '''
         loop = self.parse(x)
-        assert loop.operations[0].getdescr() is loop.token
+        assert loop.operations[0].getdescr() is loop.original_jitcell_token
 
     def test_jump_target_other(self):
         looptoken = JitCellToken()


More information about the pypy-commit mailing list