Author: Maciej Fijalkowski <[email protected]>
Branch: result-in-resops
Changeset: r58370:377145707965
Date: 2012-10-22 18:56 +0200
http://bitbucket.org/pypy/pypy/changeset/377145707965/
Log: fix fix fix
diff --git a/pypy/jit/metainterp/executor.py b/pypy/jit/metainterp/executor.py
--- a/pypy/jit/metainterp/executor.py
+++ b/pypy/jit/metainterp/executor.py
@@ -341,7 +341,8 @@
rop.CALL_MALLOC_NURSERY,
rop.LABEL,
rop.INPUT_i, rop.INPUT_r, rop.INPUT_f,
- rop.FORCE_SPILL, rop.ESCAPE,
+ rop.FORCE_SPILL, rop.ESCAPE, rop.ESCAPE_r,
+ rop.ESCAPE_f,
): # list of opcodes never executed by pyjitpl
continue
raise AssertionError("missing %r" % (orig_key,))
diff --git a/pypy/jit/metainterp/optimizeopt/optimizer.py
b/pypy/jit/metainterp/optimizeopt/optimizer.py
--- a/pypy/jit/metainterp/optimizeopt/optimizer.py
+++ b/pypy/jit/metainterp/optimizeopt/optimizer.py
@@ -628,11 +628,9 @@
self._newoperations.append(op)
def store_final_boxes_in_guard(self, op):
- if op.getdescr() is not None:
- # means we need to copy the op and attach a new descr
- xxx
- op = op.copy_and_change(op.getopnum(), descr=None)
+ assert op.getdescr() is None
descr = op.invent_descr(self.jitdriver_sd, self.metainterp_sd)
+ op.setdescr(descr)
modifier = resume.ResumeDataVirtualAdder(descr, self.resumedata_memo)
try:
newboxes = modifier.finish(self, self.pendingfields)
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -8,17 +8,18 @@
from pypy.jit.metainterp.optimize import InvalidLoop
from pypy.jit.metainterp.history import get_const_ptr_for_string
from pypy.jit.metainterp import executor, compile, resume
-from pypy.jit.metainterp.resoperation import rop, opname, ConstInt, BoxInt,\
+from pypy.jit.metainterp.resoperation import rop, opname, ConstInt,\
create_resop_1, create_resop
+from pypy.jit.metainterp.test.support import boxint
from pypy.rlib.rarithmetic import LONG_BIT
def test_store_final_boxes_in_guard():
from pypy.jit.metainterp.resume import tag, TAGBOX
- b0 = BoxInt()
- b1 = BoxInt()
+ b0 = boxint()
+ b1 = boxint()
opt = optimizeopt.Optimizer(None,
FakeMetaInterpStaticData(LLtypeMixin.cpu),
None)
- op = create_resop_1(rop.GUARD_TRUE, None, BoxInt(0))
+ op = create_resop_1(rop.GUARD_TRUE, None, boxint(0), mutable=True)
# setup rd data
fi0 = resume.FrameInfo(None, "code0", 11)
op._rd_frame_info_list = resume.FrameInfo(fi0, "code1", 33)
@@ -186,7 +187,6 @@
def test_constfold_all(self):
from pypy.jit.backend.llgraph.llimpl import TYPES # xxx fish
from pypy.jit.metainterp.executor import execute_nonspec
- from pypy.jit.metainterp.resoperation import BoxInt
import random
for opnum in [rop._ALWAYS_PURE_FIRST, rop._ALWAYS_PURE_NO_PTR_LAST]:
try:
@@ -209,7 +209,7 @@
escape(i1)
jump()
""" % (op.lower(), ', '.join(map(str, args)))
- argboxes = [BoxInt(a) for a in args]
+ argboxes = [boxint(a) for a in args]
expected_value = execute_nonspec(self.cpu, None, opnum,
argboxes).getint()
expected = """
@@ -1463,7 +1463,7 @@
ops = """
[p1]
i1 = getfield_gc_i(p1, descr=valuedescr)
- escape()
+ escape(0)
i2 = getfield_gc_i(p1, descr=valuedescr)
escape(i1)
escape(i2)
@@ -1475,7 +1475,7 @@
ops = """
[p1, i1]
setfield_gc(p1, i1, descr=valuedescr)
- escape()
+ escape(0)
i2 = getfield_gc_i(p1, descr=valuedescr)
escape(i2)
jump(p1, i1)
@@ -1581,7 +1581,7 @@
ops = """
[p1, i1, i2]
setfield_gc(p1, i1, descr=valuedescr)
- escape()
+ escape(0)
setfield_gc(p1, i2, descr=valuedescr)
jump(p1, i1, i2)
"""
@@ -1866,7 +1866,7 @@
escape(p4)
#
p2 = new_with_vtable(ConstClass(node_vtable))
- p3 = escape()
+ p3 = escape(0)
setfield_gc(p2, p3, descr=nextdescr)
jump(i0, p2)
"""
@@ -1875,7 +1875,7 @@
guard_nonnull(p4) []
escape(p4)
#
- p3 = escape()
+ p3 = escape(0)
jump(i0, p3)
"""
py.test.skip("XXX")
@@ -1890,7 +1890,7 @@
escape(p4)
#
p2 = new_array(1, descr=arraydescr2)
- p3 = escape()
+ p3 = escape(0)
setarrayitem_gc(p2, 0, p3, descr=arraydescr2)
jump(i0, p2)
"""
@@ -1899,7 +1899,7 @@
guard_nonnull(p4) []
escape(p4)
#
- p3 = escape()
+ p3 = escape(0)
jump(i0, p3)
"""
py.test.skip("XXX")
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -135,9 +135,9 @@
def test_simple(self):
ops = """
[]
- f = escape()
+ f = escape_f(0)
f0 = float_sub(f, 1.0)
- guard_value(f0, 0.0) [f0]
+ guard_value(f0, 0.0)
escape(f)
jump()
"""
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_util.py
b/pypy/jit/metainterp/optimizeopt/test/test_util.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_util.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_util.py
@@ -9,6 +9,7 @@
JitCellToken, TargetToken)
from pypy.jit.metainterp.optimizeopt.util import sort_descrs, equaloplists,\
ArgsDict, ArgsSet
+from pypy.jit.metainterp.test.support import boxptr
from pypy.jit.codewriter.effectinfo import EffectInfo
from pypy.jit.codewriter.heaptracker import register_known_gctype
from pypy.jit.tool.oparser import parse, pure_parse
@@ -124,11 +125,11 @@
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)
+ nodebox = boxptr(myptr)
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')
@@ -145,8 +146,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
+ quasiptr = lltype.cast_opaque_ptr(llmemory.GCREF, quasi)
+ quasibox = boxptr(quasiptr)
quasiimmutdescr = QuasiImmutDescr(cpu, quasibox,
quasifielddescr,
cpu.fielddescrof(QUASI, 'mutate_field'))
@@ -181,7 +182,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',
@@ -397,11 +398,10 @@
class BaseTest(object):
- def parse(self, s, boxkinds=None, results=None):
+ def parse(self, s, results=None):
return parse(s, self.cpu, self.namespace,
type_system=self.type_system,
- boxkinds=boxkinds,
- results=results, process_guard=self.process_guard)
+ results=results)
def setup_method(self, meth):
self.oparsers = []
diff --git a/pypy/jit/metainterp/resoperation.py
b/pypy/jit/metainterp/resoperation.py
--- a/pypy/jit/metainterp/resoperation.py
+++ b/pypy/jit/metainterp/resoperation.py
@@ -843,7 +843,6 @@
descr = compile.ResumeGuardDescr()
descr.rd_snapshot = self._rd_snapshot
descr.rd_frame_info_list = self._rd_frame_info_list
- self.setdescr(descr)
return descr
# ============
@@ -1256,6 +1255,8 @@
'_NOSIDEEFFECT_LAST', # ----- end of no_side_effect operations -----
'ESCAPE/1/v', # tests
+ 'ESCAPE_r/1/r', # tests
+ 'ESCAPE_f/1/f', # tests
'FORCE_SPILL/1/v', # tests
'SETARRAYITEM_GC/3d/v',
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit