Author: fijal
Branch: jit-leaner-frontend
Changeset: r82898:670c52c38925
Date: 2016-03-09 10:03 +0200
http://bitbucket.org/pypy/pypy/changeset/670c52c38925/

Log:    fix the cutting and starting point, enough to pass test_loop
        (without unrolling)

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
@@ -243,6 +243,7 @@
     metainterp_sd = metainterp.staticdata
     jitdriver_sd = metainterp.jitdriver_sd
     history = metainterp.history
+    trace = history.trace
     warmstate = jitdriver_sd.warmstate
 
     enable_opts = jitdriver_sd.warmstate.enable_opts
@@ -252,15 +253,15 @@
         enable_opts = enable_opts.copy()
         del enable_opts['unroll']
 
-    assert start == 0
-    #ops = history.operations[start:]
     jitcell_token = make_jitcell_token(jitdriver_sd)
     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, history.trace,
+        return compile_simple_loop(metainterp, greenkey, trace,
                                    enable_opts)
     call_pure_results = metainterp.call_pure_results
-    preamble_data = LoopCompileData(history.trace, inputargs,
+    preamble_data = LoopCompileData(trace, inputargs,
                                     call_pure_results=call_pure_results,
                                     enable_opts=enable_opts)
     try:
@@ -275,7 +276,7 @@
     start_descr = TargetToken(jitcell_token,
                               original_jitcell_token=jitcell_token)
     jitcell_token.target_tokens = [start_descr]
-    loop_data = UnrolledLoopData(history.trace, jitcell_token, start_state,
+    loop_data = UnrolledLoopData(trace, jitcell_token, start_state,
                                  call_pure_results=call_pure_results,
                                  enable_opts=enable_opts)
     try:
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
@@ -2317,7 +2317,7 @@
 
     def _compile_and_run_once(self, original_boxes):
         self.initialize_state_from_start(original_boxes)
-        self.current_merge_points = [(original_boxes, 0)]
+        self.current_merge_points = [(original_boxes, (0, 0))]
         num_green_args = self.jitdriver_sd.num_green_args
         original_greenkey = original_boxes[:num_green_args]
         self.resumekey = compile.ResumeFromInterpDescr(original_greenkey)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to