review request (M): 6711908: JVM needs direct access to some annotations

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Jul 12 01:08:35 PDT 2012


This looks good.

Thanks,
Vladimir

On 7/11/12 11:54 PM, John Rose wrote:
> On Jul 11, 2012, at 5:25 PM, Vladimir Kozlov wrote:
>
>> > But I'll change it if you insist.
>>
>> Please, change. Also put final klass settings "Fill in field values from parse_classfile_attributes" in a separate
>> ClassFileParser method.
>
> Done. Here is the updated webrev:
> http://cr.openjdk.java.net/~jrose/6711908/webrev.01
>
> (See synopsis below.)
>
> — John
>
>
> @@ -62,6 +64,22 @@
> typeArrayHandle _inner_classes;
> typeArrayHandle _annotations;
> + void set_class_synthetic_flag(bool x) { _synthetic_flag = x; }
> + void set_class_sourcefile(Symbol* x) { _sourcefile = x; }
> + void set_class_generic_signature(Symbol* x) { _generic_signature = x; }
> + void set_class_sde_symbol(Symbol* x) { _sde_symbol = x; }
> + void set_class_inner_classes(typeArrayHandle x) { _inner_classes = x; }
> + void set_class_annotations(typeArrayHandle x) { _annotations = x; }
> + void init_parsed_class_attributes() {
> + _synthetic_flag = false;
> + _sourcefile = NULL;
> + _generic_signature = NULL;
> + // initialize the other flags too:
> + _has_finalizer = _has_empty_finalizer = _has_vanilla_constructor = false;
> + _max_bootstrap_specifier_index = -1;
> + }
> + void apply_parsed_class_attributes(instanceKlassHandle k); // update k
> +
> class AnnotationCollector {
> public:
> enum Location { _in_field, _in_method, _in_class };
>
>
> @@ -2866,6 +2863,21 @@
> }
> }
> +void ClassFileParser::apply_parsed_class_attributes(instanceKlassHandle k) {
> + if (_synthetic_flag)
> + k->set_is_synthetic();
> + if (_sourcefile != NULL) {
> + _sourcefile->increment_refcount();
> + k->set_source_file_name(_sourcefile);
> + }
> + if (_generic_signature != NULL) {
> + _generic_signature->increment_refcount();
> + k->set_generic_signature(_generic_signature);
> + }
> + k->set_source_debug_extension(_sde_symbol); // increment_refcount inside
> + k->set_inner_classes(_inner_classes());
> + k->set_class_annotations(_annotations());
> +}
> typeArrayHandle ClassFileParser::assemble_annotations(u1* runtime_visible_annotations,
> int runtime_visible_annotations_length,
>


More information about the mlvm-dev mailing list