summaryrefslogtreecommitdiff
path: root/compiler/utils/jni_macro_assembler.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2023-12-13 10:03:05 +0000
committer VladimĂ­r Marko <vmarko@google.com> 2023-12-14 14:43:12 +0000
commitd0a15c3de2867b2f566831307da1cd51b5957a62 (patch)
tree6befbdf4c7d0935681ef701905cb367d9d260e2a /compiler/utils/jni_macro_assembler.cc
parentb1bd3729fcb010b9f2f7d7498ee1a75a71132e0c (diff)
riscv64: Fix wrong sign-extension for references.
Test: Modify kPreferredAllocSpaceBegin = 0x90000000, then testrunner.py --target --64 --ndebug --optimizing Bug: 283082089 Change-Id: Ifb82d616a0d9664a2e7f5f96a1a79ddce5862cdf
Diffstat (limited to 'compiler/utils/jni_macro_assembler.cc')
-rw-r--r--compiler/utils/jni_macro_assembler.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/utils/jni_macro_assembler.cc b/compiler/utils/jni_macro_assembler.cc
index dc7ec60032..7a90a46f51 100644
--- a/compiler/utils/jni_macro_assembler.cc
+++ b/compiler/utils/jni_macro_assembler.cc
@@ -38,6 +38,7 @@
#include "base/globals.h"
#include "base/memory_region.h"
#include "gc_root.h"
+#include "stack_reference.h"
namespace art HIDDEN {
@@ -115,4 +116,17 @@ void JNIMacroAssembler<PointerSize::k64>::LoadGcRootWithoutReadBarrier(ManagedRe
ManagedRegister base,
MemberOffset offs);
+template <PointerSize kPointerSize>
+void JNIMacroAssembler<kPointerSize>::LoadStackReference(ManagedRegister dest, FrameOffset offs) {
+ static_assert(sizeof(uint32_t) == sizeof(StackReference<mirror::Object>));
+ Load(dest, offs, sizeof(uint32_t));
+}
+
+template
+void JNIMacroAssembler<PointerSize::k32>::LoadStackReference(ManagedRegister dest,
+ FrameOffset offs);
+template
+void JNIMacroAssembler<PointerSize::k64>::LoadStackReference(ManagedRegister dest,
+ FrameOffset offs);
+
} // namespace art