summaryrefslogtreecommitdiffstats
path: root/generic/tclCompile.c
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2015-06-30 14:39:17 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2015-06-30 14:39:17 (GMT)
commita6008e3a780858f8e6833cd4de1a32a1055ea605 (patch)
treef1f532c9738f01e6a19233baa0fbf228364464b6 /generic/tclCompile.c
parent4c5dbf5458fc5b9a9428858b2094ef259dd32f52 (diff)
parent68de044c4e43f457cf298983fc8dc0936aed9923 (diff)
downloadtcl-a6008e3a780858f8e6833cd4de1a32a1055ea605.zip
tcl-a6008e3a780858f8e6833cd4de1a32a1055ea605.tar.gz
tcl-a6008e3a780858f8e6833cd4de1a32a1055ea605.tar.bz2
merge head
Diffstat (limited to 'generic/tclCompile.c')
-rw-r--r--generic/tclCompile.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 0f4dfaf..a552f39 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -978,8 +978,7 @@ FreeByteCodeInternalRep(
register ByteCode *codePtr = objPtr->internalRep.twoPtrValue.ptr1;
objPtr->typePtr = NULL;
- codePtr->refCount--;
- if (codePtr->refCount <= 0) {
+ if (codePtr->refCount-- < 2) {
TclCleanupByteCode(codePtr);
}
}
@@ -1295,8 +1294,8 @@ CompileSubstObj(
if (objPtr->typePtr == &substCodeType) {
Namespace *nsPtr = iPtr->varFramePtr->nsPtr;
- codePtr = objPtr->internalRep.ptrAndLongRep.ptr;
- if ((unsigned long)flags != objPtr->internalRep.ptrAndLongRep.value
+ codePtr = objPtr->internalRep.twoPtrValue.ptr1;
+ if (flags != PTR2INT(objPtr->internalRep.twoPtrValue.ptr2)
|| ((Interp *) *codePtr->interpHandle != iPtr)
|| (codePtr->compileEpoch != iPtr->compileEpoch)
|| (codePtr->nsPtr != nsPtr)
@@ -1322,8 +1321,8 @@ CompileSubstObj(
TclFreeCompileEnv(&compEnv);
codePtr = objPtr->internalRep.twoPtrValue.ptr1;
- objPtr->internalRep.ptrAndLongRep.ptr = codePtr;
- objPtr->internalRep.ptrAndLongRep.value = flags;
+ objPtr->internalRep.twoPtrValue.ptr1 = codePtr;
+ objPtr->internalRep.twoPtrValue.ptr2 = INT2PTR(flags);
if (iPtr->varFramePtr->localCachePtr) {
codePtr->localCachePtr = iPtr->varFramePtr->localCachePtr;
codePtr->localCachePtr->refCount++;
@@ -1362,11 +1361,10 @@ static void
FreeSubstCodeInternalRep(
register Tcl_Obj *objPtr) /* Object whose internal rep to free. */
{
- register ByteCode *codePtr = objPtr->internalRep.ptrAndLongRep.ptr;
+ register ByteCode *codePtr = objPtr->internalRep.twoPtrValue.ptr1;
objPtr->typePtr = NULL;
- codePtr->refCount--;
- if (codePtr->refCount <= 0) {
+ if (codePtr->refCount-- < 2) {
TclCleanupByteCode(codePtr);
}
}