diff options
author | mig <mig> | 2013-12-05 15:15:23 (GMT) |
---|---|---|
committer | mig <mig> | 2013-12-05 15:15:23 (GMT) |
commit | 8f8438c53e0a086672a12fec00764d770323caed (patch) | |
tree | 5b0ca7d586fc8f68142490db32103d185b81ac99 /generic/tclCompile.h | |
parent | be6ed41db2f292c42a40c9e4da6bbc21884a3b54 (diff) | |
download | tcl-8f8438c53e0a086672a12fec00764d770323caed.zip tcl-8f8438c53e0a086672a12fec00764d770323caed.tar.gz tcl-8f8438c53e0a086672a12fec00764d770323caed.tar.bz2 |
New compiler and bytecodes for foreach and lmap: 70% faster
* speed as measured by http://wiki.tcl.tk/39021: runs in <1/3 the time
* still need to adapt array-set to use this
* assemble.test-16.5 or 16.6 bombs in a purify/symbols build (?)
* removing the old opcodes would force recompilation of old .tbc files or adaptation of tbcload
Diffstat (limited to 'generic/tclCompile.h')
-rw-r--r-- | generic/tclCompile.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/generic/tclCompile.h b/generic/tclCompile.h index a39e0f1..c4e6222 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -586,8 +586,8 @@ typedef struct ByteCode { #define INST_CONTINUE 66 /* Opcodes 67 to 68 */ -#define INST_FOREACH_START4 67 -#define INST_FOREACH_STEP4 68 +#define INST_FOREACH_START4 67 /* DEPRECATED */ +#define INST_FOREACH_STEP4 68 /* DEPRECATED */ /* Opcodes 69 to 72 */ #define INST_BEGIN_CATCH4 69 @@ -768,8 +768,14 @@ typedef struct ByteCode { #define INST_EXPAND_DROP 165 +/* New foreach implementation */ + +#define INST_FOREACH_START 166 +#define INST_FOREACH_STEP 167 +#define INST_FOREACH_END 168 + /* The last opcode */ -#define LAST_INST_OPCODE 165 +#define LAST_INST_OPCODE 168 /* * Table describing the Tcl bytecode instructions: their name (for displaying |