Author: Benjamin Peterson <benja...@python.org> Branch: Changeset: r64045:71b42a2d862d Date: 2013-05-13 15:04 -0500 http://bitbucket.org/pypy/pypy/changeset/71b42a2d862d/
Log: move JitException subclasses to jitexc module diff --git a/rpython/jit/metainterp/blackhole.py b/rpython/jit/metainterp/blackhole.py --- a/rpython/jit/metainterp/blackhole.py +++ b/rpython/jit/metainterp/blackhole.py @@ -1,7 +1,8 @@ from rpython.jit.codewriter import heaptracker, longlong from rpython.jit.codewriter.jitcode import JitCode, SwitchDictDescr from rpython.jit.metainterp.compile import ResumeAtPositionDescr -from rpython.jit.metainterp.jitexc import JitException, get_llexception, reraise +from rpython.jit.metainterp.jitexc import get_llexception, reraise +from rpython.jit.metainterp import jitexc from rpython.rlib import longlong2float from rpython.rlib.debug import ll_assert, make_sure_not_resized from rpython.rlib.objectmodel import we_are_translated @@ -25,7 +26,7 @@ LONGLONG_TYPECODE = 'i' if longlong.is_64_bit else 'f' -class LeaveFrame(JitException): +class LeaveFrame(jitexc.JitException): pass class MissingValue(object): @@ -306,7 +307,7 @@ self.dispatch_loop(self, self.jitcode.code, self.position) except LeaveFrame: break - except JitException: + except jitexc.JitException: raise # go through except Exception, e: lle = get_llexception(self.cpu, e) @@ -902,8 +903,7 @@ @arguments("self", "i", "I", "R", "F", "I", "R", "F") def bhimpl_jit_merge_point(self, jdindex, *args): if self.nextblackholeinterp is None: # we are the last level - CRN = self.builder.metainterp_sd.ContinueRunningNormally - raise CRN(*args) + raise jitexc.ContinueRunningNormally(*args) # Note that the case above is an optimization: the case # below would work too. But it keeps unnecessary stuff on # the stack; the solution above first gets rid of the blackhole @@ -1400,7 +1400,7 @@ # we now proceed to interpret the bytecode in this frame self.run() # - except JitException, e: + except jitexc.JitException, e: raise # go through except Exception, e: # if we get an exception, return it to the caller frame @@ -1495,20 +1495,20 @@ sd = self.builder.metainterp_sd kind = self._return_type if kind == 'v': - raise sd.DoneWithThisFrameVoid() + raise jitexc.DoneWithThisFrameVoid() elif kind == 'i': - raise sd.DoneWithThisFrameInt(self.get_tmpreg_i()) + raise jitexc.DoneWithThisFrameInt(self.get_tmpreg_i()) elif kind == 'r': - raise sd.DoneWithThisFrameRef(self.cpu, self.get_tmpreg_r()) + raise jitexc.DoneWithThisFrameRef(self.cpu, self.get_tmpreg_r()) elif kind == 'f': - raise sd.DoneWithThisFrameFloat(self.get_tmpreg_f()) + raise jitexc.DoneWithThisFrameFloat(self.get_tmpreg_f()) else: assert False def _exit_frame_with_exception(self, e): sd = self.builder.metainterp_sd e = lltype.cast_opaque_ptr(llmemory.GCREF, e) - raise sd.ExitFrameWithExceptionRef(self.cpu, e) + raise jitexc.ExitFrameWithExceptionRef(self.cpu, e) def _handle_jitexception_in_portal(self, e): # This case is really rare, but can occur if @@ -1558,23 +1558,23 @@ while True: try: current_exc = blackholeinterp._resume_mainloop(current_exc) - except JitException, e: + except jitexc.JitException as e: blackholeinterp, current_exc = _handle_jitexception( blackholeinterp, e) blackholeinterp.builder.release_interp(blackholeinterp) blackholeinterp = blackholeinterp.nextblackholeinterp -def _handle_jitexception(blackholeinterp, jitexc): +def _handle_jitexception(blackholeinterp, exc): # See comments in _handle_jitexception_in_portal(). while not blackholeinterp.jitcode.is_portal: blackholeinterp.builder.release_interp(blackholeinterp) blackholeinterp = blackholeinterp.nextblackholeinterp if blackholeinterp.nextblackholeinterp is None: blackholeinterp.builder.release_interp(blackholeinterp) - raise jitexc # bottommost entry: go through + raise exc # bottommost entry: go through # We have reached a recursive portal level. try: - blackholeinterp._handle_jitexception_in_portal(jitexc) + blackholeinterp._handle_jitexception_in_portal(exc) except Exception, e: # It raised a general exception (it should not be a JitException here). lle = get_llexception(blackholeinterp.cpu, e) 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 @@ -12,7 +12,7 @@ from rpython.jit.metainterp.history import TreeLoop, Box, JitCellToken, TargetToken from rpython.jit.metainterp.history import AbstractFailDescr, BoxInt from rpython.jit.metainterp.history import BoxPtr, BoxFloat, ConstInt -from rpython.jit.metainterp import history, resume +from rpython.jit.metainterp import history, resume, jitexc from rpython.jit.metainterp.optimize import InvalidLoop from rpython.jit.metainterp.inliner import Inliner from rpython.jit.metainterp.resume import NUMBERING, PENDINGFIELDSP, ResumeDataDirectReader @@ -415,32 +415,32 @@ class DoneWithThisFrameDescrVoid(_DoneWithThisFrameDescr): def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd): assert jitdriver_sd.result_type == history.VOID - raise metainterp_sd.DoneWithThisFrameVoid() + raise jitexc.DoneWithThisFrameVoid() class DoneWithThisFrameDescrInt(_DoneWithThisFrameDescr): def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd): assert jitdriver_sd.result_type == history.INT result = metainterp_sd.cpu.get_int_value(deadframe, 0) - raise metainterp_sd.DoneWithThisFrameInt(result) + raise jitexc.DoneWithThisFrameInt(result) class DoneWithThisFrameDescrRef(_DoneWithThisFrameDescr): def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd): assert jitdriver_sd.result_type == history.REF cpu = metainterp_sd.cpu result = cpu.get_ref_value(deadframe, 0) - raise metainterp_sd.DoneWithThisFrameRef(cpu, result) + raise jitexc.DoneWithThisFrameRef(cpu, result) class DoneWithThisFrameDescrFloat(_DoneWithThisFrameDescr): def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd): assert jitdriver_sd.result_type == history.FLOAT result = metainterp_sd.cpu.get_float_value(deadframe, 0) - raise metainterp_sd.DoneWithThisFrameFloat(result) + raise jitexc.DoneWithThisFrameFloat(result) class ExitFrameWithExceptionDescrRef(_DoneWithThisFrameDescr): def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd): cpu = metainterp_sd.cpu value = cpu.get_ref_value(deadframe, 0) - raise metainterp_sd.ExitFrameWithExceptionRef(cpu, value) + raise jitexc.ExitFrameWithExceptionRef(cpu, value) class TerminatingLoopToken(JitCellToken): # FIXME: kill? @@ -865,7 +865,7 @@ if not exception: exception = cast_instance_to_gcref(memory_error) assert exception, "PropagateExceptionDescr: no exception??" - raise metainterp_sd.ExitFrameWithExceptionRef(cpu, exception) + raise jitexc.ExitFrameWithExceptionRef(cpu, exception) def compile_tmp_callback(cpu, jitdriver_sd, greenboxes, redargtypes, memory_manager=None): diff --git a/rpython/jit/metainterp/jitexc.py b/rpython/jit/metainterp/jitexc.py --- a/rpython/jit/metainterp/jitexc.py +++ b/rpython/jit/metainterp/jitexc.py @@ -1,8 +1,9 @@ from rpython.rtyper.annlowlevel import cast_instance_to_base_ptr from rpython.rtyper.annlowlevel import cast_base_ptr_to_instance -from rpython.rtyper.lltypesystem import rclass +from rpython.rtyper.lltypesystem import lltype, rclass from rpython.rtyper.llinterp import LLException from rpython.rlib.objectmodel import we_are_translated +from rpython.jit.codewriter import longlong class JitException(Exception): @@ -12,6 +13,54 @@ """ _go_through_llinterp_uncaught_ = True # ugh +class DoneWithThisFrameVoid(JitException): + def __str__(self): + return 'DoneWithThisFrameVoid()' + +class DoneWithThisFrameInt(JitException): + def __init__(self, result): + assert lltype.typeOf(result) is lltype.Signed + self.result = result + def __str__(self): + return 'DoneWithThisFrameInt(%s)' % (self.result,) + +class DoneWithThisFrameRef(JitException): + def __init__(self, cpu, result): + assert lltype.typeOf(result) == cpu.ts.BASETYPE + self.result = result + def __str__(self): + return 'DoneWithThisFrameRef(%s)' % (self.result,) + +class DoneWithThisFrameFloat(JitException): + def __init__(self, result): + assert lltype.typeOf(result) is longlong.FLOATSTORAGE + self.result = result + def __str__(self): + return 'DoneWithThisFrameFloat(%s)' % (self.result,) + +class ExitFrameWithExceptionRef(JitException): + def __init__(self, cpu, value): + assert lltype.typeOf(value) == cpu.ts.BASETYPE + self.value = value + def __str__(self): + return 'ExitFrameWithExceptionRef(%s)' % (self.value,) + +class ContinueRunningNormally(JitException): + def __init__(self, gi, gr, gf, ri, rr, rf): + # the six arguments are: lists of green ints, greens refs, + # green floats, red ints, red refs, and red floats. + self.green_int = gi + self.green_ref = gr + self.green_float = gf + self.red_int = ri + self.red_ref = rr + self.red_float = rf + def __str__(self): + return 'ContinueRunningNormally(%s, %s, %s, %s, %s, %s)' % ( + self.green_int, self.green_ref, self.green_float, + self.red_int, self.red_ref, self.red_float) + + def _get_standard_error(rtyper, Class): exdata = rtyper.getexceptiondata() clsdef = rtyper.annotator.bookkeeper.getuniqueclassdef(Class) 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 @@ -5,11 +5,10 @@ from rpython.jit.codewriter import heaptracker from rpython.jit.codewriter.effectinfo import EffectInfo from rpython.jit.codewriter.jitcode import JitCode, SwitchDictDescr -from rpython.jit.metainterp import history, compile, resume, executor +from rpython.jit.metainterp import history, compile, resume, executor, jitexc from rpython.jit.metainterp.heapcache import HeapCache from rpython.jit.metainterp.history import (Const, ConstInt, ConstPtr, ConstFloat, Box, TargetToken) -from rpython.jit.metainterp.jitexc import JitException, get_llexception from rpython.jit.metainterp.jitprof import EmptyProfiler from rpython.jit.metainterp.logger import Logger from rpython.jit.metainterp.optimizeopt.util import args_dict_box @@ -1705,13 +1704,13 @@ result_type = self.jitdriver_sd.result_type if result_type == history.VOID: assert resultbox is None - raise sd.DoneWithThisFrameVoid() + raise jitexc.DoneWithThisFrameVoid() elif result_type == history.INT: - raise sd.DoneWithThisFrameInt(resultbox.getint()) + raise jitexc.DoneWithThisFrameInt(resultbox.getint()) elif result_type == history.REF: - raise sd.DoneWithThisFrameRef(self.cpu, resultbox.getref_base()) + raise jitexc.DoneWithThisFrameRef(self.cpu, resultbox.getref_base()) elif result_type == history.FLOAT: - raise sd.DoneWithThisFrameFloat(resultbox.getfloatstorage()) + raise jitexc.DoneWithThisFrameFloat(resultbox.getfloatstorage()) else: assert False @@ -1734,7 +1733,7 @@ self.compile_exit_frame_with_exception(excvaluebox) except SwitchToBlackhole, stb: self.aborted_tracing(stb.reason) - raise self.staticdata.ExitFrameWithExceptionRef(self.cpu, excvaluebox.getref_base()) + raise jitexc.ExitFrameWithExceptionRef(self.cpu, excvaluebox.getref_base()) def check_recursion_invariant(self): portal_call_depth = -1 @@ -1842,9 +1841,9 @@ op.name = self.framestack[-1].jitcode.name def execute_raised(self, exception, constant=False): - if isinstance(exception, JitException): - raise JitException, exception # go through - llexception = get_llexception(self.cpu, exception) + if isinstance(exception, jitexc.JitException): + raise jitexc.JitException, exception # go through + llexception = jitexc.get_llexception(self.cpu, exception) self.execute_ll_raised(llexception, constant) def execute_ll_raised(self, llexception, constant=False): @@ -2089,7 +2088,7 @@ gi, gr, gf = self._unpack_boxes(live_arg_boxes, 0, num_green_args) ri, rr, rf = self._unpack_boxes(live_arg_boxes, num_green_args, len(live_arg_boxes)) - CRN = self.staticdata.ContinueRunningNormally + CRN = jitexc.ContinueRunningNormally raise CRN(gi, gr, gf, ri, rr, rf) else: # However, in order to keep the existing tests working @@ -2671,11 +2670,11 @@ # ____________________________________________________________ -class ChangeFrame(JitException): +class ChangeFrame(jitexc.JitException): """Raised after we mutated metainterp.framestack, in order to force it to reload the current top-of-stack frame that gets interpreted.""" -class SwitchToBlackhole(JitException): +class SwitchToBlackhole(jitexc.JitException): def __init__(self, reason, raising_exception=False): self.reason = reason self.raising_exception = raising_exception diff --git a/rpython/jit/metainterp/test/support.py b/rpython/jit/metainterp/test/support.py --- a/rpython/jit/metainterp/test/support.py +++ b/rpython/jit/metainterp/test/support.py @@ -6,7 +6,7 @@ from rpython.jit.metainterp.warmspot import ll_meta_interp, get_stats from rpython.jit.metainterp.warmstate import unspecialize_value from rpython.jit.metainterp.optimizeopt import ALL_OPTS_DICT -from rpython.jit.metainterp import pyjitpl, history +from rpython.jit.metainterp import pyjitpl, history, jitexc from rpython.jit.codewriter.policy import JitPolicy from rpython.jit.codewriter import codewriter, longlong from rpython.rlib.rfloat import isnan @@ -118,30 +118,19 @@ return blackholeinterp._final_result_anytype() def _run_with_pyjitpl(testself, args): - - class DoneWithThisFrame(Exception): - pass - - class DoneWithThisFrameRef(DoneWithThisFrame): - def __init__(self, cpu, *args): - DoneWithThisFrame.__init__(self, *args) - cw = testself.cw opt = history.Options(listops=True) metainterp_sd = pyjitpl.MetaInterpStaticData(cw.cpu, opt) metainterp_sd.finish_setup(cw) [jitdriver_sd] = metainterp_sd.jitdrivers_sd metainterp = pyjitpl.MetaInterp(metainterp_sd, jitdriver_sd) - metainterp_sd.DoneWithThisFrameInt = DoneWithThisFrame - metainterp_sd.DoneWithThisFrameRef = DoneWithThisFrameRef - metainterp_sd.DoneWithThisFrameFloat = DoneWithThisFrame testself.metainterp = metainterp try: metainterp.compile_and_run_once(jitdriver_sd, *args) - except DoneWithThisFrame, e: - #if option.view: - # metainterp.stats.view() - return e.args[0] + except (jitexc.DoneWithThisFrameInt, + jitexc.DoneWithThisFrameRef, + jitexc.DoneWithThisFrameFloat) as e: + return e.result else: raise Exception("FAILED") diff --git a/rpython/jit/metainterp/test/test_blackhole.py b/rpython/jit/metainterp/test/test_blackhole.py --- a/rpython/jit/metainterp/test/test_blackhole.py +++ b/rpython/jit/metainterp/test/test_blackhole.py @@ -4,7 +4,7 @@ from rpython.jit.metainterp.blackhole import BlackholeInterpBuilder from rpython.jit.metainterp.blackhole import BlackholeInterpreter from rpython.jit.metainterp.blackhole import convert_and_run_from_pyjitpl -from rpython.jit.metainterp import history, pyjitpl +from rpython.jit.metainterp import history, pyjitpl, jitexc from rpython.jit.codewriter.assembler import JitCode from rpython.rtyper.lltypesystem import lltype, llmemory from rpython.rtyper.llinterp import LLException @@ -119,6 +119,7 @@ "\x01\x02", # int_return/i [], num_regs_i=3, num_regs_r=0, num_regs_f=0) + jitcode.is_portal = True pc = 1 registers_i = [history.BoxInt(40), history.ConstInt(2), None] class MyMetaInterp: @@ -129,8 +130,6 @@ def start_blackhole(): pass @staticmethod def end_blackhole(): pass - class DoneWithThisFrameInt(Exception): - pass last_exc_value_box = None framestack = [MyMIFrame()] MyMetaInterp.staticdata.blackholeinterpbuilder = getblackholeinterp( @@ -138,9 +137,9 @@ MyMetaInterp.staticdata.blackholeinterpbuilder.metainterp_sd = \ MyMetaInterp.staticdata # - d = py.test.raises(MyMetaInterp.staticdata.DoneWithThisFrameInt, + d = py.test.raises(jitexc.DoneWithThisFrameInt, convert_and_run_from_pyjitpl, MyMetaInterp()) - assert d.value.args == (42,) + assert d.value.result == 42 class TestBlackhole(LLJitMixin): diff --git a/rpython/jit/metainterp/test/test_warmspot.py b/rpython/jit/metainterp/test/test_warmspot.py --- a/rpython/jit/metainterp/test/test_warmspot.py +++ b/rpython/jit/metainterp/test/test_warmspot.py @@ -1,4 +1,5 @@ import py +from rpython.jit.metainterp import jitexc from rpython.jit.metainterp.warmspot import get_stats from rpython.rlib.jit import JitDriver, set_param, unroll_safe, jit_callback from rpython.jit.backend.llgraph import runner @@ -583,14 +584,14 @@ no = self.no assert deadframe._no == no if no == 0: - raise metainterp_sd.warmrunnerdesc.DoneWithThisFrameInt(3) + raise jitexc.DoneWithThisFrameInt(3) if no == 1: - raise metainterp_sd.warmrunnerdesc.ContinueRunningNormally( + raise jitexc.ContinueRunningNormally( [0], [], [], [1], [], []) if no == 3: exc = lltype.malloc(OBJECT) exc.typeptr = exc_vtable - raise metainterp_sd.warmrunnerdesc.ExitFrameWithExceptionRef( + raise jitexc.ExitFrameWithExceptionRef( metainterp_sd.cpu, lltype.cast_opaque_ptr(llmemory.GCREF, exc)) assert 0 diff --git a/rpython/jit/metainterp/warmspot.py b/rpython/jit/metainterp/warmspot.py --- a/rpython/jit/metainterp/warmspot.py +++ b/rpython/jit/metainterp/warmspot.py @@ -16,10 +16,9 @@ from rpython.translator.backendopt import removenoops from rpython.translator.unsimplify import call_final_function -from rpython.jit.metainterp import history, pyjitpl, gc, memmgr +from rpython.jit.metainterp import history, pyjitpl, gc, memmgr, jitexc from rpython.jit.metainterp.pyjitpl import MetaInterpStaticData from rpython.jit.metainterp.jitprof import Profiler, EmptyProfiler -from rpython.jit.metainterp.jitexc import JitException from rpython.jit.metainterp.jitdriver import JitDriverStaticData from rpython.jit.codewriter import support, codewriter, longlong from rpython.jit.codewriter.policy import JitPolicy @@ -172,9 +171,6 @@ stats.maybe_view() stats.check_consistency() -class ContinueRunningNormallyBase(JitException): - pass - # ____________________________________________________________ class WarmRunnerDesc(object): @@ -210,7 +206,6 @@ # self.hooks = policy.jithookiface self.make_virtualizable_infos() - self.make_exception_classes() self.make_driverhook_graphs() self.make_enter_functions() self.rewrite_jit_merge_points(policy) @@ -466,70 +461,6 @@ vinfos[VTYPEPTR] = VirtualizableInfo(self, VTYPEPTR) jd.virtualizable_info = vinfos[VTYPEPTR] - def make_exception_classes(self): - - class DoneWithThisFrameVoid(JitException): - def __str__(self): - return 'DoneWithThisFrameVoid()' - - class DoneWithThisFrameInt(JitException): - def __init__(self, result): - assert lltype.typeOf(result) is lltype.Signed - self.result = result - def __str__(self): - return 'DoneWithThisFrameInt(%s)' % (self.result,) - - class DoneWithThisFrameRef(JitException): - def __init__(self, cpu, result): - assert lltype.typeOf(result) == cpu.ts.BASETYPE - self.result = result - def __str__(self): - return 'DoneWithThisFrameRef(%s)' % (self.result,) - - class DoneWithThisFrameFloat(JitException): - def __init__(self, result): - assert lltype.typeOf(result) is longlong.FLOATSTORAGE - self.result = result - def __str__(self): - return 'DoneWithThisFrameFloat(%s)' % (self.result,) - - class ExitFrameWithExceptionRef(JitException): - def __init__(self, cpu, value): - assert lltype.typeOf(value) == cpu.ts.BASETYPE - self.value = value - def __str__(self): - return 'ExitFrameWithExceptionRef(%s)' % (self.value,) - - class ContinueRunningNormally(ContinueRunningNormallyBase): - def __init__(self, gi, gr, gf, ri, rr, rf): - # the six arguments are: lists of green ints, greens refs, - # green floats, red ints, red refs, and red floats. - self.green_int = gi - self.green_ref = gr - self.green_float = gf - self.red_int = ri - self.red_ref = rr - self.red_float = rf - def __str__(self): - return 'ContinueRunningNormally(%s, %s, %s, %s, %s, %s)' % ( - self.green_int, self.green_ref, self.green_float, - self.red_int, self.red_ref, self.red_float) - - # XXX there is no point any more to not just have the exceptions - # as globals - self.DoneWithThisFrameVoid = DoneWithThisFrameVoid - self.DoneWithThisFrameInt = DoneWithThisFrameInt - self.DoneWithThisFrameRef = DoneWithThisFrameRef - self.DoneWithThisFrameFloat = DoneWithThisFrameFloat - self.ExitFrameWithExceptionRef = ExitFrameWithExceptionRef - self.ContinueRunningNormally = ContinueRunningNormally - self.metainterp_sd.DoneWithThisFrameVoid = DoneWithThisFrameVoid - self.metainterp_sd.DoneWithThisFrameInt = DoneWithThisFrameInt - self.metainterp_sd.DoneWithThisFrameRef = DoneWithThisFrameRef - self.metainterp_sd.DoneWithThisFrameFloat = DoneWithThisFrameFloat - self.metainterp_sd.ExitFrameWithExceptionRef = ExitFrameWithExceptionRef - self.metainterp_sd.ContinueRunningNormally = ContinueRunningNormally - def make_enter_functions(self): for jd in self.jitdrivers_sd: self.make_enter_function(jd) @@ -544,7 +475,7 @@ tb = not we_are_translated() and sys.exc_info()[2] try: raise e - except JitException: + except jitexc.JitException: raise # go through except MemoryError: raise # go through @@ -850,7 +781,7 @@ # want to interrupt the whole interpreter loop. return support.maybe_on_top_of_llinterp(rtyper, portal_ptr)(*args) - except self.ContinueRunningNormally, e: + except jitexc.ContinueRunningNormally, e: args = () for ARGTYPE, attrname, count in portalfunc_ARGS: x = getattr(e, attrname)[count] @@ -858,19 +789,19 @@ args = args + (x,) start = False continue - except self.DoneWithThisFrameVoid: + except jitexc.DoneWithThisFrameVoid: assert result_kind == 'void' return - except self.DoneWithThisFrameInt, e: + except jitexc.DoneWithThisFrameInt, e: assert result_kind == 'int' return specialize_value(RESULT, e.result) - except self.DoneWithThisFrameRef, e: + except jitexc.DoneWithThisFrameRef, e: assert result_kind == 'ref' return specialize_value(RESULT, e.result) - except self.DoneWithThisFrameFloat, e: + except jitexc.DoneWithThisFrameFloat, e: assert result_kind == 'float' return specialize_value(RESULT, e.result) - except self.ExitFrameWithExceptionRef, e: + except jitexc.ExitFrameWithExceptionRef, e: value = ts.cast_to_baseclass(e.value) if not we_are_translated(): raise LLException(ts.get_typeptr(value), value) @@ -882,7 +813,7 @@ # XXX the bulk of this function is mostly a copy-paste from above try: raise e - except self.ContinueRunningNormally, e: + except jitexc.ContinueRunningNormally, e: args = () for ARGTYPE, attrname, count in portalfunc_ARGS: x = getattr(e, attrname)[count] @@ -892,19 +823,19 @@ if result_kind != 'void': result = unspecialize_value(result) return result - except self.DoneWithThisFrameVoid: + except jitexc.DoneWithThisFrameVoid: assert result_kind == 'void' return - except self.DoneWithThisFrameInt, e: + except jitexc.DoneWithThisFrameInt, e: assert result_kind == 'int' return e.result - except self.DoneWithThisFrameRef, e: + except jitexc.DoneWithThisFrameRef, e: assert result_kind == 'ref' return e.result - except self.DoneWithThisFrameFloat, e: + except jitexc.DoneWithThisFrameFloat, e: assert result_kind == 'float' return e.result - except self.ExitFrameWithExceptionRef, e: + except jitexc.ExitFrameWithExceptionRef, e: value = ts.cast_to_baseclass(e.value) if not we_are_translated(): raise LLException(ts.get_typeptr(value), value) @@ -932,7 +863,7 @@ vinfo.reset_vable_token(virtualizable) try: fail_descr.handle_fail(deadframe, self.metainterp_sd, jd) - except JitException, e: + except jitexc.JitException, e: return handle_jitexception(e) else: assert 0, "should have raised" _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit