--- old/hotspot/src/share/vm/opto/library_call.cpp 2013-07-27 01:53:50.000000000 +0400 +++ new/hotspot/src/share/vm/opto/library_call.cpp 2013-07-27 01:53:49.000000000 +0400 @@ -1279,6 +1279,13 @@ const TypeAry* target_array_type = TypeAry::make(TypeInt::CHAR, TypeInt::make(0, target_length, Type::WidenMin)); const TypeAryPtr* target_type = TypeAryPtr::make(TypePtr::BotPTR, target_array_type, target_array->klass(), true, Type::OffsetBot); + if (UseImplicitStableValues) { + // String.value field is known to be @Stable. + // Reify the property as a CastPP node in Ideal graph to comply with monotonicity + // assumption of CCP analysis. + target = _gvn.transform(new(C) CastPPNode(target, target_type->cast_to_stable(true))); + } + IdealKit kit(this, false, true); #define __ kit. Node* zero = __ ConI(0);