diff options
author | Steve Bennett <steveb@workware.net.au> | 2023-02-10 13:59:44 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2023-02-10 14:00:37 +1000 |
commit | d04020a992d6287017a7f76cb3d5b89f7776ebb2 (patch) | |
tree | 26c322e046b42722fb0ff3fefbf55dd38f715d61 | |
parent | 722f38a10bcbb07ba13dbbaf4489c1241b107673 (diff) | |
download | jimtcl-d04020a992d6287017a7f76cb3d5b89f7776ebb2.zip jimtcl-d04020a992d6287017a7f76cb3d5b89f7776ebb2.tar.gz jimtcl-d04020a992d6287017a7f76cb3d5b89f7776ebb2.tar.bz2 |
Optimisation for Jim_GetWideExpr()
If the expression is a simple integer, use it as-is rather
than converting to an expression and evaluating.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r-- | jim.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -6102,6 +6102,10 @@ int Jim_GetWide(Jim_Interp *interp, Jim_Obj *objPtr, jim_wide * widePtr) int Jim_GetWideExpr(Jim_Interp *interp, Jim_Obj *objPtr, jim_wide * widePtr) { int ret = JIM_OK; + /* As an optimisation, try to convert to int first */ + if (objPtr->typePtr == &sourceObjType || objPtr->typePtr == NULL) { + SetIntFromAny(interp, objPtr, 0); + } if (objPtr->typePtr == &intObjType) { *widePtr = JimWideValue(objPtr); } |