Age | Commit message (Collapse) | Author |
|
At this point, start will be >= 0, so checking if stop < 0 is redundant with
checking if start > stop a few lines later.
|
|
This is getting more and more tangled, but that's old news.
|
|
As before, instead of pushing constant values on stack again and again, just
pass around pointer to a structure.
|
|
|
|
|
|
|
|
Conflicts:
py/emitglue.c
|
|
|
|
Should finish addressing issue #524.
|
|
Ports which wants to have it, should define MICROPY_PY_SYS_PLATFORM to a
string value they need.
|
|
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).
|
|
This reduces stack usage by 16 words (64 bytes) for stmhal/ port.
See issue #640.
|
|
?= operator does not do delayed expansion (unlike =).
|
|
- Move the includes for alloca() intp mpconfigport.h
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This behaviour follows Python 3.5 standard (in 3.4 it's a
DeprecationWarning which we'd rather make a TypeError).
|
|
Change comments (mainly URLs) to no longer specifically say Python 3.3
|
|
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.
|
|
|
|
Also, make sure that args to "*" format specifiers are bounds-checked
properly and don't lead for segfaults in case of mismatch.
|
|
|
|
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.
|
|
|
|
|
|
This saves 4 words of stack space per Python call.
|
|
|
|
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.
|
|
To clearly signify that lineno is not known.
|
|
|
|
This allows to have multiple "optimization" levels (CPython has two
(-OO removes docstrings), we can have more).
|
|
|
|
|
|
Also, dump code block in bytes.
|
|
|
|
Also, add comment with description of extension to CPython's typecodes.
|
|
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.
|
|
|
|
|
|
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.
|
|
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).
|
|
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.
|
|
|
|
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.)).
|
|
This makes sure that only as much stack allocated as actually used, reducing
stack usage for each Python function call.
|