[pypy-commit] pypy optresult: fix fix fix

fijal noreply at buildbot.pypy.org
Sun Nov 23 09:09:00 CET 2014


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r74645:fc8a57d8fa92
Date: 2014-11-23 10:08 +0200
http://bitbucket.org/pypy/pypy/changeset/fc8a57d8fa92/

Log:	fix fix fix

diff --git a/rpython/jit/metainterp/optimizeopt/heap.py b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -7,7 +7,7 @@
 from rpython.jit.metainterp.optimizeopt.optimizer import Optimization, MODE_ARRAY, LEVEL_KNOWNCLASS, REMOVED
 from rpython.jit.metainterp.optimizeopt.util import make_dispatcher_method
 from rpython.jit.metainterp.optimize import InvalidLoop
-from rpython.jit.metainterp.resoperation import rop, ResOperation
+from rpython.jit.metainterp.resoperation import rop, ResOperation, OpHelpers
 from rpython.rlib.objectmodel import we_are_translated
 
 
@@ -462,7 +462,7 @@
     optimize_GETFIELD_GC_PURE_F = optimize_GETFIELD_GC_PURE_I
 
     def optimize_SETFIELD_GC(self, op):
-        opnum = self.optimizer.getfield_pure_for_descr(op.getdescr())
+        opnum = OpHelpers.getfield_pure_for_descr(op.getdescr())
         if self.has_pure_result(opnum, [op.getarg(0)],
                                 op.getdescr()):
             os.write(2, '[bogus _immutable_field_ declaration: %s]\n' %
@@ -520,7 +520,7 @@
     optimize_GETARRAYITEM_GC_PURE_F = optimize_GETARRAYITEM_GC_PURE_I
 
     def optimize_SETARRAYITEM_GC(self, op):
-        opnum = self.optimizer.getarrayitem_pure_for_descr(op.getdescr())
+        opnum = OpHelpers.getarrayitem_pure_for_descr(op.getdescr())
         if self.has_pure_result(opnum, [op.getarg(0), op.getarg(1)],
                                 op.getdescr()):
             os.write(2, '[bogus immutable array declaration: %s]\n' %
diff --git a/rpython/jit/metainterp/optimizeopt/pure.py b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -1,5 +1,5 @@
 from rpython.jit.metainterp.optimizeopt.optimizer import Optimization, REMOVED
-from rpython.jit.metainterp.resoperation import rop, ResOperation
+from rpython.jit.metainterp.resoperation import rop, ResOperation, OpHelpers
 from rpython.jit.metainterp.optimizeopt.util import (make_dispatcher_method,
     args_dict)
 
@@ -82,7 +82,7 @@
 
         # replace CALL_PURE with just CALL
         args = op.getarglist()
-        opnum = self.optimizer.call_for_descr(op.getdescr())
+        opnum = OpHelpers.call_for_descr(op.getdescr())
         newop = ResOperation(opnum, args, op.getdescr())
         self.getvalue(op).box = newop
         self.emit_operation(newop)
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -8,7 +8,8 @@
 from rpython.jit.metainterp.optimizeopt.optimizer import (Optimization, REMOVED,
     CONST_0, CONST_1)
 from rpython.jit.metainterp.optimizeopt.util import _findall, make_dispatcher_method
-from rpython.jit.metainterp.resoperation import rop, ResOperation, opclasses
+from rpython.jit.metainterp.resoperation import rop, ResOperation, opclasses,\
+     OpHelpers
 from rpython.rlib.rarithmetic import highest_bit
 import math
 
@@ -404,7 +405,7 @@
         # change the op to be a normal call, from the backend's point of view
         # there is no reason to have a separate operation for this
         self.loop_invariant_producer[key] = op
-        opnum = self.optimizer.call_for_descr(op.getdescr())
+        opnum = OpHelpers.call_for_descr(op.getdescr())
         newop = self.optimizer.replace_op_with(op, opnum)
         self.emit_operation(newop)
         resvalue = self.getvalue(op)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -6,16 +6,16 @@
 import rpython.jit.metainterp.optimizeopt.optimizer as optimizeopt
 import rpython.jit.metainterp.optimizeopt.virtualize as virtualize
 from rpython.jit.metainterp.optimize import InvalidLoop
-from rpython.jit.metainterp.history import ConstInt, BoxInt, get_const_ptr_for_string
+from rpython.jit.metainterp.history import ConstInt, get_const_ptr_for_string
 from rpython.jit.metainterp import executor, compile, resume
-from rpython.jit.metainterp.resoperation import rop, ResOperation
+from rpython.jit.metainterp.resoperation import rop, ResOperation, InputArgInt
 from rpython.rlib.rarithmetic import LONG_BIT
 
 def test_store_final_boxes_in_guard():
     from rpython.jit.metainterp.compile import ResumeGuardDescr
     from rpython.jit.metainterp.resume import tag, TAGBOX
-    b0 = BoxInt()
-    b1 = BoxInt()
+    b0 = InputArgInt()
+    b1 = InputArgInt()
     opt = optimizeopt.Optimizer(FakeMetaInterpStaticData(LLtypeMixin.cpu),
                                 None)
     fdescr = ResumeGuardDescr()
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_util.py b/rpython/jit/metainterp/optimizeopt/test/test_util.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_util.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_util.py
@@ -6,20 +6,18 @@
     OBJECT, OBJECT_VTABLE, FieldListAccessor, IR_QUASIIMMUTABLE)
 
 from rpython.jit.backend.llgraph import runner
-from rpython.jit.metainterp.history import (BoxInt, BoxPtr, ConstInt, ConstPtr,
-                                         Const, TreeLoop, AbstractDescr,
-                                         JitCellToken, TargetToken)
+from rpython.jit.metainterp.history import (TreeLoop, AbstractDescr,
+                                            JitCellToken, TargetToken)
 from rpython.jit.metainterp.optimizeopt.util import sort_descrs, equaloplists
-from rpython.jit.metainterp.optimize import InvalidLoop
 from rpython.jit.codewriter.effectinfo import EffectInfo
-from rpython.jit.codewriter.heaptracker import register_known_gctype, adr2int
+from rpython.jit.codewriter.heaptracker import register_known_gctype
 from rpython.jit.tool.oparser import parse, pure_parse
 from rpython.jit.metainterp.quasiimmut import QuasiImmutDescr
 from rpython.jit.metainterp import compile, resume, history
 from rpython.jit.metainterp.jitprof import EmptyProfiler
 from rpython.jit.metainterp.counter import DeterministicJitCounter
 from rpython.config.translationoption import get_combined_translation_config
-from rpython.jit.metainterp.resoperation import rop, opname, ResOperation
+from rpython.jit.metainterp.resoperation import rop, ResOperation
 from rpython.jit.metainterp.optimizeopt.unroll import Inliner
 
 def test_sort_descrs():
@@ -101,11 +99,10 @@
     node.parent.typeptr = node_vtable
     node2 = lltype.malloc(NODE2)
     node2.parent.parent.typeptr = node_vtable2
-    nodebox = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, node))
-    myptr = nodebox.value
+    myptr = lltype.cast_opaque_ptr(llmemory.GCREF, node)
     myptr2 = lltype.cast_opaque_ptr(llmemory.GCREF, lltype.malloc(NODE))
     nullptr = lltype.nullptr(llmemory.GCREF.TO)
