| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
It's safer to define it where it's used, defining it for all source files
may lead to hard to diagnose conflicts in corner cases.
|
| |
|
|
|
|
|
|
| |
MICROPY_PERSISTENT_CODE must be enabled, and then enabling
MICROPY_PERSISTENT_CODE_LOAD/SAVE (either or both) will allow loading
and/or saving of code (at the moment just bytecode) from/to a .mpy file.
|
|
|
|
|
|
|
|
|
|
|
| |
Main changes when MICROPY_PERSISTENT_CODE is enabled are:
- qstrs are encoded as 2-byte fixed width in the bytecode
- all pointers are removed from bytecode and put in const_table (this
includes const objects and raw code pointers)
Ultimately this option will enable persistence for not just bytecode but
also native code.
|
|
|
|
|
| |
Contains just argument names at the moment but makes it easy to add
arbitrary constants.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, the only place that clears the bit is in gc_collect.
So if a block with a finalizer is allocated, and subsequently
freed, and then the block is reallocated with no finalizer then
the bit remains set.
This could also be fixed by having gc_alloc clear the bit, but
I'm pretty sure that free is called way less than alloc, so doing
it in free is more efficient.
|
|
|
|
|
|
|
|
|
|
| |
This patch adds/subtracts a constant from the 30-bit float representation
so that str/qstr representations are favoured: they now have all the high
bits set to zero. This makes encoding/decoding qstr strings more
efficient (and they are used more often than floats, which are now
slightly less efficient to encode/decode).
Saves about 300 bytes of code space on Thumb 2 arch.
|
|
|
|
|
|
| |
py/mphal.h contains declarations for generic mp_hal_XXX functions, such
as stdio and delay/ticks, which ports should provide definitions for. A
port will also provide mphalport.h with further HAL declarations.
|
|
|
|
|
|
|
| |
This makes format specifiers ~ fully compatible with CPython.
Adds 24 bytes for stmhal port (because previosuly we had to catch and report
it's unsupported to user).
|
|
|
|
| |
As per ARM convention.
|
|
|
|
|
| |
This script may be called by Windows IDEs (e.g. Visual Studio) and be passed
paths with backslashes.
|
|
|
|
|
| |
Based on the original patch by Galen Hazelwood:
https://github.com/micropython/micropython/pull/1517 .
|
|
|
|
|
|
|
|
|
|
|
| |
Scenario: module1 depends on some common file from lib/, so specifies it
in its SRC_MOD, and the same situation with module2, then common file
from lib/ eventually ends up listed twice in $(OBJ), which leads to link
errors.
Make is equipped to deal with such situation easily, quoting the manual:
"The value of $^ omits duplicate prerequisites, while $+ retains them and
preserves their order." So, just use $^ consistently in all link targets.
|
| |
|
|
|
|
|
|
| |
This saves around 1000 bytes (Thumb2 arch) because in repr "C" it is
costly to check and extract a qstr. So making such check/extract a
function instead of a macro saves lots of code space.
|
|
|
|
|
|
| |
This new object representation puts floats into the object word instead
of on the heap, at the expense of reducing their precision to 30 bits.
It only makes sense when the word size is 32-bits.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Generally, ports should inherit INC from py.mk, append to it, not
overwrite it. TODO: Likely should do the same for other vars too.
|
|
|
|
|
| |
All of these functions return positive small int, thus range is 2 bits less
than word size (30 bit on 32-bit systems, 62 bit on 64-bit systems).
|
| |
|
| |
|
|
|
|
| |
Only available when MICROPY_CAN_OVERRIDE_BUILTINS is enabled.
|
|
|
|
|
|
| |
Cortex-M0, M0+ and M1 only have ARMv6-M Thumb/Thumb2 instructions. M3,
M4 and M7 have a superset of these, named ARMv7-M. This patch adds a
config option to enable support of the superset of instructions.
|
|
|
|
| |
Addresses issue #1182.
|
|
|
|
| |
See issue #1500.
|
| |
|
|
|
|
| |
Addresses #1510.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The whole current port gets slurped into a static lib named
"libmicropython.a". Maybe that's not ideal, but at least something
to start with.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It makes much more sense to do constant folding in the parser while the
parse tree is being built. This eliminates the need to create parse
nodes that will just be folded away. The code is slightly simpler and a
bit smaller as well.
Constant folding now has a configuration option,
MICROPY_COMP_CONST_FOLDING, which is enabled by default.
|
|
|
|
|
| |
Using 'P' format specifier (matches struct module). This is another shortcut
for FFI, just as previously introduced "array of objects" ('O').
|
| |
|
|
|
|
| |
The usual cause would be that a cross-compiler for a port is not in PATH.
|
| |
|
|
|
|
|
| |
This patch eliminates the need for a nested parse node for assignments
and keyword arguments. It saves a little bit of RAM when parsing.
|
| |
|
|
|
|
| |
Also adds tests specifically for testing constant folding.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|