From b46c53fec03b48c96092ef01990c03a00891fb8c Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 22 Apr 2016 18:13:17 +0000 Subject: Refactor bytecode cleanup. --- generic/tclAssembly.c | 8 ++------ generic/tclCompile.c | 41 +++++++++++++++++++++++++++-------------- generic/tclCompile.h | 3 ++- generic/tclExecute.c | 17 +++++------------ 4 files changed, 36 insertions(+), 33 deletions(-) diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c index 6d5676b..7db5d69 100644 --- a/generic/tclAssembly.c +++ b/generic/tclAssembly.c @@ -866,7 +866,7 @@ CompileAssembleObj( * Not valid, so free it and regenerate. */ - FreeAssembleCodeInternalRep(objPtr); + TclFreeIntRep(objPtr); } /* @@ -4313,11 +4313,7 @@ FreeAssembleCodeInternalRep( { ByteCode *codePtr = objPtr->internalRep.twoPtrValue.ptr1; - codePtr->refCount--; - if (codePtr->refCount <= 0) { - TclCleanupByteCode(codePtr); - } - objPtr->typePtr = NULL; + TclReleaseByteCode(codePtr); } /* diff --git a/generic/tclCompile.c b/generic/tclCompile.c index c0b5dcc..002b551 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -661,6 +661,7 @@ InstructionDesc const tclInstructionTable[] = { * Prototypes for procedures defined later in this file: */ +static void CleanupByteCode(ByteCode *codePtr); static ByteCode * CompileSubstObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int flags); static void DupByteCodeInternalRep(Tcl_Obj *srcPtr, @@ -967,16 +968,13 @@ FreeByteCodeInternalRep( { register ByteCode *codePtr = objPtr->internalRep.twoPtrValue.ptr1; - objPtr->typePtr = NULL; - if (codePtr->refCount-- <= 1) { - TclCleanupByteCode(codePtr); - } + TclReleaseByteCode(codePtr); } /* *---------------------------------------------------------------------- * - * TclCleanupByteCode -- + * TclReleaseByteCode -- * * This procedure does all the real work of freeing up a bytecode * object's ByteCode structure. It's called only when the structure's @@ -993,7 +991,26 @@ FreeByteCodeInternalRep( */ void -TclCleanupByteCode( +TclPreserveByteCode( + register ByteCode *codePtr) +{ + codePtr->refCount++; +} + +void +TclReleaseByteCode( + register ByteCode *codePtr) +{ + if (--codePtr->refCount) { + return; + } + + /* Just dropped to refcount==0. Clean up. */ + CleanupByteCode(codePtr); +} + +static void +CleanupByteCode( register ByteCode *codePtr) /* Points to the ByteCode to free. */ { Tcl_Interp *interp = (Tcl_Interp *) *codePtr->interpHandle; @@ -1260,8 +1277,6 @@ Tcl_NRSubstObj( * * Results: * A (ByteCode *) is returned pointing to the resulting ByteCode. - * The caller must manage its refCount and arrange for a call to - * TclCleanupByteCode() when the last reference disappears. * * Side effects: * The Tcl_ObjType of objPtr is changed to the "substcode" type, and the @@ -1292,7 +1307,7 @@ CompileSubstObj( || (codePtr->nsEpoch != nsPtr->resolverEpoch) || (codePtr->localCachePtr != iPtr->varFramePtr->localCachePtr)) { - FreeSubstCodeInternalRep(objPtr); + TclFreeIntRep(objPtr); } } if (objPtr->typePtr != &substCodeType) { @@ -1353,10 +1368,7 @@ FreeSubstCodeInternalRep( { register ByteCode *codePtr = objPtr->internalRep.twoPtrValue.ptr1; - objPtr->typePtr = NULL; - if (codePtr->refCount-- <= 1) { - TclCleanupByteCode(codePtr); - } + TclReleaseByteCode(codePtr); } static void @@ -2752,7 +2764,8 @@ TclInitByteCodeObj( codePtr->compileEpoch = iPtr->compileEpoch; codePtr->nsPtr = namespacePtr; codePtr->nsEpoch = namespacePtr->resolverEpoch; - codePtr->refCount = 1; + codePtr->refCount = 0; + TclPreserveByteCode(codePtr); if (namespacePtr->compiledVarResProc || iPtr->resolverPtr) { codePtr->flags = TCL_BYTECODE_RESOLVE_VARS; } else { diff --git a/generic/tclCompile.h b/generic/tclCompile.h index d5bc86b..86a9db0 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -1067,7 +1067,6 @@ MODULE_SCOPE ByteCode * TclCompileObj(Tcl_Interp *interp, Tcl_Obj *objPtr, MODULE_SCOPE int TclAttemptCompileProc(Tcl_Interp *interp, Tcl_Parse *parsePtr, int depth, Command *cmdPtr, CompileEnv *envPtr); -MODULE_SCOPE void TclCleanupByteCode(ByteCode *codePtr); MODULE_SCOPE void TclCleanupStackForBreakContinue(CompileEnv *envPtr, ExceptionAux *auxPtr); MODULE_SCOPE void TclCompileCmdWord(Tcl_Interp *interp, @@ -1157,6 +1156,8 @@ MODULE_SCOPE void TclPushVarName(Tcl_Interp *interp, Tcl_Token *varTokenPtr, CompileEnv *envPtr, int flags, int *localIndexPtr, int *isScalarPtr); +MODULE_SCOPE void TclPreserveByteCode(ByteCode *codePtr); +MODULE_SCOPE void TclReleaseByteCode(ByteCode *codePtr); MODULE_SCOPE void TclReleaseLiteral(Tcl_Interp *interp, Tcl_Obj *objPtr); MODULE_SCOPE void TclInvalidateCmdLiteral(Tcl_Interp *interp, const char *name, Namespace *nsPtr); diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 823f619..2a2b951 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -1499,11 +1499,9 @@ ExprObjCallback( * * Results: * A (ByteCode *) is returned pointing to the resulting ByteCode. - * The caller must manage its refCount and arrange for a call to - * TclCleanupByteCode() when the last reference disappears. * * Side effects: - * The Tcl_ObjType of objPtr is changed to the "bytecode" type, + * The Tcl_ObjType of objPtr is changed to the "exprcode" type, * and the ByteCode is kept in the internal rep (along with context * data for checking validity) for faster operations the next time * CompileExprObj is called on the same value. @@ -1536,7 +1534,7 @@ CompileExprObj( || (codePtr->nsPtr != namespacePtr) || (codePtr->nsEpoch != namespacePtr->resolverEpoch) || (codePtr->localCachePtr != iPtr->varFramePtr->localCachePtr)) { - FreeExprCodeInternalRep(objPtr); + TclFreeIntRep(objPtr); } } if (objPtr->typePtr != &exprCodeType) { @@ -1644,10 +1642,7 @@ FreeExprCodeInternalRep( { ByteCode *codePtr = objPtr->internalRep.twoPtrValue.ptr1; - objPtr->typePtr = NULL; - if (codePtr->refCount-- <= 1) { - TclCleanupByteCode(codePtr); - } + TclReleaseByteCode(codePtr); } /* @@ -2033,7 +2028,7 @@ TclNRExecuteByteCode( * sizeof(void *); int numWords = (size + sizeof(Tcl_Obj *) - 1) / sizeof(Tcl_Obj *); - codePtr->refCount++; + TclPreserveByteCode(codePtr); /* * Reserve the stack, setup the TEBCdataPtr (TD) and CallFrame @@ -8189,9 +8184,7 @@ TEBCresume( } iPtr->cmdFramePtr = bcFramePtr->nextPtr; - if (codePtr->refCount-- <= 1) { - TclCleanupByteCode(codePtr); - } + TclReleaseByteCode(codePtr); TclStackFree(interp, TD); /* free my stack */ return result; -- cgit v0.12 From 3f9f0e85ff34afdd6cfbc82c66b5e670d0deb4bb Mon Sep 17 00:00:00 2001 From: venkat Date: Fri, 22 Apr 2016 19:43:59 +0000 Subject: Update to tzdata2016d from IETF --- library/tzdata/America/Caracas | 1 + library/tzdata/Asia/Almaty | 103 ++++++++++++++++++------------------ library/tzdata/Asia/Anadyr | 4 +- library/tzdata/Asia/Aqtau | 107 +++++++++++++++++++------------------- library/tzdata/Asia/Aqtobe | 105 +++++++++++++++++++------------------ library/tzdata/Asia/Baku | 2 +- library/tzdata/Asia/Barnaul | 4 +- library/tzdata/Asia/Chita | 4 +- library/tzdata/Asia/Irkutsk | 4 +- library/tzdata/Asia/Kamchatka | 4 +- library/tzdata/Asia/Khandyga | 4 +- library/tzdata/Asia/Krasnoyarsk | 4 +- library/tzdata/Asia/Magadan | 5 +- library/tzdata/Asia/Novokuznetsk | 4 +- library/tzdata/Asia/Novosibirsk | 4 +- library/tzdata/Asia/Omsk | 4 +- library/tzdata/Asia/Oral | 106 ++++++++++++++++++------------------- library/tzdata/Asia/Qyzylorda | 105 ++++++++++++++++++------------------- library/tzdata/Asia/Sakhalin | 4 +- library/tzdata/Asia/Srednekolymsk | 4 +- library/tzdata/Asia/Tomsk | 73 ++++++++++++++++++++++++++ library/tzdata/Asia/Ust-Nera | 4 +- library/tzdata/Asia/Vladivostok | 4 +- library/tzdata/Asia/Yakutsk | 4 +- library/tzdata/Asia/Yekaterinburg | 4 +- library/tzdata/Asia/Yerevan | 6 +-- library/tzdata/Europe/Astrakhan | 5 +- library/tzdata/Europe/Kaliningrad | 4 +- library/tzdata/Europe/Kirov | 70 +++++++++++++++++++++++++ library/tzdata/Europe/Minsk | 3 +- library/tzdata/Europe/Moscow | 4 +- library/tzdata/Europe/Samara | 4 +- library/tzdata/Europe/Ulyanovsk | 4 +- library/tzdata/Europe/Volgograd | 5 +- 34 files changed, 463 insertions(+), 313 deletions(-) create mode 100644 library/tzdata/Asia/Tomsk create mode 100644 library/tzdata/Europe/Kirov diff --git a/library/tzdata/America/Caracas b/library/tzdata/America/Caracas index 2ba87ae..253c4ce 100644 --- a/library/tzdata/America/Caracas +++ b/library/tzdata/America/Caracas @@ -6,4 +6,5 @@ set TZData(:America/Caracas) { {-1826739140 -16200 0 VET} {-157750200 -14400 0 VET} {1197183600 -16200 0 VET} + {1462086000 -14400 0 VET} } diff --git a/library/tzdata/Asia/Almaty b/library/tzdata/Asia/Almaty index 68dee29..2b83197 100644 --- a/library/tzdata/Asia/Almaty +++ b/library/tzdata/Asia/Almaty @@ -2,55 +2,56 @@ set TZData(:Asia/Almaty) { {-9223372036854775808 18468 0 LMT} - {-1441170468 18000 0 ALMT} - {-1247547600 21600 0 ALMT} - {354909600 25200 1 ALMST} - {370717200 21600 0 ALMT} - {386445600 25200 1 ALMST} - {402253200 21600 0 ALMT} - {417981600 25200 1 ALMST} - {433789200 21600 0 ALMT} - {449604000 25200 1 ALMST} - {465336000 21600 0 ALMT} - {481060800 25200 1 ALMST} - {496785600 21600 0 ALMT} - {512510400 25200 1 ALMST} - {528235200 21600 0 ALMT} - {543960000 25200 1 ALMST} - {559684800 21600 0 ALMT} - {575409600 25200 1 ALMST} - {591134400 21600 0 ALMT} - {606859200 25200 1 ALMST} - {622584000 21600 0 ALMT} - {638308800 25200 1 ALMST} - {654638400 21600 0 ALMT} - {662666400 21600 0 ALMT} - {694202400 21600 0 ALMT} - {701802000 25200 1 ALMST} - {717523200 21600 0 ALMT} - {733262400 25200 1 ALMST} - {748987200 21600 0 ALMT} - {764712000 25200 1 ALMST} - {780436800 21600 0 ALMT} - {796161600 25200 1 ALMST} - {811886400 21600 0 ALMT} - {828216000 25200 1 ALMST} - {846360000 21600 0 ALMT} - {859665600 25200 1 ALMST} - {877809600 21600 0 ALMT} - {891115200 25200 1 ALMST} - {909259200 21600 0 ALMT} - {922564800 25200 1 ALMST} - {941313600 21600 0 ALMT} - {954014400 25200 1 ALMST} - {972763200 21600 0 ALMT} - {985464000 25200 1 ALMST} - {1004212800 21600 0 ALMT} - {1017518400 25200 1 ALMST} - {1035662400 21600 0 ALMT} - {1048968000 25200 1 ALMST} - {1067112000 21600 0 ALMT} - {1080417600 25200 1 ALMST} - {1099166400 21600 0 ALMT} - {1110823200 21600 0 ALMT} + {-1441170468 18000 0 +05} + {-1247547600 21600 0 +06} + {354909600 25200 1 +07} + {370717200 21600 0 +06} + {386445600 25200 1 +07} + {402253200 21600 0 +06} + {417981600 25200 1 +07} + {433789200 21600 0 +06} + {449604000 25200 1 +07} + {465336000 21600 0 +06} + {481060800 25200 1 +07} + {496785600 21600 0 +06} + {512510400 25200 1 +07} + {528235200 21600 0 +06} + {543960000 25200 1 +07} + {559684800 21600 0 +06} + {575409600 25200 1 +07} + {591134400 21600 0 +06} + {606859200 25200 1 +07} + {622584000 21600 0 +06} + {638308800 25200 1 +07} + {654638400 21600 0 +06} + {670363200 18000 0 +05} + {670366800 21600 1 +06} + {686091600 18000 0 +05} + {695768400 21600 0 +06} + {701812800 25200 1 +07} + {717537600 21600 0 +06} + {733262400 25200 1 +07} + {748987200 21600 0 +06} + {764712000 25200 1 +07} + {780436800 21600 0 +06} + {796161600 25200 1 +07} + {811886400 21600 0 +06} + {828216000 25200 1 +07} + {846360000 21600 0 +06} + {859665600 25200 1 +07} + {877809600 21600 0 +06} + {891115200 25200 1 +07} + {909259200 21600 0 +06} + {922564800 25200 1 +07} + {941313600 21600 0 +06} + {954014400 25200 1 +07} + {972763200 21600 0 +06} + {985464000 25200 1 +07} + {1004212800 21600 0 +06} + {1017518400 25200 1 +07} + {1035662400 21600 0 +06} + {1048968000 25200 1 +07} + {1067112000 21600 0 +06} + {1080417600 25200 1 +07} + {1099166400 21600 0 +06} } diff --git a/library/tzdata/Asia/Anadyr b/library/tzdata/Asia/Anadyr index 50ace50..2e8ffc7 100644 --- a/library/tzdata/Asia/Anadyr +++ b/library/tzdata/Asia/Anadyr @@ -29,8 +29,8 @@ set TZData(:Asia/Anadyr) { {670345200 43200 1 ANAST} {686070000 39600 0 ANAT} {695746800 43200 0 ANAMMTT} - {701780400 46800 1 ANAST} - {717501600 43200 0 ANAT} + {701791200 46800 1 ANAST} + {717516000 43200 0 ANAT} {733240800 46800 1 ANAST} {748965600 43200 0 ANAT} {764690400 46800 1 ANAST} diff --git a/library/tzdata/Asia/Aqtau b/library/tzdata/Asia/Aqtau index 11e89a2..90cc94d 100644 --- a/library/tzdata/Asia/Aqtau +++ b/library/tzdata/Asia/Aqtau @@ -2,57 +2,58 @@ set TZData(:Asia/Aqtau) { {-9223372036854775808 12064 0 LMT} - {-1441164064 14400 0 FORT} - {-1247544000 18000 0 FORT} - {-220942800 18000 0 SHET} - {370724400 21600 0 SHET} - {386445600 18000 0 SHET} - {386449200 21600 1 SHEST} - {402256800 18000 0 SHET} - {417985200 21600 1 SHEST} - {433792800 18000 0 SHET} - {449607600 21600 1 SHEST} - {465339600 18000 0 SHET} - {481064400 21600 1 SHEST} - {496789200 18000 0 SHET} - {512514000 21600 1 SHEST} - {528238800 18000 0 SHET} - {543963600 21600 1 SHEST} - {559688400 18000 0 SHET} - {575413200 21600 1 SHEST} - {591138000 18000 0 SHET} - {606862800 21600 1 SHEST} - {622587600 18000 0 SHET} - {638312400 21600 1 SHEST} - {654642000 18000 0 SHET} - {662670000 18000 0 SHET} - {692823600 18000 0 AQTT} - {701805600 21600 1 AQTST} - {717526800 18000 0 AQTT} - {733266000 21600 1 AQTST} - {748990800 18000 0 AQTT} - {764715600 21600 1 AQTST} - {780440400 18000 0 AQTT} - {796165200 14400 0 AQTT} - {796168800 18000 1 AQTST} - {811893600 14400 0 AQTT} - {828223200 18000 1 AQTST} - {846367200 14400 0 AQTT} - {859672800 18000 1 AQTST} - {877816800 14400 0 AQTT} - {891122400 18000 1 AQTST} - {909266400 14400 0 AQTT} - {922572000 18000 1 AQTST} - {941320800 14400 0 AQTT} - {954021600 18000 1 AQTST} - {972770400 14400 0 AQTT} - {985471200 18000 1 AQTST} - {1004220000 14400 0 AQTT} - {1017525600 18000 1 AQTST} - {1035669600 14400 0 AQTT} - {1048975200 18000 1 AQTST} - {1067119200 14400 0 AQTT} - {1080424800 18000 1 AQTST} - {1099173600 14400 0 AQTT} - {1110830400 18000 0 AQTT} + {-1441164064 14400 0 +04} + {-1247544000 18000 0 +05} + {-220942800 18000 0 +05} + {370724400 21600 0 +06} + {386445600 18000 0 +05} + {386449200 21600 1 +06} + {402256800 18000 0 +05} + {417985200 21600 1 +06} + {433792800 18000 0 +05} + {449607600 21600 1 +06} + {465339600 18000 0 +05} + {481064400 21600 1 +06} + {496789200 18000 0 +05} + {512514000 21600 1 +06} + {528238800 18000 0 +05} + {543963600 21600 1 +06} + {559688400 18000 0 +05} + {575413200 21600 1 +06} + {591138000 18000 0 +05} + {606862800 21600 1 +06} + {622587600 18000 0 +05} + {638312400 21600 1 +06} + {654642000 18000 0 +05} + {670366800 14400 0 +04} + {670370400 18000 1 +05} + {686095200 14400 0 +04} + {695772000 18000 0 +05} + {701816400 21600 1 +06} + {717541200 18000 0 +05} + {733266000 21600 1 +06} + {748990800 18000 0 +05} + {764715600 21600 1 +06} + {780440400 18000 0 +05} + {780444000 14400 0 +04} + {796168800 18000 1 +05} + {811893600 14400 0 +04} + {828223200 18000 1 +05} + {846367200 14400 0 +04} + {859672800 18000 1 +05} + {877816800 14400 0 +04} + {891122400 18000 1 +05} + {909266400 14400 0 +04} + {922572000 18000 1 +05} + {941320800 14400 0 +04} + {954021600 18000 1 +05} + {972770400 14400 0 +04} + {985471200 18000 1 +05} + {1004220000 14400 0 +04} + {1017525600 18000 1 +05} + {1035669600 14400 0 +04} + {1048975200 18000 1 +05} + {1067119200 14400 0 +04} + {1080424800 18000 1 +05} + {1099173600 18000 0 +05} } diff --git a/library/tzdata/Asia/Aqtobe b/library/tzdata/Asia/Aqtobe index c857491..55ef556 100644 --- a/library/tzdata/Asia/Aqtobe +++ b/library/tzdata/Asia/Aqtobe @@ -2,56 +2,57 @@ set TZData(:Asia/Aqtobe) { {-9223372036854775808 13720 0 LMT} - {-1441165720 14400 0 AKTT} - {-1247544000 18000 0 AKTT} - {354913200 21600 1 AKTST} - {370720800 21600 0 AKTT} - {386445600 18000 0 AKTT} - {386449200 21600 1 AKTST} - {402256800 18000 0 AKTT} - {417985200 21600 1 AKTST} - {433792800 18000 0 AKTT} - {449607600 21600 1 AKTST} - {465339600 18000 0 AKTT} - {481064400 21600 1 AKTST} - {496789200 18000 0 AKTT} - {512514000 21600 1 AKTST} - {528238800 18000 0 AKTT} - {543963600 21600 1 AKTST} - {559688400 18000 0 AKTT} - {575413200 21600 1 AKTST} - {591138000 18000 0 AKTT} - {606862800 21600 1 AKTST} - {622587600 18000 0 AKTT} - {638312400 21600 1 AKTST} - {654642000 18000 0 AKTT} - {662670000 18000 0 AKTT} - {692823600 18000 0 AQTT} - {701805600 21600 1 AQTST} - {717526800 18000 0 AQTT} - {733266000 21600 1 AQTST} - {748990800 18000 0 AQTT} - {764715600 21600 1 AQTST} - {780440400 18000 0 AQTT} - {796165200 21600 1 AQTST} - {811890000 18000 0 AQTT} - {828219600 21600 1 AQTST} - {846363600 18000 0 AQTT} - {859669200 21600 1 AQTST} - {877813200 18000 0 AQTT} - {891118800 21600 1 AQTST} - {909262800 18000 0 AQTT} - {922568400 21600 1 AQTST} - {941317200 18000 0 AQTT} - {954018000 21600 1 AQTST} - {972766800 18000 0 AQTT} - {985467600 21600 1 AQTST} - {1004216400 18000 0 AQTT} - {1017522000 21600 1 AQTST} - {1035666000 18000 0 AQTT} - {1048971600 21600 1 AQTST} - {1067115600 18000 0 AQTT} - {1080421200 21600 1 AQTST} - {1099170000 18000 0 AQTT} - {1110826800 18000 0 AQTT} + {-1441165720 14400 0 +04} + {-1247544000 18000 0 +05} + {354913200 21600 1 +06} + {370720800 21600 0 +06} + {386445600 18000 0 +05} + {386449200 21600 1 +06} + {402256800 18000 0 +05} + {417985200 21600 1 +06} + {433792800 18000 0 +05} + {449607600 21600 1 +06} + {465339600 18000 0 +05} + {481064400 21600 1 +06} + {496789200 18000 0 +05} + {512514000 21600 1 +06} + {528238800 18000 0 +05} + {543963600 21600 1 +06} + {559688400 18000 0 +05} + {575413200 21600 1 +06} + {591138000 18000 0 +05} + {606862800 21600 1 +06} + {622587600 18000 0 +05} + {638312400 21600 1 +06} + {654642000 18000 0 +05} + {670366800 14400 0 +04} + {670370400 18000 1 +05} + {686095200 14400 0 +04} + {695772000 18000 0 +05} + {701816400 21600 1 +06} + {717541200 18000 0 +05} + {733266000 21600 1 +06} + {748990800 18000 0 +05} + {764715600 21600 1 +06} + {780440400 18000 0 +05} + {796165200 21600 1 +06} + {811890000 18000 0 +05} + {828219600 21600 1 +06} + {846363600 18000 0 +05} + {859669200 21600 1 +06} + {877813200 18000 0 +05} + {891118800 21600 1 +06} + {909262800 18000 0 +05} + {922568400 21600 1 +06} + {941317200 18000 0 +05} + {954018000 21600 1 +06} + {972766800 18000 0 +05} + {985467600 21600 1 +06} + {1004216400 18000 0 +05} + {1017522000 21600 1 +06} + {1035666000 18000 0 +05} + {1048971600 21600 1 +06} + {1067115600 18000 0 +05} + {1080421200 21600 1 +06} + {1099170000 18000 0 +05} } diff --git a/library/tzdata/Asia/Baku b/library/tzdata/Asia/Baku index c26a2f5..bc0701a 100644 --- a/library/tzdata/Asia/Baku +++ b/library/tzdata/Asia/Baku @@ -27,7 +27,7 @@ set TZData(:Asia/Baku) { {670370400 14400 1 BAKST} {683496000 14400 0 AZST} {686098800 10800 0 AZT} - {701812800 14400 1 AZST} + {701823600 14400 1 AZST} {717537600 14400 0 AZT} {820440000 14400 0 AZT} {828234000 18000 1 AZST} diff --git a/library/tzdata/Asia/Barnaul b/library/tzdata/Asia/Barnaul index f6a45da..bf6abbf 100644 --- a/library/tzdata/Asia/Barnaul +++ b/library/tzdata/Asia/Barnaul @@ -28,8 +28,8 @@ set TZData(:Asia/Barnaul) { {670363200 25200 1 +07} {686088000 21600 0 +06} {695764800 25200 0 +08} - {701798400 28800 1 +08} - {717519600 25200 0 +07} + {701809200 28800 1 +08} + {717534000 25200 0 +07} {733258800 28800 1 +08} {748983600 25200 0 +07} {764708400 28800 1 +08} diff --git a/library/tzdata/Asia/Chita b/library/tzdata/Asia/Chita index 6aef523..2517beb 100644 --- a/library/tzdata/Asia/Chita +++ b/library/tzdata/Asia/Chita @@ -28,8 +28,8 @@ set TZData(:Asia/Chita) { {670356000 32400 1 YAKST} {686080800 28800 0 YAKT} {695757600 32400 0 YAKMMTT} - {701791200 36000 1 YAKST} - {717512400 32400 0 YAKT} + {701802000 36000 1 YAKST} + {717526800 32400 0 YAKT} {733251600 36000 1 YAKST} {748976400 32400 0 YAKT} {764701200 36000 1 YAKST} diff --git a/library/tzdata/Asia/Irkutsk b/library/tzdata/Asia/Irkutsk index 08e5798..ebe00c3 100644 --- a/library/tzdata/Asia/Irkutsk +++ b/library/tzdata/Asia/Irkutsk @@ -29,8 +29,8 @@ set TZData(:Asia/Irkutsk) { {670359600 28800 1 IRKST} {686084400 25200 0 IRKT} {695761200 28800 0 IRKMMTT} - {701794800 32400 1 IRKST} - {717516000 28800 0 IRKT} + {701805600 32400 1 IRKST} + {717530400 28800 0 IRKT} {733255200 32400 1 IRKST} {748980000 28800 0 IRKT} {764704800 32400 1 IRKST} diff --git a/library/tzdata/Asia/Kamchatka b/library/tzdata/Asia/Kamchatka index 82abcfa..2b77154 100644 --- a/library/tzdata/Asia/Kamchatka +++ b/library/tzdata/Asia/Kamchatka @@ -28,8 +28,8 @@ set TZData(:Asia/Kamchatka) { {670345200 43200 1 PETST} {686070000 39600 0 PETT} {695746800 43200 0 PETMMTT} - {701780400 46800 1 PETST} - {717501600 43200 0 PETT} + {701791200 46800 1 PETST} + {717516000 43200 0 PETT} {733240800 46800 1 PETST} {748965600 43200 0 PETT} {764690400 46800 1 PETST} diff --git a/library/tzdata/Asia/Khandyga b/library/tzdata/Asia/Khandyga index b2dc97a..b898e0d 100644 --- a/library/tzdata/Asia/Khandyga +++ b/library/tzdata/Asia/Khandyga @@ -28,8 +28,8 @@ set TZData(:Asia/Khandyga) { {670356000 32400 1 YAKST} {686080800 28800 0 YAKT} {695757600 32400 0 YAKMMTT} - {701791200 36000 1 YAKST} - {717512400 32400 0 YAKT} + {701802000 36000 1 YAKST} + {717526800 32400 0 YAKT} {733251600 36000 1 YAKST} {748976400 32400 0 YAKT} {764701200 36000 1 YAKST} diff --git a/library/tzdata/Asia/Krasnoyarsk b/library/tzdata/Asia/Krasnoyarsk index 17ea6c0..3c6285e 100644 --- a/library/tzdata/Asia/Krasnoyarsk +++ b/library/tzdata/Asia/Krasnoyarsk @@ -28,8 +28,8 @@ set TZData(:Asia/Krasnoyarsk) { {670363200 25200 1 KRAST} {686088000 21600 0 KRAT} {695764800 25200 0 KRAMMTT} - {701798400 28800 1 KRAST} - {717519600 25200 0 KRAT} + {701809200 28800 1 KRAST} + {717534000 25200 0 KRAT} {733258800 28800 1 KRAST} {748983600 25200 0 KRAT} {764708400 28800 1 KRAST} diff --git a/library/tzdata/Asia/Magadan b/library/tzdata/Asia/Magadan index bf796a7..afe78da 100644 --- a/library/tzdata/Asia/Magadan +++ b/library/tzdata/Asia/Magadan @@ -28,8 +28,8 @@ set TZData(:Asia/Magadan) { {670348800 39600 1 MAGST} {686073600 36000 0 MAGT} {695750400 39600 0 MAGMMTT} - {701784000 43200 1 MAGST} - {717505200 39600 0 MAGT} + {701794800 43200 1 MAGST} + {717519600 39600 0 MAGT} {733244400 43200 1 MAGST} {748969200 39600 0 MAGT} {764694000 43200 1 MAGST} @@ -68,4 +68,5 @@ set TZData(:Asia/Magadan) { {1288450800 39600 0 MAGT} {1301151600 43200 0 MAGT} {1414245600 36000 0 MAGT} + {1461427200 39600 0 MAGT} } diff --git a/library/tzdata/Asia/Novokuznetsk b/library/tzdata/Asia/Novokuznetsk index ab3c2d5..f079faa 100644 --- a/library/tzdata/Asia/Novokuznetsk +++ b/library/tzdata/Asia/Novokuznetsk @@ -28,8 +28,8 @@ set TZData(:Asia/Novokuznetsk) { {670363200 25200 1 KRAST} {686088000 21600 0 KRAT} {695764800 25200 0 KRAMMTT} - {701798400 28800 1 KRAST} - {717519600 25200 0 KRAT} + {701809200 28800 1 KRAST} + {717534000 25200 0 KRAT} {733258800 28800 1 KRAST} {748983600 25200 0 KRAT} {764708400 28800 1 KRAST} diff --git a/library/tzdata/Asia/Novosibirsk b/library/tzdata/Asia/Novosibirsk index 7227780..54c83fa 100644 --- a/library/tzdata/Asia/Novosibirsk +++ b/library/tzdata/Asia/Novosibirsk @@ -28,8 +28,8 @@ set TZData(:Asia/Novosibirsk) { {670363200 25200 1 NOVST} {686088000 21600 0 NOVT} {695764800 25200 0 NOVMMTT} - {701798400 28800 1 NOVST} - {717519600 25200 0 NOVT} + {701809200 28800 1 NOVST} + {717534000 25200 0 NOVT} {733258800 28800 1 NOVST} {738090000 25200 0 NOVST} {748987200 21600 0 NOVT} diff --git a/library/tzdata/Asia/Omsk b/library/tzdata/Asia/Omsk index f25b8d4..a6fa180 100644 --- a/library/tzdata/Asia/Omsk +++ b/library/tzdata/Asia/Omsk @@ -28,8 +28,8 @@ set TZData(:Asia/Omsk) { {670366800 21600 1 OMSST} {686091600 18000 0 OMST} {695768400 21600 0 OMSMMTT} - {701802000 25200 1 OMSST} - {717523200 21600 0 OMST} + {701812800 25200 1 OMSST} + {717537600 21600 0 OMST} {733262400 25200 1 OMSST} {748987200 21600 0 OMST} {764712000 25200 1 OMSST} diff --git a/library/tzdata/Asia/Oral b/library/tzdata/Asia/Oral index 88b9a29..962111b 100644 --- a/library/tzdata/Asia/Oral +++ b/library/tzdata/Asia/Oral @@ -2,57 +2,57 @@ set TZData(:Asia/Oral) { {-9223372036854775808 12324 0 LMT} - {-1441164324 14400 0 URAT} - {-1247544000 18000 0 URAT} - {354913200 21600 1 URAST} - {370720800 21600 0 URAT} - {386445600 18000 0 URAT} - {386449200 21600 1 URAST} - {402256800 18000 0 URAT} - {417985200 21600 1 URAST} - {433792800 18000 0 URAT} - {449607600 21600 1 URAST} - {465339600 18000 0 URAT} - {481064400 21600 1 URAST} - {496789200 18000 0 URAT} - {512514000 21600 1 URAST} - {528238800 18000 0 URAT} - {543963600 21600 1 URAST} - {559688400 18000 0 URAT} - {575413200 21600 1 URAST} - {591138000 18000 0 URAT} - {606862800 14400 0 URAT} - {606866400 18000 1 URAST} - {622591200 14400 0 URAT} - {638316000 18000 1 URAST} - {654645600 14400 0 URAT} - {662673600 14400 0 URAT} - {692827200 14400 0 ORAT} - {701809200 18000 1 ORAST} - {717530400 14400 0 ORAT} - {733269600 18000 1 ORAST} - {748994400 14400 0 ORAT} - {764719200 18000 1 ORAST} - {780444000 14400 0 ORAT} - {796168800 18000 1 ORAST} - {811893600 14400 0 ORAT} - {828223200 18000 1 ORAST} - {846367200 14400 0 ORAT} - {859672800 18000 1 ORAST} - {877816800 14400 0 ORAT} - {891122400 18000 1 ORAST} - {909266400 14400 0 ORAT} - {922572000 18000 1 ORAST} - {941320800 14400 0 ORAT} - {954021600 18000 1 ORAST} - {972770400 14400 0 ORAT} - {985471200 18000 1 ORAST} - {1004220000 14400 0 ORAT} - {1017525600 18000 1 ORAST} - {1035669600 14400 0 ORAT} - {1048975200 18000 1 ORAST} - {1067119200 14400 0 ORAT} - {1080424800 18000 1 ORAST} - {1099173600 14400 0 ORAT} - {1110830400 18000 0 ORAT} + {-1441164324 14400 0 +04} + {-1247544000 18000 0 +05} + {354913200 21600 1 +06} + {370720800 21600 0 +06} + {386445600 18000 0 +05} + {386449200 21600 1 +06} + {402256800 18000 0 +05} + {417985200 21600 1 +06} + {433792800 18000 0 +05} + {449607600 21600 1 +06} + {465339600 18000 0 +05} + {481064400 21600 1 +06} + {496789200 18000 0 +05} + {512514000 21600 1 +06} + {528238800 18000 0 +05} + {543963600 21600 1 +06} + {559688400 18000 0 +05} + {575413200 21600 1 +06} + {591138000 18000 0 +05} + {606862800 14400 0 +04} + {606866400 18000 1 +05} + {622591200 14400 0 +04} + {638316000 18000 1 +05} + {654645600 14400 0 +04} + {670370400 18000 1 +05} + {686095200 14400 0 +04} + {701816400 14400 0 +04} + {701820000 18000 1 +05} + {717544800 14400 0 +04} + {733269600 18000 1 +05} + {748994400 14400 0 +04} + {764719200 18000 1 +05} + {780444000 14400 0 +04} + {796168800 18000 1 +05} + {811893600 14400 0 +04} + {828223200 18000 1 +05} + {846367200 14400 0 +04} + {859672800 18000 1 +05} + {877816800 14400 0 +04} + {891122400 18000 1 +05} + {909266400 14400 0 +04} + {922572000 18000 1 +05} + {941320800 14400 0 +04} + {954021600 18000 1 +05} + {972770400 14400 0 +04} + {985471200 18000 1 +05} + {1004220000 14400 0 +04} + {1017525600 18000 1 +05} + {1035669600 14400 0 +04} + {1048975200 18000 1 +05} + {1067119200 14400 0 +04} + {1080424800 18000 1 +05} + {1099173600 18000 0 +05} } diff --git a/library/tzdata/Asia/Qyzylorda b/library/tzdata/Asia/Qyzylorda index 16da574..b2e9472 100644 --- a/library/tzdata/Asia/Qyzylorda +++ b/library/tzdata/Asia/Qyzylorda @@ -2,57 +2,56 @@ set TZData(:Asia/Qyzylorda) { {-9223372036854775808 15712 0 LMT} - {-1441167712 14400 0 KIZT} - {-1247544000 18000 0 KIZT} - {354913200 21600 1 KIZST} - {370720800 21600 0 KIZT} - {386445600 18000 0 KIZT} - {386449200 21600 1 KIZST} - {402256800 18000 0 KIZT} - {417985200 21600 1 KIZST} - {433792800 18000 0 KIZT} - {449607600 21600 1 KIZST} - {465339600 18000 0 KIZT} - {481064400 21600 1 KIZST} - {496789200 18000 0 KIZT} - {512514000 21600 1 KIZST} - {528238800 18000 0 KIZT} - {543963600 21600 1 KIZST} - {559688400 18000 0 KIZT} - {575413200 21600 1 KIZST} - {591138000 18000 0 KIZT} - {606862800 21600 1 KIZST} - {622587600 18000 0 KIZT} - {638312400 21600 1 KIZST} - {654642000 18000 0 KIZT} - {662670000 18000 0 KIZT} - {692823600 18000 0 QYZT} - {695768400 21600 0 QYZT} - {701802000 25200 1 QYZST} - {717523200 21600 0 QYZT} - {733262400 25200 1 QYZST} - {748987200 21600 0 QYZT} - {764712000 25200 1 QYZST} - {780436800 21600 0 QYZT} - {796161600 25200 1 QYZST} - {811886400 21600 0 QYZT} - {828216000 25200 1 QYZST} - {846360000 21600 0 QYZT} - {859665600 25200 1 QYZST} - {877809600 21600 0 QYZT} - {891115200 25200 1 QYZST} - {909259200 21600 0 QYZT} - {922564800 25200 1 QYZST} - {941313600 21600 0 QYZT} - {954014400 25200 1 QYZST} - {972763200 21600 0 QYZT} - {985464000 25200 1 QYZST} - {1004212800 21600 0 QYZT} - {1017518400 25200 1 QYZST} - {1035662400 21600 0 QYZT} - {1048968000 25200 1 QYZST} - {1067112000 21600 0 QYZT} - {1080417600 25200 1 QYZST} - {1099166400 21600 0 QYZT} - {1110823200 21600 0 QYZT} + {-1441167712 14400 0 +04} + {-1247544000 18000 0 +05} + {354913200 21600 1 +06} + {370720800 21600 0 +06} + {386445600 18000 0 +05} + {386449200 21600 1 +06} + {402256800 18000 0 +05} + {417985200 21600 1 +06} + {433792800 18000 0 +05} + {449607600 21600 1 +06} + {465339600 18000 0 +05} + {481064400 21600 1 +06} + {496789200 18000 0 +05} + {512514000 21600 1 +06} + {528238800 18000 0 +05} + {543963600 21600 1 +06} + {559688400 18000 0 +05} + {575413200 21600 1 +06} + {591138000 18000 0 +05} + {606862800 21600 1 +06} + {622587600 18000 0 +05} + {638312400 21600 1 +06} + {654642000 18000 0 +05} + {670366800 14400 0 +04} + {670370400 18000 1 +05} + {701812800 18000 0 +05} + {701816400 21600 1 +06} + {717541200 18000 0 +05} + {733266000 21600 1 +06} + {748990800 18000 0 +05} + {764715600 21600 1 +06} + {780440400 18000 0 +05} + {796165200 21600 1 +06} + {811890000 18000 0 +05} + {828219600 21600 1 +06} + {846363600 18000 0 +05} + {859669200 21600 1 +06} + {877813200 18000 0 +05} + {891118800 21600 1 +06} + {909262800 18000 0 +05} + {922568400 21600 1 +06} + {941317200 18000 0 +05} + {954018000 21600 1 +06} + {972766800 18000 0 +05} + {985467600 21600 1 +06} + {1004216400 18000 0 +05} + {1017522000 21600 1 +06} + {1035666000 18000 0 +05} + {1048971600 21600 1 +06} + {1067115600 18000 0 +05} + {1080421200 21600 1 +06} + {1099170000 21600 0 +06} } diff --git a/library/tzdata/Asia/Sakhalin b/library/tzdata/Asia/Sakhalin index 9247046..1de22f4 100644 --- a/library/tzdata/Asia/Sakhalin +++ b/library/tzdata/Asia/Sakhalin @@ -29,8 +29,8 @@ set TZData(:Asia/Sakhalin) { {670348800 39600 1 SAKST} {686073600 36000 0 SAKT} {695750400 39600 0 SAKMMTT} - {701784000 43200 1 SAKST} - {717505200 39600 0 SAKT} + {701794800 43200 1 SAKST} + {717519600 39600 0 SAKT} {733244400 43200 1 SAKST} {748969200 39600 0 SAKT} {764694000 43200 1 SAKST} diff --git a/library/tzdata/Asia/Srednekolymsk b/library/tzdata/Asia/Srednekolymsk index d1dd879..a0586aa 100644 --- a/library/tzdata/Asia/Srednekolymsk +++ b/library/tzdata/Asia/Srednekolymsk @@ -28,8 +28,8 @@ set TZData(:Asia/Srednekolymsk) { {670348800 39600 1 MAGST} {686073600 36000 0 MAGT} {695750400 39600 0 MAGMMTT} - {701784000 43200 1 MAGST} - {717505200 39600 0 MAGT} + {701794800 43200 1 MAGST} + {717519600 39600 0 MAGT} {733244400 43200 1 MAGST} {748969200 39600 0 MAGT} {764694000 43200 1 MAGST} diff --git a/library/tzdata/Asia/Tomsk b/library/tzdata/Asia/Tomsk new file mode 100644 index 0000000..0694d01 --- /dev/null +++ b/library/tzdata/Asia/Tomsk @@ -0,0 +1,73 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Asia/Tomsk) { + {-9223372036854775808 20391 0 LMT} + {-1578807591 21600 0 +06} + {-1247551200 25200 0 +08} + {354906000 28800 1 +08} + {370713600 25200 0 +07} + {386442000 28800 1 +08} + {402249600 25200 0 +07} + {417978000 28800 1 +08} + {433785600 25200 0 +07} + {449600400 28800 1 +08} + {465332400 25200 0 +07} + {481057200 28800 1 +08} + {496782000 25200 0 +07} + {512506800 28800 1 +08} + {528231600 25200 0 +07} + {543956400 28800 1 +08} + {559681200 25200 0 +07} + {575406000 28800 1 +08} + {591130800 25200 0 +07} + {606855600 28800 1 +08} + {622580400 25200 0 +07} + {638305200 28800 1 +08} + {654634800 25200 0 +07} + {670359600 21600 0 +07} + {670363200 25200 1 +07} + {686088000 21600 0 +06} + {695764800 25200 0 +08} + {701809200 28800 1 +08} + {717534000 25200 0 +07} + {733258800 28800 1 +08} + {748983600 25200 0 +07} + {764708400 28800 1 +08} + {780433200 25200 0 +07} + {796158000 28800 1 +08} + {811882800 25200 0 +07} + {828212400 28800 1 +08} + {846356400 25200 0 +07} + {859662000 28800 1 +08} + {877806000 25200 0 +07} + {891111600 28800 1 +08} + {909255600 25200 0 +07} + {922561200 28800 1 +08} + {941310000 25200 0 +07} + {954010800 28800 1 +08} + {972759600 25200 0 +07} + {985460400 28800 1 +08} + {1004209200 25200 0 +07} + {1017514800 28800 1 +08} + {1020196800 25200 0 +07} + {1035662400 21600 0 +06} + {1048968000 25200 1 +07} + {1067112000 21600 0 +06} + {1080417600 25200 1 +07} + {1099166400 21600 0 +06} + {1111867200 25200 1 +07} + {1130616000 21600 0 +06} + {1143316800 25200 1 +07} + {1162065600 21600 0 +06} + {1174766400 25200 1 +07} + {1193515200 21600 0 +06} + {1206820800 25200 1 +07} + {1224964800 21600 0 +06} + {1238270400 25200 1 +07} + {1256414400 21600 0 +06} + {1269720000 25200 1 +07} + {1288468800 21600 0 +06} + {1301169600 25200 0 +07} + {1414263600 21600 0 +06} + {1464465600 25200 0 +07} +} diff --git a/library/tzdata/Asia/Ust-Nera b/library/tzdata/Asia/Ust-Nera index 90fa7d5..3380b7b 100644 --- a/library/tzdata/Asia/Ust-Nera +++ b/library/tzdata/Asia/Ust-Nera @@ -27,8 +27,8 @@ set TZData(:Asia/Ust-Nera) { {670348800 39600 1 MAGST} {686073600 36000 0 MAGT} {695750400 39600 0 MAGMMTT} - {701784000 43200 1 MAGST} - {717505200 39600 0 MAGT} + {701794800 43200 1 MAGST} + {717519600 39600 0 MAGT} {733244400 43200 1 MAGST} {748969200 39600 0 MAGT} {764694000 43200 1 MAGST} diff --git a/library/tzdata/Asia/Vladivostok b/library/tzdata/Asia/Vladivostok index 119ff57..b279d1c 100644 --- a/library/tzdata/Asia/Vladivostok +++ b/library/tzdata/Asia/Vladivostok @@ -28,8 +28,8 @@ set TZData(:Asia/Vladivostok) { {670352400 36000 1 VLAST} {686077200 32400 0 VLAT} {695754000 36000 0 VLAMMTT} - {701787600 39600 1 VLAST} - {717508800 36000 0 VLAT} + {701798400 39600 1 VLAST} + {717523200 36000 0 VLAT} {733248000 39600 1 VLAST} {748972800 36000 0 VLAT} {764697600 39600 1 VLAST} diff --git a/library/tzdata/Asia/Yakutsk b/library/tzdata/Asia/Yakutsk index 17493a6..0074379 100644 --- a/library/tzdata/Asia/Yakutsk +++ b/library/tzdata/Asia/Yakutsk @@ -28,8 +28,8 @@ set TZData(:Asia/Yakutsk) { {670356000 32400 1 YAKST} {686080800 28800 0 YAKT} {695757600 32400 0 YAKMMTT} - {701791200 36000 1 YAKST} - {717512400 32400 0 YAKT} + {701802000 36000 1 YAKST} + {717526800 32400 0 YAKT} {733251600 36000 1 YAKST} {748976400 32400 0 YAKT} {764701200 36000 1 YAKST} diff --git a/library/tzdata/Asia/Yekaterinburg b/library/tzdata/Asia/Yekaterinburg index 2678958..fdd89b0 100644 --- a/library/tzdata/Asia/Yekaterinburg +++ b/library/tzdata/Asia/Yekaterinburg @@ -29,8 +29,8 @@ set TZData(:Asia/Yekaterinburg) { {670370400 18000 1 SVEST} {686095200 14400 0 SVET} {695772000 18000 0 YEKMMTT} - {701805600 21600 1 YEKST} - {717526800 18000 0 YEKT} + {701816400 21600 1 YEKST} + {717541200 18000 0 YEKT} {733266000 21600 1 YEKST} {748990800 18000 0 YEKT} {764715600 21600 1 YEKST} diff --git a/library/tzdata/Asia/Yerevan b/library/tzdata/Asia/Yerevan index 22008ef..c552403 100644 --- a/library/tzdata/Asia/Yerevan +++ b/library/tzdata/Asia/Yerevan @@ -27,8 +27,8 @@ set TZData(:Asia/Yerevan) { {670370400 14400 1 YERST} {685569600 14400 0 AMST} {686098800 10800 0 AMT} - {701812800 14400 1 AMST} - {717534000 10800 0 AMT} + {701823600 14400 1 AMST} + {717548400 10800 0 AMT} {733273200 14400 1 AMST} {748998000 10800 0 AMT} {764722800 14400 1 AMST} @@ -66,5 +66,5 @@ set TZData(:Asia/Yerevan) { {1288476000 14400 0 AMT} {1301176800 18000 1 AMST} {1319925600 14400 0 AMT} - {1332626400 14400 0 AMT} + {1328731200 14400 0 AMT} } diff --git a/library/tzdata/Europe/Astrakhan b/library/tzdata/Europe/Astrakhan index e5e9c26..9881bb8 100644 --- a/library/tzdata/Europe/Astrakhan +++ b/library/tzdata/Europe/Astrakhan @@ -26,8 +26,9 @@ set TZData(:Europe/Astrakhan) { {638319600 14400 1 +04} {654649200 10800 0 +03} {670374000 14400 0 +04} - {701820000 14400 0 +04} - {717534000 10800 0 +03} + {701820000 10800 0 +04} + {701823600 14400 1 +04} + {717548400 10800 0 +03} {733273200 14400 1 +04} {748998000 10800 0 +03} {764722800 14400 1 +04} diff --git a/library/tzdata/Europe/Kaliningrad b/library/tzdata/Europe/Kaliningrad index 32d7aaa..85add82 100644 --- a/library/tzdata/Europe/Kaliningrad +++ b/library/tzdata/Europe/Kaliningrad @@ -42,8 +42,8 @@ set TZData(:Europe/Kaliningrad) { {654652800 7200 0 EET} {670377600 10800 1 EEST} {686102400 7200 0 EET} - {701816400 10800 1 EEST} - {717537600 7200 0 EET} + {701827200 10800 1 EEST} + {717552000 7200 0 EET} {733276800 10800 1 EEST} {749001600 7200 0 EET} {764726400 10800 1 EEST} diff --git a/library/tzdata/Europe/Kirov b/library/tzdata/Europe/Kirov new file mode 100644 index 0000000..82ffc9e --- /dev/null +++ b/library/tzdata/Europe/Kirov @@ -0,0 +1,70 @@ +# created by tools/tclZIC.tcl - do not edit + +set TZData(:Europe/Kirov) { + {-9223372036854775808 11928 0 LMT} + {-1593825528 10800 0 +03} + {-1247540400 14400 0 +05} + {354916800 18000 1 +05} + {370724400 14400 0 +04} + {386452800 18000 1 +05} + {402260400 14400 0 +04} + {417988800 18000 1 +05} + {433796400 14400 0 +04} + {449611200 18000 1 +05} + {465343200 14400 0 +04} + {481068000 18000 1 +05} + {496792800 14400 0 +04} + {512517600 18000 1 +05} + {528242400 14400 0 +04} + {543967200 18000 1 +05} + {559692000 14400 0 +04} + {575416800 18000 1 +05} + {591141600 14400 0 +04} + {606866400 10800 0 +04} + {606870000 14400 1 +04} + {622594800 10800 0 +03} + {638319600 14400 1 +04} + {654649200 10800 0 +03} + {670374000 14400 0 +04} + {701820000 10800 0 +04} + {701823600 14400 1 +04} + {717548400 10800 0 +03} + {733273200 14400 1 +04} + {748998000 10800 0 +03} + {764722800 14400 1 +04} + {780447600 10800 0 +03} + {796172400 14400 1 +04} + {811897200 10800 0 +03} + {828226800 14400 1 +04} + {846370800 10800 0 +03} + {859676400 14400 1 +04} + {877820400 10800 0 +03} + {891126000 14400 1 +04} + {909270000 10800 0 +03} + {922575600 14400 1 +04} + {941324400 10800 0 +03} + {954025200 14400 1 +04} + {972774000 10800 0 +03} + {985474800 14400 1 +04} + {1004223600 10800 0 +03} + {1017529200 14400 1 +04} + {1035673200 10800 0 +03} + {1048978800 14400 1 +04} + {1067122800 10800 0 +03} + {1080428400 14400 1 +04} + {1099177200 10800 0 +03} + {1111878000 14400 1 +04} + {1130626800 10800 0 +03} + {1143327600 14400 1 +04} + {1162076400 10800 0 +03} + {1174777200 14400 1 +04} + {1193526000 10800 0 +03} + {1206831600 14400 1 +04} + {1224975600 10800 0 +03} + {1238281200 14400 1 +04} + {1256425200 10800 0 +03} + {1269730800 14400 1 +04} + {1288479600 10800 0 +03} + {1301180400 14400 0 +04} + {1414274400 10800 0 +03} +} diff --git a/library/tzdata/Europe/Minsk b/library/tzdata/Europe/Minsk index 0acb4aa..5e47063 100644 --- a/library/tzdata/Europe/Minsk +++ b/library/tzdata/Europe/Minsk @@ -33,7 +33,8 @@ set TZData(:Europe/Minsk) { {670374000 10800 1 EEST} {686102400 7200 0 EET} {701820000 10800 1 EEST} - {717544800 7200 0 EET} + {717544800 10800 0 EEST} + {717552000 7200 0 EET} {733276800 10800 1 EEST} {749001600 7200 0 EET} {764726400 10800 1 EEST} diff --git a/library/tzdata/Europe/Moscow b/library/tzdata/Europe/Moscow index 686b3d0..1e2f45b 100644 --- a/library/tzdata/Europe/Moscow +++ b/library/tzdata/Europe/Moscow @@ -40,8 +40,8 @@ set TZData(:Europe/Moscow) { {670377600 10800 1 EEST} {686102400 7200 0 EET} {695779200 10800 0 MSD} - {701812800 14400 1 MSD} - {717534000 10800 0 MSK} + {701823600 14400 1 MSD} + {717548400 10800 0 MSK} {733273200 14400 1 MSD} {748998000 10800 0 MSK} {764722800 14400 1 MSD} diff --git a/library/tzdata/Europe/Samara b/library/tzdata/Europe/Samara index 47615de..08203c0 100644 --- a/library/tzdata/Europe/Samara +++ b/library/tzdata/Europe/Samara @@ -30,8 +30,8 @@ set TZData(:Europe/Samara) { {670377600 10800 1 EEST} {686102400 10800 0 SAMT} {687916800 14400 0 SAMT} - {701809200 18000 1 SAMST} - {717530400 14400 0 SAMT} + {701820000 18000 1 SAMST} + {717544800 14400 0 SAMT} {733269600 18000 1 SAMST} {748994400 14400 0 SAMT} {764719200 18000 1 SAMST} diff --git a/library/tzdata/Europe/Ulyanovsk b/library/tzdata/Europe/Ulyanovsk index b975622..d5c33b5 100644 --- a/library/tzdata/Europe/Ulyanovsk +++ b/library/tzdata/Europe/Ulyanovsk @@ -29,8 +29,8 @@ set TZData(:Europe/Ulyanovsk) { {670377600 10800 1 +03} {686102400 7200 0 +02} {695779200 10800 0 +04} - {701812800 14400 1 +04} - {717534000 10800 0 +03} + {701823600 14400 1 +04} + {717548400 10800 0 +03} {733273200 14400 1 +04} {748998000 10800 0 +03} {764722800 14400 1 +04} diff --git a/library/tzdata/Europe/Volgograd b/library/tzdata/Europe/Volgograd index ef33d4b..83996b0 100644 --- a/library/tzdata/Europe/Volgograd +++ b/library/tzdata/Europe/Volgograd @@ -28,8 +28,9 @@ set TZData(:Europe/Volgograd) { {638319600 14400 1 VOLST} {654649200 10800 0 VOLT} {670374000 14400 0 VOLT} - {701820000 14400 0 MSD} - {717534000 10800 0 MSK} + {701820000 10800 0 MSD} + {701823600 14400 1 MSD} + {717548400 10800 0 MSK} {733273200 14400 1 MSD} {748998000 10800 0 MSK} {764722800 14400 1 MSD} -- cgit v0.12 From 8be766f938d6042a4a05a1ddd6dcb4ec3b99f27b Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 29 Apr 2016 17:34:14 +0000 Subject: Refactor bytecode initialization machinery. --- generic/tclCompile.c | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 002b551..8665187 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -2735,6 +2735,29 @@ TclInitByteCodeObj( iPtr = envPtr->iPtr; + for (i = 0; i < numLitObjects; i++) { + if (objPtr == TclFetchLiteral(envPtr, i)) { + /* + * Prevent circular reference where the bytecode intrep of + * a value contains a literal which is that same value. + * If this is allowed to happen, refcount decrements may not + * reach zero, and memory may leak. Bugs 467523, 3357771 + * + * NOTE: [Bugs 3392070, 3389764] We make a copy based completely + * on the string value, and do not call Tcl_DuplicateObj() so we + * can be sure we do not have any lingering cycles hiding in + * the intrep. + */ + int numBytes; + const char *bytes = Tcl_GetStringFromObj(objPtr, &numBytes); + Tcl_Obj *copyPtr = Tcl_NewStringObj(bytes, numBytes); + + Tcl_IncrRefCount(copyPtr); + TclReleaseLiteral((Tcl_Interp *)iPtr, objPtr); + + envPtr->literalArrayPtr[i].objPtr = copyPtr; + } + } codeBytes = envPtr->codeNext - envPtr->codeStart; objArrayBytes = envPtr->literalArrayNext * sizeof(Tcl_Obj *); exceptArrayBytes = envPtr->exceptArrayNext * sizeof(ExceptionRange); @@ -2791,29 +2814,7 @@ TclInitByteCodeObj( p += TCL_ALIGN(codeBytes); /* align object array */ codePtr->objArrayPtr = (Tcl_Obj **) p; for (i = 0; i < numLitObjects; i++) { - Tcl_Obj *fetched = TclFetchLiteral(envPtr, i); - - if (objPtr == fetched) { - /* - * Prevent circular reference where the bytecode intrep of - * a value contains a literal which is that same value. - * If this is allowed to happen, refcount decrements may not - * reach zero, and memory may leak. Bugs 467523, 3357771 - * - * NOTE: [Bugs 3392070, 3389764] We make a copy based completely - * on the string value, and do not call Tcl_DuplicateObj() so we - * can be sure we do not have any lingering cycles hiding in - * the intrep. - */ - int numBytes; - const char *bytes = Tcl_GetStringFromObj(objPtr, &numBytes); - - codePtr->objArrayPtr[i] = Tcl_NewStringObj(bytes, numBytes); - Tcl_IncrRefCount(codePtr->objArrayPtr[i]); - TclReleaseLiteral((Tcl_Interp *)iPtr, objPtr); - } else { - codePtr->objArrayPtr[i] = fetched; - } + codePtr->objArrayPtr[i] = TclFetchLiteral(envPtr, i); } p += TCL_ALIGN(objArrayBytes); /* align exception range array */ -- cgit v0.12 From 272c398b78060d7d8b575bb5aa652f37aa08d666 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 29 Apr 2016 17:52:30 +0000 Subject: Tease apart the bytecode creation machinery from the Tcl_Obj intrep machinery. --- generic/tclCompile.c | 92 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 35 deletions(-) diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 8665187..8837f06 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -2709,33 +2709,14 @@ TclCompileNoOp( *---------------------------------------------------------------------- */ -void -TclInitByteCodeObj( - Tcl_Obj *objPtr, /* Points object that should be initialized, - * and whose string rep contains the source - * code. */ - register CompileEnv *envPtr)/* Points to the CompileEnv structure from - * which to create a ByteCode structure. */ +static void +PreventCycle( + Tcl_Obj *objPtr, + CompileEnv *envPtr) { - register ByteCode *codePtr; - size_t codeBytes, objArrayBytes, exceptArrayBytes, cmdLocBytes; - size_t auxDataArrayBytes, structureSize; - register unsigned char *p; -#ifdef TCL_COMPILE_DEBUG - unsigned char *nextPtr; -#endif - int numLitObjects = envPtr->literalArrayNext; - Namespace *namespacePtr; - int i, isNew; - Interp *iPtr; - - if (envPtr->iPtr == NULL) { - Tcl_Panic("TclInitByteCodeObj() called on uninitialized CompileEnv"); - } - - iPtr = envPtr->iPtr; + int i; - for (i = 0; i < numLitObjects; i++) { + for (i = 0; i < envPtr->literalArrayNext; i++) { if (objPtr == TclFetchLiteral(envPtr, i)) { /* * Prevent circular reference where the bytecode intrep of @@ -2753,11 +2734,36 @@ TclInitByteCodeObj( Tcl_Obj *copyPtr = Tcl_NewStringObj(bytes, numBytes); Tcl_IncrRefCount(copyPtr); - TclReleaseLiteral((Tcl_Interp *)iPtr, objPtr); + TclReleaseLiteral((Tcl_Interp *)envPtr->iPtr, objPtr); envPtr->literalArrayPtr[i].objPtr = copyPtr; } } +} + +static ByteCode * +TclInitByteCode( + register CompileEnv *envPtr)/* Points to the CompileEnv structure from + * which to create a ByteCode structure. */ +{ + register ByteCode *codePtr; + size_t codeBytes, objArrayBytes, exceptArrayBytes, cmdLocBytes; + size_t auxDataArrayBytes, structureSize; + register unsigned char *p; +#ifdef TCL_COMPILE_DEBUG + unsigned char *nextPtr; +#endif + int numLitObjects = envPtr->literalArrayNext; + Namespace *namespacePtr; + int i, isNew; + Interp *iPtr; + + if (envPtr->iPtr == NULL) { + Tcl_Panic("TclInitByteCodeObj() called on uninitialized CompileEnv"); + } + + iPtr = envPtr->iPtr; + codeBytes = envPtr->codeNext - envPtr->codeStart; objArrayBytes = envPtr->literalArrayNext * sizeof(Tcl_Obj *); exceptArrayBytes = envPtr->exceptArrayNext * sizeof(ExceptionRange); @@ -2857,15 +2863,6 @@ TclInitByteCodeObj( #endif /* TCL_COMPILE_STATS */ /* - * Free the old internal rep then convert the object to a bytecode object - * by making its internal rep point to the just compiled ByteCode. - */ - - TclFreeIntRep(objPtr); - objPtr->internalRep.twoPtrValue.ptr1 = codePtr; - objPtr->typePtr = &tclByteCodeType; - - /* * TIP #280. Associate the extended per-word line information with the * byte code object (internal rep), for use with the bc compiler. */ @@ -2878,6 +2875,31 @@ TclInitByteCodeObj( envPtr->iPtr = NULL; codePtr->localCachePtr = NULL; + return codePtr; +} + +void +TclInitByteCodeObj( + Tcl_Obj *objPtr, /* Points object that should be initialized, + * and whose string rep contains the source + * code. */ + register CompileEnv *envPtr)/* Points to the CompileEnv structure from + * which to create a ByteCode structure. */ +{ + ByteCode *codePtr; + + PreventCycle(objPtr, envPtr); + + codePtr = TclInitByteCode(envPtr); + + /* + * Free the old internal rep then convert the object to a bytecode object + * by making its internal rep point to the just compiled ByteCode. + */ + + TclFreeIntRep(objPtr); + objPtr->internalRep.twoPtrValue.ptr1 = codePtr; + objPtr->typePtr = &tclByteCodeType; } /* -- cgit v0.12 From 44deb5c463cd7905f01f7cb74ac29d0e9d90972a Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 29 Apr 2016 17:58:33 +0000 Subject: Make obj-free bytecode maker available to rest of compile-related files. --- generic/tclCompile.c | 3 ++- generic/tclCompile.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 8837f06..32a09b2 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -677,6 +677,7 @@ static void FreeSubstCodeInternalRep(Tcl_Obj *objPtr); static int GetCmdLocEncodingSize(CompileEnv *envPtr); static int IsCompactibleCompileEnv(Tcl_Interp *interp, CompileEnv *envPtr); +static void PreventCycle(Tcl_Obj *objPtr, CompileEnv *envPtr); #ifdef TCL_COMPILE_STATS static void RecordByteCodeStats(ByteCode *codePtr); #endif /* TCL_COMPILE_STATS */ @@ -2741,7 +2742,7 @@ PreventCycle( } } -static ByteCode * +ByteCode * TclInitByteCode( register CompileEnv *envPtr)/* Points to the CompileEnv structure from * which to create a ByteCode structure. */ diff --git a/generic/tclCompile.h b/generic/tclCompile.h index 86a9db0..af8d60f 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -1118,6 +1118,7 @@ MODULE_SCOPE int TclFixupForwardJump(CompileEnv *envPtr, int distThreshold); MODULE_SCOPE void TclFreeCompileEnv(CompileEnv *envPtr); MODULE_SCOPE void TclFreeJumpFixupArray(JumpFixupArray *fixupArrayPtr); +MODULE_SCOPE ByteCode * TclInitByteCode(CompileEnv *envPtr); MODULE_SCOPE void TclInitByteCodeObj(Tcl_Obj *objPtr, CompileEnv *envPtr); MODULE_SCOPE void TclInitCompileEnv(Tcl_Interp *interp, -- cgit v0.12 From 100542f06740e0120d51ef844f61d47b10ce39ef Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 29 Apr 2016 18:02:55 +0000 Subject: No longer need to create Tcl_Obj just to make some bytecode. --- generic/tclCompExpr.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 4390282..654666a 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -2181,7 +2181,6 @@ ExecConstantExprTree( CompileEnv *envPtr; ByteCode *byteCodePtr; int code; - Tcl_Obj *byteCodeObj = Tcl_NewObj(); NRE_callback *rootPtr = TOP_CB(interp); /* @@ -2195,14 +2194,12 @@ ExecConstantExprTree( CompileExprTree(interp, nodes, index, litObjvPtr, NULL, NULL, envPtr, 0 /* optimize */); TclEmitOpcode(INST_DONE, envPtr); - Tcl_IncrRefCount(byteCodeObj); - TclInitByteCodeObj(byteCodeObj, envPtr); + byteCodePtr = TclInitByteCode(envPtr); TclFreeCompileEnv(envPtr); TclStackFree(interp, envPtr); - byteCodePtr = byteCodeObj->internalRep.twoPtrValue.ptr1; TclNRExecuteByteCode(interp, byteCodePtr); code = TclNRRunCallbacks(interp, TCL_OK, rootPtr); - Tcl_DecrRefCount(byteCodeObj); + TclReleaseByteCode(byteCodePtr); return code; } -- cgit v0.12 From d41d08e1111a2353e98c6814043b6441e6e71b64 Mon Sep 17 00:00:00 2001 From: dgp Date: Fri, 29 Apr 2016 19:29:14 +0000 Subject: Parameterize TclInitByteCodeObj to callers sense of typePtr. --- generic/tclAssembly.c | 4 +--- generic/tclCompile.c | 12 ++++++------ generic/tclCompile.h | 4 ++-- generic/tclExecute.c | 4 +--- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c index 7db5d69..4ad31d2 100644 --- a/generic/tclAssembly.c +++ b/generic/tclAssembly.c @@ -891,15 +891,13 @@ CompileAssembleObj( */ TclEmitOpcode(INST_DONE, &compEnv); - TclInitByteCodeObj(objPtr, &compEnv); - objPtr->typePtr = &assembleCodeType; + codePtr = TclInitByteCodeObj(objPtr, &assembleCodeType, &compEnv); TclFreeCompileEnv(&compEnv); /* * Record the local variable context to which the bytecode pertains */ - codePtr = objPtr->internalRep.twoPtrValue.ptr1; if (iPtr->varFramePtr->localCachePtr) { codePtr->localCachePtr = iPtr->varFramePtr->localCachePtr; codePtr->localCachePtr->refCount++; diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 32a09b2..96b418c 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -868,7 +868,7 @@ TclSetByteCodeFromAny( #endif /*TCL_COMPILE_DEBUG*/ if (result == TCL_OK) { - TclInitByteCodeObj(objPtr, &compEnv); + (void) TclInitByteCodeObj(objPtr, &tclByteCodeType, &compEnv); #ifdef TCL_COMPILE_DEBUG if (tclTraceCompile >= 2) { TclPrintByteCodeObj(interp, objPtr); @@ -1322,11 +1322,9 @@ CompileSubstObj( TclSubstCompile(interp, bytes, numBytes, flags, 1, &compEnv); TclEmitOpcode(INST_DONE, &compEnv); - TclInitByteCodeObj(objPtr, &compEnv); - objPtr->typePtr = &substCodeType; + codePtr = TclInitByteCodeObj(objPtr, &substCodeType, &compEnv); TclFreeCompileEnv(&compEnv); - codePtr = objPtr->internalRep.twoPtrValue.ptr1; objPtr->internalRep.twoPtrValue.ptr1 = codePtr; objPtr->internalRep.twoPtrValue.ptr2 = INT2PTR(flags); if (iPtr->varFramePtr->localCachePtr) { @@ -2879,11 +2877,12 @@ TclInitByteCode( return codePtr; } -void +ByteCode * TclInitByteCodeObj( Tcl_Obj *objPtr, /* Points object that should be initialized, * and whose string rep contains the source * code. */ + const Tcl_ObjType *typePtr, register CompileEnv *envPtr)/* Points to the CompileEnv structure from * which to create a ByteCode structure. */ { @@ -2900,7 +2899,8 @@ TclInitByteCodeObj( TclFreeIntRep(objPtr); objPtr->internalRep.twoPtrValue.ptr1 = codePtr; - objPtr->typePtr = &tclByteCodeType; + objPtr->typePtr = typePtr; + return codePtr; } /* diff --git a/generic/tclCompile.h b/generic/tclCompile.h index af8d60f..f99c07c 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -1119,8 +1119,8 @@ MODULE_SCOPE int TclFixupForwardJump(CompileEnv *envPtr, MODULE_SCOPE void TclFreeCompileEnv(CompileEnv *envPtr); MODULE_SCOPE void TclFreeJumpFixupArray(JumpFixupArray *fixupArrayPtr); MODULE_SCOPE ByteCode * TclInitByteCode(CompileEnv *envPtr); -MODULE_SCOPE void TclInitByteCodeObj(Tcl_Obj *objPtr, - CompileEnv *envPtr); +MODULE_SCOPE ByteCode * TclInitByteCodeObj(Tcl_Obj *objPtr, + const Tcl_ObjType *typePtr, CompileEnv *envPtr); MODULE_SCOPE void TclInitCompileEnv(Tcl_Interp *interp, CompileEnv *envPtr, const char *string, int numBytes, const CmdFrame *invoker, int word); diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 2a2b951..cd28a92 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -1565,10 +1565,8 @@ CompileExprObj( */ TclEmitOpcode(INST_DONE, &compEnv); - TclInitByteCodeObj(objPtr, &compEnv); - objPtr->typePtr = &exprCodeType; + codePtr = TclInitByteCodeObj(objPtr, &exprCodeType, &compEnv); TclFreeCompileEnv(&compEnv); - codePtr = objPtr->internalRep.twoPtrValue.ptr1; if (iPtr->varFramePtr->localCachePtr) { codePtr->localCachePtr = iPtr->varFramePtr->localCachePtr; codePtr->localCachePtr->refCount++; -- cgit v0.12