summaryrefslogtreecommitdiff
path: root/compiler/utils/jni_macro_assembler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/utils/jni_macro_assembler.cc')
-rw-r--r--compiler/utils/jni_macro_assembler.cc18
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