[aarch64-port-dev ] Add frame anchor fences.
Andrew Haley
aph at redhat.com
Thu Aug 21 16:02:21 UTC 2014
We need memory barriers when manipulating frame anchors.
Andrew.
changeset: 6876:a01a5c5cdc10
user: aph
date: Thu Aug 21 11:58:03 2014 -0400
summary: Add frame anchor fences.
diff -r 16078783ccb8 -r a01a5c5cdc10 src/cpu/aarch64/vm/javaFrameAnchor_aarch64.hpp
--- a/src/cpu/aarch64/vm/javaFrameAnchor_aarch64.hpp Thu Aug 21 11:56:52 2014 -0400
+++ b/src/cpu/aarch64/vm/javaFrameAnchor_aarch64.hpp Thu Aug 21 11:58:03 2014 -0400
@@ -42,7 +42,7 @@
void clear(void) {
// clearing _last_Java_sp must be first
_last_Java_sp = NULL;
- // fence?
+ OrderAccess::release();
_last_Java_fp = NULL;
_last_Java_pc = NULL;
}
@@ -55,9 +55,10 @@
// To act like previous version (pd_cache_state) don't NULL _last_Java_sp
// unless the value is changing
//
- if (_last_Java_sp != src->_last_Java_sp)
+ if (_last_Java_sp != src->_last_Java_sp) {
_last_Java_sp = NULL;
-
+ OrderAccess::release();
+ }
_last_Java_fp = src->_last_Java_fp;
_last_Java_pc = src->_last_Java_pc;
// Must be last so profiler will always see valid frame if has_last_frame() is true
@@ -79,10 +80,10 @@
public:
- void set_last_Java_sp(intptr_t* sp) { _last_Java_sp = sp; }
+ void set_last_Java_sp(intptr_t* sp) { _last_Java_sp = sp; OrderAccess::release(); }
intptr_t* last_Java_fp(void) { return _last_Java_fp; }
// Assert (last_Java_sp == NULL || fp == NULL)
- void set_last_Java_fp(intptr_t* fp) { _last_Java_fp = fp; }
+ void set_last_Java_fp(intptr_t* fp) { OrderAccess::release(); _last_Java_fp = fp; }
#endif // CPU_AARCH64_VM_JAVAFRAMEANCHOR_AARCH64_HPP
More information about the aarch64-port-dev
mailing list