aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/vm/runtime')
-rw-r--r--src/share/vm/runtime/handles.cpp16
-rw-r--r--src/share/vm/runtime/handles.hpp9
-rw-r--r--src/share/vm/runtime/objectMonitor.hpp12
-rw-r--r--src/share/vm/runtime/reflectionUtils.hpp6
-rw-r--r--src/share/vm/runtime/unhandledOops.hpp4
-rw-r--r--src/share/vm/runtime/vmStructs.cpp12
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 ");