[interp] Add MINT_MONO_MEMORY_BARRIER.
authorAlex Rønne Petersen <alexrp@xamarin.com>
Tue, 20 Jun 2017 22:09:41 +0000 (00:09 +0200)
committerBernhard Urban <bernhard.urban@xamarin.com>
Wed, 21 Jun 2017 15:26:25 +0000 (17:26 +0200)
mono/mini/interp/interp.c
mono/mini/interp/mintops.def
mono/mini/interp/transform.c

index c720d786dc1ab69312bac28bb965f1ea4145e060..14a0908289b5e36f166246fd7e30e9e8c07d0fe7 100644 (file)
@@ -4502,6 +4502,11 @@ array_constructed:
                        ip += 3;
                        MINT_IN_BREAK;
                }
+               MINT_IN_CASE(MINT_MONO_MEMORY_BARRIER) {
+                       ++ip;
+                       mono_memory_barrier ();
+                       MINT_IN_BREAK;
+               }
                MINT_IN_CASE(MINT_MONO_JIT_ATTACH) {
                        ++ip;
 
index d243cc68667d3800ff1f065e13b692c524172cda..331ec1671cc16bcdf577f7bceed14ae35505f53d 100644 (file)
@@ -516,6 +516,7 @@ OPDEF(MINT_MONO_NEWOBJ, "mono_newobj", 2, MintOpClassToken)
 OPDEF(MINT_MONO_RETOBJ, "mono_retobj", 1, MintOpNoArgs)
 OPDEF(MINT_MONO_FREE, "mono_free", 1, MintOpNoArgs)
 OPDEF(MINT_MONO_ATOMIC_STORE_I4, "mono_atomic.store.i4", 1, MintOpNoArgs)
+OPDEF(MINT_MONO_MEMORY_BARRIER, "mono_memory_barrier", 1, MintOpNoArgs)
 OPDEF(MINT_MONO_JIT_ATTACH, "mono_jit_attach", 1, MintOpNoArgs)
 OPDEF(MINT_MONO_JIT_DETACH, "mono_jit_detach", 1, MintOpNoArgs)
 
index 113a086d3b4a0041f0a5e280d185c9b967abbd08..756d29fe5704c598936e7bc5083bab2247f8c243 100644 (file)
@@ -3540,6 +3540,10 @@ generate (MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start, Mo
                                PUSH_TYPE (&td, STACK_TYPE_MP, NULL);
                                ++td.ip;
                                break;
+                       case CEE_MONO_MEMORY_BARRIER:
+                               ADD_CODE (&td, MINT_MONO_MEMORY_BARRIER);
+                               ++td.ip;
+                               break;
                        case CEE_MONO_JIT_ATTACH:
                                ADD_CODE (&td, MINT_MONO_JIT_ATTACH);
                                ++td.ip;