diff src/share/vm/graal/graalEnv.cpp @ 3674:d3d3dd0a3421

Fixed a regression.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Mon, 21 Nov 2011 13:56:38 +0100
parents 5e331d5f760e
children f8d7ab42c479
line wrap: on
line diff
--- a/src/share/vm/graal/graalEnv.cpp	Mon Nov 21 11:01:37 2011 +0100
+++ b/src/share/vm/graal/graalEnv.cpp	Mon Nov 21 13:56:38 2011 +0100
@@ -49,7 +49,7 @@
 //
 // Note: the logic of this method should mirror the logic of
 // constantPoolOopDesc::verify_constant_pool_resolve.
-bool GraalEnv::check_klass_accessibility(KlassHandle& accessing_klass, KlassHandle& resolved_klass) {
+bool GraalEnv::check_klass_accessibility(KlassHandle accessing_klass, KlassHandle resolved_klass) {
   if (accessing_klass->oop_is_objArray()) {
     accessing_klass = objArrayKlass::cast(accessing_klass())->bottom_klass();
   }
@@ -203,13 +203,16 @@
     if (k.is_null()) {
       is_accessible = false;
     } else if (k->class_loader() != accessor->class_loader() &&
-               get_klass_by_name_impl(accessor, cpool, k->name(), true) == NULL) {
+               get_klass_by_name_impl(accessor, cpool, k->name(), true).is_null()) {
       // Loaded only remotely.  Not linked yet.
       is_accessible = false;
     } else {
       // Linked locally, and we must also check public/private, etc.
       is_accessible = check_klass_accessibility(accessor, k);
     }
+    if (!is_accessible) {
+      return KlassHandle();
+    }
     return k;
   }
 
@@ -227,7 +230,8 @@
                                    bool& is_accessible,
                                    KlassHandle& accessor) {
   ResourceMark rm;
-  return get_klass_by_index_impl(cpool, index, is_accessible, accessor);
+  KlassHandle result = get_klass_by_index_impl(cpool, index, is_accessible, accessor);
+  return result;
 }
 
 // ------------------------------------------------------------------