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 }
|