<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/py/emitnative.c, branch travis-clang</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=travis-clang</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=travis-clang'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2016-04-26T09:02:32+00:00</updated>
<entry>
<title>py/emitnative: Use MP_OBJ_NEW_SMALL_INT instead of manual bit shifting.</title>
<updated>2016-04-26T09:02:32+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-04-26T09:02:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=23df4b08fba26a6a467186cfcaf0d72cca1122ea'/>
<id>urn:sha1:23df4b08fba26a6a467186cfcaf0d72cca1122ea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py: Implement basic with support in native emitter.</title>
<updated>2016-04-07T07:53:24+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-04-07T07:53:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=2c915e1ae61785ab6e33189581fb353ebd40d0ca'/>
<id>urn:sha1:2c915e1ae61785ab6e33189581fb353ebd40d0ca</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py: Combine continuous block of emit steps into with_cleanup emit call.</title>
<updated>2016-04-07T07:50:38+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-04-07T07:50:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=ce8b4e87494a11f389de7629e82043d6fb70284e'/>
<id>urn:sha1:ce8b4e87494a11f389de7629e82043d6fb70284e</id>
<content type='text'>
Because different emitters need to handle with-cleanup in different ways.
</content>
</entry>
<entry>
<title>py/emitnative: Add check that RHS of viper store is of integral type.</title>
<updated>2016-02-15T09:38:02+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-02-15T09:38:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=9598f36a84e19045e2978ab902e2367dc2fa12d4'/>
<id>urn:sha1:9598f36a84e19045e2978ab902e2367dc2fa12d4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py/viper: Allow uint as index to load/store, and give better error msg.</title>
<updated>2016-02-09T13:46:49+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-02-09T13:46:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=a2e5e4c3d8e470f5bcc8a827b71f5670acd4851d'/>
<id>urn:sha1:a2e5e4c3d8e470f5bcc8a827b71f5670acd4851d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py: Extend native type-sig to use 4 bits, so uint is separate to ptr.</title>
<updated>2016-02-02T23:16:05+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-02-02T23:16:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=5f3e005b6791634b104fa6385c8a9bf5ed1af164'/>
<id>urn:sha1:5f3e005b6791634b104fa6385c8a9bf5ed1af164</id>
<content type='text'>
Before this patch, the native types for uint and ptr/ptr8/ptr16/ptr32
all overlapped and it was possible to make a mistake in casting.  Now,
these types are all separate and any coding mistakes will be raised
as runtime errors.
</content>
</entry>
<entry>
<title>py: Make UNARY_OP_NOT a first-class op, to agree with Py not semantics.</title>
<updated>2015-12-10T22:19:48+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2015-12-08T12:28:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=bdbe8c9ae21559f6dc0b8e1ad84b7bbec2a04726'/>
<id>urn:sha1:bdbe8c9ae21559f6dc0b8e1ad84b7bbec2a04726</id>
<content type='text'>
Fixes #1684 and makes "not" match Python semantics.  The code is also
simplified (the separate MP_BC_NOT opcode is removed) and the patch saves
68 bytes for bare-arm/ and 52 bytes for minimal/.

Previously "not x" was implemented as !mp_unary_op(x, MP_UNARY_OP_BOOL),
so any given object only needs to implement MP_UNARY_OP_BOOL (and the VM
had a special opcode to do the ! bit).

With this patch "not x" is implemented as mp_unary_op(x, MP_UNARY_OP_NOT),
but this operation is caught at the start of mp_unary_op and dispatched as
!mp_obj_is_true(x).  mp_obj_is_true has special logic to test for
truthness, and is the correct way to handle the not operation.
</content>
</entry>
<entry>
<title>py/emit: Change type of arg of load_const_obj from void* to mp_obj_t.</title>
<updated>2015-11-29T14:25:04+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2015-11-27T12:41:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=5d66b427e22b6db5c73b74a6e9ba057ac5a38893'/>
<id>urn:sha1:5d66b427e22b6db5c73b74a6e9ba057ac5a38893</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py: Add MICROPY_PERSISTENT_CODE so code can persist beyond the runtime.</title>
<updated>2015-11-13T12:49:18+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2015-11-02T17:27:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=c8e9c0d89afa90694790fd48e1bf527487a5beb7'/>
<id>urn:sha1:c8e9c0d89afa90694790fd48e1bf527487a5beb7</id>
<content type='text'>
Main changes when MICROPY_PERSISTENT_CODE is enabled are:

- qstrs are encoded as 2-byte fixed width in the bytecode
- all pointers are removed from bytecode and put in const_table (this
  includes const objects and raw code pointers)

Ultimately this option will enable persistence for not just bytecode but
also native code.
</content>
</entry>
<entry>
<title>py: Add constant table to bytecode.</title>
<updated>2015-11-13T12:49:18+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2015-10-23T00:23:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=713ea1800d1f0c82a0c75885ad034705556ab5ef'/>
<id>urn:sha1:713ea1800d1f0c82a0c75885ad034705556ab5ef</id>
<content type='text'>
Contains just argument names at the moment but makes it easy to add
arbitrary constants.
</content>
</entry>
</feed>
