Damien George
7a30e87d2b
py: Fix MICROPY_STACKLESS mode to compile with MICROPY_OBJ_REPR_D.
2015-12-17 12:32:41 +00:00
Damien George
ab1e36dcf9
py/mpprint: Implement %llu and %lld format specifiers for mp_printf.
...
Only enabled for MICROPY_OBJ_REPR_D.
2015-12-17 11:41:10 +00:00
Damien George
d977d268e8
py/gc: Use size_t instead of mp_uint_t to count things related to heap.
...
size_t is the correct type to use to count things related to the size of
the address space. Using size_t (instead of mp_uint_t) is important for
the efficiency of ports that configure mp_uint_t to larger than the
machine word size.
2015-12-16 20:09:11 -05:00
Damien George
f7782f8082
py/gc: For finaliser, interpret a pointer into the heap as concrete obj.
2015-12-16 19:45:42 -05:00
Damien George
969e4bbe6a
py/gc: Scan GC blocks as an array of pointers, not an array of objects.
...
The GC should search for pointers within the heap. This patch makes a
difference when an object is larger than a pointer (eg 64-bit NaN
boxing).
2015-12-16 19:41:37 -05:00
Damien George
3911d5af32
py/modsys: Fix module globals table to use MP_ROM_QSTR.
2015-12-16 19:40:14 -05:00
Paul Sokolovsky
1a1cceaf6f
py/objpolyiter: Implement instance-polymorphic iterator type.
...
This allows to have single itertaor type for various internal iterator
types (save rodata space by not having repeating almost-empty type
structures). It works by looking "iternext" method stored in particular
object instance (should be first object field after "base").
2015-12-14 23:48:12 +02:00
Dave Hylands
f925165942
unix: Move modmachine into unix directory
...
This leaves behind the common functionality in extmod/machine_mem.c
which can be used by all ports.
2015-12-13 01:21:36 +02:00
Michael Buesch
17298af61e
py/modmath: Add domain error checking to sqrt, log, log2, log10.
...
These functions will raise 'ValueError: math domain error' on invalid
input.
2015-12-12 15:12:54 +00:00
Damien George
29e9db0c58
py: Fix compiler to handle lambdas used as default arguments.
...
Addresses issue #1709 .
2015-12-12 13:42:51 +00:00
Damien George
bdbe8c9ae2
py: Make UNARY_OP_NOT a first-class op, to agree with Py not semantics.
...
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.
2015-12-10 22:19:48 +00:00
Henrik Sölver
e242b1785f
py/emitinlinethumb: Add support for MRS instruction.
...
Only IPSR and BASEPRI special registers supported at the moment, but easy
to extend in the future.
2015-12-10 17:32:54 +00:00
Paul Sokolovsky
645045a799
py/mkrules.mk: Don't pass COPT to linker.
...
Oftentimes, libc, libm, etc. don't come compiled with CPU compressed code
option (Thumb, MIPS16, etc.), but we may still want to use such compressed
code for MicroPython itself.
2015-12-10 00:49:25 +02:00
Damien George
e84325bd1d
py: Add mp_get_stream_raise to factor out check for stream methods.
2015-12-09 18:47:43 +00:00
Damien George
3ff259a262
py: Fix calling of parent classmethod from instance of subclass.
...
Addresses issue #1697 .
2015-12-09 17:30:01 +00:00
Damien George
33ac0fd09f
py: Don't try to optimise for+range when args are not simple expressions.
...
Addresses issue #1693 .
2015-12-08 21:05:14 +00:00
Paul Sokolovsky
946f870e3c
py/misc.h: Include stdint.h only once (unconditionally at the top).
2015-12-08 02:23:58 +02:00
Paul Sokolovsky
9f001b09a8
py/misc.h: Include stdint.h, as large share of code now depends on it.
2015-12-07 20:08:07 +02:00
pohmelie
c6ee273410
py: Add min/max "default" keyword argument
2015-12-07 18:56:25 +02:00
pohmelie
354e688d8e
py: Add MICROPY_PY_BUILTINS_MIN_MAX, disable for minimal ports.
2015-12-07 18:56:25 +02:00
Paul Sokolovsky
2b7236d249
py: Make it easy to build without MICROPY_PY_BUILTINS_COMPLEX.
...
Automagically skip related modules.
2015-12-07 00:19:24 +02:00
Paul Sokolovsky
f2d532c404
py/modsys: Use MP_ROM_PTR() initializer for sys.modules.
...
Based on similar usage for sys.argv/sys.path.
2015-12-05 00:27:04 +02:00
Paul Sokolovsky
1a1d11fa32
py/modsys: Implement sys.modules.
...
This for example will allow people to reload modules which didn't load
successfully (e.g. due to syntax error).
2015-12-05 00:13:29 +02:00
Damien George
7a99639cff
py: Fix function calls that have positional and a star-arg-with-iterator.
...
Addresses issue #1678 .
2015-12-03 17:59:49 +00:00
Paul Sokolovsky
b4eccfd02d
py/mpconfig: Actually allow to override MICROPY_BYTES_PER_GC_BLOCK.
2015-12-03 01:58:25 +02:00
Paul Sokolovsky
75feece208
py/gc: Make GC block size be configurable.
2015-12-03 01:40:52 +02:00
fabien.lementec
e042f485ed
py/mpprint: Printing of doubles is now supported (by uPy own routine).
2015-12-02 14:21:36 +02:00
Damien George
b8cfb0d7b2
py: Add support for 64-bit NaN-boxing object model, on 32-bit machine.
...
To use, put the following in mpconfigport.h:
#define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_D)
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE)
typedef int64_t mp_int_t;
typedef uint64_t mp_uint_t;
#define UINT_FMT "%llu"
#define INT_FMT "%lld"
Currently does not work with native emitter enabled.
2015-11-29 14:25:36 +00:00
Damien George
999cedb90f
py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR.
...
This allows the mp_obj_t type to be configured to something other than a
pointer-sized primitive type.
This patch also includes additional changes to allow the code to compile
when sizeof(mp_uint_t) != sizeof(void*), such as using size_t instead of
mp_uint_t, and various casts.
2015-11-29 14:25:35 +00:00
Damien George
cbf7674025
py: Add MP_ROM_* macros and mp_rom_* types and use them.
2015-11-29 14:25:04 +00:00
Damien George
94fe6e523d
py/gc: Move away from using mp_uint_t, instead use uintptr_t and size_t.
...
The GC works with concrete pointers and so the types should reflect this.
2015-11-29 14:25:04 +00:00
Damien George
254cfa6c31
py: Use uintptr_t instead of mp_uint_t in MP_TAGPTR_* macros.
2015-11-29 14:25:04 +00:00
Damien George
9f6976b74e
py: Make mp_setup_code_state take concrete pointer for func arg.
2015-11-29 14:25:04 +00:00
Damien George
5d66b427e2
py/emit: Change type of arg of load_const_obj from void* to mp_obj_t.
2015-11-29 14:25:04 +00:00
Damien George
c3f64d9799
py: Change qstr_* functions to use size_t as the type for str len arg.
2015-11-29 14:25:04 +00:00
Damien George
4e7107a572
py: Change mp_print_strn_t func type to use size_t for the str length.
2015-11-29 14:25:04 +00:00
Damien George
0786716c5a
py/asmx86: Fix function definition to use int32_t instead of int.
2015-11-27 14:06:53 +00:00
Damien George
88a9103b3c
py/binary: Make use of MP_ALIGN.
2015-11-27 12:05:11 +00:00
Paul Sokolovsky
f32020ef3d
py/mpconfig.h: Allow to build without alloca() for ANSI C compliance.
...
Define MICROPY_NO_ALLOCA=1 and memory will be allocated from heap instead
and freed by garbage collection.
2015-11-25 23:24:51 +02:00
Paul Sokolovsky
f0fbab7ca7
extmod/fsusermount: Make configurable with MICROPY_FSUSERMOUNT.
2015-11-25 13:19:36 +02:00
Paul Sokolovsky
3a1bbcc2ef
extmod: Move fsusermount.c from stmhal for cross-port reuse.
2015-11-25 13:19:36 +02:00
stijn
3baf6b5319
windows/py: Support 64bit mingw-w64 builds
...
- add mp_int_t/mp_uint_t typedefs in mpconfigport.h
- fix integer suffixes/formatting in mpconfig.h and mpz.h
- use MICROPY_NLR_SETJMP=1 in Makefile since the current nlrx64.S
implementation causes segfaults in gc_free()
- update README
2015-11-24 17:34:14 +02:00
stijn
bf1570cb25
nlr: Use single preprocessor symbol to check if building on Windows
2015-11-24 17:34:14 +02:00
Damien George
9a56912ad1
py/compile: Do proper checking of * and ** in function definition.
...
This patch checks that there is only one *, and that ** is last in the
arg list.
2015-11-23 16:50:42 +00:00
Damien George
0e3f29cc99
py: Check that second argument to hasattr is actually a string.
...
Fixes issue #1623 .
2015-11-23 15:57:00 +00:00
Damien George
44e6e348d6
py/emitglue: Implement persistent saving and loading of const objects.
2015-11-23 11:54:12 +00:00
Damien George
39a8deb95f
py/emitglue: Add feature-flag header to .mpy to detect bytecode compat.
...
Loading .mpy files will now check to make sure that the target VM can
support the bytecode.
2015-11-23 10:58:16 +00:00
Paul Sokolovsky
b3be4710aa
py/mpz: Normalize (remove leading zeros) xor operation result.
2015-11-22 22:03:18 +02:00
Paul Sokolovsky
3d6240ba1b
py/formatfloat: Handle calculation of integer digit for %f format properly.
...
%f prints true integer digit, so its calculation should happen before any
exponential scaling.
2015-11-22 20:05:08 +02:00
Paul Sokolovsky
3c4c069802
py/formatfloat: Workaround (fix?) incorrect rounding for %f format.
2015-11-22 18:09:28 +02:00