Mercurial > hg > graal-jvmci-8
diff src/share/vm/classfile/classFileParser.cpp @ 8870:cd9ad42dfde0
Merge
author | bharadwaj |
---|---|
date | Fri, 29 Mar 2013 20:52:01 -0700 |
parents | 36376b540a98 16885e702c88 |
children | 9befe2fce567 |
line wrap: on
line diff
--- a/src/share/vm/classfile/classFileParser.cpp Thu Mar 28 19:13:22 2013 -0700 +++ b/src/share/vm/classfile/classFileParser.cpp Fri Mar 29 20:52:01 2013 -0700 @@ -1735,9 +1735,14 @@ Symbol* name) { vmSymbols::SID sid = vmSymbols::find_sid(name); // Privileged code can use all annotations. Other code silently drops some. - bool privileged = loader_data->is_the_null_class_loader_data() || - loader_data->is_anonymous(); + const bool privileged = loader_data->is_the_null_class_loader_data() || + loader_data->is_ext_class_loader_data() || + loader_data->is_anonymous(); switch (sid) { + case vmSymbols::VM_SYMBOL_ENUM_NAME(sun_reflect_CallerSensitive_signature): + if (_location != _in_method) break; // only allow for methods + if (!privileged) break; // only allow in privileged code + return _method_CallerSensitive; case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_ForceInline_signature): if (_location != _in_method) break; // only allow for methods if (!privileged) break; // only allow in privileged code @@ -1775,6 +1780,8 @@ } void ClassFileParser::MethodAnnotationCollector::apply_to(methodHandle m) { + if (has_annotation(_method_CallerSensitive)) + m->set_caller_sensitive(true); if (has_annotation(_method_ForceInline)) m->set_force_inline(true); if (has_annotation(_method_DontInline))