{"push_id":2917273711,"size":28,"distinct_size":28,"ref":"refs/heads/preparePromotedStructs2","head":"176d87900be43dbf739cabba8ddd089d61be62dd","before":"4d3724fbbbf994543621de58647d8d68d9defe10","commits":[{"sha":"c4fa5cf9b7f8e42c1552b3a204387cf19086ffc7","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Create StructPromotionHelper.\n\nit will replace lvaStructPromotionInfo and methods that use it.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/c4fa5cf9b7f8e42c1552b3a204387cf19086ffc7"},{"sha":"a0167b72e72cbd85a7bb78e78201bae8129051b8","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Move requiresScratchVar from individual lvaStructPromotionInfo to global StructPromotionHelper.\n\nIt allows to make lvaStructPromotionInfo smaller and extract the check from the loop.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/a0167b72e72cbd85a7bb78e78201bae8129051b8"},{"sha":"54672c3edf910735ba8409d024f6b82648da5f13","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Create a local variable for `compHandle` in `lvaCanPromoteStructType`.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/54672c3edf910735ba8409d024f6b82648da5f13"},{"sha":"6d499bf8c6376a133a242e606f154b22024e7683","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Return result from `lvaCanPromoteStructType` as bool return value.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/6d499bf8c6376a133a242e606f154b22024e7683"},{"sha":"d60654995c284207961b5b8a0714b2792a25f6d2","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Replace `lvaCanPromoteStructType` with `structPromotionHelper.CanPromoteStructType`.\n\nMakes `lvaStructPromotionInfo` available globally that will be used later.\n\nAlso, it allows to memorize all analyzed struct types and does not waste type analyzing them again. Before we memorized only one previous type.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/d60654995c284207961b5b8a0714b2792a25f6d2"},{"sha":"f315452ab1f490aead8314ddbfcbdd50c77dca1d","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Return result from `lvaCanPromoteStructVar` as bool return value.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/f315452ab1f490aead8314ddbfcbdd50c77dca1d"},{"sha":"c6bdc54d9e85e3b55f119a938193393455dbd633","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Replace `lvaCanPromoteStructVar` with `structPromotionHelper.CanPromoteStructVar`.\n\nNote: this change makes `lvaStructPromotionInfo` type specific before it was used both for variables and types.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/c6bdc54d9e85e3b55f119a938193393455dbd633"},{"sha":"059787c029002d8dfa592e2c6b135fb29d3324a4","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Get rid of `bool shouldPromote;`  in `fgPromoteStructs`.\n\nIt makes codes straightforward and shows that we do not use `structPromotionInfo` before we initialize it.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/059787c029002d8dfa592e2c6b135fb29d3324a4"},{"sha":"fc1db0a4a2cfa7769d630ceb750a1a24cc7d61f3","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Rename `tooManyLocals` to `tooManyLocalsReported`.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/fc1db0a4a2cfa7769d630ceb750a1a24cc7d61f3"},{"sha":"7356d079cf9c8be9a129148eb4b1a8e886a45239","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Move `structPromotionInfo` declaration inside the loop.\n\nWe do not use it to memorize the previous iteration anymore, it was delegated to `structPromotionHelper`.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/7356d079cf9c8be9a129148eb4b1a8e886a45239"},{"sha":"91ce243d809c385c01c2823a17950a057ab23c15","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Initialize all fields in `lvaStructPromotionInfo` constructor.\n\nIt makes debugging easier.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/91ce243d809c385c01c2823a17950a057ab23c15"},{"sha":"2ba255f22fa5b976a3c5b820ea98f2c73915582b","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"change `StructPromotionInfoForTypeHndMap` to store pointers.\n\nIt works better when we need to sort fields.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/2ba255f22fa5b976a3c5b820ea98f2c73915582b"},{"sha":"40df827ef3226da68a08bd76af2bcb2fab1d34e8","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Replace `lvaShouldPromoteStructVar` with `StructPromotionHelper::ShouldPromoteStructVar`.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/40df827ef3226da68a08bd76af2bcb2fab1d34e8"},{"sha":"cb927652b6c7d54a92b106b4fd8fa177e4fe2f76","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Replace `lvaPromoteStructVar` with `StructPromotionHelper::PromoteStructVar`.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/cb927652b6c7d54a92b106b4fd8fa177e4fe2f76"},{"sha":"9f9568d8233467857c4181f552e1af23579d6563","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Replace `noway_assert` with plain `assert` in StructPromotionHelper.\n\nThe checks are straightforward now, so we can relax these asserts.\nFor example, `PromoteStructVar` is called only in one place under `CanPromoteStructVar` and `ShouldPromoteStructVar` conditions.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/9f9568d8233467857c4181f552e1af23579d6563"},{"sha":"c109b62c08ea17772595c4c975cb2f109fef7119","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Delete `typeHnd` from `lvaStructPromotionInfo`.\n\nThis field is no longer needed. Save space.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/c109b62c08ea17772595c4c975cb2f109fef7119"},{"sha":"9e0178f681fb589dfabf0a3966f493e3b6e2bb91","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Add some comments.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/9e0178f681fb589dfabf0a3966f493e3b6e2bb91"},{"sha":"3e2bafe39e3fbbdc5c5db1fb94116f3edba57aa4","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Delete unused local vars in `StructPromotionHelper::CanPromoteStructType`.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/3e2bafe39e3fbbdc5c5db1fb94116f3edba57aa4"},{"sha":"403b987fd861a50fa9ba5841baadaf188feb89d1","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Extract `StructPromotionHelper::SortFields`.\n\nWe need fields to be sorted only when we actually promote struct, so do not waste time when we reject it because `ShouldPromoteStructVar` says `No` or when we ask for inlining.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/403b987fd861a50fa9ba5841baadaf188feb89d1"},{"sha":"92d1981343126a1f9e9e4fba3969b12fdff58aa2","author":{"name":"Sergey Andreenko","email":"3aeb76463813b9a3be22a7d8cd86e0863ef930cc@microsoft.com"},"message":"Optimize setting of `structPromotionInfo->containsHoles`.\n\nUse the fact that we have already rejected structs with overlapping fields and can just check sum of fields sizes match structSize.","distinct":true,"url":"https://api.github.com/repos/sandreenko/coreclr/commits/92d1981343126a1f9e9e4fba3969b12fdff58aa2"}]}
{"actor":{"display_login":"sandreenko"}}