comparison src/share/vm/oops/instanceKlass.hpp @ 726:be93aad57795

6655646: dynamic languages need dynamically linked call sites Summary: invokedynamic instruction (JSR 292 RI) Reviewed-by: twisti, never
author jrose
date Tue, 21 Apr 2009 23:21:04 -0700
parents d3676b4cb78c
children b37c246bf7ce ad6585fd4087
comparison
equal deleted inserted replaced
725:928912ce8438 726:be93aad57795
161 typeArrayOop _inner_classes; 161 typeArrayOop _inner_classes;
162 // Implementors of this interface (not valid if it overflows) 162 // Implementors of this interface (not valid if it overflows)
163 klassOop _implementors[implementors_limit]; 163 klassOop _implementors[implementors_limit];
164 // Generic signature, or null if none. 164 // Generic signature, or null if none.
165 symbolOop _generic_signature; 165 symbolOop _generic_signature;
166 // invokedynamic bootstrap method (a java.dyn.MethodHandle)
167 oop _bootstrap_method;
166 // Annotations for this class, or null if none. 168 // Annotations for this class, or null if none.
167 typeArrayOop _class_annotations; 169 typeArrayOop _class_annotations;
168 // Annotation objects (byte arrays) for fields, or null if no annotations. 170 // Annotation objects (byte arrays) for fields, or null if no annotations.
169 // Indices correspond to entries (not indices) in fields array. 171 // Indices correspond to entries (not indices) in fields array.
170 objArrayOop _fields_annotations; 172 objArrayOop _fields_annotations;
462 u2 enclosing_method_method_index() const { return _enclosing_method_method_index; } 464 u2 enclosing_method_method_index() const { return _enclosing_method_method_index; }
463 void set_enclosing_method_indices(u2 class_index, 465 void set_enclosing_method_indices(u2 class_index,
464 u2 method_index) { _enclosing_method_class_index = class_index; 466 u2 method_index) { _enclosing_method_class_index = class_index;
465 _enclosing_method_method_index = method_index; } 467 _enclosing_method_method_index = method_index; }
466 468
469 // JSR 292 support
470 oop bootstrap_method() const { return _bootstrap_method; }
471 void set_bootstrap_method(oop mh) { oop_store(&_bootstrap_method, mh); }
472
467 // jmethodID support 473 // jmethodID support
468 static jmethodID get_jmethod_id(instanceKlassHandle ik_h, size_t idnum, 474 static jmethodID get_jmethod_id(instanceKlassHandle ik_h, size_t idnum,
469 jmethodID new_id, jmethodID* new_jmeths); 475 jmethodID new_id, jmethodID* new_jmeths);
470 static jmethodID jmethod_id_for_impl(instanceKlassHandle ik_h, methodHandle method_h); 476 static jmethodID jmethod_id_for_impl(instanceKlassHandle ik_h, methodHandle method_h);
471 jmethodID jmethod_id_or_null(methodOop method); 477 jmethodID jmethod_id_or_null(methodOop method);
742 oop* adr_source_file_name() const { return (oop*)&this->_source_file_name;} 748 oop* adr_source_file_name() const { return (oop*)&this->_source_file_name;}
743 oop* adr_source_debug_extension() const { return (oop*)&this->_source_debug_extension;} 749 oop* adr_source_debug_extension() const { return (oop*)&this->_source_debug_extension;}
744 oop* adr_inner_classes() const { return (oop*)&this->_inner_classes;} 750 oop* adr_inner_classes() const { return (oop*)&this->_inner_classes;}
745 oop* adr_implementors() const { return (oop*)&this->_implementors[0];} 751 oop* adr_implementors() const { return (oop*)&this->_implementors[0];}
746 oop* adr_generic_signature() const { return (oop*)&this->_generic_signature;} 752 oop* adr_generic_signature() const { return (oop*)&this->_generic_signature;}
753 oop* adr_bootstrap_method() const { return (oop*)&this->_bootstrap_method;}
747 oop* adr_methods_jmethod_ids() const { return (oop*)&this->_methods_jmethod_ids;} 754 oop* adr_methods_jmethod_ids() const { return (oop*)&this->_methods_jmethod_ids;}
748 oop* adr_methods_cached_itable_indices() const { return (oop*)&this->_methods_cached_itable_indices;} 755 oop* adr_methods_cached_itable_indices() const { return (oop*)&this->_methods_cached_itable_indices;}
749 oop* adr_class_annotations() const { return (oop*)&this->_class_annotations;} 756 oop* adr_class_annotations() const { return (oop*)&this->_class_annotations;}
750 oop* adr_fields_annotations() const { return (oop*)&this->_fields_annotations;} 757 oop* adr_fields_annotations() const { return (oop*)&this->_fields_annotations;}
751 oop* adr_methods_annotations() const { return (oop*)&this->_methods_annotations;} 758 oop* adr_methods_annotations() const { return (oop*)&this->_methods_annotations;}