1.1 --- a/src/share/vm/memory/metaspaceTracer.cpp Fri Mar 21 10:17:47 2014 +0100 1.2 +++ b/src/share/vm/memory/metaspaceTracer.cpp Fri Mar 21 10:20:00 2014 +0100 1.3 @@ -23,6 +23,7 @@ 1.4 */ 1.5 1.6 #include "precompiled.hpp" 1.7 +#include "classfile/classLoaderData.hpp" 1.8 #include "memory/metaspaceTracer.hpp" 1.9 #include "trace/tracing.hpp" 1.10 #include "trace/traceBackend.hpp" 1.11 @@ -38,3 +39,28 @@ 1.12 event.commit(); 1.13 } 1.14 } 1.15 + 1.16 +void MetaspaceTracer::report_metaspace_allocation_failure(ClassLoaderData *cld, 1.17 + size_t word_size, 1.18 + MetaspaceObj::Type objtype, 1.19 + Metaspace::MetadataType mdtype) const { 1.20 + EventMetaspaceAllocationFailure event; 1.21 + if (event.should_commit()) { 1.22 + if (cld->is_anonymous()) { 1.23 + event.set_classLoader(NULL); 1.24 + event.set_anonymousClassLoader(true); 1.25 + } else { 1.26 + if (cld->is_the_null_class_loader_data()) { 1.27 + event.set_classLoader((Klass*) NULL); 1.28 + } else { 1.29 + event.set_classLoader(cld->class_loader()->klass()); 1.30 + } 1.31 + event.set_anonymousClassLoader(false); 1.32 + } 1.33 + 1.34 + event.set_size(word_size * BytesPerWord); 1.35 + event.set_metadataType((u1) mdtype); 1.36 + event.set_metaspaceObjectType((u1) objtype); 1.37 + event.commit(); 1.38 + } 1.39 +}