{"push_id":949614800,"size":216,"distinct_size":1,"ref":"refs/heads/FinalizerShutdown","head":"23083d2ca0484e412d212aca2b3c7e5f1f2f9eb6","before":"cfce982b88b62263b99af1acc27a90d15705f544","commits":[{"sha":"d10d1838b3c3216e2ef37de780ce2bb57bc7dfd5","author":{"email":"fcdfac3b1db87e05659a9f2db667e89dfcd46150@pilin.name","name":"Mikhail Pilin"},"message":"Fix clr!Thread::GetStaticFieldAddrNoCreate() to avoid returning data offset (0x4) instead of NULL for thread static fields when fields are a structure. The issue appears only when clr!MethodTable::GetGCThreadStaticsBasePointer() returns the pointer to the element of static object array and the element is zero. This bug was detected in desktop CLR v4.6.00079 x86/x64, but also present in CoreCLR.\n\nstruct DataCollector\n{\n  [ThreadStatic]\n  static DataCollector ThreadInstance;\n  ...\n}\n\nP.S. Detailed information about this issue is in JetBrains issue tracker: https://youtrack.jetbrains.com/issue/DMRY-2965","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/d10d1838b3c3216e2ef37de780ce2bb57bc7dfd5"},{"sha":"678f58bb9304dee3b98ac58816b456e0ba75d8e9","author":{"email":"3c99c16f55e6643c921f19ffc2b4cf154afe9730@microsoft.com","name":"Nate Amundson"},"message":"Update Linux instructions for Debian\n\nDebian requires a second package repository for libgdiplus.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/678f58bb9304dee3b98ac58816b456e0ba75d8e9"},{"sha":"7ff07ca57025fe1a6fbd3eb8f2c3961c6abe03de","author":{"email":"69a47d9190b00e88484370f7bdccd9173c9239da@justinvp.com","name":"Justin Van Patten"},"message":"Remove redundant internal Array.FunctorComparer<T> type\n\nInstead, use the public Comparer<T>.Create API, which has its own\ninternal type to adapt a Comparison<T> delegate as IComparer<T>.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/7ff07ca57025fe1a6fbd3eb8f2c3961c6abe03de"},{"sha":"8c82dd5428bdab80ce2f1a0803747c2406b9f178","author":{"email":"1268f4a162a5c7e640bb3e2686b9a6c242fd587d@microsoft.com","name":"Matt Ellis"},"message":"Fast path IndexOf and variants for ASCII\n\nIn ICU doing any sort of index of operation (which includes Prefix and\nSuffix checking) is relatively expensive. ICU ends up doing a fair\namount of work and allocations in order to construct a searcher object\nwhich could be reused, but our APIs are not amenable towards working in\nthis manner.\n\nHowever, for some cultures we can often fast path ASCII searches when we\nknow that ASCII and Ordinal comparisions are the same, as is the case\nfor both Invariant and en-US.\n\nThis change has CompareInfo hold some additional state about a locale to\ndecide if we can do this optimiztion and then wires it up to IndexOf,\nLastIndexOf, IsPrefix and IsSuffix.\n\nIn the future, we can try to extend the set of allowable cultures that\nwe preform this optimization on by coming up with better checks on when\nit is safe to preform this transformation.\n\nToday, this optimization does not apply when IgnoreSymbols is set,\nbecause we would need to blank some ASCII symbol characters. If this\nends up being a common operation, we could consider having ordinal\nimplementations that also ignore symbols.\n\nThis represents the best that we can do for dotnet/corefx#3672. It gets\nus back to where we were before for many common real world cases.\n\nFixes dotnet/corefx#3672.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/8c82dd5428bdab80ce2f1a0803747c2406b9f178"},{"sha":"e251739f011163c2ce4ba536acd3d0434f3ffd6e","author":{"email":"0860b8a6340f342d485aedfa6c3a5e66d61d0e15@microsoft.com","name":"sivarv"},"message":"For the repro case the method being compiled is a generic method\nwhose generic context is derived from thisptr.  For this reason JIT\nis asked to keep thisptr alive and report in gc-info.  For such\nmethods JIT, caches thisptr to a stack slot in prolog and that\nstack slot gets reported in gc-info.\n\nDue to tail call loop optimization, the recursive method call at the end\nis converted into a loop.  This transformation assigns all the arguments\nto temps and temps back to incoming parameters of the method and finally\nbranches to the first basic block (see fgMorphRecursiveFastTailCallIntoLoop()).\nThis will leads to the following basic block\n\ntmp = GT_INDIR(thisptr+24)\nthisptr = tmp\n\nThat is thisptr is changing while looping.  But the thisptr stores in\ncached stack slot is not updated.  So potentially there is a mismatch\nin generic context reported in gc-info to VM and the one used within\nthe method body.\n\nThe same issue exists in case of methods that have generic context\npassed in a hidden argument instead of derived from thisptr.\n\nFix:\nFor now disabling tail call loop optimization for methods that need generic\ncontext till we the above mentioned issue.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/e251739f011163c2ce4ba536acd3d0434f3ffd6e"},{"sha":"b5dbe9caef01ee5ccb2ee9a6dfac9fb177669e81","author":{"email":"6566d4ac644d552ecc4d7a106c3806f21b7ba0aa@microsoft.com","name":"Pat Gavlin"},"message":"Add a script to build RyuJit packages.\n\nThis will be used to build and publish these packages.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/b5dbe9caef01ee5ccb2ee9a6dfac9fb177669e81"},{"sha":"6a659231603205bfc24e4428f1edd003c786613f","author":{"email":"0b25057bc7b68bd418a09f6f1a8c477e8d42892f@microsoft.com","name":"Brian Sullivan"},"message":"Fix x86chk build break:\n\nndp\\clr\\src\\debug\\ee\\debugger.h(1117): error C2220: warning treated as error - no 'object' file generated\nndp\\clr\\src\\debug\\ee\\debugger.h(1117): warning C4324: 'DebuggerHeapExecutableMemoryChunk' : structure was padded due to __declspec(align())\n\n[tfs-changeset: 1565087]","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/6a659231603205bfc24e4428f1edd003c786613f"},{"sha":"ff05597e5a09e0b5a25adb45c68c5deb392bdd03","author":{"email":"fb7deaa9e792809fc3553a64020838ad5aa0b736@microsoft.com","name":"Rahul Kumar"},"message":"Add OSS license headers to all new files in github\n\n[tfs-changeset: 1565108]","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/ff05597e5a09e0b5a25adb45c68c5deb392bdd03"},{"sha":"1e5bae96d5d96ad003d42a0f15bd8584af61802e","author":{"email":"ec80f5690620d23ab137502f24165195009d9466@microsoft.com","name":"Hongtao Yu"},"message":"Fix for bug 2353 Assertion Failure 'nextStmtExpr->gtOper == GT_RETURN' in RetBufferBug:Tailaller() in morph.cpp line 6671.\n\nThe change fixes a bug in importing POP instruction where a copy between a tempvar and the return value of a tail call is misgenerated for Unix with enregisterable struct return values.\n\nThe change also fixes a bug of using GenTree::CopyFrom in fMorphInline where the dst node is a child of the src node.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/1e5bae96d5d96ad003d42a0f15bd8584af61802e"},{"sha":"891b2aa2b1c65ff157a840c3462fa6d007f2dac9","author":{"email":"aa34124753128a778aeec27fbba9844a037e1b54@microsoft.com","name":"Sergiy Kuryata"},"message":"Enable the fPIE compiler option for executables in the coreclr repo on Unix platforms","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/891b2aa2b1c65ff157a840c3462fa6d007f2dac9"},{"sha":"a1cbc293fe66e33fbb815b018c5f3e5da76a7dfc","author":{"email":"d5217de2cb6752de988d48d59f950ae57a90ca04@microsoft.com","name":"Aditya Mandaleeka"},"message":"Add hardware exception handling back to Read/WriteProcessMemory","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/a1cbc293fe66e33fbb815b018c5f3e5da76a7dfc"},{"sha":"e812fab833b5c3ba22229953c29f1c922b9d6452","author":{"email":"0b25057bc7b68bd418a09f6f1a8c477e8d42892f@microsoft.com","name":"Brian Sullivan"},"message":"Fix the frankenjit test execution failures\n\nThe frankenjit is the new RyuJit frontend minus the rationalize phase and the legacy x86 backend.\nIt is still used internally for testing purposed and it was broken with the recent cleanup of liveness.\nThis change pust back the old method that handled GT_QMARK nodes. It is renamed to\nfgLegacyPerStatementLocalVarLiveness and it is moved into codegenlegacy.cpp.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/e812fab833b5c3ba22229953c29f1c922b9d6452"},{"sha":"fc698bcfefbb59210dd3a75e8af821274c5ad4ce","author":{"email":"4d7b62f37874a0e0e9bb9c3c1eb77ca6f8b899fd@microsoft.com","name":"Matt Mitchell"},"message":"Add ILAsm roundtrip testing\n\nRefactor pri1 and default testing into scenarios","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/fc698bcfefbb59210dd3a75e8af821274c5ad4ce"},{"sha":"183790c589146e0f08988b96f83e9545901fe963","author":{"email":"4d7b62f37874a0e0e9bb9c3c1eb77ca6f8b899fd@microsoft.com","name":"Matt Mitchell"},"message":"Merge pull request #2564 from mmitche/add-ildasm-roundtrip\n\nAdd ildasm roundtrip","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/183790c589146e0f08988b96f83e9545901fe963"},{"sha":"3da3c24dce2c64193b9b9823c8e2a7fc80060189","author":{"email":"c457b3e5195ce3a91c472dc392bcc90fb508bb62@microsoft.com","name":"Jan Vorlicek"},"message":"Make time measurement in PAL threading tests more precise\n\nThis change replaces GetTickCount by measurement using QueryPerformanceCounter.\nThis is an attempt to fix stability of bunch of threading tests that were\nfailing randomly due to large error margin of the GetTickCount on Debian.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/3da3c24dce2c64193b9b9823c8e2a7fc80060189"},{"sha":"0424e1a641f33a20a46067708b8c070de2f5aec3","author":{"email":"c457b3e5195ce3a91c472dc392bcc90fb508bb62@microsoft.com","name":"Jan Vorlicek"},"message":"Improve stack limit checking precision\n\nThis change improves the precision of checking whether an address is in stack limits\nfor cases where ulimit -s is set to unlimited and the stack limit is checked for the\ncurrent thread. It uses current SP instead of the cached stack limit, since the OS\nis free to move the stack limit up during the process runtime and the cached value\nreflects the initial stack limit.","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/0424e1a641f33a20a46067708b8c070de2f5aec3"},{"sha":"1686ca029a0d88a32afce7848aaedd808e8f1e73","author":{"email":"3c99c16f55e6643c921f19ffc2b4cf154afe9730@microsoft.com","name":"Nate Amundson"},"message":"Merge pull request #2566 from dotnet/UpdateDocDebian\n\nUpdate Linux instructions for Debian","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/1686ca029a0d88a32afce7848aaedd808e8f1e73"},{"sha":"2fecc16df71261299d892ada327c7212b7ea367d","author":{"email":"4d7b62f37874a0e0e9bb9c3c1eb77ca6f8b899fd@microsoft.com","name":"Matt Mitchell"},"message":"Add checked build jobs to Jenkins\n\nInitially checked will only run on commits.  Once verification is completed, checked will replace release for most testing","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/2fecc16df71261299d892ada327c7212b7ea367d"},{"sha":"51f7499c9261b0111ff75d1387b5350c1249f4bb","author":{"email":"ed926daee0ba13048dd3ad4ece9564359edcaf42@comcast.net","name":"William Godbe"},"message":"Enable server GC for Ubuntu test runs for PRs in CI","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/51f7499c9261b0111ff75d1387b5350c1249f4bb"},{"sha":"b60d16764b2e2f5b952746cb727a3dda24506c22","author":{"email":"0b25057bc7b68bd418a09f6f1a8c477e8d42892f@microsoft.com","name":"Brian Sullivan"},"message":"Merge pull request #2657 from briansull/fix-legacy\n\n Fix the legacy frankenjit test execution failures","distinct":false,"url":"https://api.github.com/repos/kouvel/coreclr/commits/b60d16764b2e2f5b952746cb727a3dda24506c22"}]}