aboutsummaryrefslogtreecommitdiff
path: root/py/bc.h
AgeCommit message (Collapse)Author
2014-07-03Rename machine_(u)int_t to mp_(u)int_t.Damien George
See discussion in issue #50.
2014-06-11objgenerator: First iteration of refactor to use mp_setup_code_state().Paul Sokolovsky
2014-06-07py: Merge mp_execute_bytecode into fun_bc_call.Damien George
This reduces stack usage by 16 words (64 bytes) for stmhal/ port. See issue #640.
2014-06-03showbc: Make sure it's possible to trace MAKE_FUNCTION arg to actual bytecode.Paul Sokolovsky
2014-05-31vm: Factor out structure with code execution state and pass it around.Paul Sokolovsky
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.)).
2014-05-10py: Rename byte_code to bytecode everywhere.Damien George
bytecode is the more widely used. See issue #590.
2014-05-03Add license header to (almost) all files.Damien George
Blanket wide to all .c and .h files. Some files originating from ST are difficult to deal with (license wise) so it was left out of those. Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
2014-04-23vm: Add rudimentary bytecode execution tracing capability.Paul Sokolovsky
2014-03-30py: Implement support for generalized generator protocol.Paul Sokolovsky
Iterators and ducktype objects can now be arguments of yield from.
2014-03-30py: Rename mp_exc_stack to mp_exc_stack_t.Damien George
2014-03-30vm: Save current active exception on opening new try block.Paul Sokolovsky
Required to reraise correct exceptions in except block, regardless if more try blocks with active exceptions happen in the same except block. P.S. This "automagic reraise" appears to be quite wasteful feature of Python - we need to save pending exception just in case it *might* be reraised. Instead, programmer could explcitly capture exception to a variable using "except ... as var", and reraise that. So, consider disabling argless raise support as an optimization.
2014-03-27py: Put n_state for bytecode in the bytecode prelude.Damien George
Rationale: setting up the stack (state for locals and exceptions) is really part of the "code", it's the prelude of the function. For example, native code adjusts the stack pointer on entry to the function. Native code doesn't need to know n_state for any other reason. So putting the state size in the bytecode prelude is sensible. It reduced ROM usage on STM by about 30 bytes :) And makes it easier to pass information about the bytecode between functions.
2014-03-23vm: Abstract working with tagged pointers in VM using macro accessors.Paul Sokolovsky
Based on issues raised during recent review and inconsistency of different implementations.
2014-03-22objgenerator: Implement .throw() method to throw exceptions into generator.Paul Sokolovsky
2014-03-22objgenerator: Keep exception stack within generator object, like value stack.Paul Sokolovsky
This is required to properly handle exceptions across yields.
2014-02-15py: VM never throws an exception, instead returns a status and value.Damien George
Addresses issue #290, and hopefully sets up things to allow generators throwing exceptions, etc.
2014-02-01py: mp_execute_byte_code has 2 arg arrays, for more efficient default params.Damien George
2014-01-19py: Add module/function/class name to exceptions.Damien George
Exceptions know source file, line and block name. Also tidy up some debug printing functions and provide a global flag to enable/disable them.
2014-01-18Add source file name and line number to error messages.Damien George
Byte code has a map from byte-code offset to source-code line number, used to give better error messages.
2013-12-21Change object representation from 1 big union to individual structs.Damien
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-11py: work towards working closures.Damien
2013-12-10py: add skeletal import functionality.Damien
2013-11-05Improve allocation of stack for byte code.Damien
2013-11-05Make byte code jumps relative.Damien
2013-10-16Implement BC & runtime support for generator/yielding.Damien
2013-10-10Rename vm.h to bc.h.Damien
2013-10-05Further factorise PASS_1 out of specific emit code.Damien
2013-10-04Initial commit.Damien