[pypy-commit] pypy jit-leaner-frontend: whack at tests
fijal
pypy.commits at gmail.com
Tue Mar 22 07:37:23 EDT 2016
Author: fijal
Branch: jit-leaner-frontend
Changeset: r83245:da47dd47f143
Date: 2016-03-22 13:35 +0200
http://bitbucket.org/pypy/pypy/changeset/da47dd47f143/
Log: whack at tests
diff --git a/rpython/jit/metainterp/compile.py b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -27,6 +27,7 @@
class CompileData(object):
memo = None
+ log_noopt = True
def forget_optimization_info(self):
for arg in self.trace.inputargs:
@@ -103,6 +104,8 @@
""" This represents label() ops jump with extra info that's from the
run of LoopCompileData. Jump goes to the same label
"""
+ log_noopt = False
+
def __init__(self, trace, celltoken, state,
call_pure_results=None, enable_opts=None,
inline_short_preamble=True):
@@ -200,7 +203,8 @@
# ____________________________________________________________
-def compile_simple_loop(metainterp, greenkey, trace, runtime_args, enable_opts):
+def compile_simple_loop(metainterp, greenkey, trace, runtime_args, enable_opts,
+ cut_at):
from rpython.jit.metainterp.optimizeopt import optimize_trace
jitdriver_sd = metainterp.jitdriver_sd
@@ -213,6 +217,7 @@
loop_info, ops = optimize_trace(metainterp_sd, jitdriver_sd,
data, metainterp.box_names_memo)
except InvalidLoop:
+ history.cut(cut_at)
return None
loop = create_empty_loop(metainterp)
loop.original_jitcell_token = jitcell_token
@@ -254,12 +259,13 @@
del enable_opts['unroll']
jitcell_token = make_jitcell_token(jitdriver_sd)
+ cut_at = history.get_trace_position()
history.record(rop.JUMP, jumpargs, None, descr=jitcell_token)
if start != (0, 0):
trace = trace.cut_trace_from(start, inputargs)
if 'unroll' not in enable_opts or not metainterp.cpu.supports_guard_gc_type:
return compile_simple_loop(metainterp, greenkey, trace, jumpargs,
- enable_opts)
+ enable_opts, cut_at)
call_pure_results = metainterp.call_pure_results
preamble_data = LoopCompileData(trace, jumpargs,
call_pure_results=call_pure_results,
@@ -269,6 +275,7 @@
preamble_data,
metainterp.box_names_memo)
except InvalidLoop:
+ history.cut(cut_at)
return None
metainterp_sd = metainterp.staticdata
@@ -284,6 +291,7 @@
loop_data,
metainterp.box_names_memo)
except InvalidLoop:
+ history.cut(cut_at)
return None
if ((warmstate.vec and jitdriver_sd.vec) or warmstate.vec_all):
@@ -352,7 +360,6 @@
metainterp.box_names_memo)
except InvalidLoop:
# Fall back on jumping directly to preamble
- raise InvalidLoop
xxxx
jump_op = ResOperation(rop.JUMP, inputargs[:], descr=loop_jitcell_token)
loop_data = UnrolledLoopData(end_label, jump_op, [jump_op], start_state,
diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -687,7 +687,7 @@
self._cache = None
def length(self):
- return self.trace._count
+ return self.trace._count - len(self.trace.inputargs)
def get_trace_position(self):
return self.trace.cut_point()
diff --git a/rpython/jit/metainterp/optimizeopt/__init__.py b/rpython/jit/metainterp/optimizeopt/__init__.py
--- a/rpython/jit/metainterp/optimizeopt/__init__.py
+++ b/rpython/jit/metainterp/optimizeopt/__init__.py
@@ -53,7 +53,8 @@
"""
debug_start("jit-optimize")
try:
- metainterp_sd.logger_noopt.log_loop_from_trace(compile_data.trace, memo=memo)
+ if compile_data.log_noopt:
+ metainterp_sd.logger_noopt.log_loop_from_trace(compile_data.trace, memo=memo)
if memo is None:
memo = {}
compile_data.box_names_memo = memo
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
@@ -2245,7 +2245,7 @@
def aborted_tracing(self, reason):
self.staticdata.profiler.count(reason)
- debug_print('~~~ ABORTING TRACING')
+ debug_print('~~~ ABORTING TRACING %s' % Counters.counter_names[reason])
jd_sd = self.jitdriver_sd
if not self.current_merge_points:
greenkey = None # we're in the bridge
diff --git a/rpython/jit/metainterp/test/test_resoperation.py b/rpython/jit/metainterp/test/test_resoperation.py
--- a/rpython/jit/metainterp/test/test_resoperation.py
+++ b/rpython/jit/metainterp/test/test_resoperation.py
@@ -52,7 +52,7 @@
assert len(INT_ADD.__bases__) == 1
BinaryPlainResOp = INT_ADD.__bases__[0]
assert BinaryPlainResOp.__name__ == 'BinaryPlainResOp'
- assert BinaryPlainResOp.__bases__ == (rop.BinaryOp, rop.IntOp, rop.PlainResOp)
+ assert BinaryPlainResOp.__bases__ == (rop.BinaryOp, rop.PlainResOp)
INT_SUB = rop.opclasses[rop.rop.INT_SUB]
assert INT_SUB.__bases__[0] is BinaryPlainResOp
diff --git a/rpython/jit/metainterp/test/test_resume.py b/rpython/jit/metainterp/test/test_resume.py
--- a/rpython/jit/metainterp/test/test_resume.py
+++ b/rpython/jit/metainterp/test/test_resume.py
@@ -13,16 +13,16 @@
annlowlevel, PENDINGFIELDSP, TAG_CONST_OFFSET
from rpython.jit.metainterp.resumecode import unpack_numbering,\
create_numbering, NULL_NUMBER
-from rpython.jit.metainterp.opencoder import Trace
+from rpython.jit.metainterp.opencoder import Trace, Snapshot, TopSnapshot
from rpython.jit.metainterp.optimizeopt import info
from rpython.jit.metainterp.history import ConstInt, Const, AbstractDescr
-from rpython.jit.metainterp.history import ConstPtr, ConstFloat
+from rpython.jit.metainterp.history import ConstPtr, ConstFloat,\
+ IntFrontendOp, RefFrontendOp
from rpython.jit.metainterp.optimizeopt.test.test_util import LLtypeMixin
from rpython.jit.metainterp import executor
from rpython.jit.codewriter import heaptracker, longlong
-from rpython.jit.metainterp.resoperation import ResOperation, InputArgInt,\
- InputArgRef, rop
+from rpython.jit.metainterp.resoperation import ResOperation, rop
from rpython.jit.metainterp.test.strategies import boxlists
from rpython.rlib.debug import debug_start, debug_stop, debug_print,\
have_debug_prints
@@ -523,88 +523,11 @@
def __repr__(self):
return "<FF %s %s %s>" % (self.jitcode, self.pc, self._env)
-def test_Snapshot_create():
- l = ['b0', 'b1']
- snap = Snapshot(None, l)
- assert snap.prev is None
- assert snap.boxes is l
-
- l1 = ['b3']
- snap1 = Snapshot(snap, l1)
- assert snap1.prev is snap
- assert snap1.boxes is l1
-
class FakeJitCode(object):
def __init__(self, name, index):
self.name = name
self.index = index
-def test_capture_resumedata():
- b1, b2, b3 = [InputArgInt(), InputArgRef(), InputArgInt()]
- c1, c2, c3 = [ConstInt(1), ConstInt(2), ConstInt(3)]
- fs = [FakeFrame(FakeJitCode("code0", 13), 0, b1, c1, b2)]
-
- t = Trace([b1, b2, b3])
- pos = capture_resumedata(fs, None, [], t)
-
- assert fs[0].parent_resume_position == -1
- s = t.get_iter().get_snapshot_iter(pos)
-
- size, jitcode, pc = s.get_size_jitcode_pc()
- assert jitcode == 13
- boxes = s.read_boxes(size)
- assert boxes == fs[0]._env
-
- storage = Storage()
- fs = [FakeFrame(FakeJitCode("code0", 0), 0, b1, c1, b2),
- FakeFrame(FakeJitCode("code1", 1), 3, b3, c2, b1),
- FakeFrame(FakeJitCode("code2", 2), 9, c3, b2)]
- t = Trace([b1, b2, b3])
- pos = capture_resumedata(fs, None, [], t)
-
- assert fs[2].parent_resume_position != -1
- s = t.get_iter().get_snapshot_iter(pos)
- size, jitcode, pc = s.get_size_jitcode_pc()
- assert (jitcode, pc) == (2, 9)
-
- xxx
- assert storage.rd_snapshot.boxes == [] # for virtualrefs
- snapshot = storage.rd_snapshot.prev
- assert snapshot.prev is fs[2].parent_resumedata_snapshot
- assert snapshot.boxes == fs[2]._env
-
- frame_info_list = frame_info_list.prev
- assert frame_info_list.prev is fs[1].parent_resumedata_frame_info_list
- assert unpack_uint(frame_info_list.packed_jitcode_pc) == (1, 3)
- snapshot = snapshot.prev
- assert snapshot.prev is fs[1].parent_resumedata_snapshot
- assert snapshot.boxes == fs[1]._env
-
- frame_info_list = frame_info_list.prev
- assert frame_info_list.prev is None
- assert unpack_uint(frame_info_list.packed_jitcode_pc) == (0, 0)
- snapshot = snapshot.prev
- assert snapshot.prev is None
- assert snapshot.boxes == fs[0]._env
-
- fs[2]._env = [b3, b2]
- fs[2].pc = 15
- vbs = [b1, b2]
- vrs = [b3]
- capture_resumedata(fs, vbs, vrs, storage)
-
- frame_info_list = storage.rd_frame_info_list
- assert frame_info_list.prev is fs[2].parent_resumedata_frame_info_list
- assert unpack_uint(frame_info_list.packed_jitcode_pc) == (2, 15)
-
- snapshot = storage.rd_snapshot
- assert snapshot.boxes == vrs
- assert snapshot.vable_boxes == [b2, b1]
-
- snapshot = snapshot.prev
- assert snapshot.prev is fs[2].parent_resumedata_snapshot
- assert snapshot.boxes == fs[2]._env
-
class FakeMetaInterpStaticData:
cpu = LLtypeMixin.cpu
@@ -886,12 +809,12 @@
assert memo.consts[index - TAG_CONST_OFFSET] is const
def test_ResumeDataLoopMemo_number():
- b1, b2, b3, b4, b5 = [InputArgInt(), InputArgInt(), InputArgInt(),
- InputArgRef(), InputArgRef()]
+ b1, b2, b3, b4, b5 = [IntFrontendOp(0), IntFrontendOp(1), IntFrontendOp(2),
+ RefFrontendOp(3), RefFrontendOp(4)]
c1, c2, c3, c4 = [ConstInt(1), ConstInt(2), ConstInt(3), ConstInt(4)]
env = [b1, c1, b2, b1, c2]
- snap = Snapshot(None, env)
+ snap = Snapshot(0, env)
env1 = [c3, b3, b1, c1]
snap1 = TopSnapshot(snap, env1, [])
env2 = [c3, b3, b1, c3]
More information about the pypy-commit
mailing list