[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