circuitpython/py
Damien George c2a4e4effc py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function.
Hashing is now done using mp_unary_op function with MP_UNARY_OP_HASH as
the operator argument.  Hashing for int, str and bytes still go via
fast-path in mp_unary_op since they are the most common objects which
need to be hashed.

This lead to quite a bit of code cleanup, and should be more efficient
if anything.  It saves 176 bytes code space on Thumb2, and 360 bytes on
x86.

The only loss is that the error message "unhashable type" is now the
more generic "unsupported type for __hash__".
2015-05-12 22:46:02 +01:00
..
argcheck.c py: Add %q format support to mp_[v]printf, and use it. 2015-04-16 14:30:16 +00:00
asmarm.c emitnative: Revamp ARM codegen compile after full-arg support refactors. 2015-05-08 22:35:34 +01:00
asmarm.h emitnative: Revamp ARM codegen compile after full-arg support refactors. 2015-05-08 22:35:34 +01: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: Adjust some spaces in code style/format, purely for consistency. 2015-04-09 15:29:54 +00:00
asmx64.h py: Implement full func arg passing for native emitter. 2015-04-07 22:43:28 +01:00
asmx86.c py: Implement full func arg passing for native emitter. 2015-04-07 22:43:28 +01:00
asmx86.h py: Implement full func arg passing for native emitter. 2015-04-07 22:43:28 +01:00
bc0.h py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
bc.c py: Add %q format support to mp_[v]printf, and use it. 2015-04-16 14:30:16 +00:00
bc.h vm: Initial support for calling bytecode functions w/o C stack ("stackless"). 2015-04-03 00:03:07 +03:00
binary.c py: Fix handling of negative numbers in struct.pack of q/Q. 2015-04-25 23:51:14 +01:00
binary.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00: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 py: Add %q format support to mp_[v]printf, and use it. 2015-04-16 14:30:16 +00:00
compile.c py: Make viper codegen raise proper exception (ViperTypeError) on error. 2015-04-20 13:29:31 +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: Make viper codegen raise proper exception (ViperTypeError) on error. 2015-04-20 13:29:31 +00:00
emitbc.c py: Fix naming of function arguments when function is a closure. 2015-05-06 13:55:33 +01: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 unix-cpy: Fix adjustment of stack size when leaving exception handler. 2015-05-06 16:46:21 +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 emitnative: Revamp ARM codegen compile after full-arg support refactors. 2015-05-08 22:35:34 +01:00
formatfloat.c py/formatfloat.c: Fix format of floating point numbers near 1.0. 2015-04-12 13:06:20 +01: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: Convert occurrences of non-debug printf to mp_printf. 2015-04-16 14:30:16 +00:00
gc.h py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
grammar.h py: Clean up some bits and pieces in parser, grammar. 2015-04-21 16:43:18 +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 makeqstrdata.py: Add support for strings with backslash escapes. 2015-04-02 01:10:11 +03:00
makeversionhdr.py py: Replace py-version.sh with makeversionhdr.py, written in Python. 2015-04-28 23:52:36 +01: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: 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: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
mkenv.mk py, mk: Revert change where build variables set with ?=. 2014-06-07 13:14:45 +01:00
mkrules.mk mkrules.mk: Add comment why dependency parsing regex was tweaked. 2015-05-06 15:34:33 +03:00
modarray.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
modbuiltins.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01: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: Convert occurrences of non-debug printf to mp_printf. 2015-04-16 14:30:16 +00:00
modstruct.c modstruct: Rename module to "ustruct", to allow full Python-level impl. 2015-05-04 16:53:52 +03:00
modsys.c py: Replace py-version.sh with makeversionhdr.py, written in Python. 2015-04-28 23:52:36 +01:00
mpconfig.h modbuiltins: Add NotImplemented builtin constant. 2015-05-04 19:45:53 +03:00
mpprint.c py: Add %q format support to mp_[v]printf, and use it. 2015-04-16 14:30:16 +00:00
mpprint.h py: Make mp_sys_stdout_print object, wrapping sys.stdout for mp_print*. 2015-04-16 14:30:16 +00:00
mpstate.c py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
mpstate.h modsys: Add basic sys.exc_info() implementation. 2015-04-25 03:49:23 +03:00
mpz.c py: Fix handling of negative numbers in struct.pack of q/Q. 2015-04-25 23:51:14 +01:00
mpz.h py: Support conversion of bignum to bytes. 2015-04-25 23:16:39 +01:00
nativeglue.c py: Implement full func arg passing for native emitter. 2015-04-07 22:43:28 +01: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: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
obj.h py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
objarray.c py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objattrtuple.c py: Fix attrtuple array length in print and creation. 2015-04-29 00:17:48 +01:00
objbool.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +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: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00: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: Add MICROPY_PY_BUILTINS_ENUMERATE, disable for minimal ports. 2015-04-06 23:51:29 +03:00
objexcept.c py: Make viper codegen raise proper exception (ViperTypeError) on error. 2015-04-20 13:29:31 +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: Fix printing of "inf" and "nan" floating point values. 2015-04-22 16:51:29 +01:00
objfun.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +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: Some trivial cosmetic changes, for code style consistency. 2015-04-04 15:53:11 +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: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +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
objlist.c py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00: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: Check that arg to object.__new__ is a user-defined type. 2015-05-04 11:08:40 +01:00
objproperty.c py, unix: Allow to compile with -Wunused-parameter. 2015-01-20 12:47:20 +00:00
objrange.c py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objreversed.c py: Add MICROPY_PY_BUILTINS_REVERSED, disable for minimal ports. 2015-04-07 00:17:11 +03:00
objset.c py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objsingleton.c objsingleton: New home for Ellipsis and NotImplemented. 2015-05-05 22:18:07 +03:00
objslice.c objsingleton: New home for Ellipsis and NotImplemented. 2015-05-05 22:18:07 +03:00
objstr.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +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: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +00:00
objtuple.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +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: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +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: Clean up some bits and pieces in parser, grammar. 2015-04-21 16:43:18 +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
py.mk objsingleton: New home for Ellipsis and NotImplemented. 2015-05-05 22:18:07 +03:00
qstr.c py: Convert occurrences of non-debug printf to mp_printf. 2015-04-16 14:30:16 +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 modbuiltins: Add NotImplemented builtin constant. 2015-05-04 19:45:53 +03:00
repl.c py/repl.c: Fix shadowing of local variable "i". 2015-04-29 01:01:48 +01:00
repl.h py, readline: Add tab autocompletion for REPL. 2015-04-29 00:46:26 +01:00
runtime0.h py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
runtime.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
runtime.h py: Overhaul and simplify printf/pfenv mechanism. 2015-04-16 14:30:16 +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: Remove LOAD_CONST_ELLIPSIS bytecode, use LOAD_CONST_OBJ instead. 2015-05-05 22:15:42 +01: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: 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: Adjust some spaces in code style/format, purely for consistency. 2015-04-09 15:29:54 +00:00
unicode.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
vm.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
vmentrytable.h py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
vstr.c py/vstr.c: Allow vstr_printf to print correctly to a fixed buffer. 2015-04-18 14:23:13 +01:00
warning.c py: Convert occurrences of non-debug printf to mp_printf. 2015-04-16 14:30:16 +00:00