summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2015-05-19 20:34:10 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2015-05-19 20:34:10 (GMT)
commitdeaa520c802ca31794d50a7afcbd691982111076 (patch)
tree3131c628e294c68ecd72898579198e2a490d688a
parentfdf990faf546306bbc55b4ad6fcd0d4922b303ef (diff)
parentacdb6bc3845dc9b36f2f691c34871563ad3071e9 (diff)
downloadtcl-deaa520c802ca31794d50a7afcbd691982111076.zip
tcl-deaa520c802ca31794d50a7afcbd691982111076.tar.gz
tcl-deaa520c802ca31794d50a7afcbd691982111076.tar.bz2
Simplify code generation for a list of literals. Generates slightly simpler bytecode too.
-rw-r--r--generic/tclCompCmdsGR.c15
1 files changed, 1 insertions, 14 deletions
diff --git a/generic/tclCompCmdsGR.c b/generic/tclCompCmdsGR.c
index b77c43c..b9c655b 100644
--- a/generic/tclCompCmdsGR.c
+++ b/generic/tclCompCmdsGR.c
@@ -1210,20 +1210,7 @@ TclCompileListCmd(
valueTokenPtr = TokenAfter(valueTokenPtr);
}
if (listObj != NULL) {
- int len;
- const char *bytes = Tcl_GetStringFromObj(listObj, &len);
-
- PushLiteral(envPtr, bytes, len);
- Tcl_DecrRefCount(listObj);
- if (len > 0) {
- /*
- * Force list interpretation!
- */
-
- TclEmitOpcode( INST_DUP, envPtr);
- TclEmitOpcode( INST_LIST_LENGTH, envPtr);
- TclEmitOpcode( INST_POP, envPtr);
- }
+ TclEmitPush(TclAddLiteralObj(envPtr, listObj, NULL), envPtr);
return TCL_OK;
}