[0.36.0] Allow allocationFence to be reenabled by Local Flush Elimination #16552
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Flow Sensitive Escape Analysis will mark an
allocationFence
withomitSync
set to true if it was needed by a single allocation that ended up being stack allocated.On a subsequent pass of Escape Analysis, Local Flush Elimination might decide an
allocationFence
is needed at the same spot for another object allocation. An assertion inTR_LocalFlushElimination::examineNode
expects any existingallocationFence
that it finds to have itsomitSync
set to false, which didn't account for the possibility that it might find one that had previously been disabled.Fixed the problem by removing the assertion and allowing the
allocationFence
to be reactivated for the second object allocation.Also added more information to some trace messages.
This pull request delivers the change from pull request #16547 to the v0.36.0-release branch.