[pypy-commit] pypy optresult: minor hacks until we encounter an actual obstacle

fijal noreply at buildbot.pypy.org
Thu May 28 15:49:23 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77650:39e285bf017f
Date: 2015-05-28 15:27 +0200
http://bitbucket.org/pypy/pypy/changeset/39e285bf017f/

Log:	minor hacks until we encounter an actual obstacle

diff --git a/rpython/jit/backend/llsupport/descr.py b/rpython/jit/backend/llsupport/descr.py
--- a/rpython/jit/backend/llsupport/descr.py
+++ b/rpython/jit/backend/llsupport/descr.py
@@ -61,7 +61,7 @@
         return True
 
     def get_vtable(self):
-        return self.vtable
+        return heaptracker.adr2int(llmemory.cast_ptr_to_adr(self.vtable))
 
 BaseSizeDescr = SizeDescr
 
@@ -74,13 +74,13 @@
         count_fields_if_immut = heaptracker.count_fields_if_immutable(STRUCT)
         gc_fielddescrs = heaptracker.gc_fielddescrs(gccache, STRUCT)
         all_fielddescrs = heaptracker.all_fielddescrs(gccache, STRUCT)
-        if heaptracker.has_gcstruct_a_vtable(STRUCT):
-            assert is_object
+        if is_object: #heaptracker.has_gcstruct_a_vtable(STRUCT):
+            #assert is_object
             sizedescr = SizeDescrWithVTable(size, count_fields_if_immut,
                                             gc_fielddescrs, all_fielddescrs,
-                heaptracker.get_vtable_for_gcstruct(cpu, GCSTRUCT))
+                heaptracker.get_vtable_for_gcstruct(cpu, STRUCT))
         else:
-            assert not is_object
+            #assert not is_object
             sizedescr = SizeDescr(size, count_fields_if_immut,
                                   gc_fielddescrs, all_fielddescrs)
         gccache.init_size_descr(STRUCT, sizedescr)
diff --git a/rpython/jit/backend/llsupport/regalloc.py b/rpython/jit/backend/llsupport/regalloc.py
--- a/rpython/jit/backend/llsupport/regalloc.py
+++ b/rpython/jit/backend/llsupport/regalloc.py
@@ -721,6 +721,17 @@
             longevity[arg] = (0, last_used[arg])
             del last_used[arg]
     assert len(last_used) == 0
+
+    if not we_are_translated():
+        produced = {}
+        for arg in inputargs:
+            produced[arg] = None
+        for op in operations:
+            for arg in op.getarglist():
+                if not isinstance(arg, Const):
+                    assert arg in produced
+            produced[op] = None
+    
     return longevity, last_real_usage
 
 def is_comparison_or_ovf_op(opnum):
diff --git a/rpython/jit/backend/test/runner_test.py b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -2749,7 +2749,7 @@
                 if kind in 'uis':
                     b1 = InputArgInt()
                 elif kind in 'fUI':
-                    b1 = BoxFloat()
+                    b1 = InputArgFloat()
                 else:
                     assert 0, kind
                 argboxes.append(b1)
@@ -2785,26 +2785,24 @@
                 load = rnd.random() < load_factor
                 loadcodes.append(' ^'[load])
                 if load:
-                    b2 = b1.clonebox()
-                    ops.insert(rnd.randrange(0, len(ops)+1),
-                               ResOperation(rop.SAME_AS, [b1], b2))
+                    b2 = ResOperation(rop.SAME_AS_I, [b1])
+                    ops.insert(rnd.randrange(0, len(ops)+1), b2)
                     b1 = b2
                 insideboxes.append(b1)
             loadcodes = ''.join(loadcodes)
             print loadcodes
             ops += [
-                ResOperation(rop.CALL_RELEASE_GIL,
-                             [ConstInt(0)] + insideboxes, None,
+                ResOperation(rop.CALL_RELEASE_GIL_N,
+                             [ConstInt(0)] + insideboxes,
                              descr=calldescr),
-                ResOperation(rop.GUARD_NOT_FORCED, [], None, descr=faildescr),
-                ResOperation(rop.FINISH, [], None, descr=BasicFinalDescr(0))
+                ResOperation(rop.GUARD_NOT_FORCED, [], descr=faildescr),
+                ResOperation(rop.FINISH, [], descr=BasicFinalDescr(0))
                 ]
             ops[-2].setfailargs([])
             # keep alive a random subset of the insideboxes
             for b1 in insideboxes:
                 if rnd.random() < keepalive_factor:
-                    ops.insert(-1, ResOperation(rop.SAME_AS, [b1],
-                                                b1.clonebox()))
+                    ops.insert(-1, ResOperation(rop.SAME_AS_I, [b1]))
             looptoken = JitCellToken()
             self.cpu.compile_loop(argboxes, ops, looptoken)
             #
diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -401,7 +401,7 @@
 
     def consider_guard_exception(self, op):
         loc = self.rm.make_sure_var_in_reg(op.getarg(0))
-        box = TempBox()
+        box = TempVar()
         args = op.getarglist()
         loc1 = self.rm.force_allocate_reg(box, args)
         if op in self.longevity:
@@ -853,7 +853,7 @@
     consider_call_assembler_n = _consider_call_assembler
 
     def consider_cond_call_gc_wb(self, op):
-        assert op.type != 'v'
+        assert op.type == 'v'
         args = op.getarglist()
         N = len(args)
         # we force all arguments in a reg (unless they are Consts),
@@ -875,7 +875,7 @@
                     self.rm.force_spill_var(box)
                     assert box not in self.rm.reg_bindings
         #
-        assert op.type != 'v'
+        assert op.type == 'v'
         args = op.getarglist()
         assert 2 <= len(args) <= 4 + 2     # maximum 4 arguments
         loc_cond = self.make_sure_var_in_reg(args[0], args)


More information about the pypy-commit mailing list