Commit Graph

1611 Commits

Author SHA1 Message Date
Damien George 8a1cab952f py: Fix mp_get_buffer, and use it in more places.
Must use mp_obj_get_type to get the type of an object.  Can't assume
mp_obj_t is castable to mp_obj_base_t.
2014-04-13 12:08:52 +01:00
Damien George 4b01de44ba py: Add traceback info to syntax errors.
Should fix issue #463.
2014-04-13 11:56:02 +01:00
Damien George 3d484d9ad4 py: Update showbc to decode ptrs for MAKE_FUNCTION ops. 2014-04-13 11:22:44 +01:00
Damien George 0aab675108 stmhal: Little hack to dump GC allocation table using pyb.info().
Pass a single parameter (doesn't matter what): pyb.info(1), will dump
the GC alloc table.
2014-04-13 11:10:58 +01:00
Damien George df8127a17e py: Remove unique_codes from emitglue.c. Replace with pointers.
Attempt to address issue #386.  unique_code_id's have been removed and
replaced with a pointer to the "raw code" information.  This pointer is
stored in the actual byte code (aligned, so the GC can trace it), so
that raw code (ie byte code, native code and inline assembler) is kept
only for as long as it is needed.  In memory it's now like a tree: the
outer module's byte code points directly to its children's raw code.  So
when the outer code gets freed, if there are no remaining functions that
need the raw code, then the children's code gets freed as well.

This is pretty much like CPython does it, except that CPython stores
indexes in the byte code rather than machine pointers.  These indices
index the per-function constant table in order to find the relevant
code.
2014-04-13 11:04:33 +01:00
Paul Sokolovsky 68e7c5146c py: Factor out impl of special methods for builtin types into opmethods.c 2014-04-13 11:54:53 +03:00
Paul Sokolovsky 036ad76659 objset: Implement __contains__() op-method. 2014-04-13 11:34:40 +03:00
Paul Sokolovsky 1a37588e35 py: Provide more details for too few and too much args for Python fun calls. 2014-04-13 11:30:16 +03:00
Paul Sokolovsky 48fdaad824 py: Rename collections module to _collections.
We're not going to implement all the plethora of types in there in C.
Funnily, CPython implements defaultdict in C, and namedtuple in Python.
2014-04-13 10:24:00 +03:00
Paul Sokolovsky ef79a82cec README: Update for modffi being enabled by default for unix port. 2014-04-13 09:54:54 +03:00
Paul Sokolovsky f130ca1f60 py: Make bytes type hashable. 2014-04-13 06:45:12 +03:00
Paul Sokolovsky 73b7027b83 objstr: Add str.encode() and bytes.decode() methods.
These largely duplicate str() & bytes() constructors' functionality,
but can be used to achieve Python2 compatibility.
2014-04-13 06:45:02 +03:00
Damien George fe6ded4d17 Merge pull request #472 from pfalcon/modffi-on
unix: Enable modffi by default.
2014-04-13 00:37:03 +01:00
Damien George eb936189aa Merge branch 'master' of github.com:micropython/micropython 2014-04-13 00:32:56 +01:00
Damien George 8721087661 py: Big improvements to inline assembler.
Improved the Thumb assembler back end.  Added many more Thumb
instructions to the inline assembler.  Improved parsing of assembler
instructions and arguments.  Assembler functions can now be passed the
address of any object that supports the buffer protocol (to get the
address of the buffer).  Added an example of how to sum numbers from
an array in assembler.
2014-04-13 00:30:32 +01:00
Paul Sokolovsky 9a092831f7 unix: Enable modffi by default.
ffi is needed to use micropython-lib, so let's have it enabled by default,
then folks who have troubles with libffi can disable it, instead of everyone
doing manual actions again and again.
2014-04-13 00:01:40 +03:00
Paul Sokolovsky 06526e7ccc pip-micropython: Apply more workarounds for setuptools, pip, etc misfeatures. 2014-04-12 23:33:14 +03:00
Damien George 82c7b1b1d5 stmhal: Put a USB structure in ROM; GC doesn't scan the data segment. 2014-04-12 18:50:20 +01:00
Damien George b14f2a0ba3 Update .gitignore to ignore __pycache__/. 2014-04-12 18:30:22 +01:00
Damien George 71dcd51989 examples: Add example script to flash an LED using inline assembler. 2014-04-12 18:27:23 +01:00
Damien George 6ce4277551 py: Make all LOAD_FAST ops check for unbound local.
This is necessary to catch all cases where locals are referenced before
assignment.  We still keep the _0, _1, _2 versions of LOAD_FAST to help
reduced the byte code size in RAM.

Addresses issue #457.
2014-04-12 18:20:40 +01:00
Damien George c2803db010 tests: Add some bytecode tests. 2014-04-12 18:00:32 +01:00
Damien George 0a4c210586 Merge branch 'master' of github.com:micropython/micropython 2014-04-12 17:55:32 +01:00
Damien George a26dc50968 py: Improve inline assembler; improve compiler constant folding. 2014-04-12 17:54:52 +01:00
Damien George 2813cb6043 py: Add 'static' to inline function MP_BOOL; remove category_t.
Small fixes to get it compiling with ARMCC.  I have no idea why
category_t was in the enum definition for qstrs...
2014-04-12 17:53:05 +01:00