[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