Commit Graph

218 Commits

Author SHA1 Message Date
John R. Lenton
45a8744617 Implements list.insert. Fixes issue #61. 2014-01-04 01:15:01 +00:00
Damien George
c8d1384fc0 Fix int -> machine_int_t; add print to slice test. 2014-01-04 01:06:10 +00:00
Damien George
b95d90b2f3 Merge pull request #59 from pfalcon/slice
Implement basic slice object and string slicing
2014-01-03 17:03:19 -08:00
Damien George
9ba9589ef7 Merge pull request #58 from chipaca/list_clear
Added list.clear. Fixes issue #53.
2014-01-03 16:54:30 -08:00
Paul Sokolovsky
f8b9d3c41a str: Throw TypeError for invalid index type and clean up comments. 2014-01-04 02:35:49 +02:00
Paul Sokolovsky
e606cb6561 slice: Allow building with MICROPY_ENABLE_SLICE=0. 2014-01-04 02:35:49 +02:00
Paul Sokolovsky
decad08ef5 str: Handle non-positive slice indexes. 2014-01-04 02:35:48 +02:00
Paul Sokolovsky
59800afae9 slice: Implement special handling of omitted start/stop indexes. 2014-01-04 02:35:48 +02:00
Paul Sokolovsky
cd22627f78 Enable slice support in config. 2014-01-04 02:35:48 +02:00
Paul Sokolovsky
31ba60f836 str: Initial implementation of string slicing.
Only step=1 and non-negative indexes are supported so far.
2014-01-04 02:35:48 +02:00
Paul Sokolovsky
ded0a1efa5 Implement BUILD_SLICE opcode (2-arg version). 2014-01-04 02:35:48 +02:00
Paul Sokolovsky
1c6de11f77 Add basic implementation of slice object.
So far, only start and stop integer indexes are supported. Step is
not supported, as well as objects of arbitrary types.
2014-01-04 02:35:48 +02:00
John R. Lenton
5d4a821339 Implements list.index. Fixes issue #57. 2014-01-04 00:26:30 +00:00
Damien George
98adccf7ac Merge pull request #52 from chipaca/master
Tweaks to list.pop.
2014-01-03 16:22:19 -08:00
John R. Lenton
e241e8c169 Implemented list.count 2014-01-03 23:57:28 +00:00
Paul Sokolovsky
c90c0f68a2 Move INT_FMT, etc. declaration into global mpconfig.h .
This in particular makes it available for stm port.
2014-01-04 01:57:00 +02:00
John R. Lenton
26c211648b Implemented list.copy. Fixes issue #54. 2014-01-03 23:42:17 +00:00
John R. Lenton
069ded9514 Added list.clear. Fixes issue #53. 2014-01-03 23:22:53 +00:00
John R. Lenton
97334c85d0 Merge remote-tracking branch 'upstream/master' 2014-01-03 22:55:16 +00:00
John R. Lenton
25f417c08c Worked on list.pop:
* Fixes issue #51
* Adds a specific error message for when you try to pop an empty list.
* Releases some memory if the list has shurnk a lot.
2014-01-03 22:53:18 +00:00
Paul Sokolovsky
b372bfca21 Rename default config file to mpconfig.h, and port's to mpconfigport.h.
mpconfig.h will automatically pull mpconfigport.h.
2014-01-03 19:03:11 +02:00
Paul Sokolovsky
ef18102b9e Make it possible to turn off collecting memory stats (MICROPY_MEM_STATS). 2014-01-03 18:55:24 +02:00
Paul Sokolovsky
780f555b2e Add new alloc metric: peak_bytes_allocated.
This is just max value of current_bytes_allocated seen.
2014-01-03 18:55:23 +02:00
Paul Sokolovsky
02de0c57d2 Add new alloc metric: current_bytes_allocated.
Unlike total_bytes_allocated, this tracks m_free()'s too.
2014-01-03 18:55:23 +02:00
Paul Sokolovsky
43f1c8080a m_realloc: Account only allocation size difference in total_bytes_allocated. 2014-01-03 18:55:23 +02:00
Damien George
4b57fac1c8 Merge pull request #43 from chipaca/master
Implement list addition.
2014-01-03 07:11:42 -08:00
Damien George
1fb031744f Change mp_compile so that it returns a function object for the module. 2014-01-03 14:22:03 +00:00
Damien George
14f945c2ca Add note about implementing inplace operators. 2014-01-03 14:09:31 +00:00
Damien George
66028ab6dc Basic implementation of import.
import works for simple cases.  Still work to do on finding the right
script, and setting globals/locals correctly when running an imported
function.
2014-01-03 14:03:48 +00:00
John R. Lenton
9bc56d933f Changed to use memcpy. 2014-01-03 10:13:38 +00:00
John R. Lenton
aeb16c36b0 Add a bit of whitespace. 2014-01-03 02:36:35 +00:00
John R. Lenton
81ad89c46e untabified 2014-01-03 02:32:40 +00:00
John R. Lenton
4cb80582c4 Add list addition (fixes: #39) 2014-01-03 02:27:08 +00:00
Damien George
aae7847508 Change old use of module creation to new proper use. 2014-01-03 00:10:22 +00:00
Damien George
2870862601 Add module object, to be used eventually for import. 2014-01-02 21:30:26 +00:00
Damien George
0ff883904a py: Fix generator where state array was incorrectly indexed.
Generator objects now allocate the object and the state in one malloc.
This improvement fixes Issue #38.
2014-01-02 20:57:05 +00:00
Damien George
ebd2e8702d py: __MACH__ also uses MAP_ANON. 2014-01-02 20:28:12 +00:00
Damien George
66327006fc py: change negative array indices with array - 1. 2014-01-02 18:20:41 +00:00
Damien George
27bf5b829b py: Add more bytecodes to showbc.c. 2014-01-02 18:15:33 +00:00
Paul Sokolovsky
bdf822b3d8 Add quick impl for MP_BC_LOAD_CONST_BYTES which just creates qstr so far.
This is based on the fact that qstr so far behaves more like byte string
than like Unicode string (for example, "012"[0] returns 48 (int)).
2014-01-02 18:51:19 +02:00
Damien George
fe8fb9165c py: remove depedence on strcat and stpcpy.
This fixes Issue #29, and means the core is no longer dependent on
string functions, except strlen.
2014-01-02 16:36:09 +00:00
Damien George
40563d56bd py: Add framework for built-in "type()" function. 2014-01-02 16:01:17 +00:00
Edd Barrett
67ab5ee779 On OpenBSD MAP_ANONYMOUS is called MAP_ANON. 2014-01-01 23:16:27 +00:00
Damien George
df884fe4cc py: change declaration of mp_map_t in obj.h (for issue #24). 2014-01-01 21:27:43 +00:00
Damien George
209d1b1835 py: add int() and float() built-ins, partially implemented. 2014-01-01 17:03:35 +00:00
Damien George
83c437cb0d Merge pull request #12 from pfalcon/minor-fixes
Minor fixes
2013-12-30 14:43:21 -08:00
Damien George
6baf76e28b py: make closures work. 2013-12-30 22:32:17 +00:00
Paul Sokolovsky
2efbc622cb Typo fix in comment. 2013-12-30 21:03:41 +02:00
Damien George
8cc96a35e5 Put unicode functions in unicode.c, and tidy their names. 2013-12-30 18:23:50 +00:00
Damien George
212c296c0b Make unix-cpy cross platform; remove dependency of asmx64 on mpconfig. 2013-12-30 12:52:32 +00:00
Damien George
cd340c44c2 Merge branch 'cross-plat' of https://github.com/pfalcon/micropython into pfalcon-cross-plat 2013-12-30 12:08:18 +00:00
Paul Sokolovsky
e85c38992d Make "unix" target be crossplatform and support x86, x64, ARM hosts. 2013-12-30 03:38:32 +02:00
Damien
dae7eb7226 py: add dict length function, and fix rt_store_set. 2013-12-29 22:32:51 +00:00
Damien
732407f1bf Change memory allocation API to require size for free and realloc. 2013-12-29 19:33:23 +00:00
Damien
02a7c41e76 py: implement POP_BLOCK in VM. 2013-12-29 18:48:37 +00:00
Paul Sokolovsky
44d0f3cfa2 Handle return value of read() call. 2013-12-29 20:11:05 +02:00
Damien
de690d128b Add unix-cpy, used to test Micro Python byte code against CPython. 2013-12-29 18:01:01 +00:00
Damien
b86e3f9293 py: implement some basic exception matching. 2013-12-29 17:17:43 +00:00
Damien
8f9e2ee157 Add code in VM to handle nested exceptions correctly. 2013-12-29 16:54:59 +00:00
Damien
dd12d1378f Parse upper-case hex numbers correctly. 2013-12-29 13:03:49 +00:00
Damien
d9d6201b52 py: simplify __next__ method for generators. 2013-12-21 18:38:03 +00:00
Damien
d99b05282d Change object representation from 1 big union to individual structs.
A big change.  Micro Python objects are allocated as individual structs
with the first element being a pointer to the type information (which
is itself an object).  This scheme follows CPython.  Much more flexible,
not necessarily slower, uses same heap memory, and can allocate objects
statically.

Also change name prefix, from py_ to mp_ (mp for Micro Python).
2013-12-21 18:17:45 +00:00
Damien
e2880aa2fd Fix a few compiler warnings. 2013-12-20 14:22:59 +00:00
Damien
a3dcd9e80c py: add more Python built-in functions. 2013-12-17 21:35:38 +00:00
Damien
660365e14c py: split runtime into map, obj, builtin. 2013-12-17 18:27:24 +00:00
Damien
a1b2693161 py: remove further unnecessary emit_verbatim code. 2013-12-12 15:34:40 +00:00
Damien
e388f1034e py: fix bug with doc string not recognised after first newline of file. 2013-12-12 15:24:38 +00:00
Damien
02f8941bf6 py: reduce use of emit_verbatim calls to minimum. 2013-12-12 15:13:36 +00:00
Damien
9ecbcfff99 py: work towards working closures. 2013-12-11 00:41:43 +00:00
Damien
318aec6ba9 py: emit correct id for closed over variables. 2013-12-10 18:28:17 +00:00
Damien
6332174ab4 py: compiler supports string juxtaposition=concatenation. 2013-12-10 17:41:49 +00:00
Damien
db4c361f1c py: add skeletal import functionality. 2013-12-10 17:27:24 +00:00
Damien
033d17a633 py: built-in range now accepts variable number of arguments. 2013-11-28 19:22:56 +00:00
Damien
d79338969b py: restrict further when for-range optimisation is done. 2013-11-28 19:12:18 +00:00
Damien
86c7fc7dd9 py: add list pop and sort, unpack_sequence, and keywords in method_call. 2013-11-26 15:16:41 +00:00
Damien
6f3e7fc505 py: add UNPACK_SEQUENCE and keyword methods to VM. 2013-11-26 15:15:50 +00:00
Damien
ff099f36d6 py: add more functionality to showbc. 2013-11-26 15:14:50 +00:00
Damien
d47f9d5a4f py: add call to __init__ when instantiating class object. 2013-11-25 23:40:02 +00:00
Damien
c1075ddc8f py: add some more opcodes to showbc. 2013-11-25 23:39:36 +00:00
Damien
f03001f8a6 Add function to decode and show byte code. 2013-11-17 13:19:33 +00:00
Damien
0446a0d76d Change some debugging/output messages for native code generation. 2013-11-17 13:16:36 +00:00
Damien
6d4f3462c4 Viper: function calls now convert constant arguments to objects. 2013-11-16 20:44:39 +00:00
Damien
6b92d451b2 Add len and subscr (a hack) support for strings. 2013-11-09 20:13:55 +00:00
Damien
94658e2e25 Add JUMP_IF_x_OR_POP opcodes to VM. 2013-11-09 20:12:32 +00:00
Damien
f3822fc34c Fix but with optimised range being 1 over. 2013-11-09 20:12:03 +00:00
Damien
f72fd0e875 Add optimisation for "for x in range". 2013-11-06 20:20:49 +00:00
Damien
5bf32c3b6b Built-in print function supports variable number of arguments. 2013-11-06 17:16:35 +00:00
Damien
ae0bc08a37 Viper supports inplace add (trivial). 2013-11-06 17:11:07 +00:00
Damien
40fdfe3000 Improve allocation of stack for byte code. 2013-11-05 22:16:22 +00:00
Damien
03c9cfb015 Make byte code jumps relative. 2013-11-05 22:06:08 +00:00
Damien
6addc89e55 Byte code for SMALL_INT uses 3 bytes for integer. 2013-11-04 23:04:50 +00:00
Damien
96a0addb18 Fixup include of stdarg and va_list definition. 2013-11-03 18:30:10 +00:00
Damien
2f06c57f8a Add simple var-arg functions; add simple string.format. 2013-11-03 18:20:56 +00:00
Damien
33af3bf028 Change Py API names, py_get_* -> py_obj_get_*. 2013-11-03 14:39:47 +00:00
Damien
9b9e996df6 Support for for-loop in native thumb. 2013-11-03 14:25:43 +00:00
Damien
1a6633a74d Implement more thumb branch instructions. 2013-11-03 13:58:19 +00:00
Damien
d57eba51e5 Add user object to runtime. 2013-11-02 23:58:14 +00:00
Damien
6ba1314265 Fix bug: emit native didn't clear last_was_return in label_assign. 2013-11-02 20:34:54 +00:00
Damien
7410e440ab Add basic complex number support. 2013-11-02 19:47:57 +00:00
Damien
e0b1864337 Small hack to temporarily fix allocation of unique_code slots. 2013-11-02 16:41:24 +00:00