summaryrefslogtreecommitdiff
path: root/py
AgeCommit message (Collapse)Author
2014-06-10Remove unnecessary bounds check from mp_seq_get_fast_slice_indexes.Chris Angelico
At this point, start will be >= 0, so checking if stop < 0 is redundant with checking if start > stop a few lines later.
2014-06-08objtype: Fix passing of class param to inherited classmethods.Paul Sokolovsky
This is getting more and more tangled, but that's old news.
2014-06-08objtype: Optimize stack usage mp_obj_class_lookup().Paul Sokolovsky
As before, instead of pushing constant values on stack again and again, just pass around pointer to a structure.
2014-06-08Merge branch 'alloca' of github.com:marcusva/micropython into marcusva-allocaDamien George
2014-06-08py: Simplify function call of a bytecode object.Damien George
2014-06-08py: Make sure getattr() works with non-interned strings (by interning them).Paul Sokolovsky
2014-06-07Merge branch 'master' of github.com:micropython/micropythonDamien George
Conflicts: py/emitglue.c
2014-06-08objtype: Enable __lt__ method support for instances.Paul Sokolovsky
2014-06-07py: Implement default keyword only args.Damien George
Should finish addressing issue #524.
2014-06-07modsys: Add optional support for sys.platform.Paul Sokolovsky
Ports which wants to have it, should define MICROPY_PY_SYS_PLATFORM to a string value they need.
2014-06-07py: Add generic mp_not_implemented() func to use instead of assert().Paul Sokolovsky
Benefits: won't crash baremetal targets, will provide Python source location when not implemented feature used (it will no longer provide C source location, but just grep for error message).
2014-06-07py: Merge mp_execute_bytecode into fun_bc_call.Damien George
This reduces stack usage by 16 words (64 bytes) for stmhal/ port. See issue #640.
2014-06-07py, mk: Revert change where build variables set with ?=.Damien George
?= operator does not do delayed expansion (unlike =).
2014-06-07- FreeBSD provides alloca() via stdlib.h, in contrast to Linux and WindowsMarcus von Appen
- Move the includes for alloca() intp mpconfigport.h
2014-06-07- Let the build environment decide about the toolchain to be used, in caseMarcus von Appen
there are special tweaks and paths to be considered. Just provide some defaults, in case the values are undefined. - py-version.sh does not need any bash specific features. - Use libdl only on Linux for now. FreeBSD provides dl*() calls from libc.
2014-06-07Bring the C and Python compute_hash functions into consistencyChris Angelico
2014-06-06objint: Fix corner case in buffer access.Paul Sokolovsky
2014-06-05Fix str.modulo when precision is specified.Dave Hylands
2014-06-06modgc: Real 64-bit cleanness.Paul Sokolovsky
2014-06-06modgc: 64-bit cleanness.Paul Sokolovsky
2014-06-05modgc: Implement return value for gc.collect(), enable on Unix.Paul Sokolovsky
2014-06-05py: Raise TypeError when trying to format non-int with %x,%o,%X.Damien George
This behaviour follows Python 3.5 standard (in 3.4 it's a DeprecationWarning which we'd rather make a TypeError).
2014-06-05Merge pull request #665 from Rosuav/naming3.3Paul Sokolovsky
Change comments (mainly URLs) to no longer specifically say Python 3.3
2014-06-05py: Small changes to objstr.c, including a bug fix.Damien George
Some small fixed: - Combine 'x' and 'X' cases in str format code. - Remove trailing spaces from some lines. - Make exception messages consistently begin with lower case (then needed to change those in objarray and objtuple so the same constant string data could be used). - Fix bug with exception message having %c instead of %%c.
2014-06-06Change comments (mainly URLs) to no longer specifically say Python 3.3Chris Angelico
2014-06-05objstr: Implement "%(key)s" % {} formatting for strings and dicts.Paul Sokolovsky
Also, make sure that args to "*" format specifiers are bounds-checked properly and don't lead for segfaults in case of mismatch.
2014-06-05Replace assert(0) with a self-documenting TODO stringChris Angelico
2014-06-04Simplify detection of quote characters in mp_str_print_quoted.Chris Angelico
Once a double quote has been found, the subsequent discovery of a single quote won't change behaviour at all, so don't bother looking for one.
2014-06-04Correct file reference (there's no qstrraw.h)Chris Angelico
2014-06-03py: Properly fix configuration of float and math module.Damien George
2014-06-03py: Allow tail call optimisation in mp_call_function_n_kw.Damien George
This saves 4 words of stack space per Python call.
2014-06-03py: Fix configuration of math module.Damien George
2014-06-03py: Implement full behaviour of dict.update(), and dict().Damien George
Add keyword args to dict.update(), and ability to take a dictionary as argument. dict() class constructor can now use dict.update() directly. This patch loses fast path for dict(other_dict), but is that really needed? Any anyway, this idiom will now re-hash the dictionary, so is arguably more memory efficient. Addresses issue #647.
2014-06-03vm: If there's no lineno info, set lineno in traceback to 0, not 1.Paul Sokolovsky
To clearly signify that lineno is not known.
2014-06-03py: For optimization level -O3 and higher, remove lineno info from bytecode.Paul Sokolovsky
2014-06-03py: Instead of having "debug on" var, have "optimization level" var.Paul Sokolovsky
This allows to have multiple "optimization" levels (CPython has two (-OO removes docstrings), we can have more).
2014-06-03showbc: Make micropython -v also dump bytecode in hex form.Paul Sokolovsky
2014-06-03showbc: Make sure it's possible to trace MAKE_FUNCTION arg to actual bytecode.Paul Sokolovsky
2014-06-02showbc: Print code block header at the beginning, not in the middle of dump.Paul Sokolovsky
Also, dump code block in bytes.
2014-06-02lexer: Add another comment for somewhat obscure way __debug__ is handled.Paul Sokolovsky
2014-06-02modstruct: Add one more extension to typecodes - 'S', a pointer to C string.Paul Sokolovsky
Also, add comment with description of extension to CPython's typecodes.
2014-06-01py, str: Replace enum with actual function pointer.Damien George
This way, it's slightly more efficient, uses less ROM (60 bytes less for stmhal), and doesn't require to raise exception if bad operation given.
2014-06-01py: Fix configurability of builtin slice.Damien George
2014-06-01py: Add option to disable set() object (enabled by default).Damien George
2014-06-01Rename bultins config variables to MICROPY_PY_BUILTINS_*.Damien George
This renames: MICROPY_PY_FROZENSET -> MICROPY_PY_BUILTINS_FROZENSET MICROPY_PY_PROPERTY -> MICROPY_PY_BUILTINS_PROPERTY MICROPY_PY_SLICE -> MICROPY_PY_BUILTINS_SLICE MICROPY_ENABLE_FLOAT -> MICROPY_PY_BUILTINS_FLOAT See issue #35 for discussion.
2014-06-01py, vm: Replace save_ip, save_sp with code_state->{ip, sp}.Damien George
This may seem a bit of a risky change, in that it may introduce crazy bugs with respect to volatile variables in the VM loop. But, I think it should be fine: code_state points to some external memory, so the compiler should always read/write to that memory when accessing the ip/sp variables (ie not put them in registers). Anyway, it passes all tests and improves on all efficiency fronts: about 2-4% faster (64-bit unix), 16 bytes less stack space per call (64-bit unix) and slightly less executable size (unix and stmhal). The reason it's more efficient is save_ip and save_sp were volatile variables, so were anyway stored on the stack (in memory, not regs). Thus converting them to code_state->{ip, sp} doesn't cost an extra memory dereference (except maybe to get code_state, but that can be put in a register and then made more efficient for other uses of it).
2014-06-01Merge branch 'vm-alloca' of github.com:pfalcon/micropython into ↵Damien George
pfalcon-vm-alloca Conflicts: py/vm.c Fixed stack underflow check. Use UINT_FMT/INT_FMT where necessary. Specify maximum VM-stack byte size by multiple of machine word size, so that on 64 bit machines it has same functionality as 32 bit.
2014-05-31py: Fix stack underflow with optimised for loop.Damien George
2014-05-31vm: Factor out structure with code execution state and pass it around.Paul Sokolovsky
This improves stack usage in callers to mp_execute_bytecode2, and is step forward towards unifying execution interface for function and generators (which is important because generators don't even support full forms of arguments passing (keywords, etc.)).
2014-05-31vm: Don't unconditionally allocate state on stack, do that only if needed.Paul Sokolovsky
This makes sure that only as much stack allocated as actually used, reducing stack usage for each Python function call.