diff options
Diffstat (limited to 'src/share/vm/runtime')
-rw-r--r-- | src/share/vm/runtime/handles.cpp | 16 | ||||
-rw-r--r-- | src/share/vm/runtime/handles.hpp | 9 | ||||
-rw-r--r-- | src/share/vm/runtime/objectMonitor.hpp | 12 | ||||
-rw-r--r-- | src/share/vm/runtime/reflectionUtils.hpp | 6 | ||||
-rw-r--r-- | src/share/vm/runtime/unhandledOops.hpp | 4 | ||||
-rw-r--r-- | src/share/vm/runtime/vmStructs.cpp | 12 |
6 files changed, 46 insertions, 13 deletions
diff --git a/src/share/vm/runtime/handles.cpp b/src/share/vm/runtime/handles.cpp index a62ff177d..ebbdd9d74 100644 --- a/src/share/vm/runtime/handles.cpp +++ b/src/share/vm/runtime/handles.cpp @@ -179,6 +179,22 @@ HandleMark::~HandleMark() { _thread->set_last_handle_mark(previous_handle_mark()); } +void* HandleMark::operator new(size_t size) { + return AllocateHeap(size, mtThread); +} + +void* HandleMark::operator new [] (size_t size) { + return AllocateHeap(size, mtThread); +} + +void HandleMark::operator delete(void* p) { + FreeHeap(p, mtThread); +} + +void HandleMark::operator delete[](void* p) { + FreeHeap(p, mtThread); +} + #ifdef ASSERT NoHandleMark::NoHandleMark() { diff --git a/src/share/vm/runtime/handles.hpp b/src/share/vm/runtime/handles.hpp index 8c643d7c2..82506bd70 100644 --- a/src/share/vm/runtime/handles.hpp +++ b/src/share/vm/runtime/handles.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -281,7 +281,7 @@ class HandleArea: public Arena { // across the HandleMark boundary. // The base class of HandleMark should have been StackObj but we also heap allocate -// a HandleMark when a thread is created. +// a HandleMark when a thread is created. The operator new is for this special case. class HandleMark { private: @@ -308,6 +308,11 @@ class HandleMark { void push(); // called in the destructor of HandleMarkCleaner void pop_and_restore(); + // overloaded operators + void* operator new(size_t size); + void* operator new [](size_t size); + void operator delete(void* p); + void operator delete[](void* p); }; //------------------------------------------------------------------------------------------------------------------------ diff --git a/src/share/vm/runtime/objectMonitor.hpp b/src/share/vm/runtime/objectMonitor.hpp index e4236f490..df4b0279c 100644 --- a/src/share/vm/runtime/objectMonitor.hpp +++ b/src/share/vm/runtime/objectMonitor.hpp @@ -303,6 +303,18 @@ public: public: static int Knob_Verbose; static int Knob_SpinLimit; + void* operator new (size_t size) { + return AllocateHeap(size, mtInternal); + } + void* operator new[] (size_t size) { + return operator new (size); + } + void operator delete(void* p) { + FreeHeap(p, mtInternal); + } + void operator delete[] (void *p) { + operator delete(p); + } }; #undef TEVENT diff --git a/src/share/vm/runtime/reflectionUtils.hpp b/src/share/vm/runtime/reflectionUtils.hpp index 7641fa769..d51b2ab78 100644 --- a/src/share/vm/runtime/reflectionUtils.hpp +++ b/src/share/vm/runtime/reflectionUtils.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -136,10 +136,10 @@ class FieldStream : public KlassStream { } }; -class FilteredField { +class FilteredField : public CHeapObj<mtInternal> { private: Klass* _klass; - int _field_offset; + int _field_offset; public: FilteredField(Klass* klass, int field_offset) { diff --git a/src/share/vm/runtime/unhandledOops.hpp b/src/share/vm/runtime/unhandledOops.hpp index 97fd85431..5f65d1536 100644 --- a/src/share/vm/runtime/unhandledOops.hpp +++ b/src/share/vm/runtime/unhandledOops.hpp @@ -48,7 +48,7 @@ class oop; class Thread; -class UnhandledOopEntry { +class UnhandledOopEntry : public CHeapObj<mtThread> { friend class UnhandledOops; private: oop* _oop_ptr; @@ -62,7 +62,7 @@ class UnhandledOopEntry { }; -class UnhandledOops { +class UnhandledOops : public CHeapObj<mtThread> { friend class Thread; private: Thread* _thread; diff --git a/src/share/vm/runtime/vmStructs.cpp b/src/share/vm/runtime/vmStructs.cpp index b281d7ac3..aacc63b5e 100644 --- a/src/share/vm/runtime/vmStructs.cpp +++ b/src/share/vm/runtime/vmStructs.cpp @@ -3119,15 +3119,15 @@ static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool // Search for the base type by peeling off const and * size_t len = strlen(typeName); if (typeName[len-1] == '*') { - char * s = new char[len]; + char * s = NEW_C_HEAP_ARRAY(char, len, mtInternal); strncpy(s, typeName, len - 1); s[len-1] = '\0'; // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); if (recursiveFindType(origtypes, s, true) == 1) { - delete [] s; + FREE_C_HEAP_ARRAY(char, s, mtInternal); return 1; } - delete [] s; + FREE_C_HEAP_ARRAY(char, s, mtInternal); } const char* start = NULL; if (strstr(typeName, "GrowableArray<") == typeName) { @@ -3138,15 +3138,15 @@ static int recursiveFindType(VMTypeEntry* origtypes, const char* typeName, bool if (start != NULL) { const char * end = strrchr(typeName, '>'); int len = end - start + 1; - char * s = new char[len]; + char * s = NEW_C_HEAP_ARRAY(char, len, mtInternal); strncpy(s, start, len - 1); s[len-1] = '\0'; // tty->print_cr("checking \"%s\" for \"%s\"", s, typeName); if (recursiveFindType(origtypes, s, true) == 1) { - delete [] s; + FREE_C_HEAP_ARRAY(char, s, mtInternal); return 1; } - delete [] s; + FREE_C_HEAP_ARRAY(char, s, mtInternal); } if (strstr(typeName, "const ") == typeName) { const char * s = typeName + strlen("const "); |