Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
4fff26a3
Commit
4fff26a3
authored
Mar 29, 2014
by
Paul Sokolovsky
Browse files
vm: Factor out exception block setup to a macro.
Will be reused in WITH bytecodes.
parent
c47fd2da
Changes
1
Hide whitespace changes
Inline
Side-by-side
py/vm.c
View file @
4fff26a3
...
...
@@ -44,6 +44,14 @@ typedef enum {
#define TOP() (*sp)
#define SET_TOP(val) *sp = (val)
#define SETUP_BLOCK() \
DECODE_ULABEL;
/* except labels are always forward */
\
++exc_sp; \
exc_sp->opcode = op; \
exc_sp->handler = ip + unum; \
exc_sp->val_sp = MP_TAGPTR_MAKE(sp, currently_in_except_block); \
currently_in_except_block = 0;
/* in a try block now */
mp_vm_return_kind_t
mp_execute_byte_code
(
const
byte
*
code
,
const
mp_obj_t
*
args
,
uint
n_args
,
const
mp_obj_t
*
args2
,
uint
n_args2
,
mp_obj_t
*
ret
)
{
const
byte
*
ip
=
code
;
...
...
@@ -398,12 +406,7 @@ unwind_jump:
// matched against: POP_BLOCK or POP_EXCEPT (anything else?)
case
MP_BC_SETUP_EXCEPT
:
case
MP_BC_SETUP_FINALLY
:
DECODE_ULABEL
;
// except labels are always forward
++
exc_sp
;
exc_sp
->
opcode
=
op
;
exc_sp
->
handler
=
ip
+
unum
;
exc_sp
->
val_sp
=
MP_TAGPTR_MAKE
(
sp
,
currently_in_except_block
);
currently_in_except_block
=
0
;
// in a try block now
SETUP_BLOCK
();
break
;
case
MP_BC_END_FINALLY
:
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment