Skip to content
Snippets Groups Projects
Commit 682f9e63 authored by Paul Sokolovsky's avatar Paul Sokolovsky
Browse files

vm: Make sure that exception triple is <type, instance, traceback>.

This reduntant triple is one of the ugliest parts of Python, which they
chickened out to fix in Python3. We really should consider passing just
as single exception instance (without breaking Python-level APIs of course),
but until we do, let's follow CPython layout.
parent 4fff26a3
Branches
No related tags found
No related merge requests found
...@@ -415,8 +415,8 @@ unwind_jump: ...@@ -415,8 +415,8 @@ unwind_jump:
// if TOS is None, just pops it and continues // if TOS is None, just pops it and continues
// if TOS is an integer, does something else // if TOS is an integer, does something else
// else error // else error
if (mp_obj_is_exception_instance(TOP())) { if (mp_obj_is_exception_type(TOP())) {
nlr_jump(TOP()); nlr_jump(sp[-1]);
} }
if (TOP() == mp_const_none) { if (TOP() == mp_const_none) {
sp--; sp--;
...@@ -716,7 +716,7 @@ unwind_return: ...@@ -716,7 +716,7 @@ unwind_return:
// push(traceback, exc-val, exc-type) // push(traceback, exc-val, exc-type)
PUSH(mp_const_none); PUSH(mp_const_none);
PUSH(nlr.ret_val); PUSH(nlr.ret_val);
PUSH(nlr.ret_val); // TODO should be type(nlr.ret_val), I think... PUSH(mp_obj_get_type(nlr.ret_val));
} else { } else {
// propagate exception to higher level // propagate exception to higher level
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment