[pypy-commit] pypy result-in-resops: hack some more to make oparser working again

fijal noreply at buildbot.pypy.org
Thu Sep 20 19:18:39 CEST 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: result-in-resops
Changeset: r57408:0259dfa5dd29
Date: 2012-09-20 18:47 +0200
http://bitbucket.org/pypy/pypy/changeset/0259dfa5dd29/

Log:	hack some more to make oparser working again

diff --git a/pypy/jit/codewriter/support.py b/pypy/jit/codewriter/support.py
--- a/pypy/jit/codewriter/support.py
+++ b/pypy/jit/codewriter/support.py
@@ -91,7 +91,7 @@
     assert len(reds_v) == numreds
     #
     def _sort(args_v, is_green):
-        from pypy.jit.metainterp.history import getkind
+        from pypy.jit.metainterp.resoperation import getkind
         lst = [v for v in args_v if v.concretetype is not lltype.Void]
         if is_green:
             assert len(lst) == len(args_v), (
diff --git a/pypy/jit/metainterp/warmspot.py b/pypy/jit/metainterp/warmspot.py
--- a/pypy/jit/metainterp/warmspot.py
+++ b/pypy/jit/metainterp/warmspot.py
@@ -17,7 +17,7 @@
 from pypy.translator.backendopt import removenoops
 from pypy.translator.unsimplify import call_final_function
 
-from pypy.jit.metainterp import history, pyjitpl, gc, memmgr
+from pypy.jit.metainterp import history, pyjitpl, gc, memmgr, resoperation
 from pypy.jit.metainterp.pyjitpl import MetaInterpStaticData
 from pypy.jit.metainterp.jitprof import Profiler, EmptyProfiler
 from pypy.jit.metainterp.jitexc import JitException
@@ -280,8 +280,8 @@
         graph.func._jit_unroll_safe_ = True
         jd.jitdriver = block.operations[pos].args[1].value
         jd.portal_runner_ptr = "<not set so far>"
-        jd.result_type = history.getkind(jd.portal_graph.getreturnvar()
-                                         .concretetype)[0]
+        jd.result_type = resoperation.getkind(jd.portal_graph.getreturnvar()
+                                              .concretetype)[0]
         self.jitdrivers_sd.append(jd)
 
     def check_access_directly_sanity(self, graphs):
@@ -530,7 +530,7 @@
         greens_v, reds_v = support.decode_hp_hint_args(op)
         ALLARGS = [v.concretetype for v in (greens_v + reds_v)]
         jd._green_args_spec = [v.concretetype for v in greens_v]
-        jd.red_args_types = [history.getkind(v.concretetype) for v in reds_v]
+        jd.red_args_types = [resoperation.getkind(v.concretetype) for v in reds_v]
         jd.num_green_args = len(jd._green_args_spec)
         jd.num_red_args = len(jd.red_args_types)
         RESTYPE = graph.getreturnvar().concretetype
@@ -541,11 +541,11 @@
         #
         if jd.result_type == 'v':
             ASMRESTYPE = lltype.Void
-        elif jd.result_type == history.INT:
+        elif jd.result_type == resoperation.INT:
             ASMRESTYPE = lltype.Signed
-        elif jd.result_type == history.REF:
+        elif jd.result_type == resoperation.REF:
             ASMRESTYPE = llmemory.GCREF
-        elif jd.result_type == history.FLOAT:
+        elif jd.result_type == resoperation.FLOAT:
             ASMRESTYPE = lltype.Float
         else:
             assert False
@@ -704,7 +704,7 @@
         portalfunc_ARGS = []
         nums = {}
         for i, ARG in enumerate(PORTALFUNC.ARGS):
-            kind = history.getkind(ARG)
+            kind = resoperation.getkind(ARG)
             assert kind != 'void'
             if i < len(jd.jitdriver.greens):
                 color = 'green'
@@ -718,7 +718,7 @@
         #
         rtyper = self.translator.rtyper
         RESULT = PORTALFUNC.RESULT
-        result_kind = history.getkind(RESULT)
+        result_kind = resoperation.getkind(RESULT)
         ts = self.cpu.ts
 
         def ll_portal_runner(*args):
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
@@ -250,16 +250,11 @@
                             raise ParseError(
                                 "Unknown var in fail_args: %s" % arg)
                     fail_args.append(fail_arg)
-            if descr is None and self.invent_fail_descr:
-                descr = self.invent_fail_descr(self.model, fail_args)
             if hasattr(descr, '_oparser_uses_descr_of_guard'):
                 descr._oparser_uses_descr_of_guard(self, fail_args)
         else:
             fail_args = None
-            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 opnum == rop.JUMP:
                 if descr is None and self.invent_fail_descr:
                     descr = self.original_jitcell_token
 
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
@@ -3,8 +3,8 @@
 from pypy.rpython.lltypesystem import lltype, llmemory
 
 from pypy.jit.tool.oparser import parse, OpParser
-from pypy.jit.metainterp.resoperation import rop
-from pypy.jit.metainterp.history import AbstractDescr, BoxInt, JitCellToken,\
+from pypy.jit.metainterp.resoperation import rop, BoxInt
+from pypy.jit.metainterp.history import AbstractDescr, JitCellToken,\
      TargetToken
 
 class BaseTestOparser(object):
@@ -28,7 +28,8 @@
         assert [op.getopnum() for op in loop.operations] == [rop.INT_ADD, rop.INT_SUB,
                                                         rop.FINISH]
         assert len(loop.inputargs) == 2
-        assert loop.operations[-1].getdescr()
+        #assert loop.operations[-1].getdescr()
+        # descr is invented by optimizations
 
     def test_const_ptr_subops(self):
         x = """
@@ -39,7 +40,8 @@
         vtable = lltype.nullptr(S)
         loop = self.parse(x, None, locals())
         assert len(loop.operations) == 1
-        assert loop.operations[0].getdescr()
+        #assert loop.operations[0].getdescr()
+        # descr is invented by optimizations
         assert loop.operations[0].get_extra("failargs") == []
 
     def test_descr(self):


More information about the pypy-commit mailing list