diff options
author | Damien George <damien.p.george@gmail.com> | 2017-01-05 15:52:52 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-01-05 15:52:52 +1100 |
commit | 98458a46ec9c34fa59dbfa7c9189b7e181e5e7a3 (patch) | |
tree | ed2a4b85cfae34b20d612e56d83be1b6e4131acb /tools/mpy-tool.py | |
parent | 343b4189b0b2a61d4db4e6ca2c6ddf82150d3b6d (diff) |
tools/mpy-tool.py: Add support for OPT_CACHE_MAP_LOOKUP_IN_BYTECODE.
With caching of map lookups in the bytecode, frozen bytecode can still
work but must be stored in RAM, not ROM. This patch allows mpy-tool.py to
generate code that works with this optimisation, but it's not recommended
to use it on embedded targets (because of lack of RAM).
Diffstat (limited to 'tools/mpy-tool.py')
-rwxr-xr-x | tools/mpy-tool.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/mpy-tool.py b/tools/mpy-tool.py index 2bb9fc367..ce373a4f5 100755 --- a/tools/mpy-tool.py +++ b/tools/mpy-tool.py @@ -258,7 +258,10 @@ class RawCode: # generate bytecode data print() print('// frozen bytecode for file %s, scope %s%s' % (self.source_file.str, parent_name, self.simple_name.str)) - print('STATIC const byte bytecode_data_%s[%u] = {' % (self.escaped_name, len(self.bytecode))) + print('STATIC ', end='') + if not config.MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE: + print('const ', end='') + print('byte bytecode_data_%s[%u] = {' % (self.escaped_name, len(self.bytecode))) print(' ', end='') for i in range(self.ip2): print(' 0x%02x,' % self.bytecode[i], end='') @@ -463,8 +466,8 @@ def freeze_mpy(base_qstrs, raw_codes): print('#include "py/emitglue.h"') print() - print('#if MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE') - print('#error "MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE not supported with frozen mpy files"') + print('#if MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE != %u' % config.MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE) + print('#error "incompatible MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE"') print('#endif') print() |