diff -r a1b8cf9cf970 -r 4735d2c84362 src/share/vm/runtime/reflection.cpp --- a/src/share/vm/runtime/reflection.cpp Thu Nov 01 13:05:47 2012 +0100 +++ b/src/share/vm/runtime/reflection.cpp Thu Oct 11 12:25:42 2012 -0400 @@ -472,6 +472,12 @@ return true; } + // Also allow all accesses from + // java/lang/invoke/MagicLambdaImpl subclasses to succeed trivially. + if (current_class->is_subclass_of(SystemDictionary::lambda_MagicLambdaImpl_klass())) { + return true; + } + return can_relax_access_check_for(current_class, new_class, classloader_only); } @@ -564,6 +570,12 @@ return true; } + // Also allow all accesses from + // java/lang/invoke/MagicLambdaImpl subclasses to succeed trivially. + if (current_class->is_subclass_of(SystemDictionary::lambda_MagicLambdaImpl_klass())) { + return true; + } + return can_relax_access_check_for( current_class, field_class, classloader_only); }