micropython/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
asmthumb.c
asmthumb.h
asmx64.c
asmx64.h
bc.h
bc0.h
binary.c
binary.h
builtin.c
builtin.h
builtinevex.c
builtinimport.c
builtintables.c
builtintables.h
compile.c
compile.h
emit.h
emitbc.c py: Improve encoding scheme for line-number to bytecode map. 2014-07-31 16:12:01 +00:00
emitcommon.c
emitcpy.c
emitglue.c
emitglue.h
emitinlinethumb.c
emitnative.c
emitpass1.c
formatfloat.c
formatfloat.h
gc.c
gc.h
grammar.h
lexer.c
lexer.h
lexerstr.c
lexerunix.c
lexerunix.h
makeqstrdata.py
malloc.c
map.c
misc.h
mkenv.mk
mkrules.mk
modarray.c
modcmath.c
modcollections.c
modgc.c
modio.c
modmath.c
modmicropython.c
modstruct.c
modsys.c
mpconfig.h
mpz.c
mpz.h
nlr.h
nlrsetjmp.c
nlrthumb.S
nlrx64.S
nlrx86.S
obj.c
obj.h
objarray.c
objarray.h
objbool.c
objboundmeth.c
objcell.c
objclosure.c
objcomplex.c
objdict.c
objenumerate.c
objexcept.c
objfilter.c
objfloat.c
objfun.c
objfun.h
objgenerator.c
objgenerator.h
objgetitemiter.c
objint.c
objint.h
objint_longlong.c
objint_mpz.c
objlist.c
objlist.h
objmap.c
objmodule.c
objmodule.h
objnamedtuple.c
objnone.c
objobject.c
objproperty.c
objrange.c
objset.c
objslice.c
objstr.c
objstr.h
objstringio.c
objstrunicode.c
objtuple.c
objtuple.h
objtype.c
objtype.h
objzip.c
opmethods.c
parse.c
parse.h
parsehelper.c
parsehelper.h
parsenum.c
parsenum.h
parsenumbase.c
parsenumbase.h
pfenv.c
pfenv.h
pfenv_printf.c
py-version.sh
py.mk
qstr.c
qstr.h
qstrdefs.h
repl.c
repl.h
runtime.c
runtime.h
runtime0.h
scope.c
scope.h
sequence.c
showbc.c py: Improve encoding scheme for line-number to bytecode map. 2014-07-31 16:12:01 +00:00
smallint.c
smallint.h
stackctrl.c
stackctrl.h
stream.c
stream.h
unicode.c
unicode.h
vm.c py: Improve encoding scheme for line-number to bytecode map. 2014-07-31 16:12:01 +00:00
vmentrytable.h
vstr.c