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
9309d998
Commit
9309d998
authored
Apr 15, 2014
by
AZ Huang
Browse files
Move entry_table to separated header file.
parent
8c1bec4a
Changes
4
Hide whitespace changes
Inline
Side-by-side
py/entry_table.h
0 → 100644
View file @
9309d998
static
void
*
entry_table
[
256
]
=
{
[
0
...
255
]
=
&&
entry_default
,
[
MP_BC_LOAD_CONST_FALSE
]
=
&&
entry_MP_BC_LOAD_CONST_FALSE
,
[
MP_BC_LOAD_CONST_NONE
]
=
&&
entry_MP_BC_LOAD_CONST_NONE
,
[
MP_BC_LOAD_CONST_TRUE
]
=
&&
entry_MP_BC_LOAD_CONST_TRUE
,
[
MP_BC_LOAD_CONST_ELLIPSIS
]
=
&&
entry_MP_BC_LOAD_CONST_ELLIPSIS
,
[
MP_BC_LOAD_CONST_SMALL_INT
]
=
&&
entry_MP_BC_LOAD_CONST_SMALL_INT
,
[
MP_BC_LOAD_CONST_INT
]
=
&&
entry_MP_BC_LOAD_CONST_INT
,
[
MP_BC_LOAD_CONST_DEC
]
=
&&
entry_MP_BC_LOAD_CONST_DEC
,
[
MP_BC_LOAD_CONST_ID
]
=
&&
entry_MP_BC_LOAD_CONST_ID
,
[
MP_BC_LOAD_CONST_BYTES
]
=
&&
entry_MP_BC_LOAD_CONST_BYTES
,
[
MP_BC_LOAD_CONST_STRING
]
=
&&
entry_MP_BC_LOAD_CONST_STRING
,
[
MP_BC_LOAD_NULL
]
=
&&
entry_MP_BC_LOAD_NULL
,
[
MP_BC_LOAD_FAST_0
]
=
&&
entry_MP_BC_LOAD_FAST_0
,
[
MP_BC_LOAD_FAST_1
]
=
&&
entry_MP_BC_LOAD_FAST_1
,
[
MP_BC_LOAD_FAST_2
]
=
&&
entry_MP_BC_LOAD_FAST_2
,
[
MP_BC_LOAD_FAST_N
]
=
&&
entry_MP_BC_LOAD_FAST_N
,
[
MP_BC_LOAD_DEREF
]
=
&&
entry_MP_BC_LOAD_DEREF
,
[
MP_BC_LOAD_NAME
]
=
&&
entry_MP_BC_LOAD_NAME
,
[
MP_BC_LOAD_GLOBAL
]
=
&&
entry_MP_BC_LOAD_GLOBAL
,
[
MP_BC_LOAD_ATTR
]
=
&&
entry_MP_BC_LOAD_ATTR
,
[
MP_BC_LOAD_METHOD
]
=
&&
entry_MP_BC_LOAD_METHOD
,
[
MP_BC_LOAD_BUILD_CLASS
]
=
&&
entry_MP_BC_LOAD_BUILD_CLASS
,
[
MP_BC_STORE_FAST_0
]
=
&&
entry_MP_BC_STORE_FAST_0
,
[
MP_BC_STORE_FAST_1
]
=
&&
entry_MP_BC_STORE_FAST_1
,
[
MP_BC_STORE_FAST_2
]
=
&&
entry_MP_BC_STORE_FAST_2
,
[
MP_BC_STORE_FAST_N
]
=
&&
entry_MP_BC_STORE_FAST_N
,
[
MP_BC_STORE_DEREF
]
=
&&
entry_MP_BC_STORE_DEREF
,
[
MP_BC_STORE_NAME
]
=
&&
entry_MP_BC_STORE_NAME
,
[
MP_BC_STORE_GLOBAL
]
=
&&
entry_MP_BC_STORE_GLOBAL
,
[
MP_BC_STORE_ATTR
]
=
&&
entry_MP_BC_STORE_ATTR
,
[
MP_BC_STORE_SUBSCR
]
=
&&
entry_MP_BC_STORE_SUBSCR
,
[
MP_BC_DELETE_FAST
]
=
&&
entry_MP_BC_DELETE_FAST
,
[
MP_BC_DELETE_DEREF
]
=
&&
entry_MP_BC_DELETE_DEREF
,
[
MP_BC_DELETE_NAME
]
=
&&
entry_MP_BC_DELETE_NAME
,
[
MP_BC_DELETE_GLOBAL
]
=
&&
entry_MP_BC_DELETE_GLOBAL
,
[
MP_BC_DUP_TOP
]
=
&&
entry_MP_BC_DUP_TOP
,
[
MP_BC_DUP_TOP_TWO
]
=
&&
entry_MP_BC_DUP_TOP_TWO
,
[
MP_BC_POP_TOP
]
=
&&
entry_MP_BC_POP_TOP
,
[
MP_BC_ROT_TWO
]
=
&&
entry_MP_BC_ROT_TWO
,
[
MP_BC_ROT_THREE
]
=
&&
entry_MP_BC_ROT_THREE
,
[
MP_BC_JUMP
]
=
&&
entry_MP_BC_JUMP
,
[
MP_BC_POP_JUMP_IF_TRUE
]
=
&&
entry_MP_BC_POP_JUMP_IF_TRUE
,
[
MP_BC_POP_JUMP_IF_FALSE
]
=
&&
entry_MP_BC_POP_JUMP_IF_FALSE
,
[
MP_BC_JUMP_IF_TRUE_OR_POP
]
=
&&
entry_MP_BC_JUMP_IF_TRUE_OR_POP
,
[
MP_BC_JUMP_IF_FALSE_OR_POP
]
=
&&
entry_MP_BC_JUMP_IF_FALSE_OR_POP
,
// [MP_BC_SETUP_LOOP] = &&entry_MP_BC_SETUP_LOOP,
[
MP_BC_SETUP_WITH
]
=
&&
entry_MP_BC_SETUP_WITH
,
[
MP_BC_WITH_CLEANUP
]
=
&&
entry_MP_BC_WITH_CLEANUP
,
[
MP_BC_UNWIND_JUMP
]
=
&&
entry_MP_BC_UNWIND_JUMP
,
[
MP_BC_SETUP_EXCEPT
]
=
&&
entry_MP_BC_SETUP_EXCEPT
,
[
MP_BC_SETUP_FINALLY
]
=
&&
entry_MP_BC_SETUP_FINALLY
,
[
MP_BC_END_FINALLY
]
=
&&
entry_MP_BC_END_FINALLY
,
[
MP_BC_GET_ITER
]
=
&&
entry_MP_BC_GET_ITER
,
[
MP_BC_FOR_ITER
]
=
&&
entry_MP_BC_FOR_ITER
,
[
MP_BC_POP_BLOCK
]
=
&&
entry_MP_BC_POP_BLOCK
,
[
MP_BC_POP_EXCEPT
]
=
&&
entry_MP_BC_POP_EXCEPT
,
[
MP_BC_NOT
]
=
&&
entry_MP_BC_NOT
,
[
MP_BC_UNARY_OP
]
=
&&
entry_MP_BC_UNARY_OP
,
[
MP_BC_BINARY_OP
]
=
&&
entry_MP_BC_BINARY_OP
,
[
MP_BC_BUILD_TUPLE
]
=
&&
entry_MP_BC_BUILD_TUPLE
,
[
MP_BC_BUILD_LIST
]
=
&&
entry_MP_BC_BUILD_LIST
,
[
MP_BC_LIST_APPEND
]
=
&&
entry_MP_BC_LIST_APPEND
,
[
MP_BC_BUILD_MAP
]
=
&&
entry_MP_BC_BUILD_MAP
,
[
MP_BC_STORE_MAP
]
=
&&
entry_MP_BC_STORE_MAP
,
[
MP_BC_MAP_ADD
]
=
&&
entry_MP_BC_MAP_ADD
,
[
MP_BC_BUILD_SET
]
=
&&
entry_MP_BC_BUILD_SET
,
[
MP_BC_SET_ADD
]
=
&&
entry_MP_BC_SET_ADD
,
[
MP_BC_BUILD_SLICE
]
=
&&
entry_MP_BC_BUILD_SLICE
,
[
MP_BC_UNPACK_SEQUENCE
]
=
&&
entry_MP_BC_UNPACK_SEQUENCE
,
[
MP_BC_UNPACK_EX
]
=
&&
entry_MP_BC_UNPACK_EX
,
[
MP_BC_MAKE_FUNCTION
]
=
&&
entry_MP_BC_MAKE_FUNCTION
,
[
MP_BC_MAKE_FUNCTION_DEFARGS
]
=
&&
entry_MP_BC_MAKE_FUNCTION_DEFARGS
,
[
MP_BC_MAKE_CLOSURE
]
=
&&
entry_MP_BC_MAKE_CLOSURE
,
[
MP_BC_MAKE_CLOSURE_DEFARGS
]
=
&&
entry_MP_BC_MAKE_CLOSURE_DEFARGS
,
[
MP_BC_CALL_FUNCTION
]
=
&&
entry_MP_BC_CALL_FUNCTION
,
[
MP_BC_CALL_FUNCTION_VAR_KW
]
=
&&
entry_MP_BC_CALL_FUNCTION_VAR_KW
,
[
MP_BC_CALL_METHOD
]
=
&&
entry_MP_BC_CALL_METHOD
,
[
MP_BC_CALL_METHOD_VAR_KW
]
=
&&
entry_MP_BC_CALL_METHOD_VAR_KW
,
[
MP_BC_RETURN_VALUE
]
=
&&
entry_MP_BC_RETURN_VALUE
,
[
MP_BC_RAISE_VARARGS
]
=
&&
entry_MP_BC_RAISE_VARARGS
,
[
MP_BC_YIELD_VALUE
]
=
&&
entry_MP_BC_YIELD_VALUE
,
[
MP_BC_YIELD_FROM
]
=
&&
entry_MP_BC_YIELD_FROM
,
[
MP_BC_IMPORT_NAME
]
=
&&
entry_MP_BC_IMPORT_NAME
,
[
MP_BC_IMPORT_FROM
]
=
&&
entry_MP_BC_IMPORT_FROM
,
[
MP_BC_IMPORT_STAR
]
=
&&
entry_MP_BC_IMPORT_STAR
,
};
py/mpconfig.h
View file @
9309d998
...
...
@@ -156,8 +156,8 @@ typedef double mp_float_t;
// Whether to use computed gotos in the VM, or a switch
// Computed gotos are roughly 10% faster, and increase VM code size by a little
#ifndef MICROPY_USE_COMPUTED_GOTO
#define MICROPY_USE_COMPUTED_GOTO (0)
#ifndef MICROPY_USE_COMPUTED_GOTO
S
#define MICROPY_USE_COMPUTED_GOTO
S
(0)
#endif
// Additional builtin function definitions - see builtintables.c:builtin_object_table for format.
...
...
py/vm.c
View file @
9309d998
...
...
@@ -167,107 +167,19 @@ mp_vm_return_kind_t mp_execute_byte_code_2(const byte *code_info, const byte **i
volatile
mp_obj_t
inject_exc
)
{
// careful: be sure to declare volatile any variables read in the exception handler (written is ok, I think)
#if MICROPY_USE_COMPUTED_GOTO
#
define DISPATCH() do { \
save_ip = ip; \
op = *ip++; \
goto *entry_table[op]; \
#if MICROPY_USE_COMPUTED_GOTO
S
#include
"entry_table.h"
#
define DISPATCH() do { \
save_ip = ip; \
op = *ip++; \
goto *entry_table[op]; \
} while(0)
# define ENTRY(op) entry_##op
# define ENTRY_DEFAULT entry_default
static
void
*
entry_table
[
256
]
=
{
[
0
...
255
]
=
&&
entry_default
,
[
MP_BC_LOAD_CONST_FALSE
]
=
&&
entry_MP_BC_LOAD_CONST_FALSE
,
[
MP_BC_LOAD_CONST_NONE
]
=
&&
entry_MP_BC_LOAD_CONST_NONE
,
[
MP_BC_LOAD_CONST_TRUE
]
=
&&
entry_MP_BC_LOAD_CONST_TRUE
,
[
MP_BC_LOAD_CONST_ELLIPSIS
]
=
&&
entry_MP_BC_LOAD_CONST_ELLIPSIS
,
[
MP_BC_LOAD_CONST_SMALL_INT
]
=
&&
entry_MP_BC_LOAD_CONST_SMALL_INT
,
[
MP_BC_LOAD_CONST_INT
]
=
&&
entry_MP_BC_LOAD_CONST_INT
,
[
MP_BC_LOAD_CONST_DEC
]
=
&&
entry_MP_BC_LOAD_CONST_DEC
,
[
MP_BC_LOAD_CONST_ID
]
=
&&
entry_MP_BC_LOAD_CONST_ID
,
[
MP_BC_LOAD_CONST_BYTES
]
=
&&
entry_MP_BC_LOAD_CONST_BYTES
,
[
MP_BC_LOAD_CONST_STRING
]
=
&&
entry_MP_BC_LOAD_CONST_STRING
,
[
MP_BC_LOAD_NULL
]
=
&&
entry_MP_BC_LOAD_NULL
,
[
MP_BC_LOAD_FAST_0
]
=
&&
entry_MP_BC_LOAD_FAST_0
,
[
MP_BC_LOAD_FAST_1
]
=
&&
entry_MP_BC_LOAD_FAST_1
,
[
MP_BC_LOAD_FAST_2
]
=
&&
entry_MP_BC_LOAD_FAST_2
,
[
MP_BC_LOAD_FAST_N
]
=
&&
entry_MP_BC_LOAD_FAST_N
,
[
MP_BC_LOAD_DEREF
]
=
&&
entry_MP_BC_LOAD_DEREF
,
[
MP_BC_LOAD_NAME
]
=
&&
entry_MP_BC_LOAD_NAME
,
[
MP_BC_LOAD_GLOBAL
]
=
&&
entry_MP_BC_LOAD_GLOBAL
,
[
MP_BC_LOAD_ATTR
]
=
&&
entry_MP_BC_LOAD_ATTR
,
[
MP_BC_LOAD_METHOD
]
=
&&
entry_MP_BC_LOAD_METHOD
,
[
MP_BC_LOAD_BUILD_CLASS
]
=
&&
entry_MP_BC_LOAD_BUILD_CLASS
,
[
MP_BC_STORE_FAST_0
]
=
&&
entry_MP_BC_STORE_FAST_0
,
[
MP_BC_STORE_FAST_1
]
=
&&
entry_MP_BC_STORE_FAST_1
,
[
MP_BC_STORE_FAST_2
]
=
&&
entry_MP_BC_STORE_FAST_2
,
[
MP_BC_STORE_FAST_N
]
=
&&
entry_MP_BC_STORE_FAST_N
,
[
MP_BC_STORE_DEREF
]
=
&&
entry_MP_BC_STORE_DEREF
,
[
MP_BC_STORE_NAME
]
=
&&
entry_MP_BC_STORE_NAME
,
[
MP_BC_STORE_GLOBAL
]
=
&&
entry_MP_BC_STORE_GLOBAL
,
[
MP_BC_STORE_ATTR
]
=
&&
entry_MP_BC_STORE_ATTR
,
[
MP_BC_STORE_SUBSCR
]
=
&&
entry_MP_BC_STORE_SUBSCR
,
[
MP_BC_DELETE_FAST
]
=
&&
entry_MP_BC_DELETE_FAST
,
[
MP_BC_DELETE_DEREF
]
=
&&
entry_MP_BC_DELETE_DEREF
,
[
MP_BC_DELETE_NAME
]
=
&&
entry_MP_BC_DELETE_NAME
,
[
MP_BC_DELETE_GLOBAL
]
=
&&
entry_MP_BC_DELETE_GLOBAL
,
[
MP_BC_DUP_TOP
]
=
&&
entry_MP_BC_DUP_TOP
,
[
MP_BC_DUP_TOP_TWO
]
=
&&
entry_MP_BC_DUP_TOP_TWO
,
[
MP_BC_POP_TOP
]
=
&&
entry_MP_BC_POP_TOP
,
[
MP_BC_ROT_TWO
]
=
&&
entry_MP_BC_ROT_TWO
,
[
MP_BC_ROT_THREE
]
=
&&
entry_MP_BC_ROT_THREE
,
[
MP_BC_JUMP
]
=
&&
entry_MP_BC_JUMP
,
[
MP_BC_POP_JUMP_IF_TRUE
]
=
&&
entry_MP_BC_POP_JUMP_IF_TRUE
,
[
MP_BC_POP_JUMP_IF_FALSE
]
=
&&
entry_MP_BC_POP_JUMP_IF_FALSE
,
[
MP_BC_JUMP_IF_TRUE_OR_POP
]
=
&&
entry_MP_BC_JUMP_IF_TRUE_OR_POP
,
[
MP_BC_JUMP_IF_FALSE_OR_POP
]
=
&&
entry_MP_BC_JUMP_IF_FALSE_OR_POP
,
// [MP_BC_SETUP_LOOP] = &&entry_MP_BC_SETUP_LOOP,
[
MP_BC_SETUP_WITH
]
=
&&
entry_MP_BC_SETUP_WITH
,
[
MP_BC_WITH_CLEANUP
]
=
&&
entry_MP_BC_WITH_CLEANUP
,
[
MP_BC_UNWIND_JUMP
]
=
&&
entry_MP_BC_UNWIND_JUMP
,
[
MP_BC_SETUP_EXCEPT
]
=
&&
entry_MP_BC_SETUP_EXCEPT
,
[
MP_BC_SETUP_FINALLY
]
=
&&
entry_MP_BC_SETUP_FINALLY
,
[
MP_BC_END_FINALLY
]
=
&&
entry_MP_BC_END_FINALLY
,
[
MP_BC_GET_ITER
]
=
&&
entry_MP_BC_GET_ITER
,
[
MP_BC_FOR_ITER
]
=
&&
entry_MP_BC_FOR_ITER
,
[
MP_BC_POP_BLOCK
]
=
&&
entry_MP_BC_POP_BLOCK
,
[
MP_BC_POP_EXCEPT
]
=
&&
entry_MP_BC_POP_EXCEPT
,
[
MP_BC_NOT
]
=
&&
entry_MP_BC_NOT
,
[
MP_BC_UNARY_OP
]
=
&&
entry_MP_BC_UNARY_OP
,
[
MP_BC_BINARY_OP
]
=
&&
entry_MP_BC_BINARY_OP
,
[
MP_BC_BUILD_TUPLE
]
=
&&
entry_MP_BC_BUILD_TUPLE
,
[
MP_BC_BUILD_LIST
]
=
&&
entry_MP_BC_BUILD_LIST
,
[
MP_BC_LIST_APPEND
]
=
&&
entry_MP_BC_LIST_APPEND
,
[
MP_BC_BUILD_MAP
]
=
&&
entry_MP_BC_BUILD_MAP
,
[
MP_BC_STORE_MAP
]
=
&&
entry_MP_BC_STORE_MAP
,
[
MP_BC_MAP_ADD
]
=
&&
entry_MP_BC_MAP_ADD
,
[
MP_BC_BUILD_SET
]
=
&&
entry_MP_BC_BUILD_SET
,
[
MP_BC_SET_ADD
]
=
&&
entry_MP_BC_SET_ADD
,
[
MP_BC_BUILD_SLICE
]
=
&&
entry_MP_BC_BUILD_SLICE
,
[
MP_BC_UNPACK_SEQUENCE
]
=
&&
entry_MP_BC_UNPACK_SEQUENCE
,
[
MP_BC_UNPACK_EX
]
=
&&
entry_MP_BC_UNPACK_EX
,
[
MP_BC_MAKE_FUNCTION
]
=
&&
entry_MP_BC_MAKE_FUNCTION
,
[
MP_BC_MAKE_FUNCTION_DEFARGS
]
=
&&
entry_MP_BC_MAKE_FUNCTION_DEFARGS
,
[
MP_BC_MAKE_CLOSURE
]
=
&&
entry_MP_BC_MAKE_CLOSURE
,
[
MP_BC_MAKE_CLOSURE_DEFARGS
]
=
&&
entry_MP_BC_MAKE_CLOSURE_DEFARGS
,
[
MP_BC_CALL_FUNCTION
]
=
&&
entry_MP_BC_CALL_FUNCTION
,
[
MP_BC_CALL_FUNCTION_VAR_KW
]
=
&&
entry_MP_BC_CALL_FUNCTION_VAR_KW
,
[
MP_BC_CALL_METHOD
]
=
&&
entry_MP_BC_CALL_METHOD
,
[
MP_BC_CALL_METHOD_VAR_KW
]
=
&&
entry_MP_BC_CALL_METHOD_VAR_KW
,
[
MP_BC_RETURN_VALUE
]
=
&&
entry_MP_BC_RETURN_VALUE
,
[
MP_BC_RAISE_VARARGS
]
=
&&
entry_MP_BC_RAISE_VARARGS
,
[
MP_BC_YIELD_VALUE
]
=
&&
entry_MP_BC_YIELD_VALUE
,
[
MP_BC_YIELD_FROM
]
=
&&
entry_MP_BC_YIELD_FROM
,
[
MP_BC_IMPORT_NAME
]
=
&&
entry_MP_BC_IMPORT_NAME
,
[
MP_BC_IMPORT_FROM
]
=
&&
entry_MP_BC_IMPORT_FROM
,
[
MP_BC_IMPORT_STAR
]
=
&&
entry_MP_BC_IMPORT_STAR
,
};
#define ENTRY(op) entry_##op
#define ENTRY_DEFAULT entry_default
#else
#
define DISPATCH() break
#
define ENTRY(op) case op
#
define ENTRY_DEFAULT default
#
define DISPATCH() break
#
define ENTRY(op) case op
#
define ENTRY_DEFAULT default
#endif
int
op
=
0
;
...
...
@@ -299,7 +211,7 @@ outer_dispatch_loop:
// loop to execute byte code
for
(;;)
{
dispatch_loop:
#if MICROPY_USE_COMPUTED_GOTO
#if MICROPY_USE_COMPUTED_GOTO
S
DISPATCH
();
#else
save_ip
=
ip
;
...
...
@@ -1005,8 +917,8 @@ yield:
nlr_pop
();
fastn
[
0
]
=
obj1
;
return
MP_VM_RETURN_EXCEPTION
;
#if !MICROPY_USE_COMPUTED_GOTO
}
#if !MICROPY_USE_COMPUTED_GOTO
S
}
// switch
#endif
}
...
...
unix/mpconfigport.h
View file @
9309d998
...
...
@@ -14,7 +14,7 @@
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE)
#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ)
#define MICROPY_PATH_MAX (PATH_MAX)
#define MICROPY_USE_COMPUTED_GOTO
(1)
#define MICROPY_USE_COMPUTED_GOTO
S
(1)
#define MICROPY_MOD_SYS_STDFILES (1)
// type definitions for the specific machine
...
...
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