-    nodebox2 = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, node2))
+    #nodebox2 = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, node2))
     nodesize = cpu.sizeof(NODE)
     nodesize2 = cpu.sizeof(NODE2)
     valuedescr = cpu.fielddescrof(NODE, 'value')
@@ -123,10 +120,8 @@
     quasi = lltype.malloc(QUASI, immortal=True)
     quasi.inst_field = -4247
     quasifielddescr = cpu.fielddescrof(QUASI, 'inst_field')
-    quasibox = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, quasi))
-    quasiptr = quasibox.value
-    quasiimmutdescr = QuasiImmutDescr(cpu, quasibox,
-                                      quasifielddescr,
+    quasiptr = lltype.cast_opaque_ptr(llmemory.GCREF, quasi)
+    quasiimmutdescr = QuasiImmutDescr(cpu, quasiptr, quasifielddescr,
                                       cpu.fielddescrof(QUASI, 'mutate_field'))
 
     NODEOBJ = lltype.GcStruct('NODEOBJ', ('parent', OBJECT),
@@ -159,7 +154,7 @@
     ssize = cpu.sizeof(S)
     adescr = cpu.fielddescrof(S, 'a')
     bdescr = cpu.fielddescrof(S, 'b')
-    sbox = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, lltype.malloc(S)))
+    #sbox = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, lltype.malloc(S)))
     arraydescr2 = cpu.arraydescrof(lltype.GcArray(lltype.Ptr(S)))
 
     T = lltype.GcStruct('TUPLE',
diff --git a/rpython/jit/metainterp/pyjitpl.py b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -466,21 +466,24 @@
                                             indexbox, arraydescr)
 
     @arguments("box", "box", "descr")
