micropython/py
Damien George 58e0f4ac50 py: Allocate parse nodes in chunks to reduce fragmentation and RAM use.
With this patch parse nodes are allocated sequentially in chunks.  This
reduces fragmentation of the heap and prevents waste at the end of
individually allocated parse nodes.

Saves roughly 20% of RAM during parse stage.
2015-10-02 00:11:11 +01:00
..
argcheck.c py: Use mp_not_implemented consistently for not implemented features. 2015-09-03 23:14:06 +01:00
asmarm.c py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
asmarm.h py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
asmthumb.c py: Implement full func arg passing for native emitter. 2015-04-07 22:43:28 +01:00
asmthumb.h py: Implement full func arg passing for native emitter. 2015-04-07 22:43:28 +01:00
asmx64.c py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
asmx64.h py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
asmx86.c py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
asmx86.h py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
bc.c py: Eliminate some cases which trigger unused parameter warnings. 2015-09-04 16:53:46 +01:00
bc.h vm: Initial support for calling bytecode functions w/o C stack ("stackless"). 2015-04-03 00:03:07 +03:00
bc0.h py: Remove mp_load_const_bytes and instead load precreated bytes object. 2015-06-25 14:42:13 +00:00
binary.c py/binary: Add support for array('q') and array('Q'). 2015-09-01 16:31:48 +01:00
binary.h py/binary: Make return type of mp_binary_get_size size_t instead of int. 2015-05-17 18:12:19 +01:00
builtin.h modstruct: Rename module to "ustruct", to allow full Python-level impl. 2015-05-04 16:53:52 +03:00
builtinevex.c py: Check for valid file when creating lexer for execfile. 2015-02-15 00:02:27 +00:00
builtinimport.c builtinimport: Fix running package submodule with -m. 2015-06-29 00:26:45 +03:00
compile.c py: Allocate parse nodes in chunks to reduce fragmentation and RAM use. 2015-10-02 00:11:11 +01:00
compile.h py: Allocate parse nodes in chunks to reduce fragmentation and RAM use. 2015-10-02 00:11:11 +01:00
emit.h unix-cpy: Remove unix-cpy. It's no longer needed. 2015-08-17 12:51:26 +01:00
emitbc.c py: Slightly simplify compile and emit of star/double-star arguments. 2015-09-23 11:47:01 +01:00
emitcommon.c unix-cpy: Remove unix-cpy. It's no longer needed. 2015-08-17 12:51:26 +01:00
emitglue.c py: Implement full func arg passing for native emitter. 2015-04-07 22:43:28 +01:00
emitglue.h py: Implement full func arg passing for native emitter. 2015-04-07 22:43:28 +01:00
emitinlinethumb.c py/inlinethumb: Support for core floating point instructions. 2015-04-19 15:47:05 +01:00
emitnative.c py: Slightly simplify compile and emit of star/double-star arguments. 2015-09-23 11:47:01 +01:00
formatfloat.c stmhal: fix single precision float printing error 2015-09-11 23:09:50 +03:00
formatfloat.h py: Implement mp_format_float for doubles and use where appropriate 2015-05-17 21:47:11 +01:00
frozenmod.c frozenmod: Include header with function prototypes. 2015-05-31 23:02:04 +03:00
frozenmod.h py: Implement very simple frozen modules support. 2015-01-20 11:52:12 +02:00
gc.c py: Eliminate some cases which trigger unused parameter warnings. 2015-09-04 16:53:46 +01:00
gc.h py: Improve allocation policy of qstr data. 2015-07-14 22:56:32 +01:00
grammar.h py/parse: Fix handling of empty input so it raises an exception. 2015-07-24 15:05:56 +00:00
lexer.c py/lexer: Properly classify floats that look like hex numbers. 2015-09-07 17:33:44 +01:00
lexer.h unix: Allow to cat a script into stdin from the command line. 2015-06-04 23:42:45 +01:00
lexerstr.c py: Use m_{new,renew,del} consistently. 2015-02-27 09:34:51 +00:00
lexerunix.c unix: Allow to cat a script into stdin from the command line. 2015-06-04 23:42:45 +01:00
makeqstrdata.py stmhal: add option to query for the current usb mode 2015-09-03 23:30:43 +01:00
makeversionhdr.py py/makeversionhdr.py: Use returncode attr to be Python2.7 compat. 2015-08-12 23:28:16 +01:00
malloc.c py: Improve allocation policy of qstr data. 2015-07-14 22:56:32 +01:00
map.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
misc.h py: Improve allocation policy of qstr data. 2015-07-14 22:56:32 +01:00
mkenv.mk py: Treat -m32 flag as part of CC, LD, etc. 2015-08-29 21:18:10 +03:00
mkrules.mk unix-cpy: Remove unix-cpy. It's no longer needed. 2015-08-17 12:51:26 +01:00
modarray.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
modbuiltins.c modbuiltins: Consistently use indentation for #if. 2015-08-31 00:22:11 +03: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: Implement second arg for math.log (optional value for base). 2015-06-13 22:35:25 +01:00
modmicropython.c py: Convert occurrences of non-debug printf to mp_printf. 2015-04-16 14:30:16 +00:00
modstruct.c modstruct: Raise NotImplementedError for unsupported repeat specification. 2015-07-05 22:44:14 +03:00
modsys.c py: Eliminate some cases which trigger unused parameter warnings. 2015-09-04 16:53:46 +01:00
mpconfig.h py: Allocate parse nodes in chunks to reduce fragmentation and RAM use. 2015-10-02 00:11:11 +01:00
mpprint.c py: Remove unnecessary extra handling of padding of nan/inf. 2015-05-28 14:22:12 +00:00
mpprint.h py: Remove unnecessary extra handling of padding of nan/inf. 2015-05-28 14:22:12 +00:00
mpstate.c py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
mpstate.h py: Improve allocation policy of qstr data. 2015-07-14 22:56:32 +01:00
mpz.c py/mpz: Fix bignum anding of large negative with smaller positive int. 2015-10-01 22:35:06 +01:00
mpz.h py/mpz: Force rhs of mpz_shl_inpl/mpz_shr_inpl to be unsigned. 2015-10-01 18:01:37 +01:00
nativeglue.c py: Remove mp_load_const_bytes and instead load precreated bytes object. 2015-06-25 14:42:13 +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: Inline single use of mp_obj_str_get_len in mp_obj_len_maybe. 2015-09-03 23:01:07 +01:00
obj.h py: Inline single use of mp_obj_str_get_len in mp_obj_len_maybe. 2015-09-03 23:01:07 +01:00
objarray.c py: Eliminate some cases which trigger unused parameter warnings. 2015-09-04 16:53:46 +01:00
objattrtuple.c py: Fix attrtuple array length in print and creation. 2015-04-29 00:17:48 +01:00
objbool.c py/objbool: Simplify dispatch of bool binary op. 2015-09-04 16:46:15 +01:00
objboundmeth.c py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objcell.c py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objclosure.c py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objcomplex.c py: Implement mp_format_float for doubles and use where appropriate 2015-05-17 21:47:11 +01:00
objdict.c py: Add %q format support to mp_[v]printf, and use it. 2015-04-16 14:30:16 +00:00
objenumerate.c py: Eliminate some cases which trigger unused parameter warnings. 2015-09-04 16:53:46 +01:00
objexcept.c py: Improve allocation policy of qstr data. 2015-07-14 22:56:32 +01: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: Add MICROPY_PY_BUILTINS_FILTER, disable for minimal ports. 2015-08-20 01:05:11 +03:00
objfloat.c py: Add MP_BINARY_OP_DIVMOD to simplify and consolidate divmod builtin. 2015-06-13 23:36:30 +01:00
objfun.c py: Allow viper functions to take up to 4 arguments. 2015-07-23 14:11:29 +01:00
objfun.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objgenerator.c objgenerator: Can optimize StopIteration to STOP_ITERATION only if arg is None. 2015-05-11 23:57:42 +01:00
objgenerator.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objgetitemiter.c py/objgetitemiter: Make it_iternext() recognize IndexError. 2015-08-30 11:49:49 +01:00
objint.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
objint.h py: Support conversion of bignum to bytes. 2015-04-25 23:16:39 +01:00
objint_longlong.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
objint_mpz.c py: Catch all cases of integer (big and small) division by zero. 2015-10-01 22:48:48 +01:00
objlist.c py/objlist: Make list += accept all arguments and add test. 2015-08-02 20:53:54 +01: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 modstruct: Rename module to "ustruct", to allow full Python-level impl. 2015-05-04 16:53:52 +03:00
objmodule.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objnamedtuple.c py: Add attrtuple object, for space-efficient tuples with attr access. 2015-04-21 14:14:24 +00:00
objnone.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
objobject.c py/objobject: Don't make locals_dict if there's nothing to go in it. 2015-05-17 17:48:47 +01:00
objproperty.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objrange.c py/objrange: Bugfix for range_subscr() when index is a slice object. 2015-09-28 14:01:28 +00:00
objreversed.c py: Add MICROPY_PY_BUILTINS_REVERSED, disable for minimal ports. 2015-04-07 00:17:11 +03:00
objset.c objset: frozensets are hashable. 2015-08-28 22:31:52 +03:00
objsingleton.c objsingleton: New home for Ellipsis and NotImplemented. 2015-05-05 22:18:07 +03:00
objslice.c py/objslice: Fix indent. 2015-09-15 22:46:30 +01:00
objstr.c py: Eliminate some cases which trigger unused parameter warnings. 2015-09-04 16:53:46 +01:00
objstr.h py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objstringio.c py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objstrunicode.c py: Use mp_not_implemented consistently for not implemented features. 2015-09-03 23:14:06 +01:00
objtuple.c py: Use mp_not_implemented consistently for not implemented features. 2015-09-03 23:14:06 +01:00
objtuple.h py: Add attrtuple object, for space-efficient tuples with attr access. 2015-04-21 14:14:24 +00:00
objtype.c py: Add MP_BINARY_OP_DIVMOD to simplify and consolidate divmod builtin. 2015-06-13 23:36:30 +01:00
objtype.h py: Check that arg to object.__new__ is a user-defined type. 2015-05-04 11:08:40 +01: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: Allocate parse nodes in chunks to reduce fragmentation and RAM use. 2015-10-02 00:11:11 +01:00
parse.h py: Allocate parse nodes in chunks to reduce fragmentation and RAM use. 2015-10-02 00:11:11 +01:00
parsenum.c py/parsenum: Provide detailed error for int parsing with escaped bytes. 2015-10-01 17:18:12 +01: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
py.mk unix-cpy: Remove unix-cpy. It's no longer needed. 2015-08-17 12:51:26 +01:00
qstr.c py: Make qstr hash size configurable, defaults to 2 bytes. 2015-07-20 11:03:13 +00:00
qstr.h py: Adjust some spaces in code style/format, purely for consistency. 2015-04-09 15:29:54 +00:00
qstrdefs.h py: Make "enumerate" qstr be conditional on MICROPY_PY_BUILTINS_ENUMERATE. 2015-09-03 19:35:52 +03:00
repl.c py/repl: Treat escaped quotes correctly in REPL continuation. 2015-09-19 14:06:23 +01:00
repl.h py, readline: Add tab autocompletion for REPL. 2015-04-29 00:46:26 +01:00
runtime.c py: Allocate parse nodes in chunks to reduce fragmentation and RAM use. 2015-10-02 00:11:11 +01:00
runtime.h py: Remove mp_load_const_bytes and instead load precreated bytes object. 2015-06-25 14:42:13 +00:00
runtime0.h py: Remove unused compile scope flags, and irrelevant flag compute code. 2015-08-17 22:39:03 +01:00
scope.c unix-cpy: Remove unix-cpy. It's no longer needed. 2015-08-17 12:51:26 +01:00
scope.h unix-cpy: Remove unix-cpy. It's no longer needed. 2015-08-17 12:51:26 +01:00
sequence.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
showbc.c py: Remove mp_load_const_bytes and instead load precreated bytes object. 2015-06-25 14:42:13 +00:00
smallint.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
smallint.h py: Allow configurable object representation, with 2 different options. 2015-04-03 14:11:13 +01:00
stackctrl.c vm: Support strict stackless mode, with proper exception reporting. 2015-04-03 00:26:47 +03:00
stackctrl.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
stream.c py: Add stream_tell method, and use for unix and stmhal file tell. 2015-08-13 22:56:32 +01:00
stream.h py: Add stream_tell method, and use for unix and stmhal file tell. 2015-08-13 22:56:32 +01:00
unicode.c py: Minor improvement to unichar_isxdigit 2015-05-20 09:31:22 +01:00
unicode.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
vm.c vm: Handle "raise X from Y" statements the best way we can. 2015-09-01 10:39:04 +03:00
vmentrytable.h py: Remove mp_load_const_bytes and instead load precreated bytes object. 2015-06-25 14:42:13 +00:00
vstr.c py: Prevent many extra vstr allocations. 2015-07-06 17:29:27 +01:00
warning.c py: Convert occurrences of non-debug printf to mp_printf. 2015-04-16 14:30:16 +00:00