< prev index next >

src/hotspot/share/runtime/thread.cpp

Print this page




4168         Arguments::convert_library_to_agent(agent);
4169       } else {
4170         vm_exit_during_initialization("Could not find JVM_OnLoad or Agent_OnLoad function in the library", agent->name());
4171       }
4172     }
4173   }
4174 }
4175 
4176 // Create agents for -agentlib:  -agentpath:  and converted -Xrun
4177 // Invokes Agent_OnLoad
4178 // Called very early -- before JavaThreads exist
4179 void Threads::create_vm_init_agents() {
4180   extern struct JavaVM_ main_vm;
4181   AgentLibrary* agent;
4182 
4183   JvmtiExport::enter_onload_phase();
4184 
4185   for (agent = Arguments::agents(); agent != NULL; agent = agent->next()) {
4186     // CDS dumping does not support native JVMTI agent.
4187     // CDS dumping supports Java agent if the AllowArchivingWithJavaAgent diagnostic option is specified.
4188     if (DumpSharedSpaces || DynamicDumpSharedSpaces) {
4189       if(!agent->is_instrument_lib()) {
4190         vm_exit_during_cds_dumping("CDS dumping does not support native JVMTI agent, name", agent->name());
4191       } else if (!AllowArchivingWithJavaAgent) {
4192         vm_exit_during_cds_dumping(
4193           "Must enable AllowArchivingWithJavaAgent in order to run Java agent during CDS dumping");
4194       }
4195     }
4196 
4197     OnLoadEntry_t  on_load_entry = lookup_agent_on_load(agent);
4198 
4199     if (on_load_entry != NULL) {
4200       // Invoke the Agent_OnLoad function
4201       jint err = (*on_load_entry)(&main_vm, agent->options(), NULL);
4202       if (err != JNI_OK) {
4203         vm_exit_during_initialization("agent library failed to init", agent->name());
4204       }
4205     } else {
4206       vm_exit_during_initialization("Could not find Agent_OnLoad function in the agent library", agent->name());
4207     }
4208   }




4168         Arguments::convert_library_to_agent(agent);
4169       } else {
4170         vm_exit_during_initialization("Could not find JVM_OnLoad or Agent_OnLoad function in the library", agent->name());
4171       }
4172     }
4173   }
4174 }
4175 
4176 // Create agents for -agentlib:  -agentpath:  and converted -Xrun
4177 // Invokes Agent_OnLoad
4178 // Called very early -- before JavaThreads exist
4179 void Threads::create_vm_init_agents() {
4180   extern struct JavaVM_ main_vm;
4181   AgentLibrary* agent;
4182 
4183   JvmtiExport::enter_onload_phase();
4184 
4185   for (agent = Arguments::agents(); agent != NULL; agent = agent->next()) {
4186     // CDS dumping does not support native JVMTI agent.
4187     // CDS dumping supports Java agent if the AllowArchivingWithJavaAgent diagnostic option is specified.
4188     if (Arguments::is_dumping_archive()) {
4189       if(!agent->is_instrument_lib()) {
4190         vm_exit_during_cds_dumping("CDS dumping does not support native JVMTI agent, name", agent->name());
4191       } else if (!AllowArchivingWithJavaAgent) {
4192         vm_exit_during_cds_dumping(
4193           "Must enable AllowArchivingWithJavaAgent in order to run Java agent during CDS dumping");
4194       }
4195     }
4196 
4197     OnLoadEntry_t  on_load_entry = lookup_agent_on_load(agent);
4198 
4199     if (on_load_entry != NULL) {
4200       // Invoke the Agent_OnLoad function
4201       jint err = (*on_load_entry)(&main_vm, agent->options(), NULL);
4202       if (err != JNI_OK) {
4203         vm_exit_during_initialization("agent library failed to init", agent->name());
4204       }
4205     } else {
4206       vm_exit_during_initialization("Could not find Agent_OnLoad function in the agent library", agent->name());
4207     }
4208   }


< prev index next >