Damien George
9a21d2e070
py: Make mpz able to use 16 bits per digit; and 32 on 64-bit arch.
...
Previously, mpz was restricted to using at most 15 bits in each digit,
where a digit was a uint16_t.
With this patch, mpz can use all 16 bits in the uint16_t (improvement
to mpn_div was required). This gives small inprovements in speed and
RAM usage. It also yields savings in ROM code size because all of the
digit masking operations become no-ops.
Also, mpz can now use a uint32_t as the digit type, and hence use 32
bits per digit. This will give decent improvements in mpz speed on
64-bit machines.
Test for big integer division added.
2014-09-06 17:15:34 +01:00
Damien George
afb1cf75dd
py: Convert (u)int to mp_(u)int_t in mpz, and remove unused function.
2014-09-05 20:37:06 +01:00
Damien George
e191d42188
py: Use % str formatting instead of {} in makeqstrdata.py.
...
Script is equivalent, but now also runs under ancient Python 2.6.
Goes part way to addressing issue #847 .
2014-09-05 13:16:19 +01:00
Damien George
b534e1b9f1
py: Use variable length encoded uints in more places in bytecode.
...
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.
2014-09-04 14:44:01 +01:00
Damien George
dda46460ff
Code style/whitespace cleanup; remove obsolete headers.
...
And move the MAP_ANON redefinition from py/asmx64.c to unix/alloc.c.
2014-09-03 22:47:23 +01:00
Damien George
a669cbc690
unix: Auto-detect MICROPY_EMIT_X64 and MICROPY_GCREGS_SETJMP.
...
If not set, MICROPY_EMIT_X64 is set only if on x86-64 machine.
If not set, MICROPY_GCREGS_SETJMP is set when on MIPS.
2014-09-03 22:40:15 +01:00
Damien George
91fbea2c1e
Merge pull request #845 from Vogtinator/master
...
Add allocation macros (per platform) and ARM cache flush
2014-09-03 22:31:08 +01:00
Fabian Vogt
b7235b8412
Add cache flush in py/asmarm.c and add new MP_PLAT_ALLOC_EXEC and MP_PLAT_FREE_EXEC macros
...
Fixes issue #840
2014-09-03 23:07:42 +02:00
Damien George
fc54250d31
Merge pull request #844 from chrisdearman/do_str
...
Declare do_str() function before the implementation
2014-09-03 21:53:48 +01:00
Damien George
27dd910c44
Merge branch 'stinos-msvc-extmod'
2014-09-02 11:39:12 +01:00
Damien George
e875e3882d
extmod: Fix type-punned-ptr error.
2014-09-02 11:38:45 +01:00
Damien George
bc9f34860b
Merge branch 'msvc-extmod' of github.com:stinos/micropython into stinos-msvc-extmod
2014-09-02 11:37:47 +01:00
stijn
759138caee
msvc: Exclude modtermios, include extmod and fix compilation error
2014-09-02 09:00:20 +02:00
Chris Dearman
8c56241c82
Declare do_str() function before the implementation
...
This ensures that GCC does not discard the do_str implementation in
some cases eg when compiling tests with debug enabled:
make RUN_TESTS=1 DEBUG=1
2014-09-01 19:51:12 -07:00
Damien George
bad2df3e95
stmhal, modwiznet5k: Add very minimal documentation.
2014-09-01 22:58:22 +01:00
Damien George
bcf041f1a3
stmhal: Add wiznet5k module, to control WIZnet ethernet adaptor.
...
Allows to create socket objects that support TCP and UDP in server and
client mode. Interface is very close to standard Python socket class,
except bind and accept do not work the same (due to hardware not
supporting them in the usual way).
Not compiled by default. To compile this module, use:
make MICROPY_PY_WIZNET5K=1
2014-09-01 22:52:38 +01:00
Damien George
cdd40f149a
drivers, wiznet5k: Make DNS service use HAL sys tick.
2014-09-01 22:52:38 +01:00
Damien George
9091e84454
drivers, wiznet5k: Add HAL_Delay(1) to "infinite" loops.
2014-09-01 22:52:38 +01:00
Damien George
7da9145e47
drivers, wiznet5k: Properly fix ARP bug with W5200 chipset.
2014-09-01 22:52:37 +01:00
Damien George
0c0550bff0
drivers, wiznet5k: Add W5200 support.
2014-09-01 22:52:37 +01:00
Damien George
79d17e3e7d
drivers, wiznet5k: Change SPI interface to read/write multiple bytes.
2014-09-01 22:52:37 +01:00
Damien George
812cf62f43
drivers, wiznet5k: Fix IP addr verification.
2014-09-01 22:52:37 +01:00
Damien George
71224cb8db
drivers: Initial import of WIZnet5x000 driver.
2014-09-01 22:52:37 +01:00
Damien George
e07737d202
Added 'drivers' directory, intended to hold code for specific hardware.
2014-09-01 22:52:37 +01:00
Damien George
90fad65d2f
Merge pull request #841 from dhylands/teensy-README
...
Update teensy README.md file
2014-08-31 00:36:54 +01:00
Dave Hylands
76dd7e180f
Update teensy README.md file
...
Thanks to Artur Wroblewski for some suggested changes.
I also added the TIPs section at the end while I was updating.
2014-08-30 12:21:08 -07:00
Damien George
ca6d75f16d
py: Small simplifications in tuple and list accessors.
2014-08-30 15:17:47 +01:00
Damien George
4abff7500f
py: Change uint to mp_uint_t in runtime.h, stackctrl.h, binary.h.
...
Part of code cleanup, working towards resolving issue #50 .
2014-08-30 14:59:21 +01:00
Damien George
4d91723587
py: Remove use of int type in obj.h.
...
Part of code cleanup, working towards resolving issue #50 .
2014-08-30 14:28:06 +01:00
Damien George
d182b98a37
py: Change all uint to mp_uint_t in obj.h.
...
Part of code cleanup, working towards resolving issue #50 .
2014-08-30 14:19:41 +01:00
Damien George
9c4cbe2ac0
py: Make tuple and list use mp_int_t/mp_uint_t.
...
Part of code cleanup, to resolve issue #50 .
2014-08-30 14:04:14 +01:00
Damien George
93965e726f
py: Make map, dict, set use mp_int_t/mp_uint_t exclusively.
...
Part of code cleanup, towards resolving issue #50 .
2014-08-30 13:23:35 +01:00
Damien George
1c70cbf151
py: Save about 200 bytes of ROM by using smaller type for static table.
2014-08-30 00:38:16 +01:00
Damien George
ecc88e949c
Change some parts of the core API to use mp_uint_t instead of uint/int.
...
Addressing issue #50 , still some way to go yet.
2014-08-30 00:35:11 +01:00
Damien George
4d3fc46326
lib, libm: Add back dummy definition of tanf.
2014-08-29 23:24:00 +01:00
Damien George
8707ea3421
lib: Add lib and libm, moving current files from stmhal.
...
Top-level lib directory is for standard C libraries that we want to
provide our own versions of (for efficiency and stand-alone reasons).
It currently has libm in it for math functions.
Also add atanf and atan2f, which addresses issue #837 .
2014-08-29 22:42:26 +01:00
Damien George
17ae2395c2
py: Use memmove instead of memcpy when appropriate.
...
Found this bug by running unix/ tests with DEBUG=1 enabled when
compiling.
2014-08-29 21:07:54 +01:00
Damien George
02d95d7ce9
py: Fix 2 bugs in native emitter: jump_or_pop and stack settling.
...
Addresses issue #838 .
2014-08-29 20:05:32 +01:00
Damien George
eb4e18f057
py: Add compiler optimisation for conditions in parenthesis.
...
Optimises:
if () -> if False
if (x,...) -> if True
if (a and b) -> if a and b
2014-08-29 20:04:01 +01:00
Damien George
15d2fe8da4
tests: Add option to run-tests to enable native emitter.
2014-08-29 19:47:10 +01:00
Damien George
110ba35980
py: Move native glue code from runtime.c to new file nativeglue.c.
...
This way, the native glue code is only compiled if native code is
enabled (which makes complete sense; thanks to Paul Sokolovsky for
the idea).
Should fix issue #834 .
2014-08-28 23:37:02 +01:00
Damien George
1ac6faa732
Merge pull request #833 from Vogtinator/arm-native
...
Basic native ARM emitter
2014-08-28 23:24:43 +01:00
Damien George
516b09efc3
py, gc: Further reduce heap fragmentation with new, faster gc alloc.
...
The heap allocation is now exactly as it was before the "faster gc
alloc" patch, but it's still nearly as fast. It is fixed by being
careful to always update the "last free block" pointer whenever the heap
changes (eg free or realloc).
Tested on all tests by enabling EXTENSIVE_HEAP_PROFILING in py/gc.c:
old and new allocator have exactly the same behaviour, just the new one
is much faster.
2014-08-28 23:06:38 +01:00
Damien George
b796e3d848
py: Reduce fragmentation of GC heap.
...
Recent speed up of GC allocation made the GC have a fragmented heap.
This patch restores "original fragmentation behaviour" whilst still
retaining relatively fast allocation. This patch works because there is
always going to be a single block allocated now and then, which advances
the gc_last_free_atb_index pointer often enough so that the whole heap
doesn't need scanning.
Should address issue #836 .
2014-08-28 10:18:40 +01:00
Fabian Vogt
16ee30c6fa
Clarify copyright on asmarm files
2014-08-28 01:18:56 +02:00
Fabian Vogt
fe3d16e8c2
Basic native ARM emitter
2014-08-27 18:18:50 +02:00
Damien George
a97e091d4e
Merge branch 'dhylands-int-bytes'
2014-08-27 09:21:41 +01:00
Damien George
a75b02ea9b
py: Improve efficiency of MP_OBJ_IS_STR_OR_BYTES.
...
Saves ROM (16 on stmhal, 240 on 64-bit unix) and should be quicker since
there is 1 less branch.
2014-08-27 09:20:30 +01:00
Damien George
ad4c014d46
Merge branch 'int-bytes' of https://github.com/dhylands/micropython into dhylands-int-bytes
2014-08-27 09:13:15 +01:00
Dave Hylands
b7f7c655ed
Make int(b'123') work properly.
2014-08-26 19:15:04 -07:00