diff options
Diffstat (limited to 'compiler/utils/jni_macro_assembler.cc')
| -rw-r--r-- | compiler/utils/jni_macro_assembler.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/utils/jni_macro_assembler.cc b/compiler/utils/jni_macro_assembler.cc index a0230e37fe..dc7ec60032 100644 --- a/compiler/utils/jni_macro_assembler.cc +++ b/compiler/utils/jni_macro_assembler.cc @@ -37,6 +37,7 @@ #include "base/casts.h" #include "base/globals.h" #include "base/memory_region.h" +#include "gc_root.h" namespace art HIDDEN { @@ -97,4 +98,21 @@ MacroAsm64UniquePtr JNIMacroAssembler<PointerSize::k64>::Create( } } +template <PointerSize kPointerSize> +void JNIMacroAssembler<kPointerSize>::LoadGcRootWithoutReadBarrier(ManagedRegister dest, + ManagedRegister base, + MemberOffset offs) { + static_assert(sizeof(uint32_t) == sizeof(GcRoot<mirror::Object>)); + Load(dest, base, offs, sizeof(uint32_t)); +} + +template +void JNIMacroAssembler<PointerSize::k32>::LoadGcRootWithoutReadBarrier(ManagedRegister dest, + ManagedRegister base, + MemberOffset offs); +template +void JNIMacroAssembler<PointerSize::k64>::LoadGcRootWithoutReadBarrier(ManagedRegister dest, + ManagedRegister base, + MemberOffset offs); + } // namespace art |