1.1 --- a/src/share/vm/classfile/classFileParser.cpp Thu Mar 28 19:13:22 2013 -0700 1.2 +++ b/src/share/vm/classfile/classFileParser.cpp Fri Mar 29 20:52:01 2013 -0700 1.3 @@ -1735,9 +1735,14 @@ 1.4 Symbol* name) { 1.5 vmSymbols::SID sid = vmSymbols::find_sid(name); 1.6 // Privileged code can use all annotations. Other code silently drops some. 1.7 - bool privileged = loader_data->is_the_null_class_loader_data() || 1.8 - loader_data->is_anonymous(); 1.9 + const bool privileged = loader_data->is_the_null_class_loader_data() || 1.10 + loader_data->is_ext_class_loader_data() || 1.11 + loader_data->is_anonymous(); 1.12 switch (sid) { 1.13 + case vmSymbols::VM_SYMBOL_ENUM_NAME(sun_reflect_CallerSensitive_signature): 1.14 + if (_location != _in_method) break; // only allow for methods 1.15 + if (!privileged) break; // only allow in privileged code 1.16 + return _method_CallerSensitive; 1.17 case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_ForceInline_signature): 1.18 if (_location != _in_method) break; // only allow for methods 1.19 if (!privileged) break; // only allow in privileged code 1.20 @@ -1775,6 +1780,8 @@ 1.21 } 1.22 1.23 void ClassFileParser::MethodAnnotationCollector::apply_to(methodHandle m) { 1.24 + if (has_annotation(_method_CallerSensitive)) 1.25 + m->set_caller_sensitive(true); 1.26 if (has_annotation(_method_ForceInline)) 1.27 m->set_force_inline(true); 1.28 if (has_annotation(_method_DontInline))