hotspot/src/share/vm/aot/aotCodeHeap.cpp
changeset 46260 5de61384fba6
parent 42650 1f304d0c888b
child 46271 979ebd346ecf
--- a/hotspot/src/share/vm/aot/aotCodeHeap.cpp	Mon May 30 14:42:50 2016 +0300
+++ b/hotspot/src/share/vm/aot/aotCodeHeap.cpp	Thu Feb 09 15:43:54 2017 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,7 +40,7 @@
 int  AOTLib::_narrow_klass_shift = 0;
 
 address AOTLib::load_symbol(const char *name) {
-  address symbol = (address) dlsym(_dl_handle, name);
+  address symbol = (address) os::dll_lookup(_dl_handle, name);
   if (symbol == NULL) {
     tty->print_cr("Shared file %s error: missing %s", _name, name);
     vm_exit(1);
@@ -224,16 +224,15 @@
   _method_count = _lib->header()->_method_count;
 
   // Collect metaspace info: names -> address in .got section
-  _metaspace_names = (const char*) _lib->load_symbol("JVM.metaspace.names");
-  _method_metadata =     (address) _lib->load_symbol("JVM.method.metadata");
+  _metaspace_names = (const char*) _lib->load_symbol("JVM.meta.names");
+  _method_metadata =     (address) _lib->load_symbol("JVM.meth.metadata");
   _methods_offsets =     (address) _lib->load_symbol("JVM.methods.offsets");
-  _klasses_offsets =     (address) _lib->load_symbol("JVM.klasses.offsets");
-  _dependencies    =     (address) _lib->load_symbol("JVM.klasses.dependencies");
+  _klasses_offsets =     (address) _lib->load_symbol("JVM.kls.offsets");
+  _dependencies    =     (address) _lib->load_symbol("JVM.kls.dependencies");
   _code_space      =     (address) _lib->load_symbol("JVM.text");
 
   // First cell is number of elements.
-  jlong* got_sect;
-  _metaspace_got      = (Metadata**) _lib->load_symbol("JVM.metaspace.got");
+  _metaspace_got      = (Metadata**) _lib->load_symbol("JVM.meta.got");
   _metaspace_got_size = _lib->header()->_metaspace_got_size;
 
   _metadata_got      = (Metadata**) _lib->load_symbol("JVM.metadata.got");
@@ -249,7 +248,7 @@
   _code_segments = (address) _lib->load_symbol("JVM.code.segments");
 
   // method state
-  _method_state = (jlong*) _lib->load_symbol("JVM.method.state");
+  _method_state = (jlong*) _lib->load_symbol("JVM.meth.state");
 
   // Create a table for mapping classes
   _classes = NEW_C_HEAP_ARRAY(AOTClass, _class_count, mtCode);
@@ -338,7 +337,7 @@
     BasicType t = (BasicType)i;
     if (is_java_primitive(t)) {
       const Klass* arr_klass = Universe::typeArrayKlassObj(t);
-      AOTKlassData* klass_data = (AOTKlassData*) dlsym(_lib->dl_handle(), arr_klass->signature_name());
+      AOTKlassData* klass_data = (AOTKlassData*) os::dll_lookup(_lib->dl_handle(), arr_klass->signature_name());
       if (klass_data != NULL) {
         // Set both GOT cells, resolved and initialized klass pointers.
         // _got_index points to second cell - resolved klass pointer.
@@ -391,13 +390,9 @@
 
 #define SET_AOT_GLOBAL_SYMBOL_VALUE(AOTSYMNAME, AOTSYMTYPE, VMSYMVAL) \
   {                                                                   \
-    char* error;                                                      \
-    /* Clear any existing error */                                    \
-    dlerror();                                                        \
-    AOTSYMTYPE * adr = (AOTSYMTYPE *) dlsym(_lib->dl_handle(), AOTSYMNAME);  \
-    /* Check for any dlsym lookup error */                            \
-    error = dlerror();                                                \
-    guarantee(error == NULL, "%s", error);                            \
+    AOTSYMTYPE * adr = (AOTSYMTYPE *) os::dll_lookup(_lib->dl_handle(), AOTSYMNAME);  \
+    /* Check for a lookup error */                                    \
+    guarantee(adr != NULL, "AOT Symbol not found %s", AOTSYMNAME);    \
     *adr = (AOTSYMTYPE) VMSYMVAL;                                     \
   }
 
@@ -612,7 +607,7 @@
 
 AOTKlassData* AOTCodeHeap::find_klass(InstanceKlass* ik) {
   ResourceMark rm;
-  AOTKlassData* klass_data = (AOTKlassData*) dlsym(_lib->dl_handle(), ik->signature_name());
+  AOTKlassData* klass_data = (AOTKlassData*) os::dll_lookup(_lib->dl_handle(), ik->signature_name());
   return klass_data;
 }