< prev index next >

src/hotspot/share/jfr/instrumentation/jfrEventClassTransformer.cpp

Print this page




1395     os::free(cached_class_data);
1396     ik->set_cached_class_file(NULL);
1397   }
1398   return true;
1399 }
1400 
1401 static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStream* stream, TRAPS) {
1402   assert(stream != NULL, "invariant");
1403   ResourceMark rm(THREAD);
1404   ClassLoaderData* const cld = ik->class_loader_data();
1405   Handle pd(THREAD, ik->protection_domain());
1406   Symbol* const class_name = ik->name();
1407   const char* const klass_name = class_name != NULL ? class_name->as_C_string() : "";
1408   ClassFileParser new_parser(stream,
1409                              class_name,
1410                              cld,
1411                              pd,
1412                              NULL,  // host klass
1413                              NULL,  // cp_patches
1414                              false, // is_nonfindable

1415                              ClassFileParser::INTERNAL, // internal visibility
1416                              THREAD);
1417   if (HAS_PENDING_EXCEPTION) {
1418     log_pending_exception(PENDING_EXCEPTION);
1419     CLEAR_PENDING_EXCEPTION;
1420     return NULL;
1421   }
1422   InstanceKlass* const new_ik = new_parser.create_instance_klass(false, THREAD);
1423   if (HAS_PENDING_EXCEPTION) {
1424     log_pending_exception(PENDING_EXCEPTION);
1425     CLEAR_PENDING_EXCEPTION;
1426     return NULL;
1427   }
1428   assert(new_ik != NULL, "invariant");
1429   assert(new_ik->name() != NULL, "invariant");
1430   assert(strncmp(ik->name()->as_C_string(), new_ik->name()->as_C_string(), strlen(ik->name()->as_C_string())) == 0, "invariant");
1431   return cache_bytes(ik, stream, new_ik, THREAD) ? new_ik : NULL;
1432 }
1433 
1434 static void rewrite_klass_pointer(InstanceKlass*& ik, InstanceKlass* new_ik, ClassFileParser& parser, TRAPS) {




1395     os::free(cached_class_data);
1396     ik->set_cached_class_file(NULL);
1397   }
1398   return true;
1399 }
1400 
1401 static InstanceKlass* create_new_instance_klass(InstanceKlass* ik, ClassFileStream* stream, TRAPS) {
1402   assert(stream != NULL, "invariant");
1403   ResourceMark rm(THREAD);
1404   ClassLoaderData* const cld = ik->class_loader_data();
1405   Handle pd(THREAD, ik->protection_domain());
1406   Symbol* const class_name = ik->name();
1407   const char* const klass_name = class_name != NULL ? class_name->as_C_string() : "";
1408   ClassFileParser new_parser(stream,
1409                              class_name,
1410                              cld,
1411                              pd,
1412                              NULL,  // host klass
1413                              NULL,  // cp_patches
1414                              false, // is_nonfindable
1415                              false, // can_access_vm_annotations
1416                              ClassFileParser::INTERNAL, // internal visibility
1417                              THREAD);
1418   if (HAS_PENDING_EXCEPTION) {
1419     log_pending_exception(PENDING_EXCEPTION);
1420     CLEAR_PENDING_EXCEPTION;
1421     return NULL;
1422   }
1423   InstanceKlass* const new_ik = new_parser.create_instance_klass(false, THREAD);
1424   if (HAS_PENDING_EXCEPTION) {
1425     log_pending_exception(PENDING_EXCEPTION);
1426     CLEAR_PENDING_EXCEPTION;
1427     return NULL;
1428   }
1429   assert(new_ik != NULL, "invariant");
1430   assert(new_ik->name() != NULL, "invariant");
1431   assert(strncmp(ik->name()->as_C_string(), new_ik->name()->as_C_string(), strlen(ik->name()->as_C_string())) == 0, "invariant");
1432   return cache_bytes(ik, stream, new_ik, THREAD) ? new_ik : NULL;
1433 }
1434 
1435 static void rewrite_klass_pointer(InstanceKlass*& ik, InstanceKlass* new_ik, ClassFileParser& parser, TRAPS) {


< prev index next >