summaryrefslogtreecommitdiff
path: root/src/vm/gcenv.ee.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/gcenv.ee.cpp')
-rw-r--r--src/vm/gcenv.ee.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/vm/gcenv.ee.cpp b/src/vm/gcenv.ee.cpp
index 63c4ffe..c384198 100644
--- a/src/vm/gcenv.ee.cpp
+++ b/src/vm/gcenv.ee.cpp
@@ -1325,10 +1325,13 @@ void GCToEEInterface::StompWriteBarrier(WriteBarrierParameters* args)
VolatileStore(&g_highest_address, args->highest_address);
::StompWriteBarrierResize(true, false);
- // g_ephemeral_low/high aren't needed for the write barrier stomp, but they
- // are needed in other places.
+ // StompWriteBarrierResize does not necessarily bash g_ephemeral_low
+ // usages, so we must do so here. This is particularly true on x86,
+ // where StompWriteBarrierResize will not bash g_ephemeral_low when
+ // called with the parameters (true, false), as it is above.
g_ephemeral_low = args->ephemeral_low;
g_ephemeral_high = args->ephemeral_high;
+ ::StompWriteBarrierEphemeral(true);
return;
case WriteBarrierOp::SwitchToWriteWatch:
#ifdef FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP