diff src/share/vm/graal/graalCompilerToVM.cpp @ 4533:818757f088d3

Fixed signature lookup (unresolved arguments remained unresolved all the time).
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 09 Feb 2012 10:03:00 +0100
parents 14a00ee82980
children 6dda62bf5be4
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp	Thu Feb 09 09:04:12 2012 +0100
+++ b/src/share/vm/graal/graalCompilerToVM.cpp	Thu Feb 09 10:03:00 2012 +0100
@@ -278,7 +278,15 @@
       if (eagerResolve) {
         resolved_type = SystemDictionary::resolve_or_null(nameSymbol, classloader, protectionDomain, THREAD);
       } else {
-        resolved_type = SystemDictionary::find(nameSymbol, classloader, protectionDomain, THREAD);
+        if (FieldType::is_obj(nameSymbol)) {
+          ResourceMark rm(THREAD);
+          // Ignore wrapping L and ;.
+          TempNewSymbol tmp_name = SymbolTable::new_symbol(nameSymbol->as_C_string() + 1,
+                                         nameSymbol->utf8_length() - 2, CHECK_NULL);
+          resolved_type = SystemDictionary::find_instance_or_array_klass(tmp_name, classloader, protectionDomain, THREAD);
+        } else {
+          resolved_type = SystemDictionary::find_instance_or_array_klass(nameSymbol, classloader, protectionDomain, THREAD);
+        }
       }
       if (HAS_PENDING_EXCEPTION) {
         CLEAR_PENDING_EXCEPTION;