7018849: 7017124 fix broke VM build on some platforms
Use atomic load and store in inc_stat_counter() only on SPARC and X86. Reviewed-by: iveresov
This commit is contained in:
parent
5d3ab72d1d
commit
c13062093b
@ -32,12 +32,20 @@
|
||||
void trace_heap_malloc(size_t size, const char* name, void *p);
|
||||
void trace_heap_free(void *p);
|
||||
|
||||
#ifndef PRODUCT
|
||||
// Increments unsigned long value for statistics (not atomic on MP).
|
||||
inline void inc_stat_counter(volatile julong* dest, julong add_value) {
|
||||
#if defined(SPARC) || defined(X86)
|
||||
// Sparc and X86 have atomic jlong (8 bytes) instructions
|
||||
julong value = Atomic::load((volatile jlong*)dest);
|
||||
value += add_value;
|
||||
Atomic::store((jlong)value, (volatile jlong*)dest);
|
||||
#else
|
||||
// possible word-tearing during load/store
|
||||
*dest += add_value;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
// allocate using malloc; will fail if no memory available
|
||||
inline char* AllocateHeap(size_t size, const char* name = NULL) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user