<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/py/objgenerator.c, branch v1.3.5</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=v1.3.5</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=v1.3.5'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2014-10-25T19:23:13+00:00</updated>
<entry>
<title>py: Store bytecode arg names in bytecode (were in own array).</title>
<updated>2014-10-25T19:23:13+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-10-25T14:07:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=1084b0f9c21b093618da4494508dec9ca8467e35'/>
<id>urn:sha1:1084b0f9c21b093618da4494508dec9ca8467e35</id>
<content type='text'>
This saves a lot of RAM for 2 reasons:

1. For functions that don't have default values, var args or var kw
args (which is a large number of functions in the general case), the
mp_obj_fun_bc_t type now fits in 1 GC block (previously needed 2 because
of the extra pointer to point to the arg_names array).  So this saves 16
bytes per function (32 bytes on 64-bit machines).

2. Combining separate memory regions generally saves RAM because the
unused bytes at the end of the GC block are saved for 1 of the blocks
(since that block doesn't exist on its own anymore).  So generally this
saves 8 bytes per function.

Tested by importing lots of modules:

- 64-bit Linux gave about an 8% RAM saving for 86k of used RAM.
- pyboard gave about a 6% RAM saving for 31k of used RAM.
</content>
</entry>
<entry>
<title>py: Use variable length encoded uints in more places in bytecode.</title>
<updated>2014-09-04T13:44:01+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-09-04T13:44:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=b534e1b9f14c189d2cef209d40f598e62164694a'/>
<id>urn:sha1:b534e1b9f14c189d2cef209d40f598e62164694a</id>
<content type='text'>
Code-info size, block name, source name, n_state and n_exc_stack now use
variable length encoded uints.  This saves 7-9 bytes per bytecode
function for most functions.
</content>
</entry>
<entry>
<title>Change some parts of the core API to use mp_uint_t instead of uint/int.</title>
<updated>2014-08-29T23:35:11+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-08-29T23:35:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=ecc88e949ca5e307d22da4605a40d39ea2df9e3b'/>
<id>urn:sha1:ecc88e949ca5e307d22da4605a40d39ea2df9e3b</id>
<content type='text'>
Addressing issue #50, still some way to go yet.
</content>
</entry>
<entry>
<title>Rename machine_(u)int_t to mp_(u)int_t.</title>
<updated>2014-07-03T12:25:24+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-07-03T12:25:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=40f3c026823f8951a2fa04e9c7fc93c75bc27bec'/>
<id>urn:sha1:40f3c026823f8951a2fa04e9c7fc93c75bc27bec</id>
<content type='text'>
See discussion in issue #50.
</content>
</entry>
<entry>
<title>objgenerator: Finish refactor to use mp_setup_code_state().</title>
<updated>2014-06-11T17:43:47+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2014-06-11T17:17:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=5f4a667ea467c0452b9c2ed951f4b4afce711d61'/>
<id>urn:sha1:5f4a667ea467c0452b9c2ed951f4b4afce711d61</id>
<content type='text'>
</content>
</entry>
<entry>
<title>objgenerator: First iteration of refactor to use mp_setup_code_state().</title>
<updated>2014-06-11T17:43:47+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2014-06-11T17:06:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=f77d0c5bb3986238cbd5eb4982087b3fda3dfcc0'/>
<id>urn:sha1:f77d0c5bb3986238cbd5eb4982087b3fda3dfcc0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py: Merge mp_execute_bytecode into fun_bc_call.</title>
<updated>2014-06-07T13:16:08+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2014-06-07T13:16:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=aabd83ea204325cdf45355a5bdc6838745484060'/>
<id>urn:sha1:aabd83ea204325cdf45355a5bdc6838745484060</id>
<content type='text'>
This reduces stack usage by 16 words (64 bytes) for stmhal/ port.

See issue #640.
</content>
</entry>
<entry>
<title>vm: Factor out structure with code execution state and pass it around.</title>
<updated>2014-05-31T15:22:01+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2014-05-31T13:50:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=b4ebad3310b238bb85ea1f0d7b78b4fcb3d146df'/>
<id>urn:sha1:b4ebad3310b238bb85ea1f0d7b78b4fcb3d146df</id>
<content type='text'>
This improves stack usage in callers to mp_execute_bytecode2, and is step
forward towards unifying execution interface for function and generators
(which is important because generators don't even support full forms
of arguments passing (keywords, etc.)).
</content>
</entry>
<entry>
<title>py: Reformat few long functions argument lists for clarity.</title>
<updated>2014-05-31T00:36:37+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2014-05-31T00:36:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=1f07b7e3c31b730853ec98a12dd2c7f9c70347c3'/>
<id>urn:sha1:1f07b7e3c31b730853ec98a12dd2c7f9c70347c3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py: More mp_identity usage.</title>
<updated>2014-05-17T08:20:10+00:00</updated>
<author>
<name>Paul Sokolovsky</name>
<email>pfalcon@users.sourceforge.net</email>
</author>
<published>2014-05-17T08:18:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=bf271401938d336872b105459e3c4930b183d3fa'/>
<id>urn:sha1:bf271401938d336872b105459e3c4930b183d3fa</id>
<content type='text'>
</content>
</entry>
</feed>
