micropython/py
Damien George 4112590a60 py, compiler: When just bytecode, make explicit calls instead of table.
When just the bytecode emitter is needed there is no need to have a
dynamic method table for the emitter back-end, and we can instead
directly call the mp_emit_bc_XXX functions.  This gives a significant
reduction in code size and a very slight performance boost for the
compiler.

This patch saves 1160 bytes code on Thumb2 and 972 bytes on x86, when
native emitters are disabled.

Overall savings in code over the last 3 commits are:

bare-arm: 1664 bytes.
minimal:  2136 bytes.
stmhal:    584 bytes (it has native emitter enabled).
cc3200:   1736 bytes.
2015-03-26 16:52:45 +00:00
..
argcheck.c py, unix, stmhal: Allow to compile with -Wshadow. 2015-01-20 11:55:10 +00:00
asmarm.c py: Allocate memory for assembled code at start of PASS_EMIT. 2015-01-14 00:38:33 +00:00
asmarm.h py: Add guarded includes for asm-based headers. 2015-01-01 18:07:43 +00:00
asmthumb.c py: In inline assembler, fix branch out-of-range error reporting. 2015-03-02 17:51:32 +00:00
asmthumb.h py: For inline assembler, add bcc_n and bcc_w ops. 2015-03-02 14:29:52 +00:00
asmx64.c py/asm*.c: Typo fixes in comments. 2015-02-14 02:20:35 +08:00
asmx64.h py: Allow asmx64 to compile with -Wsign-compare. 2015-01-22 14:08:58 +00:00
asmx86.c py/asm*.c: Typo fixes in comments. 2015-02-14 02:20:35 +08:00
asmx86.h py: Add guarded includes for asm-based headers. 2015-01-01 18:07:43 +00:00
bc.c py: Allow retrieving a function's __name__. 2015-03-20 23:13:32 +00:00
bc.h py: Make old_globals part of mp_code_state structure. 2015-02-15 19:24:15 +03:00
bc0.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
binary.c objarray: Support array('O'), array of objects, as extension to CPython. 2015-03-05 22:58:31 +02:00
binary.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
builtin.h py: Add setattr builtin. 2015-02-14 23:35:00 +00:00
builtinevex.c py: Check for valid file when creating lexer for execfile. 2015-02-15 00:02:27 +00:00
builtinimport.c builtinimport: Revamp&refactor handling of relative imports. 2015-02-16 12:11:34 +02:00
compile.c py, compiler: When just bytecode, make explicit calls instead of table. 2015-03-26 16:52:45 +00:00
compile.h py: Protect mp_parse and mp_compile with nlr push/pop block. 2015-02-07 18:33:58 +00:00
emit.h py, compiler: When just bytecode, make explicit calls instead of table. 2015-03-26 16:52:45 +00:00
emitbc.c py, compiler: When just bytecode, make explicit calls instead of table. 2015-03-26 16:52:45 +00:00
emitcommon.c py, compiler: Refactor load/store/delete_id logic to reduce code size. 2015-03-26 16:52:45 +00:00
emitcpy.c py, compiler: Remove emit_pass1 code, using emit_bc to do its job. 2015-03-26 16:52:45 +00:00
emitglue.c py: Don't use anonymous unions, name them instead. 2015-01-24 23:14:12 +00:00
emitglue.h py: Don't use anonymous unions, name them instead. 2015-01-24 23:14:12 +00:00
emitinlinethumb.c py: In inline assembler, reset labels on code-size pass. 2015-03-03 17:34:49 +00:00
emitnative.c py, compiler: Refactor load/store/delete_id logic to reduce code size. 2015-03-26 16:52:45 +00:00
formatfloat.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
formatfloat.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
frozenmod.c py: Implement very simple frozen modules support. 2015-01-20 11:52:12 +02:00
frozenmod.h py: Implement very simple frozen modules support. 2015-01-20 11:52:12 +02:00
gc.c py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
gc.h py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
grammar.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
lexer.c py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
lexer.h py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
lexerstr.c py: Use m_{new,renew,del} consistently. 2015-02-27 09:34:51 +00:00
lexerunix.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
makeqstrdata.py py/makeqstrdata.py: Make it work again with both Python2 and Python3. 2015-01-11 22:40:38 +00:00
malloc.c py: Add MICROPY_MALLOC_USES_ALLOCATED_SIZE to allow simpler malloc API. 2015-03-03 21:23:13 +00:00
map.c py: Clarify API for map/set lookup when removing&adding at once. 2015-03-20 17:41:37 +00:00
misc.h py: Add MICROPY_MALLOC_USES_ALLOCATED_SIZE to allow simpler malloc API. 2015-03-03 21:23:13 +00:00
mkenv.mk py, mk: Revert change where build variables set with ?=. 2014-06-07 13:14:45 +01:00
mkrules.mk py: Fix order-only dependencies in mkrules.mk and py.mk. 2014-11-06 18:48:38 +00:00
modarray.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
modbuiltins.c py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
modcmath.c py: Fix cmath.log10; fix printing of complex number with negative imag. 2015-02-02 12:52:14 +00:00
modcollections.c py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
modgc.c py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
modio.c py: Use TextIOWrapper only if PY_IO_FILEIO def'd; cast size_t for print. 2015-02-15 13:17:11 +00:00
modmath.c py: Make math special functions configurable and disabled by default. 2015-02-22 14:48:18 +00:00
modmicropython.c py: Use TextIOWrapper only if PY_IO_FILEIO def'd; cast size_t for print. 2015-02-15 13:17:11 +00:00
modstruct.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
modsys.c py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
mpconfig.h py: Allow retrieving a function's __name__. 2015-03-20 23:13:32 +00:00
mpstate.c py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
mpstate.h py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t. 2015-02-07 17:24:10 +00:00
mpz.c py: Make some mpz functions static and remove unused ones. 2015-03-12 22:48:45 +00:00
mpz.h py: Make some mpz functions static and remove unused ones. 2015-03-12 22:48:45 +00:00
nativeglue.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
nlr.h py: Guard against redef of nlr_push with DEBUG + MICROPY_NLR_SETJMP. 2015-03-03 14:34:40 +00:00
nlrsetjmp.c py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
nlrthumb.S py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
nlrx64.S py: Fix nlr mp_state_ctx symbol error for Mac. 2015-01-08 16:24:44 +00:00
nlrx86.S py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
nlrxtensa.S py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
obj.c py: Fix mp_obj_print() to work when Python streams are not used. 2015-02-17 00:32:18 +02:00
obj.h py: Cast mp_obj_t to concrete types explicitly. 2015-03-25 09:25:41 +02:00
objarray.c py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
objbool.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objboundmeth.c py: Allow retrieving a function's __name__. 2015-03-20 23:13:32 +00:00
objcell.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objclosure.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objcomplex.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
objdict.c objdict: Cast mp_obj_t to concrete types explicitly. 2015-03-26 12:28:56 +02:00
objenumerate.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objexcept.c py: Use m_{new,renew,del} consistently. 2015-02-27 09:34:51 +00:00
objexcept.h py: Fix adding of traceback so that it appends to existing info. 2015-02-27 00:36:39 +00:00
objfilter.c py: Use mp_arg_check_num in some _make_new functions. 2015-01-20 14:11:27 +00:00
objfloat.c py, extmod: Remove include of unnecessary system headers. 2015-03-14 23:11:25 +00:00
objfun.c py: Allow retrieving a function's __name__. 2015-03-20 23:13:32 +00:00
objfun.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objgenerator.c py: Allow retrieving a function's __name__. 2015-03-20 23:13:32 +00:00
objgenerator.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objgetitemiter.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objint.c py: Fix builtin abs so it works for bools and bignum. 2015-03-14 22:07:30 +00:00
objint.h py: Fix builtin abs so it works for bools and bignum. 2015-03-14 22:07:30 +00:00
objint_longlong.c py: Fix builtin abs so it works for bools and bignum. 2015-03-14 22:07:30 +00:00
objint_mpz.c py: Fix builtin abs so it works for bools and bignum. 2015-03-14 22:07:30 +00:00
objlist.c py: Cast mp_obj_t to concrete types explicitly. 2015-03-25 09:25:41 +02:00
objlist.h py: Fix adding of traceback so that it appends to existing info. 2015-02-27 00:36:39 +00:00
objmap.c py: Use mp_arg_check_num in some _make_new functions. 2015-01-20 14:11:27 +00:00
objmodule.c py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
objmodule.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objnamedtuple.c objnamedtuple: Accept field list as a string. 2015-03-23 22:45:14 +02:00
objnone.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objobject.c py: Use mp_arg_check_num in some _make_new functions. 2015-01-20 14:11:27 +00:00
objproperty.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objrange.c py: Add support for start/stop/step attributes of builtin range object. 2015-03-11 20:02:06 +00:00
objreversed.c py: Implement __reversed__ slot. 2015-01-21 00:19:42 +00:00
objset.c py: Clarify API for map/set lookup when removing&adding at once. 2015-03-20 17:41:37 +00:00
objslice.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objstr.c objstr: Expose mp_obj_str_split() for reuse in other modules. 2015-03-23 22:43:37 +02:00
objstr.h objstr: Expose mp_obj_str_split() for reuse in other modules. 2015-03-23 22:43:37 +02:00
objstringio.c py: Prevent segfault for operations on closed StringIO. 2015-01-20 23:50:43 +00:00
objstrunicode.c py: Allow to compile with extra warnings (sign-compare, unused-param). 2015-03-19 00:25:33 +00:00
objtuple.c py: Use m_{new,renew,del} consistently. 2015-02-27 09:34:51 +00:00
objtuple.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objtype.c py: Combine duplicated code that converts members from a lookup. 2015-03-21 14:21:54 +00:00
objtype.h py: Add option to cache map lookup results in bytecode. 2015-01-07 21:07:23 +00:00
objzip.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
opmethods.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
parse.c py: Update parse.c&mpconfig.h to reflect rename of mp_lexer_show_token. 2015-02-23 21:36:05 +00:00
parse.h py: Expose compile.c:list_get as mp_parse_node_extract_list. 2015-02-13 02:29:46 +00:00
parsenum.c py: Fix printing of error message when parsing malformed integer. 2015-03-16 10:42:50 +00:00
parsenum.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
parsenumbase.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
parsenumbase.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
pfenv.c py: Remove unnecessary and unused sgn argument from pfenv_print_mp_int. 2015-03-14 22:32:40 +00:00
pfenv.h py: Remove unnecessary and unused sgn argument from pfenv_print_mp_int. 2015-03-14 22:32:40 +00:00
pfenv_printf.c py: In pfenv_vprintf, adjust type from mp_uint_t to unsigned int. 2015-03-14 23:09:57 +00:00
py-version.sh - Let the build environment decide about the toolchain to be used, in case 2014-06-07 09:16:42 +02:00
py.mk py, compiler: Remove emit_pass1 code, using emit_bc to do its job. 2015-03-26 16:52:45 +00:00
qstr.c py: Add option to micropython.qstr_info() to dump actual qstrs. 2015-02-10 11:02:28 +00:00
qstr.h py: Add option to micropython.qstr_info() to dump actual qstrs. 2015-02-10 11:02:28 +00:00
qstrdefs.h py: Implement core of OrderedDict type. 2015-03-20 17:26:10 +00:00
repl.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
repl.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
runtime.c py: Combine duplicated code that converts members from a lookup. 2015-03-21 14:21:54 +00:00
runtime.h py: Combine duplicated code that converts members from a lookup. 2015-03-21 14:21:54 +00:00
runtime0.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
scope.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
scope.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
sequence.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
showbc.c py: Implement DELETE_GLOBAL in showbc.c. 2015-03-20 17:12:09 +00:00
smallint.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
smallint.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
stackctrl.c stackctrl: Encode "recursion depth exceeded" message as qstr. 2015-02-15 22:41:14 +03:00
stackctrl.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
stream.c py: Change vstr so that it doesn't null terminate buffer by default. 2015-01-28 23:43:01 +00:00
stream.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
unicode.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
unicode.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
vm.c py: Clean up some logic in VM to remove assert(0)'s. 2015-03-25 22:20:37 +00:00
vmentrytable.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
vstr.c py: Change vstr_null_terminate -> vstr_null_terminated_str, returns str. 2015-01-29 13:57:23 +00:00
warning.c py: Can compile with -Wmissing-declarations and -Wmissing-prototypes. 2015-01-12 22:30:49 +00:00