Paul Sokolovsky
44307d5ef8
vm: Implement "with" statement (SETUP_WITH and WITH_CLEANUP bytecodes).
2014-03-29 04:39:24 +02:00
Paul Sokolovsky
682f9e639d
vm: Make sure that exception triple is <type, instance, traceback>.
...
This reduntant triple is one of the ugliest parts of Python, which they
chickened out to fix in Python3. We really should consider passing just
as single exception instance (without breaking Python-level APIs of course),
but until we do, let's follow CPython layout.
2014-03-29 04:35:36 +02:00
Paul Sokolovsky
4fff26a35c
vm: Factor out exception block setup to a macro.
...
Will be reused in WITH bytecodes.
2014-03-29 04:35:23 +02:00
Damien George
c47fd2da8e
Merge branch 'master' of github.com:micropython/micropython
2014-03-29 01:26:02 +00:00
Damien George
1d7553311c
Merge pull request #382 from pfalcon/genexit-inst
...
objgenerator: close(): Throw instance of GeneratorExit (not type).
2014-03-29 01:25:05 +00:00
Damien George
bcc9298e5b
stmhal: Add TODO's to exti.c; fix delay in lcd.c.
2014-03-29 01:24:44 +00:00
Damien George
440f041525
py: Fix bugs with debugging output.
...
show_bc now decodes the prelude correctly. Moved WRITE_FILE stuff from
runtime.c to emitglue.c.
Addresses issue #385 .
2014-03-28 18:38:20 +00:00
Paul Sokolovsky
c4d589e2bb
objgenerator: close(): Throw instance of GeneratorExit (not type).
...
To comply with Python semantics and allow use of mp_obj_is_subclass_fast()
for exception matching.
2014-03-28 02:40:26 +02:00
Paul Sokolovsky
182c31a208
showbc: Add few bytecodes related to "with".
2014-03-28 02:20:21 +02:00
Damien George
c63f984647
py: Thin out predefined exceptions.
...
Only exceptions that are actually used are left prefedined. Hierarchy
is still there, and removed exceptions are just commented out.
2014-03-27 23:49:06 +00:00
Damien George
01b877d16d
py: Fix typo printing complex numbers.
2014-03-27 23:35:31 +00:00
Damien George
ce8f07adcd
py: Rename emit_pre so they have globally unique names.
2014-03-27 23:30:26 +00:00
Damien George
2326d52d20
py: Factor out code from runtime.c to emitglue.c.
2014-03-27 23:26:35 +00:00
Damien George
8767d0710e
py: complex_print uses format_float if single precision fp used.
2014-03-27 22:17:49 +00:00
Damien George
bee17b00e3
py: Put n_state for bytecode in the bytecode prelude.
...
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-27 11:07:04 +00:00
Damien George
8dcc0c7924
py: Calculate maximum exception stack size in compiler.
2014-03-27 10:55:21 +00:00
Damien George
945a01c4e3
py: Fix bug in type_store_attr, trying to store to ROM.
2014-03-27 09:32:26 +00:00
Damien George
bdcbf0fcd1
py: Restore CPython compatibility in compiler for closures with def args.
2014-03-26 23:15:35 +00:00
Damien George
d6f9434091
Merge pull request #381 from pfalcon/closure-defargs
...
py: Support closures with default args.
2014-03-26 23:09:14 +00:00
Damien George
eed6f26bed
stmhal: Use rt_check_nargs to check number of arguments.
2014-03-26 22:46:03 +00:00
Damien George
f61a072f68
Merge branch 'master' of github.com:micropython/micropython
2014-03-26 22:36:43 +00:00
Damien George
174bca7b5a
stmhal: Remove ExtiMeta object and clean up class constants.
2014-03-26 22:35:55 +00:00
Damien George
c3f1126ee8
py: Fix logic bugs in object attribute/method extraction.
2014-03-26 22:35:10 +00:00
Damien George
6022d9d478
py: Improved builtin dir.
2014-03-26 22:35:00 +00:00
Paul Sokolovsky
e9137b94f2
py: Implement getattr() builtin.
2014-03-27 00:11:36 +02:00
Damien George
9b196cddab
Remove mp_obj_type_t.methods entry and use .locals_dict instead.
...
Originally, .methods was used for methods in a ROM class, and
locals_dict for methods in a user-created class. That distinction is
unnecessary, and we can use locals_dict for ROM classes now that we have
ROMable maps.
This removes an entry in the bloated mp_obj_type_t struct, saving a word
for each ROM object and each RAM object. ROM objects that have a
methods table (now a locals_dict) need an extra word in total (removed
the methods pointer (1 word), no longer need the sentinel (2 words), but
now need an mp_obj_dict_t wrapper (4 words)). But RAM objects save a
word because they never used the methods entry.
Overall the ROM usage is down by a few hundred bytes, and RAM usage is
down 1 word per user-defined type/class.
There is less code (no need to check 2 tables), and now consistent with
the way ROM modules have their tables initialised.
Efficiency is very close to equivaluent.
2014-03-26 21:47:19 +00:00
Paul Sokolovsky
2447a5b582
py: Support closures with default args.
2014-03-26 23:17:44 +02:00
Damien George
c12b2213c1
Change mp_method_t.name from const char * to qstr.
...
Addresses issue #377 .
2014-03-26 20:15:40 +00:00
Damien George
69b3ba0df3
py: Swap around the double return value of mp_obj_gen_resume.
...
Just to keep things consistent :)
2014-03-26 19:33:23 +00:00
Damien George
66eaf84b8c
py: Replace mp_const_stop_iteration object with MP_OBJ_NULL.
2014-03-26 19:27:58 +00:00
Damien George
688e220d26
Merge pull request #379 from pfalcon/reraise
...
vm: Implement raise statement w/o args (reraising last exception).
2014-03-26 18:59:15 +00:00
Damien George
9c817b9465
Merge branch 'master' of github.com:micropython/micropython
2014-03-26 18:56:02 +00:00
Damien George
548e76cfd6
py: Use _is_subclass_fast instead of _exception_match.
2014-03-26 18:55:29 +00:00
Damien George
752ba554cc
Merge branch 'gen-close-ret-val' of github.com:pfalcon/micropython into pfalcon-gen-close-ret-val
2014-03-26 18:46:06 +00:00
Damien George
9e6e935df0
py: Add support for user-defined iterators via __iter__, __next__.
2014-03-26 18:37:06 +00:00
Paul Sokolovsky
af1ae30399
objexcept: Add mp_obj_exception_get_value() convenience function.
...
This gets "value" of exceptions in the sense as it's defined for
StopIteration.value (i.e. args[0] or None).
TODO: This really should be inline function.
2014-03-26 19:29:36 +02:00
Paul Sokolovsky
c403076ef8
vm: Implement raise statement w/o args (reraising last exception).
2014-03-26 17:32:02 +02:00
Paul Sokolovsky
962b1cd1b1
objgenerator: Implement return with value and .close() method.
...
Return with value gets converted to StopIteration(value). Implementation
keeps optimizing against creating of possibly unneeded exception objects,
so there're considerable refactoring to implement these features.
2014-03-26 15:40:58 +02:00
Damien George
38f0c607b0
stmhal: Change Usart creation function to class make_new.
2014-03-25 23:40:54 +00:00
Damien George
3021632501
stmhal: Shuffle around some init functions in main().
2014-03-25 23:33:47 +00:00
Damien George
6cfda3084d
stmhal: Add I2C support; change accel driver to use new I2C.
2014-03-25 23:26:14 +00:00
Damien George
681d0a9ca7
Merge pull request #370 from xbe/str-rfind
...
py/objstr.c: Implement str.rfind() and add tests for it, refactor find_subbytes().
2014-03-25 15:51:15 +00:00
Damien George
6e628c49ca
py: Replace naive and teribble hash function with djb2.
2014-03-25 15:27:15 +00:00
Damien George
ffb5cfc8d8
py: Removed some unnecessary exception objects.
...
They still exist in commented-out form in objexcept.c if they are ever
needed.
2014-03-25 14:29:40 +00:00
Damien George
caac542b23
Proper support for registering builtin modules in ROM.
...
Comes with some refactoring of code and renaming of files. All modules
are now named mod*.[ch].
2014-03-25 14:18:18 +00:00
Damien George
1dfde891e3
Merge pull request #373 from iabdalkader/module_register
...
Add mp_obj_module_register
2014-03-25 13:21:51 +00:00
Damien George
24d527bf22
Merge pull request #375 from dhylands/stmhal-adc
...
Some changes that I forgot to push with my last pull request
2014-03-25 10:31:28 +00:00
Dave Hylands
f0729b19ad
Fix netduino to build
...
Fix adc to work with resolution changes.
2014-03-24 23:26:41 -07:00
Paul Sokolovsky
9512e9e817
objexcept: Add "args" exception attribute, as well as StopIteration.value.
2014-03-25 01:42:01 +02:00
Paul Sokolovsky
7f8b31345b
rt_load_method(): Add missing qstr_str() when getting type name.
2014-03-25 01:39:10 +02:00