circuitpython/py
Damien George 4747becc64 py: Improve encoding scheme for line-number to bytecode map.
Reduces by about a factor of 10 on average the amount of RAM needed to
store the line-number to bytecode map in the bytecode prelude.

Using CPython3.4's stdlib for statistics: previously, an average of
13 bytes were used per (bytecode offset, line-number offset) pair, and
now with this improvement, that's down to 1.3 bytes on average.

Large RAM usage before was due to some very large steps in line numbers,
both from the start of the first line in a function way down in the
file, and also functions that have big comments and/or big strings in
them (both cases were significant).

Although the savings are large on average for the CPython stdlib, it
won't have such a big effect for small scripts used in embedded
programming.

Addresses issue #648.
2014-07-31 16:12:01 +00:00
..
argcheck.c Merge branch 'master' of https://github.com/micropython/micropython 2014-05-06 16:52:35 +00:00
asmthumb.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
asmthumb.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
asmx64.c py: Include mpconfig.h before all other includes. 2014-06-21 22:43:22 +03:00
asmx64.h py, compiler: Improve passes; add an extra pass for native emitter. 2014-05-07 17:24:22 +01:00
bc0.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
bc.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
binary.c binary: Factor out mp_binary_set_int(). 2014-07-05 23:54:03 +03:00
binary.h binary: Factor out mp_binary_set_int(). 2014-07-05 23:54:03 +03:00
builtin.c py: Improve handling of long-int overflow. 2014-07-31 13:41:43 +00:00
builtin.h py: Make print() accept "file" argument, and actually print to stream. 2014-07-19 21:27:22 +03:00
builtinevex.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
builtinimport.c py: Implement __file__ attribute for modules. 2014-07-28 21:21:59 +03:00
builtintables.c moductypes: Foreign data interface module, roughly based on ctype ideas. 2014-07-09 19:28:24 +03:00
builtintables.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
compile.c moductypes: Foreign data interface module, roughly based on ctype ideas. 2014-07-09 19:28:24 +03:00
compile.h py: Rename BYTE_CODE to BYTECODE (this was missed in previous rename). 2014-05-12 22:35:37 +01:00
emit.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
emitbc.c py: Improve encoding scheme for line-number to bytecode map. 2014-07-31 16:12:01 +00:00
emitcommon.c py: Include mpconfig.h before all other includes. 2014-06-21 22:43:22 +03:00
emitcpy.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
emitglue.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
emitglue.h py: Remove emit_glue init and deinit. Needed only for debugging. 2014-05-12 23:11:14 +01:00
emitinlinethumb.c py, inline asm: Change "and" op name to "and_" to avoid keyword clash. 2014-07-17 12:37:56 +01:00
emitnative.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
emitpass1.c py: Improvements to native emitter. 2014-06-30 05:17:25 +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 Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
gc.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
grammar.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
lexer.c py: Change lexer stream API to return bytes not chars. 2014-07-30 11:46:05 +01:00
lexer.h py: Change lexer stream API to return bytes not chars. 2014-07-30 11:46:05 +01:00
lexerstr.c py: Change lexer stream API to return bytes not chars. 2014-07-30 11:46:05 +01:00
lexerunix.c py: Change lexer stream API to return bytes not chars. 2014-07-30 11:46:05 +01:00
lexerunix.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
makeqstrdata.py Bring the C and Python compute_hash functions into consistency 2014-06-07 07:06:18 +10:00
malloc.c py: Include mpconfig.h before all other includes. 2014-06-21 22:43:22 +03:00
map.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
misc.h py: Add generic helper to align a pointer. 2014-07-12 15:57:28 +03:00
mkenv.mk py, mk: Revert change where build variables set with ?=. 2014-06-07 13:14:45 +01:00
mkrules.mk Merge branch 'teensy-new' of github.com:dhylands/micropython into dhylands-teensy-new 2014-07-02 13:42:37 +01:00
modarray.c py: Allow to disable array module and bytearray type. 2014-06-27 21:02:04 +03:00
modcmath.c py: Include mpconfig.h before all other includes. 2014-06-21 22:43:22 +03:00
modcollections.c py: Include mpconfig.h before all other includes. 2014-06-21 22:43:22 +03:00
modgc.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
modio.c py: Include mpconfig.h before all other includes. 2014-06-21 22:43:22 +03:00
modmath.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
modmicropython.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
modstruct.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
modsys.c py: Make print() accept "file" argument, and actually print to stream. 2014-07-19 21:27:22 +03:00
mpconfig.h Merge pull request #738 from dhylands/except-args 2014-07-29 23:15:35 +01:00
mpz.c py: Improve handling of long-int overflow. 2014-07-31 13:41:43 +00:00
mpz.h py: Improve handling of long-int overflow. 2014-07-31 13:41:43 +00:00
nlr.h py: Support arm and thumb ARM ISAs, in addition to thumb2. 2014-06-22 01:40:45 +03:00
nlrsetjmp.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
nlrthumb.S py: Support arm and thumb ARM ISAs, in addition to thumb2. 2014-06-22 01:40:45 +03:00
nlrx64.S unix: Create __bss_start and _end symbols for Mach-O targets. 2014-05-12 00:13:10 +02:00
nlrx86.S Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
obj.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
obj.h py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
objarray.c py: Remove unnecessary argument in bytearray print. 2014-07-17 21:56:32 +01:00
objarray.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objbool.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
objboundmeth.c objboundmeth: If detailed reporting enabled, print object content. 2014-05-11 02:27:42 +03:00
objcell.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objclosure.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objcomplex.c py: Separate MICROPY_PY_BUILTINS_COMPLEX from MICROPY_PY_BUILTINS_FLOAT. 2014-06-20 18:00:23 +03:00
objdict.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
objenumerate.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objexcept.c Add support for storing args during an exception raised by an irq. 2014-07-25 14:00:06 -07:00
objfilter.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objfloat.c py: Separate MICROPY_PY_BUILTINS_COMPLEX from MICROPY_PY_BUILTINS_FLOAT. 2014-06-20 18:00:23 +03:00
objfun.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objfun.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objgenerator.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01: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_longlong.c py: Make long ints hashable. 2014-07-24 14:21:37 +01:00
objint_mpz.c py: Improve handling of long-int overflow. 2014-07-31 13:41:43 +00:00
objint.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
objint.h py: Make long ints hashable. 2014-07-24 14:21:37 +01:00
objlist.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objlist.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objmap.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objmodule.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objmodule.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objnamedtuple.c Rename configuration variables controling Python features. 2014-05-24 23:03:12 +01:00
objnone.c py: Rename MP_OBJ_NOT_SUPPORTED to MP_OBJ_NULL. 2014-05-21 19:42:43 +01:00
objobject.c py: Initial attempts to actually allow implementing __new__ in Python. 2014-05-22 00:32:00 +03:00
objproperty.c Rename bultins config variables to MICROPY_PY_BUILTINS_*. 2014-06-01 13:32:54 +01:00
objrange.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objset.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
objslice.c Rename bultins config variables to MICROPY_PY_BUILTINS_*. 2014-06-01 13:32:54 +01:00
objstr.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
objstr.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objstringio.c py: Change stream protocol API: fns return uint; is_text for text. 2014-07-27 22:38:58 +01:00
objstrunicode.c py: Make MP_OBJ_NEW_SMALL_INT cast arg to mp_int_t itself. 2014-07-31 10:49:14 +01:00
objtuple.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objtuple.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
objtype.c py: Automatically ake __new__ a staticmethod. 2014-07-05 05:55:00 +01:00
objtype.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
objzip.c py: Use mp_arg_check_num in more places. 2014-05-11 18:37:21 +01:00
opmethods.c Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
parse.c parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01:00
parse.h parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01:00
parsehelper.c lexer: Convert type (u)int to mp_(u)int_t. 2014-07-03 13:47:47 +01:00
parsehelper.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
parsenum.c parser: Convert (u)int to mp_(u)int_t. 2014-07-03 14:13:33 +01: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_printf.c py: Make print() accept "file" argument, and actually print to stream. 2014-07-19 21:27:22 +03:00
pfenv.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
pfenv.h py: Make print() accept "file" argument, and actually print to stream. 2014-07-19 21:27:22 +03: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: Make print() accept "file" argument, and actually print to stream. 2014-07-19 21:27:22 +03:00
qstr.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
qstr.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
qstrdefs.h Merge pull request #738 from dhylands/except-args 2014-07-29 23:15:35 +01:00
repl.c py: Include mpconfig.h before all other includes. 2014-06-21 22:43:22 +03:00
repl.h Tidy up some configuration options. 2014-05-21 20:32:59 +01:00
runtime0.h py: Fix configurability of builtin slice. 2014-06-01 13:49:35 +01:00
runtime.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
runtime.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
scope.c py: Include mpconfig.h before all other includes. 2014-06-21 22:43:22 +03:00
scope.h Add license header to (almost) all files. 2014-05-03 23:27:38 +01:00
sequence.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
showbc.c py: Improve encoding scheme for line-number to bytecode map. 2014-07-31 16:12:01 +00:00
smallint.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
smallint.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
stackctrl.c stackctrl: Add "mp_" prefix. 2014-07-01 02:14:08 +03:00
stackctrl.h stackctrl: Add "mp_" prefix. 2014-07-01 02:14:08 +03:00
stream.c py: Change stream protocol API: fns return uint; is_text for text. 2014-07-27 22:38:58 +01:00
stream.h stream: Factor out mp_stream_write() method to write a memstring to stream. 2014-07-13 23:14:32 +03:00
unicode.c Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
unicode.h Rename machine_(u)int_t to mp_(u)int_t. 2014-07-03 13:25:24 +01:00
vm.c py: Improve encoding scheme for line-number to bytecode map. 2014-07-31 16:12:01 +00:00
vmentrytable.h Fix some unused variables, and silence a clang warning about initialization override in vmentrytable.h 2014-05-12 09:06:18 +02:00
vstr.c vstr: Restore bytestr compatibility. 2014-06-27 00:04:18 +03:00