Mercurial > hg > truffle
comparison src/share/vm/runtime/thread.cpp @ 6872:7b5885dadbdc
8000617: It should be possible to allocate memory without the VM dying.
Reviewed-by: coleenp, kamg
author | nloodin |
---|---|
date | Wed, 17 Oct 2012 17:36:48 +0200 |
parents | 5876f980ea19 |
children | 716c64bda5ba |
comparison
equal
deleted
inserted
replaced
6871:045cb62046a7 | 6872:7b5885dadbdc |
---|---|
175 void* Thread::allocate(size_t size, bool throw_excpt, MEMFLAGS flags) { | 175 void* Thread::allocate(size_t size, bool throw_excpt, MEMFLAGS flags) { |
176 if (UseBiasedLocking) { | 176 if (UseBiasedLocking) { |
177 const int alignment = markOopDesc::biased_lock_alignment; | 177 const int alignment = markOopDesc::biased_lock_alignment; |
178 size_t aligned_size = size + (alignment - sizeof(intptr_t)); | 178 size_t aligned_size = size + (alignment - sizeof(intptr_t)); |
179 void* real_malloc_addr = throw_excpt? AllocateHeap(aligned_size, flags, CURRENT_PC) | 179 void* real_malloc_addr = throw_excpt? AllocateHeap(aligned_size, flags, CURRENT_PC) |
180 : os::malloc(aligned_size, flags, CURRENT_PC); | 180 : AllocateHeap(aligned_size, flags, CURRENT_PC, |
181 AllocFailStrategy::RETURN_NULL); | |
181 void* aligned_addr = (void*) align_size_up((intptr_t) real_malloc_addr, alignment); | 182 void* aligned_addr = (void*) align_size_up((intptr_t) real_malloc_addr, alignment); |
182 assert(((uintptr_t) aligned_addr + (uintptr_t) size) <= | 183 assert(((uintptr_t) aligned_addr + (uintptr_t) size) <= |
183 ((uintptr_t) real_malloc_addr + (uintptr_t) aligned_size), | 184 ((uintptr_t) real_malloc_addr + (uintptr_t) aligned_size), |
184 "JavaThread alignment code overflowed allocated storage"); | 185 "JavaThread alignment code overflowed allocated storage"); |
185 if (TraceBiasedLocking) { | 186 if (TraceBiasedLocking) { |
189 } | 190 } |
190 ((Thread*) aligned_addr)->_real_malloc_address = real_malloc_addr; | 191 ((Thread*) aligned_addr)->_real_malloc_address = real_malloc_addr; |
191 return aligned_addr; | 192 return aligned_addr; |
192 } else { | 193 } else { |
193 return throw_excpt? AllocateHeap(size, flags, CURRENT_PC) | 194 return throw_excpt? AllocateHeap(size, flags, CURRENT_PC) |
194 : os::malloc(size, flags, CURRENT_PC); | 195 : AllocateHeap(size, flags, CURRENT_PC, AllocFailStrategy::RETURN_NULL); |
195 } | 196 } |
196 } | 197 } |
197 | 198 |
198 void Thread::operator delete(void* p) { | 199 void Thread::operator delete(void* p) { |
199 if (UseBiasedLocking) { | 200 if (UseBiasedLocking) { |