summaryrefslogtreecommitdiff
path: root/py
AgeCommit message (Collapse)Author
2015-01-28py: Make REPL printing function print repr of object, not str.Damien George
Addresses issue #1014.
2015-01-28py: Change vstr so that it doesn't null terminate buffer by default.Damien George
This cleans up vstr so that it's a pure "variable buffer", and the user can decide whether they need to add a terminating null byte. In most places where vstr is used, the vstr did not need to be null terminated and so this patch saves code size, a tiny bit of RAM, and makes vstr usage more efficient. When null termination is needed it must be done explicitly using vstr_null_terminate.
2015-01-28py: bytes(): Make sure we add values as bytes, not as chars.Paul Sokolovsky
2015-01-28py: Remove duplicated mp_obj_str_make_new function from objstrunicode.c.Damien George
2015-01-28py: Be more precise about unicode type and disabled unicode behaviour.Damien George
2015-01-27py: Add support for floats in mp_binary_{get,set}_val()David Steinberg
- This then provides support for floats in the struct package
2015-01-27py: Specify unary/binary op name in TypeError error message.Damien George
Eg, "() + 1" now tells you that __add__ is not supported for tuple and int types (before it just said the generic "binary operator"). We reuse the table of names for slot lookup because it would be a waste of code space to store the pretty name for each operator.
2015-01-27py: Fix comparison of minus-zero long int.Damien George
2015-01-25py: Check for NDEBUG using #ifdef rather than #if.Damien George
Defining NDEBUG (to any value, even 0) disables debugging. Otherwise, if it's not defined, debugging is enabled.
2015-01-24py: Don't use anonymous unions, name them instead.Damien George
This makes the code (more) compatible with the C99 standard.
2015-01-24py: Be more machine-portable with size of bit fields.Damien George
2015-01-24py: Use float-to-int classifications for mp_obj_new_int_from_float() functionsDavid Steinberg
2015-01-24py: Add float-to-int classification functionDavid Steinberg
2015-01-24py: Fix issue in mpz_set_from_float() when mp_int_t is larger than floatDavid Steinberg
2015-01-24py: Move mp_float_t related defines to misc.hDavid Steinberg
2015-01-24py: Fix segfault in namedtuple when name is a non-interned stringstijn
- namedtuple was wrongly using MP_OBJ_QSTR_VALUE instead of mp_obj_str_get_qstr, so when passed a non-interned string it would segfault; fix this by using mp_obj_str_get_qstr - store the namedtuple field names as qstrs so it is not needed to use mp_obj_str_get_qstr everytime the field name has to be accessed. This also slighty increases performance when fetching attributes
2015-01-24binary: Rework array accessors. They work with native, not stdint types.Paul Sokolovsky
2015-01-24stream: readall(): Make sure there's a trailing NUL char.Paul Sokolovsky
2015-01-23stream: Fix readall() implementation in respect to NUL terminator bytes.Paul Sokolovsky
After vstr refactor. Fixes #1084.
2015-01-23objstr: Remove code duplication and unbreak Windows build.Paul Sokolovsky
There was really weird warning (promoted to error) when building Windows port. Exact cause is still unknown, but it uncovered another issue: 8-bit and unicode str_make_new implementations should be mutually exclusive, and not built at the same time. What we had is that bytes_decode() pulled 8-bit str_make_new() even for unicode build.
2015-01-23objstr*: Use separate names for locals_dict of 8-bit and unicode str's.Paul Sokolovsky
To somewhat unbreak -DSTATIC="" compile.
2015-01-22py: Allow asmx64 to compile with -Wsign-compare.Damien George
See issue #699.
2015-01-22stmhal: Put mod_network_nic_list in global root-pointer state.Damien George
It needs to be scanned by GC. Thanks to Daniel Campora.
2015-01-21py: Add comments for vstr_init and mp_obj_new_str.Damien George
2015-01-21py: Remove mp_obj_str_builder and use vstr instead.Damien George
With this patch str/bytes construction is streamlined. Always use a vstr to build a str/bytes object. If the size is known beforehand then use vstr_init_len to allocate only required memory. Otherwise use vstr_init and the vstr will grow as needed. Then use mp_obj_new_str_from_vstr to create a str/bytes object using the vstr memory. Saves code ROM: 68 bytes on stmhal, 108 bytes on bare-arm, and 336 bytes on unix x64.
2015-01-21py: Add mp_obj_new_str_from_vstr, and use it where relevant.Damien George
This patch allows to reuse vstr memory when creating str/bytes object. This improves memory usage. Also saves code ROM: 128 bytes on stmhal, 92 bytes on bare-arm, and 88 bytes on unix x64.
2015-01-21builtinimport: Make sure that qstr is used properly to load frozen modules.Paul Sokolovsky
2015-01-21py: Implement proper re-raising in native codegen's finally handler.Damien George
This allows an exception to propagate correctly through a finally handler.
2015-01-21py: Implement __reversed__ slot.Damien George
Addresses issue #1073.
2015-01-20py: Prevent segfault for operations on closed StringIO.stijn
Addresses issue #1067.
2015-01-20py: Use mp_arg_check_num in some _make_new functions.Damien George
Reduces stmhal code size by about 250 bytes.
2015-01-20py, unix: Allow to compile with -Wunused-parameter.Damien George
See issue #699.
2015-01-20py, unix, stmhal: Allow to compile with -Wshadow.Damien George
See issue #699.
2015-01-20py: Implement very simple frozen modules support.Paul Sokolovsky
Only modules (not packages) supported now. Source modules can be converted to frozen module structures using tools/make-frozen.py script.
2015-01-16py, unix: Allow to compile with -Wsign-compare.Damien George
See issue #699.
2015-01-16py: Remove unnecessary id_flags argument from emitter's load_fast.Damien George
Saves 24 bytes in bare-arm.
2015-01-16pyexec: Add event-driven variant pyexec_friendly_repl().Paul Sokolovsky
pyexec_friendly_repl_process_char() and friends, useful for ports which integrate into existing cooperative multitasking system. Unlike readline() refactor before, this was implemented in less formal, trial&error process, minor functionality regressions are still known (like soft&hard reset support). So, original loop-based pyexec_friendly_repl() is left intact, specific implementation selectable by config setting.
2015-01-14py: Add "default" to switches to allow better code flow analysis.Damien George
This helps compiler produce smaller code. Saves 124 bytes on stmhal and bare-arm.
2015-01-14py: Only allocate strings/bytes once for load_const_obj.Damien George
2015-01-14py: Allocate memory for assembled code at start of PASS_EMIT.Damien George
Previously was allocating at end of PASS_COMPUTE, and this pass was being run twice, so memory was being allocated twice.
2015-01-14py: Reluctantly add an extra pass to bytecode compiler.Damien George
Bytecode also needs a pass to compute the stack size. This is because the state size of the bytecode function is encoded as a variable uint, so we must know the value of this uint before we encode it (otherwise the size of the generated code changes from one pass to the next). Having an entire pass for this seems wasteful (in time). Alternative is to allocate fixed space for the state size (would need 3-4 bytes to be general, when 1 byte is usually sufficient) which uses a bit of extra RAM per bytecode function, and makes the code less elegant in places where this uint is encoded/decoded. So, for now, opt for an extra pass.
2015-01-14py, unix: Trace root pointers with native emitter under unix port.Damien George
Native code has GC-heap pointers in it so it must be scanned. But on unix port memory for native functions is mmap'd, and so it must have explicit code to scan it for root pointers.
2015-01-13py: Make compiler not crash when default except is not last.Damien George
2015-01-13py/showbc.c: Handle new LOAD_CONST_OBJ opcode, and opcodes with cache.Damien George
2015-01-13py: Never intern data of large string/bytes object; add relevant tests.Damien George
Previously to this patch all constant string/bytes objects were interned by the compiler, and this lead to crashes when the qstr was too long (noticeable now that qstr length storage defaults to 1 byte). With this patch, long string/bytes objects are never interned, and are referenced directly as constant objects within generated code using load_const_obj.
2015-01-13py: Add load_const_obj to emitter, add LOAD_CONST_OBJ to bytecode.Damien George
This allows to directly load a Python object to the Python stack. See issue #722 for background.
2015-01-12py: Allow to compile with -Wstrict-prototypes.Damien George
2015-01-12py: Allow to compile with -Wredundant-decls.Damien George
2015-01-12py, unix, lib: Allow to compile with -Wold-style-definition.Damien George
2015-01-12py: Can compile with -Wmissing-declarations and -Wmissing-prototypes.Damien George