Commit Graph

1104 Commits

Author SHA1 Message Date
Paul Sokolovsky
c5e32c6995 vm: Add rudimentary bytecode execution tracing capability. 2014-04-23 03:46:00 +03:00
Paul Sokolovsky
4c6b375960 showbc: MAKE_CLOSURE*: Update for new closed-over encoding. 2014-04-23 03:23:39 +03:00
Paul Sokolovsky
5e3e2d00ea emitglue: Typo fix in var name. 2014-04-23 03:23:32 +03:00
Paul Sokolovsky
20e9ed3916 builtinimport: If there was error compiling imported module, raise exception. 2014-04-22 02:53:20 +03:00
Paul Sokolovsky
dec31bb872 objexcept: Add mp_obj_new_exception_arg1() convenience function. 2014-04-22 00:02:51 +03:00
Damien George
e5f8a77db6 py: Add 'align' and 'data' meta-instructions to inline assembler. 2014-04-21 13:33:15 +01:00
Damien George
806f4aef9a py: Fix super() bug, where it didn't allow instance access.
This is a one-liner fix.  It gets the class-super.py test passing, but
is probably not a complete fix.
2014-04-21 02:11:07 +01:00
Damien George
0ae21a81f7 Merge branch 'master' of github.com:micropython/micropython 2014-04-21 01:18:05 +01:00
Damien George
64ba6ca127 py: Small change to mp_arg_parse_all. 2014-04-21 00:09:44 +01:00
Paul Sokolovsky
353b0289f3 py: Add win32-specific header for alloca(). 2014-04-20 22:24:44 +03:00
Paul Sokolovsky
41809a1ced nlrx86.S: Another ifdef for win32 symbol underscoring issues. 2014-04-20 22:24:44 +03:00
Paul Sokolovsky
26905259d0 objarray: Slice subscription operation: properly test for op subtype.
Also, checked that both bytearray and array.array actually support generic
(a-la list) slice assignment and deletion. Added TODOs.
2014-04-20 20:58:33 +03:00
Paul Sokolovsky
5b991ae2d3 gc: gc_realloc(): Fix byte-to-block calculation. 2014-04-20 20:46:39 +03:00
Damien George
dde739d364 py, gc: Further simplify coding-style of gc_realloc.
No logic changes, just coding style to make it easy to read.
2014-04-20 18:16:25 +01:00
Damien George
5f6a25fc50 py: Wrap #if's around emitter functions that are used only by emitcpy.
3 emitter functions are needed only for emitcpy, and so we can #if them
out when compiling with emitcpy support.

