Age | Commit message (Collapse) | Author |
|
|
|
These s16-s21 registers are used by gcc so need to be saved. Future
versions of gcc (beyond v9.1.0), or other compilers, may eventually need
additional registers saved/restored.
See issue #4844.
|
|
To logically separate extmod related rules out, and prevent py.mk from
growing too large.
|
|
Instead of converting to a small-int at runtime this can be done at compile
time, then we only have a simple comparison during runtime. This reduces
code size on some ports (e.g -4 on qemu-arm, -52 on unix nanbox), and for
others at least doesn't increase code size.
|
|
Building mpy-cross automatically leads to some issues with the build
process and slows it down. Instead, require it to be built manually.
|
|
mpy-cross uses MICROPY_DYNAMIC_COMPILER and MICROPY_EMIT_NATIVE but does
not actually need to execute native functions, and does not need
mp_fun_table. This commit makes it so mp_fun_table and all its entries are
not built when MICROPY_DYNAMIC_COMPILER is enabled, significantly reducing
the size of the mpy-cross executable and allowing it to be built on more
machines/OS's.
|
|
|
|
|
|
These are incorrect since 5a2599d96299ad37cda954f1de345159f9acf11c
|
|
This ; make Windows compilation fail with GNU makefile 4.2.1. It was added
in 0dc85c9f86735c35cf14555482b2c8923cf31a6a as part of a shell if-
statement, but this if-statement was subsequently removed in
23a693ec2d8c2a194f61482dc0e1adb070fb6ad4 so the semicolon is not needed.
|
|
The variable $(TOUCH) is initialized with the "touch" value in mkenv.mk
like for the other command line tools (rm, echo, cp, mkdir etc). With
this, for example, Windows users can specify the path of touch.exe.
|
|
The variable $(CAT) is initialised with the "cat" value in mkenv.mk like
for the other command line tools (rm, echo, cp, mkdir etc). With this,
for example, Windows users can specify the path of cat.exe.
|
|
Reuse the implementation for bytes since it works the same way regardless
of the underlying type. This method gets added for CPython compatibility
of bytearray, but to keep the code simple and small array.array now also
has a working decode method, which is non-standard but doesn't hurt.
|
|
|
|
For modules I initially created or made substantial contributions to.
|
|
This allows figuring out the number of bytes in the memoryview object as
len(memview) * memview.itemsize.
The feature is enabled via MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE and is
disabled by default.
|
|
|
|
Macro identifiers with a leading underscore are reserved.
|
|
|
|
Fixes issue #4527.
|
|
Prints something like:
MicroPython v1.10-304-g8031b7a25 on 2019-05-02; mpy-cross emitting mpy v4
|
|
Prior to this commit, building the unix port with `DEBUG=1` and
`-finstrument-functions` the compilation would fail with an error like
"control reaches end of non-void function". This change fixes this by
removing the problematic "if (0)" branches. Not all branches affect
compilation, but they are all removed for consistency.
|
|
Selectable at compile time via MICROPY_PY_UCRYPTOLIB_CTR. Disabled by
default.
|
|
Variables with type bool now act more like an int, and there is proper
casting to/from Python objects.
|
|
With this change, @micropython.asm_thumb functions will work on standard
ARM processors (that are in ARM state by default), in scripts and
precompiled .mpy files.
Addresses issue #4675.
|
|
Fixes issue #4702.
|
|
The issue described in the comment added here can be seen by forcing a
gc_collect() at the start of each call to gc_alloc().
|
|
|
|
|
|
In case (user) source code contains utf-8 encoded data and the default
locale is not utf-8.
See #4592.
|
|
|
|
This means the schedule operates on a first-in, first-executed manner
rather than the current last-in, first executed.
|
|
In 1808b2e8d5c9fff8020628a7849a537ffa9790e3 it was replaced by MICROPY_VFS
and related code.
|
|
|
|
|
|
|
|
|
|
|
|
How to use this feature is documented in docs/develop/cmodules.rst.
|
|
This system makes it a lot easier to include external libraries as static,
native modules in MicroPython. Simply pass USER_C_MODULES (like
FROZEN_MPY_DIR) as a make parameter.
|
|
During make, makemoduledefs.py parses the current builds c files for
MP_REGISTER_MODULE(module_name, obj_module, enabled_define)
These are used to generate a header with the required entries for
"mp_rom_map_elem_t mp_builtin_module_table[]" in py/objmodule.c
|
|
|
|
This commit adds support for saving and loading .mpy files that contain
native code (native, viper and inline-asm). A lot of the ground work was
already done for this in the form of removing pointers from generated
native code. The changes here are mainly to link in qstr values to the
native code, and change the format of .mpy files to contain native code
blocks (possibly mixed with bytecode).
A top-level summary:
- @micropython.native, @micropython.viper and @micropython.asm_thumb/
asm_xtensa are now allowed in .py files when compiling to .mpy, and they
work transparently to the user.
- Entire .py files can be compiled to native via mpy-cross -X emit=native
and for the most part the generated .mpy files should work the same as
their bytecode version.
- The .mpy file format is changed to 1) specify in the header if the file
contains native code and if so the architecture (eg x86, ARMV7M, Xtensa);
2) for each function block the kind of code is specified (bytecode,
native, viper, asm).
- When native code is loaded from a .mpy file the native code must be
modified (in place) to link qstr values in, just like bytecode (see
py/persistentcode.c:arch_link_qstr() function).
In addition, this now defines a public, native ABI for dynamically loadable
native code generated by other languages, like C.
|
|
|
|
n_obj no longer includes a count for mp_fun_table to make it a bit simpler.
|
|
|
|
Simplifies the code and fixes handling of the Ellipsis const in native code
generation (which also needs the constant table so must set this flag).
|
|
The new compile-time option is MICROPY_DEBUG_MP_OBJ_SENTINELS, disabled by
default. This is to allow finer control of whether this debugging feature
is enabled or not (because, for example, this setting must be the same for
mpy-cross and the MicroPython main code when using native code generation).
|
|
When encoded in the mpy file, if qstr <= QSTR_LAST_STATIC then store two
bytes: 0, static_qstr_id. Otherwise encode the qstr as usual (either with
string data or a reference into the qstr window).
Reduces mpy file size by about 5%.
|
|
Instead of emitting two bytes in the bytecode for where the linked qstr
should be written to, it is now replaced by the actual qstr data, or a
reference into the qstr window.
Reduces mpy file size by about 10%.
|