summaryrefslogtreecommitdiffstats
path: root/generic/tclCompile.h
diff options
context:
space:
mode:
authormig <mig>2013-12-05 15:15:23 (GMT)
committermig <mig>2013-12-05 15:15:23 (GMT)
commit8f8438c53e0a086672a12fec00764d770323caed (patch)
tree5b0ca7d586fc8f68142490db32103d185b81ac99 /generic/tclCompile.h
parentbe6ed41db2f292c42a40c9e4da6bbc21884a3b54 (diff)
downloadtcl-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.h12
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