Also remove unused SETUP_LOOP bytecode.
2014-04-20 18:02:27 +01:00
Damien George
3558f62fb5 py: Making closures now passes pointer to stack, not a tuple for vars.
Closed over variables are now passed on the stack, instead of creating a
tuple and passing that.  This way memory for the closed over variables
can be allocated within the closure object itself.  See issue #510 for
background.
2014-04-20 17:50:40 +01:00
Paul Sokolovsky
bc5f0c1977 objclosure: Store reference to entire closed variables tuple.
Avoids pointer-to-field garbage collection issue. Fixes #510.
2014-04-20 13:08:33 +03:00
Paul Sokolovsky
2758b7d3e2 objcell: Add disabled by default print method for debugging. 2014-04-20 13:08:33 +03:00
Paul Sokolovsky
c86889dafb gc: "new" gc_realloc: Rewrite in plain C, fixing bunch of bugs.
There were typos, various rounding errors trying to do concurrent counting
in bytes vs blocks, complex conditional paths, superfluous variables, etc.,
etc., all leading to obscure segfaults.
2014-04-20 13:08:33 +03:00
Paul Sokolovsky
ed162b5ef2 gc: Recover simple gc_realloc implementation, make easier to switch between. 2014-04-20 13:08:33 +03:00
Paul Sokolovsky
0f836ef893 modstruct: Add 'O' typecode for passing mp_obj_t.
Useful as callback data, etc.
2014-04-20 13:08:33 +03:00
Paul Sokolovsky
4e4fa94c4c modstruct: Use proper int accessor which checks input value type. 2014-04-20 13:08:33 +03:00
Damien George
53775026e7 Merge branch 'master' of github.com:micropython/micropython 2014-04-20 01:26:25 +01:00
Damien George
f87b35e779 py: Fix mp_arg_parse_all. 2014-04-20 01:25:15 +01:00
Damien George
a3f94e0030 py: Add arg checking helper functions.
These are to assist in writing native C functions that take positional
and keyword arguments.  mp_arg_check_num is for just checking the
number of arguments is correct.  mp_arg_parse_all is for parsing
positional and keyword arguments with default values.
2014-04-20 00:13:22 +01:00
Paul Sokolovsky
d6e12723ed objarray: Implement slice subscription. 2014-04-19 20:06:57 +03:00
Paul Sokolovsky
6204460461 modstruct: Initial implementation of struct.pack(). 2014-04-19 03:22:08 +03:00
Paul Sokolovsky
504e23388c objstr: Init hash in mp_obj_str_builder_start() to 0. 2014-04-19 03:21:06 +03:00
Paul Sokolovsky
4602b9a79f obj.h: Typo fix in comment. 2014-04-19 03:21:06 +03:00
Paul Sokolovsky
1355cf42f2 modstruct: Fix .calcsize() to account for struct type/alignment. 2014-04-19 03:21:06 +03:00
Paul Sokolovsky
5695e07256 modstruct: Support 'q' & 'Q' type codes. 2014-04-19 03:18:14 +03:00
Damien George
561f83c9cf Merge branch 'master' of github.com:micropython/micropython 2014-04-18 23:35:24 +01:00
Damien George
71e9bfa20d py: Add mp_binary_set_val_array_from_int, to store an int directly. 2014-04-18 23:28:12 +01:00
Damien George
b11b85adaa py: Allow to pass buffer protocol flags to get_buffer helper funcs. 2014-04-18 22:59:24 +01:00
Damien George
57a4b4f178 py: Add typecode to buffer protocol.
When querying an object that supports the buffer protocol, that object
must now return a typecode (as per binary.[ch]).  This does not have to
be honoured by the caller, but can be useful for determining element
size.
2014-04-18 22:29:21 +01:00
Damien George
3fd2d7fad2 py: Tidy up function argument error messages.
We are not as verbose as CPython, and maybe a bit too cryptic sometimes.
2014-04-18 22:06:55 +01:00
Damien George
32ca164992 py: Tidy up array.array; add more error handling. 2014-04-18 22:04:06 +01:00
Paul Sokolovsky
0fc4775cd6 sequence: Further simplify sequence comparison. 2014-04-18 21:47:58 +03:00
Paul Sokolovsky
83eba5dec5 sequence: Fix glaring bug in sequence comparison. 2014-04-18 21:42:54 +03:00
Paul Sokolovsky
7de5377ca7 objfloat: Try to achieve the same float printing format as CPython does.
Test usecase I used is print(time.time()) and print(time.time() - time.time()).
On Linux/Glibc they now give the same output as CPython 3.3. Specifically,
time.time() gives non-exponential output with 7 decimal digits, and subtraction
gives exponential output e-06/e-07.
2014-04-18 21:21:59 +03:00
Damien George
90edf9e13b inlinethumb: Add wfi, cpsid and cpsie instructions. 2014-04-18 16:56:54 +01:00
Paul Sokolovsky
599bbc111c py: from import * should not import symbols starting with underscore.
I skipped implementing this initially, but then it causes __name__
of current module be overwritten and relative imports fail.
2014-04-18 04:20:17 +03:00
Damien George
5b65f0c7d3 py: Rename USE_COMPUTED_GOTOS to USE_COMPUTED_GOTO and enable on stmhal.
On stmhal, computed gotos make the binary about 1k bigger, but makes it
run faster, and we have the room, so why not.  All tests pass on
pyboard using computed gotos.
2014-04-17 23:24:13 +01:00
Damien George
ea8d06c39d py: Add MP_OBJ_STOP_ITERATION and make good use of it.
Also make consistent use of MP_OBJ_NOT_SUPPORTED and MP_OBJ_NULL.
This helps a lot in debugging and understanding of function API.
2014-04-17 23:19:36 +01:00
Damien George
729f7b42d6 py: Merge BINARY_OP_SUBSCR and store_subscr (w/ delete) into subscr.
mp_obj_t->subscr now does load/store/delete.
2014-04-17 22:10:53 +01:00
Damien George
de7c425139 py: Simplify objfun/objgenerator connection, no need to call bc_get. 2014-04-17 19:16:11 +01:00
Damien George
d89b69eb3a Merge branch 'master' of github.com:micropython/micropython 2014-04-17 18:58:46 +01:00
Damien George
d0f9f6cd3f py: Fix pfenv_print_strn to return correct number of chars printed.
With this fix, all tests in tests/basics pass on pyboard.
2014-04-17 18:58:09 +01:00
Paul Sokolovsky
b7e90ea078 objgenerator: Generator must execute in its defining lexical context.
I.e. with its own globals. So, just as for functions, we need to switch
globals when resuming a generator.
2014-04-17 20:27:00 +03:00
Paul Sokolovsky
f26a30710c objfun: Add local header.
This follows pattern already used for objtuple, etc.: objfun.h's content
is not public - each and every piece of code should not have access to it.
It's not private either - with out architecture and implementation language
(C) it doesn't make sense to keep implementation of each object strictly
private and maintain cumbersome accessors. It's "local" - intended to be
used by a small set of "friend" (in C++ terms) objects.
2014-04-17 20:27:00 +03:00