summaryrefslogtreecommitdiffstats
path: root/runtime/arch/arm64
diff options
context:
space:
mode:
authorHiroshi Yamauchi <yamauchi@google.com>2014-07-14 13:00:14 -0700
committerHiroshi Yamauchi <yamauchi@google.com>2014-07-14 13:00:14 -0700
commitab088118d33caafb00815ab72ac0fd7374169f64 (patch)
tree9ca1473bb6d4e896f8b8d5c19341dcba1ad37cd5 /runtime/arch/arm64
parente8b8086388159be5fecb23ae6185e70f3dfb5da6 (diff)
downloadart-ab088118d33caafb00815ab72ac0fd7374169f64.tar.gz
art-ab088118d33caafb00815ab72ac0fd7374169f64.tar.bz2
art-ab088118d33caafb00815ab72ac0fd7374169f64.zip
Add read barriers for the roots in Runtime.
Bug: 12687968 Change-Id: If26518a8251702cfe4d5cd7d1f50e80e342704cf
Diffstat (limited to 'runtime/arch/arm64')
-rw-r--r--runtime/arch/arm64/asm_support_arm64.h1
-rw-r--r--runtime/arch/arm64/quick_entrypoints_arm64.S3
2 files changed, 4 insertions, 0 deletions
diff --git a/runtime/arch/arm64/asm_support_arm64.h b/runtime/arch/arm64/asm_support_arm64.h
index 422e20cf44..f353408baa 100644
--- a/runtime/arch/arm64/asm_support_arm64.h
+++ b/runtime/arch/arm64/asm_support_arm64.h
@@ -21,6 +21,7 @@
// TODO Thread offsets need to be checked when on Aarch64.
+// Note: these callee save methods loads require read barriers.
// Offset of field Runtime::callee_save_methods_[kSaveAll]
#define RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET 0
// Offset of field Runtime::callee_save_methods_[kRefsOnly]
diff --git a/runtime/arch/arm64/quick_entrypoints_arm64.S b/runtime/arch/arm64/quick_entrypoints_arm64.S
index 7907b6ee13..2201b55849 100644
--- a/runtime/arch/arm64/quick_entrypoints_arm64.S
+++ b/runtime/arch/arm64/quick_entrypoints_arm64.S
@@ -31,6 +31,7 @@
ldr x9,[x9] // x9 = & (art::Runtime * art::Runtime.instance_) .
// x9 = (ArtMethod*) Runtime.instance_.callee_save_methods[kRefAndArgs] .
+ THIS_LOAD_REQUIRES_READ_BARRIER
ldr x9, [x9, RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET ]
sub sp, sp, #368
@@ -109,6 +110,7 @@
ldr x9,[x9] // x9 = & (art::Runtime * art::Runtime.instance_) .
// x9 = (ArtMethod*) Runtime.instance_.callee_save_methods[kRefAndArgs] .
+ THIS_LOAD_REQUIRES_READ_BARRIER
ldr x9, [x9, RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET ]
sub sp, sp, #176
@@ -280,6 +282,7 @@
ldr x9,[x9] // x9 = & (art::Runtime * art::Runtime.instance_) .
// x9 = (ArtMethod*) Runtime.instance_.callee_save_methods[kRefAndArgs] .
+ THIS_LOAD_REQUIRES_READ_BARRIER
ldr x9, [x9, RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET ]
SETUP_REF_AND_ARGS_CALLEE_SAVE_FRAME_INTERNAL