Harden test against JIT optimizations
authorJoseph Tremoulet <jotrem@microsoft.com>
Tue, 13 Sep 2016 17:01:15 +0000 (13:01 -0400)
committerJoseph Tremoulet <jotrem@microsoft.com>
Thu, 15 Sep 2016 15:40:52 +0000 (11:40 -0400)
commita03124dcc52ea9ac8eb2be960f80ff2cac70c350
treea67ab93a3451e053338b63fc8fa99b2ff41e6026
parentd7c9a3513fed11544d170dff66765c16ca93b530
Harden test against JIT optimizations

Declare static field `finalizerCompletedOnce` volatile -- this test has a
side-effect-free busy-loop which checks that static variable for a change it
expects a finalizer to make to it; this static field must be volatile to
ensure the jit doesn't hoist the load from the loop.

Call GC.KeepAlive on the objects constructed in the various allocation
loops in this test, to make sure that the entire allocation isn't
optimized away.

Commit migrated from https://github.com/dotnet/coreclr/commit/f6b070c69585761996778fa5228b07d0be26be57
src/coreclr/tests/src/GC/Scenarios/FinalizeTimeout/FinalizeTimeout.cs