[pypy-commit] pypy better-jit-hooks: use try: finally: for cache.in_recursion
fijal
noreply at buildbot.pypy.org
Mon Jan 9 18:08:50 CET 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: better-jit-hooks
Changeset: r51174:d142d1bd4aa9
Date: 2012-01-09 19:07 +0200
http://bitbucket.org/pypy/pypy/changeset/d142d1bd4aa9/
Log: use try: finally: for cache.in_recursion
diff --git a/pypy/module/pypyjit/policy.py b/pypy/module/pypyjit/policy.py
--- a/pypy/module/pypyjit/policy.py
+++ b/pypy/module/pypyjit/policy.py
@@ -15,13 +15,15 @@
if space.is_true(cache.w_abort_hook):
cache.in_recursion = True
try:
- space.call_function(cache.w_abort_hook,
- space.wrap(jitdriver.name),
- wrap_greenkey(space, jitdriver, greenkey),
- space.wrap(counter_names[reason]))
- except OperationError, e:
- e.write_unraisable(space, "jit hook ", cache.w_abort_hook)
- cache.in_recursion = False
+ try:
+ space.call_function(cache.w_abort_hook,
+ space.wrap(jitdriver.name),
+ wrap_greenkey(space, jitdriver, greenkey),
+ space.wrap(counter_names[reason]))
+ except OperationError, e:
+ e.write_unraisable(space, "jit hook ", cache.w_abort_hook)
+ finally:
+ cache.in_recursion = False
def after_compile(self, jitdriver, logger, looptoken, operations, type,
greenkey, ops_offset, asmstart, asmlen):
@@ -56,16 +58,18 @@
list_w = wrap_oplist(space, logops, operations, ops_offset)
cache.in_recursion = True
try:
- space.call_function(cache.w_compile_hook,
- space.wrap(jitdriver.name),
- space.wrap(type),
- w_arg,
- space.newlist(list_w),
- space.wrap(asmstart),
- space.wrap(asmlen))
- except OperationError, e:
- e.write_unraisable(space, "jit hook ", cache.w_compile_hook)
- cache.in_recursion = False
+ try:
+ space.call_function(cache.w_compile_hook,
+ space.wrap(jitdriver.name),
+ space.wrap(type),
+ w_arg,
+ space.newlist(list_w),
+ space.wrap(asmstart),
+ space.wrap(asmlen))
+ except OperationError, e:
+ e.write_unraisable(space, "jit hook ", cache.w_compile_hook)
+ finally:
+ cache.in_recursion = False
def _optimize_hook(self, jitdriver, logger, operations, type, w_arg):
space = self.space
@@ -77,26 +81,28 @@
list_w = wrap_oplist(space, logops, operations, {})
cache.in_recursion = True
try:
- w_res = space.call_function(cache.w_optimize_hook,
- space.wrap(jitdriver.name),
- space.wrap(type),
- w_arg,
- space.newlist(list_w))
- if space.is_w(w_res, space.w_None):
- cache.in_recursion = False
- return
- l = []
- for w_item in space.listview(w_res):
- item = space.interp_w(WrappedOp, w_item)
- l.append(jit_hooks._cast_to_resop(item.op))
- del operations[:] # modifying operations above is probably not
- # a great idea since types may not work and we'll end up with
- # half-working list and a segfault/fatal RPython error
- for elem in l:
- operations.append(elem)
- except OperationError, e:
- e.write_unraisable(space, "jit hook ", cache.w_compile_hook)
- cache.in_recursion = False
+ try:
+ w_res = space.call_function(cache.w_optimize_hook,
+ space.wrap(jitdriver.name),
+ space.wrap(type),
+ w_arg,
+ space.newlist(list_w))
+ if space.is_w(w_res, space.w_None):
+ return
+ l = []
+ for w_item in space.listview(w_res):
+ item = space.interp_w(WrappedOp, w_item)
+ l.append(jit_hooks._cast_to_resop(item.op))
+ del operations[:] # modifying operations above is
+ # probably not a great idea since types may not work
+ # and we'll end up with half-working list and
+ # a segfault/fatal RPython error
+ for elem in l:
+ operations.append(elem)
+ except OperationError, e:
+ e.write_unraisable(space, "jit hook ", cache.w_compile_hook)
+ finally:
+ cache.in_recursion = False
pypy_portal = PyPyPortal()
More information about the pypy-commit
mailing list