- Mar 14, 2019
-
-
Damien George authored
-
- Sep 20, 2018
-
-
Damien George authored
-
- Jul 31, 2017
-
-
Alexander Steffen authored
There were several different spellings of MicroPython present in comments, when there should be only one.
-
- Feb 24, 2017
-
-
Damien George authored
Previous to this patch any non-interned str/bytes objects would create a special parse node that held a copy of the str/bytes data. Then in the compiler this data would be turned into a str/bytes object. This actually lead to 2 copies of the data, one in the parse node and one in the object. The parse node's copy of the data would be freed at the end of the compile stage but nevertheless it meant that the peak memory usage of the parse/compile stage was higher than it needed to be (by an amount equal to the number of bytes in all the non-interned str/bytes objects). This patch changes the behaviour so that str/bytes objects are created directly in the parser and the object stored in a const-object parse node (which already exists for bignum, float and complex const objects). This reduces peak RAM usage of the parse/compile stage, simplifies the parser and compiler, and reduces code size by about 170 bytes on Thumb2 archs, and by about 300 bytes on Xtensa archs.
-
- Feb 16, 2017
-
-
Damien George authored
Grammar rules have 2 variants: ones that are attached to a specific compile function which is called to compile that grammar node, and ones that don't have a compile function and are instead just inspected to see what form they take. In the compiler there is a table of all grammar rules, with each entry having a pointer to the associated compile function. Those rules with no compile function have a null pointer. There are 120 such rules, so that's 120 words of essentially wasted code space. By grouping together the compile vs no-compile rules we can put all the no-compile rules at the end of the list of rules, and then we don't need to store the null pointers. We just have a truncated table and it's guaranteed that when indexing this table we only index the first half, the half with populated pointers. This patch implements such a grouping by having a specific macro for the compile vs no-compile grammar rules (DEF_RULE vs DEF_RULE_NC). It saves around 460 bytes of code on 32-bit archs.
-
- Dec 09, 2016
-
-
Damien George authored
This patch moves some common code from the individual inline assemblers to the compiler, the code that calls the emit-glue to assign the machine code to the functions scope.
-
Damien George authored
These are generic methods that don't depend on the architecture and so can be handled directly by the compiler.
-
Damien George authored
This reduces fragmentation, and memory use by 1 word. But more importantly it means the emit_inline_asm_t struct now "derives" from mp_asm_base.
-
- Nov 27, 2016
-
-
Damien George authored
All assemblers should "derive" from mp_asm_base_t.
-
- Feb 23, 2016
-
-
Damien George authored
Reduces code size by 112 bytes on Thumb2 arch, and makes assembler faster because comparison can be a simple equals instead of a string compare. Not all ops have been converted, only those that were simple to convert and reduced code size.
-
- Jan 27, 2016
-
-
Damien George authored
Supported return types are: object, bool, int, uint. For example: @micropython.asm_thumb def foo(r0, r1) -> uint: add(r0, r0, r1)
-
- Jan 07, 2016
-
-
Damien George authored
movwt can now move a full 32-bit constant into a register.
-
Damien George authored
-
- Dec 10, 2015
-
-
Henrik Sölver authored
Only IPSR and BASEPRI special registers supported at the moment, but easy to extend in the future.
-
- Nov 29, 2015
-
-
Damien George authored
-
- Nov 13, 2015
-
-
Damien George authored
Contains just argument names at the moment but makes it easy to add arbitrary constants.
-
Damien George authored
-
- Nov 09, 2015
-
-
Damien George authored
-
- Oct 31, 2015
-
-
adminpete authored
As per ARM convention.
-
- Oct 19, 2015
-
-
Damien George authored
-
- Oct 16, 2015
-
-
Damien George authored
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.
-
- Apr 19, 2015
-
-
= authored
Adds support for the following Thumb2 VFP instructions, via the option MICROPY_EMIT_INLINE_THUMB_FLOAT: vcmp vsqrt vneg vcvt_f32_to_s32 vcvt_s32_to_f32 vmrs vmov vldr vstr vadd vsub vmul vdiv
-
- Apr 16, 2015
-
-
Damien George authored
-
- Apr 11, 2015
-
-
Damien George authored
-
- Apr 07, 2015
-
-
Damien George authored
This patch gets full function argument passing working with native emitter. Includes named args, keyword args, default args, var args and var keyword args. Fully Python compliant. It reuses the bytecode mp_setup_code_state function to do all the hard work. This function is slightly adjusted to accommodate native calls, and the native emitter is forced a bit to emit similar prelude and code-info as bytecode.
-
- Mar 03, 2015
-
-
Damien George authored
-
Damien George authored
-
- Mar 02, 2015
-
-
Damien George authored
Addresses issue #1143.
-
- Feb 25, 2015
-
-
Damien George authored
Addresses issue #1132.
-
- Feb 24, 2015
-
-
Damien George authored
-
Damien George authored
-
Damien George authored
-
Damien George authored
Reduces stmhal by about 300 bytes ROM.
-
- Feb 16, 2015
-
-
Damien George authored
-
Damien George authored
-
- Feb 13, 2015
-
-
Damien George authored
-
Damien George authored
-
Damien George authored
-
Damien George authored
Also gives line number of location of error. Very useful!
-
- Feb 12, 2015
-
-
Damien George authored
These are useful for implementing atomic lock operations.
-