aboutsummaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2011-12-03 07:38:21 +1000
committerSteve Bennett <steveb@workware.net.au>2011-12-08 12:28:03 +1000
commit92f3f1b45b917bb14e61fad225fcd8642dcd5725 (patch)
tree6fae633ac202889a41e4c12d8d0f2e9252057e86 /jim.c
parenta312320da72bc1745ff9d327aa59ff8bab976782 (diff)
downloadjimtcl-92f3f1b45b917bb14e61fad225fcd8642dcd5725.zip
jimtcl-92f3f1b45b917bb14e61fad225fcd8642dcd5725.tar.gz
jimtcl-92f3f1b45b917bb14e61fad225fcd8642dcd5725.tar.bz2
Reduce # of different types in the Jim_Obj union
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.c')
-rw-r--r--jim.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/jim.c b/jim.c
index 8db8d6e..4d360d6 100644
--- a/jim.c
+++ b/jim.c
@@ -2216,7 +2216,7 @@ static const Jim_ObjType dictSubstObjType = {
static void FreeInterpolatedInternalRep(Jim_Interp *interp, Jim_Obj *objPtr)
{
- Jim_DecrRefCount(interp, (Jim_Obj *)objPtr->internalRep.twoPtrValue.ptr2);
+ Jim_DecrRefCount(interp, objPtr->internalRep.dictSubstValue.indexObjPtr);
}
static const Jim_ObjType interpolatedObjType = {
@@ -4481,10 +4481,8 @@ static void SetDictSubstFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
if (objPtr->typePtr == &interpolatedObjType) {
/* An interpolated object in dict-sugar form */
- const ScriptToken *token = objPtr->internalRep.twoPtrValue.ptr1;
-
- varObjPtr = token[0].objPtr;
- keyObjPtr = objPtr->internalRep.twoPtrValue.ptr2;
+ varObjPtr = objPtr->internalRep.dictSubstValue.varNameObjPtr;
+ keyObjPtr = objPtr->internalRep.dictSubstValue.indexObjPtr;
Jim_IncrRefCount(varObjPtr);
Jim_IncrRefCount(keyObjPtr);
@@ -6828,12 +6826,12 @@ void UpdateStringOfIndex(struct Jim_Obj *objPtr)
int len;
char buf[JIM_INTEGER_SPACE + 1];
- if (objPtr->internalRep.indexValue >= 0)
- len = sprintf(buf, "%d", objPtr->internalRep.indexValue);
- else if (objPtr->internalRep.indexValue == -1)
+ if (objPtr->internalRep.intValue >= 0)
+ len = sprintf(buf, "%d", objPtr->internalRep.intValue);
+ else if (objPtr->internalRep.intValue == -1)
len = sprintf(buf, "end");
else {
- len = sprintf(buf, "end%d", objPtr->internalRep.indexValue + 1);
+ len = sprintf(buf, "end%d", objPtr->internalRep.intValue + 1);
}
objPtr->bytes = Jim_Alloc(len + 1);
memcpy(objPtr->bytes, buf, len + 1);
@@ -6897,7 +6895,7 @@ int SetIndexFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
/* Free the old internal repr and set the new one. */
Jim_FreeIntRep(interp, objPtr);
objPtr->typePtr = &indexObjType;
- objPtr->internalRep.indexValue = idx;
+ objPtr->internalRep.intValue = idx;
return JIM_OK;
badindex:
@@ -6919,7 +6917,7 @@ int Jim_GetIndex(Jim_Interp *interp, Jim_Obj *objPtr, int *indexPtr)
}
if (objPtr->typePtr != &indexObjType && SetIndexFromAny(interp, objPtr) == JIM_ERR)
return JIM_ERR;
- *indexPtr = objPtr->internalRep.indexValue;
+ *indexPtr = objPtr->internalRep.intValue;
return JIM_OK;
}
@@ -6980,7 +6978,7 @@ int SetReturnCodeFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
/* Free the old internal repr and set the new one. */
Jim_FreeIntRep(interp, objPtr);
objPtr->typePtr = &returnCodeObjType;
- objPtr->internalRep.returnCode = returnCode;
+ objPtr->internalRep.intValue = returnCode;
return JIM_OK;
}
@@ -6988,7 +6986,7 @@ int Jim_GetReturnCode(Jim_Interp *interp, Jim_Obj *objPtr, int *intPtr)
{
if (objPtr->typePtr != &returnCodeObjType && SetReturnCodeFromAny(interp, objPtr) == JIM_ERR)
return JIM_ERR;
- *intPtr = objPtr->internalRep.returnCode;
+ *intPtr = objPtr->internalRep.intValue;
return JIM_OK;
}
@@ -9919,8 +9917,8 @@ static Jim_Obj *JimInterpolateTokens(Jim_Interp *interp, const ScriptToken * tok
&& token[2].type == JIM_TT_VAR) {
/* May be able to do fast interpolated object -> dictSubst */
objPtr->typePtr = &interpolatedObjType;
- objPtr->internalRep.twoPtrValue.ptr1 = (void *)token;
- objPtr->internalRep.twoPtrValue.ptr2 = intv[2];
+ objPtr->internalRep.dictSubstValue.varNameObjPtr = token[0].objPtr;
+ objPtr->internalRep.dictSubstValue.indexObjPtr = intv[2];
Jim_IncrRefCount(intv[2]);
}