diff options
author | Hans Boehm <hboehm@google.com> | 2014-05-21 17:46:23 -0700 |
---|---|---|
committer | Hans Boehm <hboehm@google.com> | 2014-06-06 16:13:42 -0700 |
commit | 3035961cb41865b80b927546be0c708b6389cec6 (patch) | |
tree | 27ed39f92c013381d08c7ad51d311cb29be230dc /runtime/interpreter/interpreter_goto_table_impl.cc | |
parent | e21bf0099117b82963cdf7f95a1b8dabfcf29397 (diff) | |
download | android_art-3035961cb41865b80b927546be0c708b6389cec6.tar.gz android_art-3035961cb41865b80b927546be0c708b6389cec6.tar.bz2 android_art-3035961cb41865b80b927546be0c708b6389cec6.zip |
Clean up and augment Atomic class. Replace QuasiAtomic MemBars.
Add a number of missing C++11 operations to Atomic class.
Invoke the 64 bit routines in QuasiAtomic when necessary.
Replace QuasiAtomic membars with fences that correspond to C++11 fences.
QuasiAtomic was moved to the top of the file. Only fence implementations
actually changed.
This replaces some buggy uses of MembarStoreStore, as reported
in b/14685856 .
Avoid some redundant fences for long volatile operations.
Incompletely converts low-level memory access operations to Atomic.
Change-Id: Iea828431a0cea46540eb74fcaa02071cab6fdcda
Diffstat (limited to 'runtime/interpreter/interpreter_goto_table_impl.cc')
-rw-r--r-- | runtime/interpreter/interpreter_goto_table_impl.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/runtime/interpreter/interpreter_goto_table_impl.cc b/runtime/interpreter/interpreter_goto_table_impl.cc index 99153c8498..623d9c34a0 100644 --- a/runtime/interpreter/interpreter_goto_table_impl.cc +++ b/runtime/interpreter/interpreter_goto_table_impl.cc @@ -247,7 +247,7 @@ JValue ExecuteGotoImpl(Thread* self, MethodHelper& mh, const DexFile::CodeItem* // If access checks are required then the dex-to-dex compiler and analysis of // whether the class has final fields hasn't been performed. Conservatively // perform the memory barrier now. - QuasiAtomic::MembarStoreLoad(); + QuasiAtomic::ThreadFenceForConstructor(); } if (UNLIKELY(self->TestAllFlags())) { CheckSuspend(self); @@ -266,7 +266,7 @@ JValue ExecuteGotoImpl(Thread* self, MethodHelper& mh, const DexFile::CodeItem* HANDLE_INSTRUCTION_END(); HANDLE_INSTRUCTION_START(RETURN_VOID_BARRIER) { - QuasiAtomic::MembarStoreLoad(); + QuasiAtomic::ThreadFenceForConstructor(); JValue result; if (UNLIKELY(self->TestAllFlags())) { CheckSuspend(self); |