Mercurial > hg > truffle
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; } // ------------------------------------------------------------------