changeset 5253:8e94527f601e

8024007: Misc. cleanup of static agent code Summary: Minor cleanup of static agent code from 8014135 Reviewed-by: dcubed, sspitsyn
author bpittore
date Wed, 11 Sep 2013 20:03:34 -0400
parents 313b724f8911
children 4c9d415db1c5
files src/os/windows/vm/os_windows.cpp src/share/vm/prims/jvmti.xml src/share/vm/runtime/arguments.hpp src/share/vm/runtime/os.cpp src/share/vm/runtime/thread.cpp
diffstat 5 files changed, 10 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/os/windows/vm/os_windows.cpp	Fri Sep 06 11:11:19 2013 -0700
+++ b/src/os/windows/vm/os_windows.cpp	Wed Sep 11 20:03:34 2013 -0400
@@ -5429,7 +5429,7 @@
       if ((start = strrchr(lib_name, *os::file_separator())) != NULL) {
         lib_name = ++start;
       } else {
-        // Need to check for C:
+        // Need to check for drive prefix
         if ((start = strchr(lib_name, ':')) != NULL) {
           lib_name = ++start;
         }
--- a/src/share/vm/prims/jvmti.xml	Fri Sep 06 11:11:19 2013 -0700
+++ b/src/share/vm/prims/jvmti.xml	Wed Sep 11 20:03:34 2013 -0400
@@ -458,8 +458,10 @@
       the same name from being loaded dynamically.
 <p/>
       The VM will invoke the Agent_OnUnload_L function of the agent, if such
-      a function is exported, at the same point during startup as it would
-      have called the dynamic entry point Agent_OnUnLoad.
+      a function is exported, at the same point during VM execution as it would
+      have called the dynamic entry point Agent_OnUnLoad. A statically loaded
+      agent cannot be unloaded. The Agent_OnUnload_L function will still be
+      called to do any other agent shutdown related tasks. 
       If a <i>statically linked</i> agent L exports a function called
       Agent_OnUnLoad_L and a function called Agent_OnUnLoad, the Agent_OnUnLoad
       function will be ignored.
--- a/src/share/vm/runtime/arguments.hpp	Fri Sep 06 11:11:19 2013 -0700
+++ b/src/share/vm/runtime/arguments.hpp	Wed Sep 11 20:03:34 2013 -0400
@@ -144,7 +144,7 @@
   void set_os_lib(void* os_lib)             { _os_lib = os_lib; }
   AgentLibrary* next() const                { return _next; }
   bool is_static_lib() const                { return _is_static_lib; }
-  void set_static_lib(bool static_lib)      { _is_static_lib = static_lib; }
+  void set_static_lib(bool is_static_lib)   { _is_static_lib = is_static_lib; }
   bool valid()                              { return (_state == agent_valid); }
   void set_valid()                          { _state = agent_valid; }
   void set_invalid()                        { _state = agent_invalid; }
--- a/src/share/vm/runtime/os.cpp	Fri Sep 06 11:11:19 2013 -0700
+++ b/src/share/vm/runtime/os.cpp	Wed Sep 11 20:03:34 2013 -0400
@@ -454,6 +454,7 @@
  */
 void* os::find_agent_function(AgentLibrary *agent_lib, bool check_lib,
                               const char *syms[], size_t syms_len) {
+  assert(agent_lib != NULL, "sanity check");
   const char *lib_name;
   void *handle = agent_lib->os_lib();
   void *entryName = NULL;
@@ -484,6 +485,7 @@
   void *proc_handle;
   void *save_handle;
 
+  assert(agent_lib != NULL, "sanity check");
   if (agent_lib->name() == NULL) {
     return false;
   }
@@ -493,14 +495,13 @@
   // We want to look in this process' symbol table.
   agent_lib->set_os_lib(proc_handle);
   ret = find_agent_function(agent_lib, true, syms, syms_len);
-  agent_lib->set_os_lib(save_handle);
   if (ret != NULL) {
     // Found an entry point like Agent_OnLoad_lib_name so we have a static agent
-    agent_lib->set_os_lib(proc_handle);
     agent_lib->set_valid();
     agent_lib->set_static_lib(true);
     return true;
   }
+  agent_lib->set_os_lib(save_handle);
   return false;
 }
 
--- a/src/share/vm/runtime/thread.cpp	Fri Sep 06 11:11:19 2013 -0700
+++ b/src/share/vm/runtime/thread.cpp	Wed Sep 11 20:03:34 2013 -0400
@@ -3714,7 +3714,7 @@
     const char *name = agent->name();
     const char *msg = "Could not find agent library ";
 
-    // First check to see if agent is statcally linked into executable
+    // First check to see if agent is statically linked into executable
     if (os::find_builtin_agent(agent, on_load_symbols, num_symbol_entries)) {
       library = agent->os_lib();
     } else if (agent->is_absolute_path()) {