summaryrefslogtreecommitdiffstats
path: root/generic/tclCompile.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2013-07-16 14:07:41 (GMT)
committerdgp <dgp@users.sourceforge.net>2013-07-16 14:07:41 (GMT)
commit2d98ee0f477ef33bb0a8473efbd44ef203463c32 (patch)
tree15957bc4d2ba373dff4005afaf8205a28709a915 /generic/tclCompile.c
parent59d8c6ba4b9cc7f77258e0cdae09b6d786f19fc4 (diff)
downloadtcl-2d98ee0f477ef33bb0a8473efbd44ef203463c32.zip
tcl-2d98ee0f477ef33bb0a8473efbd44ef203463c32.tar.gz
tcl-2d98ee0f477ef33bb0a8473efbd44ef203463c32.tar.bz2
Eliminate the litInfo table and all the code tending to its care and feeding.
The pc -> command index mapping function it provided can be achieved using other data already in the ByteCode struct.
Diffstat (limited to 'generic/tclCompile.c')
-rw-r--r--generic/tclCompile.c43
1 files changed, 0 insertions, 43 deletions
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index a2c7131..7e0be76 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -1296,8 +1296,6 @@ ReleaseCmdWordData(
ckfree((char *) eclPtr->loc);
}
- Tcl_DeleteHashTable (&eclPtr->litInfo);
-
ckfree((char *) eclPtr);
}
@@ -1382,7 +1380,6 @@ TclInitCompileEnv(
envPtr->extCmdMapPtr->nloc = 0;
envPtr->extCmdMapPtr->nuloc = 0;
envPtr->extCmdMapPtr->path = NULL;
- Tcl_InitHashTable(&envPtr->extCmdMapPtr->litInfo, TCL_ONE_WORD_KEYS);
if ((invoker == NULL) || (invoker->type == TCL_LOCATION_EVAL_LIST)) {
/*
@@ -1814,12 +1811,6 @@ TclCompileInvocation(
TclEmitPush(objIdx, envPtr);
}
- /*
- * Save PC -> command map for the TclArgumentBC* functions.
- */
-
- mapPtr->loc[eclIndex].invokePc = envPtr->codeNext - envPtr->codeStart;
-
if (wordIdx <= 255) {
TclEmitInstInt1(INST_INVOKE_STK1, wordIdx, envPtr);
} else {
@@ -2001,7 +1992,6 @@ CompileCmdCompileProc(
mapPtr->nuloc--;
ckfree(mapPtr->loc[mapPtr->nuloc].line);
mapPtr->loc[mapPtr->nuloc].line = NULL;
- mapPtr->loc[mapPtr->nuloc].invokePc = -1;
}
SetLineInformation(0);
@@ -3325,17 +3315,6 @@ TclInitByteCodeObj(
* byte code object (internal rep), for use with the bc compiler.
*/
- for (i = 0; i < envPtr->extCmdMapPtr->nuloc; i++) {
- int isnew, pc = envPtr->extCmdMapPtr->loc[i].invokePc;
-
- if (pc < 0) {
- continue;
- }
-
- Tcl_SetHashValue(Tcl_CreateHashEntry(&envPtr->extCmdMapPtr->litInfo,
- INT2PTR(pc), &isnew), INT2PTR(i));
- }
-
Tcl_SetHashValue(Tcl_CreateHashEntry(iPtr->lineBCPtr, codePtr,
&isNew), envPtr->extCmdMapPtr);
envPtr->extCmdMapPtr = NULL;
@@ -3706,7 +3685,6 @@ EnterCmdWordData(
ePtr = &eclPtr->loc[eclPtr->nuloc];
ePtr->srcOffset = srcOffset;
- ePtr->invokePc = -1;
ePtr->line = ckalloc(numWords * sizeof(int));
ePtr->next = ckalloc(numWords * sizeof(int *));
ePtr->nline = numWords;
@@ -4477,27 +4455,6 @@ TclFixupForwardJump(
}
}
- /*
- * TIP #280: Adjust the mapping from PC values to the per-command
- * information about arguments and their line numbers.
- *
- * Note: We cannot simply remove an out-of-date entry and then reinsert
- * with the proper PC, because then we might overwrite another entry which
- * was at that location. Therefore we pull (copy + delete) all effected
- * entries (beyond the fixed PC) into an array, update them there, and at
- * last reinsert them all.
- */
-
- {
- ExtCmdLoc* eclPtr = envPtr->extCmdMapPtr;
- for (k = eclPtr->nuloc - 1; k >= 0; k--) {
- if (eclPtr->loc[k].invokePc < (jumpFixupPtr->codeOffset + 2)) {
- continue;
- }
- eclPtr->loc[k].invokePc += 3;
- }
- }
-
return 1; /* the jump was grown */
}