Author: Armin Rigo <[email protected]>
Branch: issue2335
Changeset: r85626:790e1806bcc0
Date: 2016-07-09 15:31 +0200
http://bitbucket.org/pypy/pypy/changeset/790e1806bcc0/
Log: Fixes, comments
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
@@ -2544,11 +2544,11 @@
elif box.type == history.FLOAT: args.append(box.getfloatstorage())
else: assert 0
res = self.jitdriver_sd.warmstate.execute_assembler(loop_token, *args)
- kind = getkind(lltype.typeOf(res))
- if kind == history.VOID: raise DoneWithThisFrameVoid()
- if kind == history.INT: raise DoneWithThisFrameInt(res)
- if kind == history.REF: raise DoneWithThisFrameRef(self.cpu, res)
- if kind == history.FLOAT: raise DoneWithThisFrameFloat(res)
+ kind = history.getkind(lltype.typeOf(res))
+ if kind == 'void': raise jitexc.DoneWithThisFrameVoid()
+ if kind == 'int': raise jitexc.DoneWithThisFrameInt(res)
+ if kind == 'ref': raise jitexc.DoneWithThisFrameRef(self.cpu, res)
+ if kind == 'float': raise jitexc.DoneWithThisFrameFloat(res)
raise AssertionError(kind)
def prepare_resume_from_failure(self, deadframe, inputargs, resumedescr):
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
@@ -834,7 +834,6 @@
# more stuff
#
# to that:
- # XXX there are too many exceptions all around...
#
# def original_portal(..):
# stuff
@@ -843,20 +842,9 @@
# def portal_runner(*args):
# while 1:
# try:
- # try:
- # return portal(*args)
- # except EnterJitAssembler, e:
- # while True:
- # try:
- # return e.execute()
- # except EnterJitAssembler, e:
- # continue
- # except ContinueRunningNormally, e:
- # *args = *e.new_args
- # except DoneWithThisFrame, e:
- # return e.return
- # except ExitFrameWithException, e:
- # raise Exception, e.value
+ # return portal(*args)
+ # except JitException, e:
+ # return handle_jitexception(e)
#
# def portal(*args):
# while 1:
@@ -920,6 +908,7 @@
return result
def handle_jitexception(e):
+ # XXX there are too many exceptions all around...
while True:
if isinstance(e, EnterJitAssembler):
try:
diff --git a/rpython/jit/metainterp/warmstate.py
b/rpython/jit/metainterp/warmstate.py
--- a/rpython/jit/metainterp/warmstate.py
+++ b/rpython/jit/metainterp/warmstate.py
@@ -407,13 +407,13 @@
return None
if result_type == history.INT:
if isinstance(fail_descr, compile.DoneWithThisFrameDescrInt):
- return fail_descr.get_result()
+ return fail_descr.get_result(cpu, deadframe)
if result_type == history.REF:
if isinstance(fail_descr, compile.DoneWithThisFrameDescrRef):
- return fail_descr.get_result()
+ return fail_descr.get_result(cpu, deadframe)
if result_type == history.FLOAT:
if isinstance(fail_descr, compile.DoneWithThisFrameDescrFloat):
- return fail_descr.get_result()
+ return fail_descr.get_result(cpu, deadframe)
#
# General case
fail_descr.handle_fail(deadframe, metainterp_sd, jitdriver_sd)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit