# HG changeset patch # User coffeys # Date 1406717503 25200 # Node ID eaa4074a7e3975cd33ec55e6b584586e2ac681bd # Parent deecfa50d5f243fbfa31ae6339b07bffab81a35b# Parent c2f02c05a99e8253ad765610163577a077460d65 Merge diff -r c2f02c05a99e -r eaa4074a7e39 .hgtags --- a/.hgtags Wed Jul 30 03:42:23 2014 -0700 +++ b/.hgtags Wed Jul 30 03:51:43 2014 -0700 @@ -498,3 +498,5 @@ 7c56530b11496459e66cb9ea933035002311672c hs25.20-b22 f09d1f6a401e25a54dad44bb7bea482e47558af5 jdk8u20-b23 42ddd0bbcb6630fe463ec9bc1893c838d5edff1b jdk8u20-b24 +00cf2b6f51b9560b01030e8f4c28c466f0b21fe3 hs25.20-b23 +19408d5fd31c25ce60c43dd33e92b96e8df4a4ea jdk8u20-b25 diff -r c2f02c05a99e -r eaa4074a7e39 make/hotspot_version --- a/make/hotspot_version Wed Jul 30 03:42:23 2014 -0700 +++ b/make/hotspot_version Wed Jul 30 03:51:43 2014 -0700 @@ -35,7 +35,7 @@ HS_MAJOR_VER=25 HS_MINOR_VER=20 -HS_BUILD_NUMBER=22 +HS_BUILD_NUMBER=23 JDK_MAJOR_VER=1 JDK_MINOR_VER=8 diff -r c2f02c05a99e -r eaa4074a7e39 src/share/vm/ci/ciField.cpp --- a/src/share/vm/ci/ciField.cpp Wed Jul 30 03:42:23 2014 -0700 +++ b/src/share/vm/ci/ciField.cpp Wed Jul 30 03:51:43 2014 -0700 @@ -138,6 +138,17 @@ return; } + // Access check based on declared_holder. canonical_holder should not be used + // to check access because it can erroneously succeed. If this check fails, + // propagate the declared holder to will_link() which in turn will bail out + // compilation for this field access. + if (!Reflection::verify_field_access(klass->get_Klass(), declared_holder->get_Klass(), canonical_holder, field_desc.access_flags(), true)) { + _holder = declared_holder; + _offset = -1; + _is_constant = false; + return; + } + assert(canonical_holder == field_desc.field_holder(), "just checking"); initialize_from(&field_desc); }