-    def _opimpl_getarrayitem_raw_any(self, arraybox, indexbox, arraydescr):
-        return self.execute_with_descr(rop.GETARRAYITEM_RAW,
+    def opimpl_getarrayitem_raw_i(self, arraybox, indexbox, arraydescr):
+        return self.execute_with_descr(rop.GETARRAYITEM_RAW_I,
                                        arraydescr, arraybox, indexbox)
 
-    opimpl_getarrayitem_raw_i = _opimpl_getarrayitem_raw_any
-    opimpl_getarrayitem_raw_f = _opimpl_getarrayitem_raw_any
+    @arguments("box", "box", "descr")
+    def opimpl_getarrayitem_raw_f(self, arraybox, indexbox, arraydescr):
+        return self.execute_with_descr(rop.GETARRAYITEM_RAW_F,
+                                       arraydescr, arraybox, indexbox)
 
     @arguments("box", "box", "descr")
-    def _opimpl_getarrayitem_raw_pure_any(self, arraybox, indexbox,
-                                          arraydescr):
-        return self.execute_with_descr(rop.GETARRAYITEM_RAW_PURE,
+    def opimpl_getarrayitem_raw_pure_i(self, arraybox, indexbox, arraydescr):
+        return self.execute_with_descr(rop.GETARRAYITEM_RAW_PURE_I,
                                        arraydescr, arraybox, indexbox)
 
-    opimpl_getarrayitem_raw_i_pure = _opimpl_getarrayitem_raw_pure_any
-    opimpl_getarrayitem_raw_f_pure = _opimpl_getarrayitem_raw_pure_any
+    @arguments("box", "box", "descr")
+    def opimpl_getarrayitem_raw_pure_f(self, arraybox, indexbox, arraydescr):
+        return self.execute_with_descr(rop.GETARRAYITEM_RAW_PURE_F,
+                                       arraydescr, arraybox, indexbox)
 
     @arguments("box", "box", "descr")
     def opimpl_getarrayitem_gc_i_pure(self, arraybox, indexbox, arraydescr):
diff --git a/rpython/jit/metainterp/quasiimmut.py b/rpython/jit/metainterp/quasiimmut.py
--- a/rpython/jit/metainterp/quasiimmut.py
+++ b/rpython/jit/metainterp/quasiimmut.py
@@ -101,32 +101,23 @@
 
 
 class QuasiImmutDescr(AbstractDescr):
-    structbox = None
-
-    def __init__(self, cpu, structbox, fielddescr, mutatefielddescr):
+    def __init__(self, cpu, struct, fielddescr, mutatefielddescr):
         self.cpu = cpu
-        self.structbox = structbox
+        self.struct = struct
         self.fielddescr = fielddescr
         self.mutatefielddescr = mutatefielddescr
-        gcref = structbox.getref_base()
-        self.qmut = get_current_qmut_instance(cpu, gcref, mutatefielddescr)
+        self.qmut = get_current_qmut_instance(cpu, struct, mutatefielddescr)
         self.constantfieldbox = self.get_current_constant_fieldvalue()
 
     def get_current_constant_fieldvalue(self):
-        from rpython.jit.metainterp import executor
-        from rpython.jit.metainterp.resoperation import rop
+        struct = self.struct
+        fielddescr = self.fielddescr
         if self.fielddescr.is_pointer_field():
-            return ConstPtr(executor.do_getfield_gc_r(self.cpu, None, rop.GETFIELD_GC_R,
-                                             self.fielddescr, self.structbox))
+            return ConstPtr(self.cpu.bh_getfield_gc_r(struct, fielddescr))
         elif self.fielddescr.is_float_field():
-            return ConstFloat(executor.execute(self.cpu, None,
-                                               rop.GETFIELD_GC_F,
-                                               self.fielddescr, self.structbox))
-            
+            return ConstFloat(self.cpu.bh_getfield_gc_f(struct, fielddescr))
         else:
-            return ConstInt(executor.do_getfield_gc_i(self.cpu, None,
-                                                      self.structbox,
-                                                      self.fielddescr))
+            return ConstInt(self.cpu.bh_getfield_gc_i(struct, fielddescr))
 
     def is_still_valid_for(self, structconst):
         assert self.structbox is not None
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -1142,9 +1142,9 @@
                 box = self.consts[num]
         elif tag == TAGVIRTUAL:
             if kind == INT:
-                box = self.getvirtual_int(num)
+                box = InputArgInt(self.getvirtual_int(num))
             else:
-                box = self.getvirtual_ptr(num)
+                box = InputArgRef(self.getvirtual_ptr(num))
         elif tag == TAGINT:
             box = ConstInt(num)
         else:


More information about the pypy-commit mailing list