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:
Vladimir Kozlov 2011-02-10 19:34:48 -08:00
parent 5d3ab72d1d
commit c13062093b

View File

@ -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) {