mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8000662: NPG: nashorn ant clean test262 out-of-memory with Java heap
Add ClassLoaderData object for each anonymous class with metaspaces to allocate in. Reviewed-by: twisti, jrose, stefank
This commit is contained in:
parent
c00c803b89
commit
7aa43fc5d8
26 changed files with 365 additions and 249 deletions
|
@ -2950,7 +2950,7 @@ static void parseAndPrintGenericSignatures(
|
|||
|
||||
|
||||
instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name,
|
||||
Handle class_loader,
|
||||
ClassLoaderData* loader_data,
|
||||
Handle protection_domain,
|
||||
KlassHandle host_klass,
|
||||
GrowableArray<Handle>* cp_patches,
|
||||
|
@ -2964,7 +2964,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name,
|
|||
// original class bytes.
|
||||
unsigned char *cached_class_file_bytes = NULL;
|
||||
jint cached_class_file_length;
|
||||
ClassLoaderData* loader_data = ClassLoaderData::class_loader_data(class_loader());
|
||||
Handle class_loader(THREAD, loader_data->class_loader());
|
||||
bool has_default_methods = false;
|
||||
ResourceMark rm(THREAD);
|
||||
|
||||
|
@ -3005,7 +3005,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name,
|
|||
unsigned char* ptr = cfs->buffer();
|
||||
unsigned char* end_ptr = cfs->buffer() + cfs->length();
|
||||
|
||||
JvmtiExport::post_class_file_load_hook(name, class_loader, protection_domain,
|
||||
JvmtiExport::post_class_file_load_hook(name, class_loader(), protection_domain,
|
||||
&ptr, &end_ptr,
|
||||
&cached_class_file_bytes,
|
||||
&cached_class_file_length);
|
||||
|
@ -4004,8 +4004,7 @@ void ClassFileParser::set_precomputed_flags(instanceKlassHandle k) {
|
|||
assert(k->size_helper() > 0, "layout_helper is initialized");
|
||||
if ((!RegisterFinalizersAtInit && k->has_finalizer())
|
||||
|| k->is_abstract() || k->is_interface()
|
||||
|| (k->name() == vmSymbols::java_lang_Class()
|
||||
&& k->class_loader_data()->is_the_null_class_loader_data())
|
||||
|| (k->name() == vmSymbols::java_lang_Class() && k->class_loader() == NULL)
|
||||
|| k->size_helper() >= FastAllocateSizeLimit) {
|
||||
// Forbid fast-path allocation.
|
||||
jint lh = Klass::instance_layout_helper(k->size_helper(), true);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue