| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
| |
|
|\ |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Test usecase I used is print(time.time()) and print(time.time() - time.time()).
On Linux/Glibc they now give the same output as CPython 3.3. Specifically,
time.time() gives non-exponential output with 7 decimal digits, and subtraction
gives exponential output e-06/e-07.
|
| |
| |
| |
| |
| | |
I skipped implementing this initially, but then it causes __name__
of current module be overwritten and relative imports fail.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
When querying an object that supports the buffer protocol, that object
must now return a typecode (as per binary.[ch]). This does not have to
be honoured by the caller, but can be useful for determining element
size.
|
| |
| |
| |
| | |
We are not as verbose as CPython, and maybe a bit too cryptic sometimes.
|
| | |
|
|/ |
|
|
|
|
|
|
| |
On stmhal, computed gotos make the binary about 1k bigger, but makes it
run faster, and we have the room, so why not. All tests pass on
pyboard using computed gotos.
|
|
|
|
|
| |
Also make consistent use of MP_OBJ_NOT_SUPPORTED and MP_OBJ_NULL.
This helps a lot in debugging and understanding of function API.
|
|
|
|
| |
mp_obj_t->subscr now does load/store/delete.
|
| |
|
|\ |
|
| |
| |
| |
| |
| | |
I.e. with its own globals. So, just as for functions, we need to switch
globals when resuming a generator.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This follows pattern already used for objtuple, etc.: objfun.h's content
is not public - each and every piece of code should not have access to it.
It's not private either - with out architecture and implementation language
(C) it doesn't make sense to keep implementation of each object strictly
private and maintain cumbersome accessors. It's "local" - intended to be
used by a small set of "friend" (in C++ terms) objects.
|
|/
|
|
| |
With this fix, all tests in tests/basics pass on pyboard.
|
|
|
|
| |
Addresses issue #487.
|
|
|
|
|
| |
Any generated headers go in $(BUILD)/genhdr/, and are #included as
'genhdr/xxx.h'.
|
|\
| |
| |
| | |
lurch-relocatable-build-dir
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The autogenerated header files have been moved about, and an extra
include dir has been added, which means you can give a custom
BUILD=newbuilddir option to make, and everything "just works"
Also tidied up the way the different Makefiles build their include-
directory flags
|
|\ \
| | |
| | | |
nlr: Add implementation using setjmp/longjmp.
|
| |/
| |
| |
| |
| | |
Having an optimized asm implementation is good, but if we want portability,
that's it.
|
|\ \ |
|
| |\ \
| | |/
| |/| |
Remove generated .h file if the generation process fails.
|
| | | |
|
| | |
| | |
| | |
| | | |
Not all functions implemented. Not enabled on pyboard.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Things get tricky when using the nlr code to catch exceptions. Need to
ensure that the variables (stack layout) in the exception handler are
the same as in the bit protected by the exception handler.
Prior to this patch there were a few bugs. 1) The constant
mp_const_MemoryError_obj was being preloaded to a specific location on
the stack at the start of the function. But this location on the stack
was being overwritten in the opcode loop (since it didn't think that
variable would ever be referenced again), and so when an exception
occurred, the variable holding the address of MemoryError was corrupt.
2) The FOR_ITER opcode detection in the exception handler used sp, which
may or may not contain the right value coming out of the main opcode
loop.
With this patch there is a clear separation of variables used in the
opcode loop and in the exception handler (should fix issue (2) above).
Furthermore, nlr_raise is no longer used in the opcode loop. Instead,
it jumps directly into the exception handler. This tells the C compiler
more about the possible code flow, and means that it should have the
same stack layout for the exception handler. This should fix issue (1)
above. Indeed, the generated (ARM) assembler has been checked explicitly,
and with 'goto exception_handler', the problem with &MemoryError is
fixed.
This may now fix problems with rge-sm, and probably many other subtle
bugs yet to show themselves. Incidentally, rge-sm now passes on
pyboard (with a reduced range of integration)!
Main lesson: nlr is tricky. Don't use nlr_push unless you know what you
are doing! Luckily, it's not used in many places. Using nlr_raise/jump
is fine.
|
|/ / |
|
| | |
|
|/ |
|
|\
| |
| | |
Move entry_table to separated header file.
|
| | |
|
| | |
|
| |
| |
| |
| | |
I was too hasty. Still a one-liner though.
|
|/
|
|
| |
A one-liner, added especially for @pfalcon :)
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
That was easy - just avoid erroring out on seeing candidate dir for namespace
package. That's far from being complete though - namespace packages should
support importing portions of package from different sys.path entries, here
we require first matching entry to contain all namespace package's portions.
And yet, that's a way to put parts of the same Python package into multiple
installable package - something we really need for *Micro*Python.
|
| | |
|
|/ |
|
|\
| |
| | |
Don't allow both ENDIANNESSes to be set
|
| |
| |
| |
| |
| | |
See discussion on https://github.com/micropython/micropython/commit/2da81fa80c4cd965f05ad237d81d9764322fde20
Explicitly set `MP_ENDIANNESS_LITTLE` because that's the #define that is used in code elsewhere.
|
| |
| |
| |
| | |
Disabled by default. Enabled in unix port.
|