[pypy-svn] r67891 - pypy/trunk/pypy/jit/metainterp
arigo at codespeak.net
arigo at codespeak.net
Fri Sep 25 16:26:14 CEST 2009
Author: arigo
Date: Fri Sep 25 16:26:13 2009
New Revision: 67891
Modified:
pypy/trunk/pypy/jit/metainterp/compile.py
pypy/trunk/pypy/jit/metainterp/logger.py
pypy/trunk/pypy/jit/metainterp/optimize.py
pypy/trunk/pypy/jit/metainterp/pyjitpl.py
Log:
(pedronis, arigo)
Fix the logging of operations.
Modified: pypy/trunk/pypy/jit/metainterp/compile.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/compile.py (original)
+++ pypy/trunk/pypy/jit/metainterp/compile.py Fri Sep 25 16:26:13 2009
@@ -14,7 +14,7 @@
from pypy.jit.metainterp.optimizeutil import InvalidLoop
from pypy.rlib.debug import debug_print
-def show_loop(metainterp, loop=None, error=None):
+def show_loop(metainterp_sd, loop=None, error=None):
# debugging
if option.view or option.viewloops:
if error:
@@ -27,7 +27,7 @@
extraloops = []
else:
extraloops = [loop]
- metainterp.staticdata.stats.view(errmsg=errmsg, extraloops=extraloops)
+ metainterp_sd.stats.view(errmsg=errmsg, extraloops=extraloops)
def create_empty_loop(metainterp):
name = metainterp.staticdata.stats.name_for_new_loop()
@@ -61,7 +61,7 @@
if DEBUG > 0:
debug_print("reusing old loop")
return old_loop_token
- executable_token = send_loop_to_backend(metainterp, loop, "loop")
+ executable_token = send_loop_to_backend(metainterp_sd, loop, "loop")
loop_token = LoopToken()
loop_token.specnodes = loop.specnodes
loop_token.executable_token = executable_token
@@ -70,18 +70,19 @@
old_loop_tokens.append(loop_token)
return loop_token
-def send_loop_to_backend(metainterp, loop, type):
- metainterp.staticdata.profiler.start_backend()
+def send_loop_to_backend(metainterp_sd, loop, type):
+ metainterp_sd.options.logger_ops.log_loop(loop.inputargs, loop.operations)
+ metainterp_sd.profiler.start_backend()
if not we_are_translated():
- show_loop(metainterp, loop)
+ show_loop(metainterp_sd, loop)
loop.check_consistency()
- executable_token = metainterp.cpu.compile_loop(loop.inputargs,
- loop.operations)
- metainterp.staticdata.profiler.end_backend()
- metainterp.staticdata.stats.add_new_loop(loop)
+ executable_token = metainterp_sd.cpu.compile_loop(loop.inputargs,
+ loop.operations)
+ metainterp_sd.profiler.end_backend()
+ metainterp_sd.stats.add_new_loop(loop)
if not we_are_translated():
if type != "entry bridge":
- metainterp.staticdata.stats.compiled()
+ metainterp_sd.stats.compiled()
else:
loop._ignore_during_counting = True
log.info("compiled new " + type)
@@ -91,16 +92,17 @@
debug_print("compiled new " + type)
return executable_token
-def send_bridge_to_backend(metainterp, faildescr, inputargs, operations):
- metainterp.staticdata.profiler.start_backend()
+def send_bridge_to_backend(metainterp_sd, faildescr, inputargs, operations):
+ metainterp_sd.options.logger_ops.log_loop(inputargs, operations)
+ metainterp_sd.profiler.start_backend()
if not we_are_translated():
- show_loop(metainterp)
+ show_loop(metainterp_sd)
TreeLoop.check_consistency_of(inputargs, operations)
pass
- metainterp.cpu.compile_bridge(faildescr, inputargs, operations)
- metainterp.staticdata.profiler.end_backend()
+ metainterp_sd.cpu.compile_bridge(faildescr, inputargs, operations)
+ metainterp_sd.profiler.end_backend()
if not we_are_translated():
- metainterp.staticdata.stats.compiled()
+ metainterp_sd.stats.compiled()
log.info("compiled new bridge")
else:
from pypy.jit.metainterp.pyjitpl import DEBUG
@@ -247,7 +249,8 @@
fail_args = guard_op.suboperations[-1].args
if not we_are_translated():
guard_op._debug_suboperations = new_loop.operations
- send_bridge_to_backend(metainterp, self, fail_args, new_loop.operations)
+ send_bridge_to_backend(metainterp.staticdata, self, fail_args,
+ new_loop.operations)
class ResumeFromInterpDescr(ResumeDescr):
def __init__(self, original_greenkey, redkey):
@@ -263,8 +266,8 @@
metainterp.history.inputargs = self.redkey
new_loop.greenkey = self.original_greenkey
new_loop.inputargs = self.redkey
- executable_token = send_loop_to_backend(metainterp, new_loop,
- "entry bridge")
+ executable_token = send_loop_to_backend(metainterp_sd, new_loop,
+ "entry bridge")
# send the new_loop to warmspot.py, to be called directly the next time
metainterp_sd.state.attach_unoptimized_bridge_from_interp(
self.original_greenkey,
@@ -281,6 +284,7 @@
# Attempt to use optimize_bridge(). This may return None in case
# it does not work -- i.e. none of the existing old_loop_tokens match.
new_loop = create_empty_loop(metainterp)
+ new_loop.inputargs = metainterp.history.inputargs
new_loop.operations = metainterp.history.operations
metainterp_sd = metainterp.staticdata
options = metainterp_sd.options
Modified: pypy/trunk/pypy/jit/metainterp/logger.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/logger.py (original)
+++ pypy/trunk/pypy/jit/metainterp/logger.py Fri Sep 25 16:26:13 2009
@@ -25,8 +25,8 @@
return None
return self.log_stream
- def log_loop(self, loop):
- self.log_operations(loop.inputargs, loop.operations, {})
+ def log_loop(self, inputargs, operations):
+ self.log_operations(inputargs, operations, {})
def repr_of_descr(self, descr):
return descr.repr_of_descr()
Modified: pypy/trunk/pypy/jit/metainterp/optimize.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/optimize.py (original)
+++ pypy/trunk/pypy/jit/metainterp/optimize.py Fri Sep 25 16:26:13 2009
@@ -10,8 +10,7 @@
return old_loop_tokens[0]
else:
return None
- if options.logger_noopt is not None:
- options.logger_noopt.log_loop(loop)
+ options.logger_noopt.log_loop(loop.inputargs, loop.operations)
finder = PerfectSpecializationFinder(cpu)
finder.find_nodes_loop(loop)
for old_loop_token in old_loop_tokens:
@@ -28,8 +27,7 @@
def optimize_bridge(options, old_loop_tokens, bridge, cpu):
if not options.specialize: # for tests only
return old_loop_tokens[0]
- if options.logger_noopt is not None:
- options.logger_noopt.log_loop(bridge)
+ options.logger_noopt.log_loop(bridge.inputargs, bridge.operations)
finder = BridgeSpecializationFinder(cpu)
finder.find_nodes_bridge(bridge)
for old_loop_token in old_loop_tokens:
Modified: pypy/trunk/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/trunk/pypy/jit/metainterp/pyjitpl.py Fri Sep 25 16:26:13 2009
@@ -1573,11 +1573,13 @@
suboperations = guard_op.suboperations
assert suboperations[-1] is guard_failure
self.history = history.History(self.cpu)
+ self.history.inputargs = guard_failure.args # xxx unhappy
self.staticdata.profiler.start_tracing()
else:
self.staticdata.profiler.start_blackhole()
self.history = None # this means that is_blackholing() is true
self.rebuild_state_after_failure(resumedescr, guard_failure.args)
+ # xxx unhappy
return resumedescr
def initialize_virtualizable(self, original_boxes):
More information about the Pypy-commit
mailing list