From 03dbc04d1d5a3bd62801989b16e994a9ed0dafb5 Mon Sep 17 00:00:00 2001 From: Ian Rogers Date: Mon, 2 Jun 2014 14:24:56 -0700 Subject: Make class status volatile. Discourage loads and stores from reordering around the status being updated. Bug: 15347354 Change-Id: Ice805cb834617747c8209e98a142d3e5c7585719 --- compiler/llvm/gbc_expander.cc | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'compiler/llvm') diff --git a/compiler/llvm/gbc_expander.cc b/compiler/llvm/gbc_expander.cc index 25c9b20514..f8dca66de0 100644 --- a/compiler/llvm/gbc_expander.cc +++ b/compiler/llvm/gbc_expander.cc @@ -1868,6 +1868,10 @@ llvm::Value* GBCExpanderPass::EmitLoadStaticStorage(uint32_t dex_pc, phi->addIncoming(storage_object_addr, block_check_init); phi->addIncoming(loaded_storage_object_addr, block_after_load_static); + + // Ensure load of status and load of value don't re-order. + irb_.CreateMemoryBarrier(art::kLoadLoad); + return phi; } -- cgit v1.2.3-59-g8ed1b