Mercurial > hg > graal-compiler
comparison src/share/vm/memory/allocation.inline.hpp @ 2255:bf29934d2f4f
7018849: 7017124 fix broke VM build on some platforms
Summary: Use atomic load and store in inc_stat_counter() only on SPARC and X86.
Reviewed-by: iveresov
author | kvn |
---|---|
date | Thu, 10 Feb 2011 19:34:48 -0800 |
parents | f7de3327c683 |
children | d2a62e0f25eb |
comparison
equal
deleted
inserted
replaced
2254:ab42c7e1cf83 | 2255:bf29934d2f4f |
---|---|
30 // Explicit C-heap memory management | 30 // Explicit C-heap memory management |
31 | 31 |
32 void trace_heap_malloc(size_t size, const char* name, void *p); | 32 void trace_heap_malloc(size_t size, const char* name, void *p); |
33 void trace_heap_free(void *p); | 33 void trace_heap_free(void *p); |
34 | 34 |
35 #ifndef PRODUCT | |
35 // Increments unsigned long value for statistics (not atomic on MP). | 36 // Increments unsigned long value for statistics (not atomic on MP). |
36 inline void inc_stat_counter(volatile julong* dest, julong add_value) { | 37 inline void inc_stat_counter(volatile julong* dest, julong add_value) { |
38 #if defined(SPARC) || defined(X86) | |
39 // Sparc and X86 have atomic jlong (8 bytes) instructions | |
37 julong value = Atomic::load((volatile jlong*)dest); | 40 julong value = Atomic::load((volatile jlong*)dest); |
38 value += add_value; | 41 value += add_value; |
39 Atomic::store((jlong)value, (volatile jlong*)dest); | 42 Atomic::store((jlong)value, (volatile jlong*)dest); |
43 #else | |
44 // possible word-tearing during load/store | |
45 *dest += add_value; | |
46 #endif | |
40 } | 47 } |
48 #endif | |
41 | 49 |
42 // allocate using malloc; will fail if no memory available | 50 // allocate using malloc; will fail if no memory available |
43 inline char* AllocateHeap(size_t size, const char* name = NULL) { | 51 inline char* AllocateHeap(size_t size, const char* name = NULL) { |
44 char* p = (char*) os::malloc(size); | 52 char* p = (char*) os::malloc(size); |
45 #ifdef ASSERT | 53 #ifdef ASSERT |