mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
8012902: remove use of global operator new - take 2
The fix of 8010992, disable use of global operator new and new[] which caused failure on some tests. This takes two of the bugs also add ALLOW_OPERATOR_NEW_USAGE to prevent crash for third party code calling operator new of jvm on certain platforms. Reviewed-by: coleenp, dholmes, zgu
This commit is contained in:
parent
b3675a00d9
commit
98151c30c8
28 changed files with 287 additions and 101 deletions
|
@ -86,30 +86,39 @@ inline void FreeHeap(void* p, MEMFLAGS memflags = mtInternal) {
|
|||
|
||||
template <MEMFLAGS F> void* CHeapObj<F>::operator new(size_t size,
|
||||
address caller_pc){
|
||||
#ifdef ASSERT
|
||||
void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC));
|
||||
#ifdef ASSERT
|
||||
if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p);
|
||||
return p;
|
||||
#else
|
||||
return (void *) AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC));
|
||||
#endif
|
||||
return p;
|
||||
}
|
||||
|
||||
template <MEMFLAGS F> void* CHeapObj<F>::operator new (size_t size,
|
||||
const std::nothrow_t& nothrow_constant, address caller_pc) {
|
||||
#ifdef ASSERT
|
||||
void* p = (void*)AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC),
|
||||
AllocFailStrategy::RETURN_NULL);
|
||||
#ifdef ASSERT
|
||||
if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p);
|
||||
return p;
|
||||
#else
|
||||
return (void *) AllocateHeap(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC),
|
||||
AllocFailStrategy::RETURN_NULL);
|
||||
#endif
|
||||
return p;
|
||||
}
|
||||
|
||||
template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size,
|
||||
address caller_pc){
|
||||
return CHeapObj<F>::operator new(size, caller_pc);
|
||||
}
|
||||
|
||||
template <MEMFLAGS F> void* CHeapObj<F>::operator new [](size_t size,
|
||||
const std::nothrow_t& nothrow_constant, address caller_pc) {
|
||||
return CHeapObj<F>::operator new(size, nothrow_constant, caller_pc);
|
||||
}
|
||||
|
||||
template <MEMFLAGS F> void CHeapObj<F>::operator delete(void* p){
|
||||
FreeHeap(p, F);
|
||||
FreeHeap(p, F);
|
||||
}
|
||||
|
||||
template <MEMFLAGS F> void CHeapObj<F>::operator delete [](void* p){
|
||||
FreeHeap(p, F);
|
||||
}
|
||||
|
||||
template <class E, MEMFLAGS F>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue