Author: Armin Rigo <[email protected]>
Branch:
Changeset: r59074:d9b9d7df5c5f
Date: 2012-11-23 20:10 +0100
http://bitbucket.org/pypy/pypy/changeset/d9b9d7df5c5f/
Log: Add comments and inline code manually (after I found out that it was
not actually inlined due to try:except: in the caller).
diff --git a/pypy/jit/metainterp/warmspot.py b/pypy/jit/metainterp/warmspot.py
--- a/pypy/jit/metainterp/warmspot.py
+++ b/pypy/jit/metainterp/warmspot.py
@@ -610,11 +610,7 @@
maybe_compile_and_run(state.increment_threshold, *args)
maybe_enter_jit._always_inline_ = True
jd._maybe_enter_jit_fn = maybe_enter_jit
-
- def maybe_enter_from_start(*args):
- maybe_compile_and_run(state.increment_function_threshold, *args)
- maybe_enter_from_start._always_inline_ = True
- jd._maybe_enter_from_start_fn = maybe_enter_from_start
+ jd._maybe_compile_and_run_fn = maybe_compile_and_run
def make_driverhook_graphs(self):
from pypy.rlib.jit import BaseJitCell
@@ -863,13 +859,26 @@
RESULT = PORTALFUNC.RESULT
result_kind = history.getkind(RESULT)
ts = self.cpu.ts
+ state = jd.warmstate
+ maybe_compile_and_run = jd._maybe_compile_and_run_fn
def ll_portal_runner(*args):
start = True
while 1:
try:
+ # maybe enter from the function's start. Note that the
+ # 'start' variable is constant-folded away because it's
+ # the first statement in the loop.
if start:
- jd._maybe_enter_from_start_fn(*args)
+ maybe_compile_and_run(
+ state.increment_function_threshold, *args)
+ #
+ # then run the normal portal function, i.e. the
+ # interpreter's main loop. It might enter the jit
+ # via maybe_enter_jit(), which typically ends with
+ # handle_fail() being called, which raises on the
+ # following exceptions --- catched here, because we
+ # want to interrupt the whole interpreter loop.
return support.maybe_on_top_of_llinterp(rtyper,
portal_ptr)(*args)
except self.ContinueRunningNormally, e:
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit