micropython/py
Damien George 74eb44c392 py: Reduce size of VM exception stack element by 1 machine word.
This optimisation reduces the VM exception stack element (mp_exc_stack_t)
by 1 word, by using bit 1 of a pointer to store whether the opcode was a
FINALLY or WITH opcode.  This optimisation was pending, waiting for
maturity of the exception handling code, which has now proven itself.

Saves 1 machine word RAM for each exception (4->3 words per exception).
Increases stmhal code by 4 bytes, and decreases unix x64 code by 32
bytes.
2014-12-22 12:49:57 +00:00
..
argcheck.c py: Use shorter, static error msgs when ERROR_REPORTING_TERSE enabled. 2014-11-06 17:36:16 +00:00
asmarm.c asmarm: Fix bug with encoding small negative ints using MVN instruction. 2014-12-14 03:24:17 +02:00
asmarm.h py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
asmthumb.c py: Make macro names in assemblers consistent, and tidy up a bit. 2014-09-29 19:42:06 +01:00
asmthumb.h py: Make macro names in assemblers consistent, and tidy up a bit. 2014-09-29 19:42:06 +01:00
asmx64.c py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
asmx64.h py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
asmx86.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
asmx86.h py: Implement native load for viper. 2014-10-12 16:59:29 +01:00
bc.c py: Fix some macros defines; cleanup some includes. 2014-11-05 21:16:41 +00:00
bc.h py: Reduce size of VM exception stack element by 1 machine word. 2014-12-22 12:49:57 +00:00
bc0.h py: Compress load-int, load-fast, store-fast, unop, binop bytecodes. 2014-10-25 20:23:13 +01:00
binary.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
binary.h py: Make mp_binary_set_val work on big endian machine. 2014-10-06 15:05:35 +00:00
builtin.h py: Add execfile function (from Python 2); enable in stmhal port. 2014-12-19 13:36:17 +00:00
builtinevex.c py: Add execfile function (from Python 2); enable in stmhal port. 2014-12-19 13:36:17 +00:00
builtinimport.c py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
compile.c py: Remove last uses of printf from compile; use proper SyntaxError. 2014-12-21 17:44:27 +00:00
compile.h py: Implement proper context save/restore for eval/exec; factor code. 2014-10-05 20:13:34 +01:00
emit.h py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
emitbc.c py: Compress load-int, load-fast, store-fast, unop, binop bytecodes. 2014-10-25 20:23:13 +01:00
emitcommon.c py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
emitcpy.c py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
emitglue.c unix: Make -v dump memory info at exit. 2014-10-26 22:36:56 +00:00
emitglue.h py: Store bytecode arg names in bytecode (were in own array). 2014-10-25 20:23:13 +01:00
emitinlinethumb.c py: Remove unnecessary RULE_none and PN_none from parser. 2014-12-20 18:41:59 +00:00
emitnative.c py: Partially fix viper multi-comparison; add test for it. 2014-10-19 19:00:51 +01:00
emitpass1.c py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. 2014-09-08 23:05:16 +01:00
formatfloat.c formatfloat.c: Typo fix in comment. 2014-07-17 20:45:58 +03:00
formatfloat.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
gc.c py: Fix some macros defines; cleanup some includes. 2014-11-05 21:16:41 +00:00
gc.h py: Make gc.enable/disable just control auto-GC; alloc is still allowed. 2014-10-31 21:30:46 +00:00
grammar.h py: Add blank and ident flags to grammar rules to simplify parser. 2014-12-20 18:37:50 +00:00
lexer.c py: Fix printing of size_t entity; fix qemu-arm for changes to lexer. 2014-12-05 22:50:16 +00:00
lexer.h py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
lexerstr.c py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
lexerunix.c py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
lexerunix.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
makeqstrdata.py py: Use % str formatting instead of {} in makeqstrdata.py. 2014-09-05 13:16:19 +01:00
malloc.c py: Make gc.enable/disable just control auto-GC; alloc is still allowed. 2014-10-31 21:30:46 +00:00
map.c map: Add empty fixed map. 2014-11-27 17:37:07 +00:00
misc.h py: Add further checks for failed malloc in lexer init functions. 2014-10-09 16:53:37 +01: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 Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modbuiltins.c py: Add execfile function (from Python 2); enable in stmhal port. 2014-12-19 13:36:17 +00:00
modcmath.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
modcollections.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modgc.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modio.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modmath.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
modmicropython.c modmicropython: Move mem_info() and qstr_info() functions from unix port. 2014-12-01 20:42:24 +02:00
modstruct.c Use MP_DEFINE_CONST_DICT macro to define module dicts. 2014-11-29 14:39:27 +00:00
modsys.c modsys: Add sys.print_exception(exc, file=sys.stdout) function. 2014-12-08 20:25:49 +00:00
mpconfig.h py: Add execfile function (from Python 2); enable in stmhal port. 2014-12-19 13:36:17 +00:00
mpz.c mpz: Fix 64bit msvc build 2014-10-30 23:00:24 +00:00
mpz.h py: Fix function type: () -> (void). 2014-12-10 18:05:42 +00:00
nativeglue.c py: Add casting to viper; add native mem stores to viper. 2014-09-29 22:10:41 +01:00
nlr.h py: Add NLR support for xtensa CPU. 2014-11-27 20:29:33 +00:00
nlrsetjmp.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
nlrthumb.S py: Fix some macros defines; cleanup some includes. 2014-11-05 21:16:41 +00:00
nlrx64.S py: Clean up nlr*.S to make it easier to read; fix clang .bss error. 2014-09-26 13:07:26 +00:00
nlrx86.S py: Clean up nlr*.S to make it easier to read; fix clang .bss error. 2014-09-26 13:07:26 +00:00
nlrxtensa.S py: Add NLR support for xtensa CPU. 2014-11-27 20:29:33 +00:00
obj.c modsys: Add sys.print_exception(exc, file=sys.stdout) function. 2014-12-08 20:25:49 +00:00
obj.h py: Tidy up a few function declarations. 2014-12-10 22:37:07 +00:00
objarray.c py: Allow bytes/bytearray/array to be init'd by buffer protocol objects. 2014-12-04 15:46:14 +00:00
objarray.h py: Change uint to mp_uint_t in runtime.h, stackctrl.h, binary.h. 2014-08-30 14:59:21 +01:00
objbool.c py: Make native emitter handle multi-compare and not/is not/not in ops. 2014-09-23 14:15:45 +00:00
objboundmeth.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
objcell.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objclosure.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
objcomplex.c py and libm: Add asinf,acosf; print higher precision for float. 2014-09-11 22:24:45 +01:00
objdict.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
objenumerate.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objexcept.c py: Make gc.enable/disable just control auto-GC; alloc is still allowed. 2014-10-31 21:30:46 +00:00
objfilter.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objfloat.c py: Implement divmod, % and proper // for floating point. 2014-09-13 18:43:09 +01:00
objfun.c py: Fix some macros defines; cleanup some includes. 2014-11-05 21:16:41 +00:00
objfun.h py: Store bytecode arg names in bytecode (were in own array). 2014-10-25 20:23:13 +01:00
objgenerator.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
objgenerator.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objgetitemiter.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objint.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
objint.h py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
objint_longlong.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
objint_mpz.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
objlist.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
objlist.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objmap.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objmodule.c py: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
objmodule.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objnamedtuple.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
objnone.c py: Add native json printing using existing print framework. 2014-09-17 22:56:34 +01:00
objobject.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objproperty.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objrange.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
objreversed.c Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objset.c py: Make map, dict, set use mp_int_t/mp_uint_t exclusively. 2014-08-30 13:23:35 +01:00
objslice.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
objstr.c py: Use str_to_int function in more places to reduce code size. 2014-12-21 21:07:03 +00:00
objstr.h py: Change [u]int to mp_[u]int_t in qstr.[ch], and some other places. 2014-10-03 19:52:22 +01:00
objstringio.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
objstrunicode.c objstr: Allow to convert any buffer proto object to str. 2014-10-31 00:03:53 +02:00
objtuple.c py: Add native json printing using existing print framework. 2014-09-17 22:56:34 +01:00
objtuple.h Change some parts of the core API to use mp_uint_t instead of uint/int. 2014-08-30 00:35:11 +01:00
objtype.c py: Use shorter, static error msgs when ERROR_REPORTING_TERSE enabled. 2014-11-06 17:36:16 +00:00
objtype.h py: Fix builtin callable so it checks user-defined instances correctly. 2014-11-03 16:09:39 +00:00
objzip.c py: Small simplifications in tuple and list accessors. 2014-08-30 15:17:47 +01:00
opmethods.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
parse.c py: Remove unnecessary RULE_none and PN_none from parser. 2014-12-20 18:41:59 +00:00
parse.h py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
parsehelper.c py: Optimise lexer by exposing lexer type. 2014-12-05 19:35:18 +00:00
parsehelper.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
parsenum.c py: Use shorter, static error msgs when ERROR_REPORTING_TERSE enabled. 2014-11-06 17:36:16 +00:00
parsenum.h parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01:00
parsenumbase.c parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01:00
parsenumbase.h parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01:00
pfenv.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
pfenv.h modsys: Add sys.print_exception(exc, file=sys.stdout) function. 2014-12-08 20:25:49 +00:00
pfenv_printf.c py: Remove static from definition of pfenv_printf. 2014-12-10 22:11:01 +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: Allow builtins to be overridden. 2014-12-09 16:19:48 +00:00
qstr.c py: Make gc.enable/disable just control auto-GC; alloc is still allowed. 2014-10-31 21:30:46 +00:00
qstr.h py: Change [u]int to mp_[u]int_t in qstr.[ch], and some other places. 2014-10-03 19:52:22 +01:00
qstrdefs.h py: Add execfile function (from Python 2); enable in stmhal port. 2014-12-19 13:36:17 +00:00
repl.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00
repl.h Tidy up some configuration options. 2014-05-21 20:32:59 +01:00
runtime.c py: Fix iteration over map in 2 places. 2014-12-21 16:24:09 +00:00
runtime.h py: Remove obsolute function declaration. 2014-11-06 17:31:18 +00:00
runtime0.h py: Make native emitter handle multi-compare and not/is not/not in ops. 2014-09-23 14:15:45 +00:00
scope.c py: Move global/nonlocal decl code to compiler for proper SyntaxError. 2014-12-21 17:26:45 +00:00
scope.h py: Move global/nonlocal decl code to compiler for proper SyntaxError. 2014-12-21 17:26:45 +00:00
sequence.c py: Convert [u]int to mp_[u]int_t where appropriate. 2014-10-03 17:44:14 +00:00
showbc.c py: Fix label printing in showbc; print sp in vm trace. 2014-12-12 17:18:56 +00:00
smallint.c py: Fix smallint modulo with negative arguments. 2014-10-22 23:05:50 +01:00
smallint.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
stackctrl.c py: Fix function type: () -> (void). 2014-12-10 18:05:42 +00:00
stackctrl.h py: Fix function type: () -> (void). 2014-12-10 18:05:42 +00:00
stream.c py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack. 2014-12-05 23:13:52 +00:00
stream.h stream: Implement seek operation support via ioctl, wrapped in generic method. 2014-11-17 00:16:14 +02:00
unicode.c py: Tidy up a few function declarations. 2014-12-10 22:37:07 +00:00
unicode.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
vm.c py: Reduce size of VM exception stack element by 1 machine word. 2014-12-22 12:49:57 +00:00
vmentrytable.h py: Compress load-int, load-fast, store-fast, unop, binop bytecodes. 2014-10-25 20:23:13 +01:00
vstr.c py: Make functions static where appropriate. 2014-12-10 22:08:14 +00:00