Damien George
2127e9a844
py, unix: Trace root pointers with native emitter under unix port.
...
Native code has GC-heap pointers in it so it must be scanned. But on
unix port memory for native functions is mmap'd, and so it must have
explicit code to scan it for root pointers.
2015-01-14 00:11:09 +00:00
Damien George
dab1385177
py: Add load_const_obj to emitter, add LOAD_CONST_OBJ to bytecode.
...
This allows to directly load a Python object to the Python stack. See
issue #722 for background.
2015-01-13 15:55:54 +00:00
Damien George
51dfcb4bb7
py: Move to guarded includes, everywhere in py/ core.
...
Addresses issue #1022 .
2015-01-01 20:32:09 +00:00
Paul Sokolovsky
db1ac360c3
emitnative: Disable warning in delete_fast for now (breaks test).
2015-01-01 22:09:18 +02:00
Paul Sokolovsky
8a8c1fc82f
py: Add basic framework for issuing compile/runtime warnings.
2015-01-01 22:09:18 +02:00
Damien George
83204f3406
py: Allow to properly disable builtin slice operation.
...
This patch makes the MICROPY_PY_BUILTINS_SLICE compile-time option
fully disable the builtin slice operation (when set to 0). This
includes removing the slice sytanx from the grammar. Now, enabling
slice costs 4228 bytes on unix x64, and 1816 bytes on stmhal.
2014-12-27 17:33:30 +00:00
Damien George
e37dcaafb4
py: Allow to properly disable builtin "set" object.
...
This patch makes MICROPY_PY_BUILTINS_SET compile-time option fully
disable the builtin set object (when set to 0). This includes removing
set constructor/comprehension from the grammar, the compiler and the
emitters. Now, enabling set costs 8168 bytes on unix x64, and 3576
bytes on stmhal.
2014-12-27 17:33:30 +00:00
Damien George
21ca2d76a2
py: Partially fix viper multi-comparison; add test for it.
2014-10-19 19:00:51 +01:00
Damien George
3c34d4140d
py: Fix x86 viper code generation, mem8 <-> mem16 for load.
2014-10-12 16:10:25 +00:00
Damien George
91cfd414c0
py: Implement native load for viper.
...
Viper can now do: ptr8(buf)[0], which loads a byte from a buffer using
machine instructions.
2014-10-12 16:59:29 +01:00
Damien George
1ef2348df0
py: Implement and,or,xor native ops for viper.
2014-10-12 14:21:06 +01:00
Fabian Vogt
e5268963c6
Implement missing ARM emitter functions for viper
2014-10-04 00:57:21 +02:00
Damien George
39dc145478
py: Change [u]int to mp_[u]int_t in qstr.[ch], and some other places.
...
This should pretty much resolve issue #50 .
2014-10-03 19:52:22 +01:00
Damien George
dfef4249eb
py: Fix viper store on x86; add tests for viper ptr16.
2014-09-29 21:41:41 +00:00
Damien George
e9dac3b4d0
py: Add casting to viper; add native mem stores to viper.
...
Viper can now do the following:
def store(p:ptr8, c:int):
p[0] = c
This does a store of c to the memory pointed to by p using a machine
instructions inline in the code.
2014-09-29 22:10:41 +01:00
Damien George
3112cde900
py: Implement more binary ops for viper emitter.
...
This included a bit of restructuring of the assembler backends. Note
that the ARM backend is missing a few functions and won't compile.
2014-09-29 19:42:06 +01:00
Damien George
6f81348fa2
py: Allow viper to use ints as direct conditionals in jumps.
...
Allows things like: if 1: ...
2014-09-29 19:42:06 +01:00
Damien George
0b610de017
py: Make macro names in assemblers consistent, and tidy up a bit.
2014-09-29 19:42:06 +01:00
Damien George
851f15f34c
py: In asmthumb, clean up unit/int types and ite ops.
2014-09-29 19:42:06 +01:00
Damien George
d6230f62c7
py: Make native emitter handle multi-compare and not/is not/not in ops.
2014-09-23 14:15:45 +00:00
Damien George
d4a799f152
py: Make asm_arm_less_op take destination register as first arg.
...
This gets ARM native emitter working againg and addresses issue #858 .
2014-09-15 16:39:24 +01:00
Damien George
bb29546868
py: Load strings as objects when compiling viper.
...
Eventually, viper wants to be able to use raw pointers to strings and
arrays for efficient access. But for now, let's just load strings as a
Python object so they can be used as normal. This will anyway be
compatible with eventual intended viper behaviour.
Addresses issue #857 .
2014-09-12 23:15:06 +01:00
Damien George
6eae861685
py: Put define of x86 argument registers in asmx86.h.
2014-09-08 22:16:35 +00:00
Damien George
7ff996c237
py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files.
...
Towards resolving issue #50 .
2014-09-08 23:05:16 +01:00
Damien George
8105736982
py: Clean up x86-64 native assembler; allow use of extended regs.
...
Native x86-64 now has 3 locals in registers.
2014-09-07 01:06:19 +01:00
Damien George
25d904105c
py: Adjust regs for x86 so that 1 more local can live in a reg.
2014-09-06 23:24:32 +00:00
Damien George
03281b3850
py: Allow x86 native functions to take arguments.
...
Fix some bugs with x86 stack and saving registers correctly.
2014-09-06 22:38:50 +00:00
Damien George
c90f59ec3a
py: Add support for emitting native x86 machine code.
2014-09-06 23:06:36 +01:00
Damien George
e6ce10a3e7
py: Native emitter now supports delete name & global, and end finally.
2014-09-06 18:38:20 +01:00
Damien George
dda46460ff
Code style/whitespace cleanup; remove obsolete headers.
...
And move the MAP_ANON redefinition from py/asmx64.c to unix/alloc.c.
2014-09-03 22:47:23 +01:00
Damien George
02d95d7ce9
py: Fix 2 bugs in native emitter: jump_or_pop and stack settling.
...
Addresses issue #838 .
2014-08-29 20:05:32 +01:00
Fabian Vogt
fe3d16e8c2
Basic native ARM emitter
2014-08-27 18:18:50 +02:00
Damien George
7fe2191c9b
py: Code clean-up in native emitter; improve thumb native calls.
2014-08-16 22:31:57 +01:00
Damien George
86de21b810
py: Viper can call functions with native types, and raise exceptions.
2014-08-16 22:06:11 +01:00
Damien George
e6c0dff967
py: Viper can now store to global.
2014-08-15 23:47:59 +01:00
Damien George
a5190a7dac
py: Fix typing of viper locals; allow default types in annotation.
2014-08-15 22:39:08 +01:00
Damien George
2ac4af6946
py: Allow viper to have type annotations.
...
Viper functions can now be annotated with the type of their arguments
and return value. Eg:
@micropython.viper
def f(x:int) -> int:
return x + 1
2014-08-15 16:45:41 +01:00
Damien George
40f3c02682
Rename machine_(u)int_t to mp_(u)int_t.
...
See discussion in issue #50 .
2014-07-03 13:25:24 +01:00
Damien George
b601d9574a
py: Improvements to native emitter.
...
Native emitter can now compile try/except blocks using nlr_push/nlr_pop.
It probably only works for 1 level of exception handling. It doesn't
work on Thumb (only x64).
Native emitter can also handle some additional op codes.
With this patch, 198 tests now pass using "-X emit=native" option to
micropython.
2014-06-30 05:17:25 +01:00
Damien George
e973acde81
Merge branch 'master' of github.com:micropython/micropython
2014-06-25 04:10:34 +01:00
Damien George
780e54cdc3
py: Implement delete_attr in native emitter.
2014-06-22 18:35:04 +01:00
Paul Sokolovsky
59c675a64c
py: Include mpconfig.h before all other includes.
...
It defines types used by all other headers.
Fixes #691 .
2014-06-21 22:43:22 +03:00
Damien George
25c84643b6
py: Fix break from within a for loop.
...
Needed to pop the iterator object when breaking out of a for loop. Need
also to be careful to unwind exception handler before popping iterator.
Addresses issue #635 .
2014-05-30 15:20:41 +01:00
Damien George
503d611033
py: Implement long int parsing in int(...).
...
Addresses issue #627 .
2014-05-28 14:07:21 +01:00
Damien George
ccc85ea0da
py: Combine native emitters to 1 glue function; distinguish viper.
...
This patch simplifies the glue between native emitter and runtime,
and handles viper code like inline assember: return values are
converted to Python objects.
Fixes issue #531 .
2014-05-10 13:40:46 +01:00
Damien George
d509ac25f9
py: Fix stack access in thumb native emitter.
2014-05-07 23:27:45 +01:00
Damien George
a32c1e41cc
py: Improve native emitter; now supports more opcodes.
2014-05-07 18:30:52 +01:00
Damien George
36db6bcf54
py, compiler: Improve passes; add an extra pass for native emitter.
2014-05-07 17:24:22 +01:00
Damien George
04b9147e15
Add license header to (almost) all files.
...
Blanket wide to all .c and .h files. Some files originating from ST are
difficult to deal with (license wise) so it was left out of those.
Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
2014-05-03 23:27:38 +01:00
Damien George
968bf34c4c
py: Remove unnecessary LOAD_CONST_ID bytecode.
...
It's the same as LOAD_CONST_STR.
2014-04-27 19:12:05 +01:00