diff options
Diffstat (limited to 'runtime/interpreter/interpreter_switch_impl.cc')
-rw-r--r-- | runtime/interpreter/interpreter_switch_impl.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/runtime/interpreter/interpreter_switch_impl.cc b/runtime/interpreter/interpreter_switch_impl.cc index 2f0b5e9..5253e9d 100644 --- a/runtime/interpreter/interpreter_switch_impl.cc +++ b/runtime/interpreter/interpreter_switch_impl.cc @@ -166,6 +166,12 @@ static JValue ExecuteSwitchImpl(Thread* self, MethodHelper& mh, const DexFile::C case Instruction::RETURN_VOID: { PREAMBLE(); JValue result; + if (do_access_check) { + // 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. + ANDROID_MEMBAR_STORE(); + } if (UNLIKELY(self->TestAllFlags())) { CheckSuspend(self); } |