Update g_highest_address and g_lowest_address in StompWriteBarrier(WriteBarrierOp...
authorEgor Chesakov <Egor.Chesakov@microsoft.com>
Thu, 24 May 2018 13:08:26 +0000 (06:08 -0700)
committerJan Vorlicek <janvorli@microsoft.com>
Thu, 24 May 2018 13:08:26 +0000 (15:08 +0200)
src/vm/gcenv.ee.cpp

index 5954b7b..4fb8dec 100644 (file)
@@ -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)
         {