summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgor Chesakov <Egor.Chesakov@microsoft.com>2018-05-24 06:08:26 -0700
committerRuss Keldorph <russ.keldorph@microsoft.com>2018-05-31 15:25:05 -0700
commit88db627a97d91acce0638ed195072080089b9ff1 (patch)
treedcc4145052df1ea2b069b6fde9c404fbb8a378e6
parent0ea5fc4456a859a1009b05d0949d3d878b383e9d (diff)
downloadcoreclr-88db627a97d91acce0638ed195072080089b9ff1.tar.gz
coreclr-88db627a97d91acce0638ed195072080089b9ff1.tar.bz2
coreclr-88db627a97d91acce0638ed195072080089b9ff1.zip
Update g_highest_address and g_lowest_address in StompWriteBarrier(WriteBarrierOp::StompResize) on ARM (#18107)
-rw-r--r--src/vm/gcenv.ee.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/vm/gcenv.ee.cpp b/src/vm/gcenv.ee.cpp
index 5954b7b00c..4fb8dec638 100644
--- a/src/vm/gcenv.ee.cpp
+++ b/src/vm/gcenv.ee.cpp
@@ -879,11 +879,18 @@ void GCToEEInterface::StompWriteBarrier(WriteBarrierParameters* args)
g_lowest_address = args->lowest_address;
VolatileStore(&g_highest_address, args->highest_address);
-#if defined(_ARM64_)
+#if defined(_ARM64_) || defined(_ARM_)
// Need to reupdate for changes to g_highest_address g_lowest_address
is_runtime_suspended = (stompWBCompleteActions & SWB_EE_RESTART) || args->is_runtime_suspended;
stompWBCompleteActions |= ::StompWriteBarrierResize(is_runtime_suspended, args->requires_upper_bounds_check);
+#ifdef _ARM_
+ if (stompWBCompleteActions & SWB_ICACHE_FLUSH)
+ {
+ ::FlushWriteBarrierInstructionCache();
+ }
+#endif
+
is_runtime_suspended = (stompWBCompleteActions & SWB_EE_RESTART) || args->is_runtime_suspended;
if(!is_runtime_suspended)
{