473 Klass* find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; 474 // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined 475 Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; 476 // find instance or static fields according to JVM spec 5.4.3.2, returns the klass in which the field is defined 477 Klass* find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const; 478 479 // find a non-static or static field given its offset within the class. 480 bool contains_field_offset(int offset) { 481 return instanceOopDesc::contains_field_offset(offset, nonstatic_field_size()); 482 } 483 484 bool find_local_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const; 485 bool find_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const; 486 487 // find a local method (returns NULL if not found) 488 Method* find_method(Symbol* name, Symbol* signature) const; 489 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); 490 static Method* find_instance_method(Array<Method*>* methods, Symbol* name, Symbol* signature); 491 492 // find a local method index in default_methods (returns -1 if not found) 493 static int find_method_index(Array<Method*>* methods, Symbol* name, Symbol* signature); 494 495 // lookup operation (returns NULL if not found) 496 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; 497 498 // lookup a method in all the interfaces that this class implements 499 // (returns NULL if not found) 500 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature, bool skip_default_methods) const; 501 502 // lookup a method in local defaults then in all interfaces 503 // (returns NULL if not found) 504 Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const; 505 506 // Find method indices by name. If a method with the specified name is 507 // found the index to the first method is returned, and 'end' is filled in 508 // with the index of first non-name-matching method. If no method is found 509 // -1 is returned. 510 int find_method_by_name(Symbol* name, int* end); 511 static int find_method_by_name(Array<Method*>* methods, Symbol* name, int* end); 512 513 // constant pool 514 ConstantPool* constants() const { return _constants; } 515 void set_constants(ConstantPool* c) { _constants = c; } 516 1003 1004 // Static methods that are used to implement member methods where an exposed this pointer 1005 // is needed due to possible GCs 1006 static bool link_class_impl (instanceKlassHandle this_k, bool throw_verifyerror, TRAPS); 1007 static bool verify_code (instanceKlassHandle this_k, bool throw_verifyerror, TRAPS); 1008 static void initialize_impl (instanceKlassHandle this_k, TRAPS); 1009 static void eager_initialize_impl (instanceKlassHandle this_k); 1010 static void set_initialization_state_and_notify_impl (instanceKlassHandle this_k, ClassState state, TRAPS); 1011 static void call_class_initializer_impl (instanceKlassHandle this_k, TRAPS); 1012 static Klass* array_klass_impl (instanceKlassHandle this_k, bool or_null, int n, TRAPS); 1013 static void do_local_static_fields_impl (instanceKlassHandle this_k, void f(fieldDescriptor* fd, TRAPS), TRAPS); 1014 /* jni_id_for_impl for jfieldID only */ 1015 static JNIid* jni_id_for_impl (instanceKlassHandle this_k, int offset); 1016 1017 // Returns the array class for the n'th dimension 1018 Klass* array_klass_impl(bool or_null, int n, TRAPS); 1019 1020 // Returns the array class with this class as element type 1021 Klass* array_klass_impl(bool or_null, TRAPS); 1022 1023 // Free CHeap allocated fields. 1024 void release_C_heap_structures(); 1025 public: 1026 // CDS support - remove and restore oops from metadata. Oops are not shared. 1027 virtual void remove_unshareable_info(); 1028 virtual void restore_unshareable_info(TRAPS); 1029 1030 // jvm support 1031 jint compute_modifier_flags(TRAPS) const; 1032 1033 // JSR-292 support 1034 MemberNameTable* member_names() { return _member_names; } 1035 void set_member_names(MemberNameTable* member_names) { _member_names = member_names; } 1036 void add_member_name(int index, Handle member_name); 1037 oop get_member_name(int index); 1038 1039 public: 1040 // JVMTI support 1041 jint jvmti_class_status() const; 1042 | 473 Klass* find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; 474 // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined 475 Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; 476 // find instance or static fields according to JVM spec 5.4.3.2, returns the klass in which the field is defined 477 Klass* find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const; 478 479 // find a non-static or static field given its offset within the class. 480 bool contains_field_offset(int offset) { 481 return instanceOopDesc::contains_field_offset(offset, nonstatic_field_size()); 482 } 483 484 bool find_local_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const; 485 bool find_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const; 486 487 // find a local method (returns NULL if not found) 488 Method* find_method(Symbol* name, Symbol* signature) const; 489 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); 490 static Method* find_instance_method(Array<Method*>* methods, Symbol* name, Symbol* signature); 491 492 // find a local method index in default_methods (returns -1 if not found) 493 static int find_method_index(Array<Method*>* methods, Symbol* name, Symbol* signature, bool ignore_overpass); 494 495 // lookup operation (returns NULL if not found) 496 Method* uncached_lookup_method(Symbol* name, Symbol* signature, bool ignore_overpass) const; 497 498 // lookup a method in all the interfaces that this class implements 499 // (returns NULL if not found) 500 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature, bool skip_default_methods) const; 501 502 // lookup a method in local defaults then in all interfaces 503 // (returns NULL if not found) 504 Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const; 505 506 // Find method indices by name. If a method with the specified name is 507 // found the index to the first method is returned, and 'end' is filled in 508 // with the index of first non-name-matching method. If no method is found 509 // -1 is returned. 510 int find_method_by_name(Symbol* name, int* end); 511 static int find_method_by_name(Array<Method*>* methods, Symbol* name, int* end); 512 513 // constant pool 514 ConstantPool* constants() const { return _constants; } 515 void set_constants(ConstantPool* c) { _constants = c; } 516 1003 1004 // Static methods that are used to implement member methods where an exposed this pointer 1005 // is needed due to possible GCs 1006 static bool link_class_impl (instanceKlassHandle this_k, bool throw_verifyerror, TRAPS); 1007 static bool verify_code (instanceKlassHandle this_k, bool throw_verifyerror, TRAPS); 1008 static void initialize_impl (instanceKlassHandle this_k, TRAPS); 1009 static void eager_initialize_impl (instanceKlassHandle this_k); 1010 static void set_initialization_state_and_notify_impl (instanceKlassHandle this_k, ClassState state, TRAPS); 1011 static void call_class_initializer_impl (instanceKlassHandle this_k, TRAPS); 1012 static Klass* array_klass_impl (instanceKlassHandle this_k, bool or_null, int n, TRAPS); 1013 static void do_local_static_fields_impl (instanceKlassHandle this_k, void f(fieldDescriptor* fd, TRAPS), TRAPS); 1014 /* jni_id_for_impl for jfieldID only */ 1015 static JNIid* jni_id_for_impl (instanceKlassHandle this_k, int offset); 1016 1017 // Returns the array class for the n'th dimension 1018 Klass* array_klass_impl(bool or_null, int n, TRAPS); 1019 1020 // Returns the array class with this class as element type 1021 Klass* array_klass_impl(bool or_null, TRAPS); 1022 1023 // find a local method (returns NULL if not found) 1024 Method* find_method_impl(Symbol* name, Symbol* signature, bool ignore_overpass) const; 1025 static Method* find_method_impl(Array<Method*>* methods, Symbol* name, Symbol* signature, bool ignore_overpass); 1026 1027 // Free CHeap allocated fields. 1028 void release_C_heap_structures(); 1029 public: 1030 // CDS support - remove and restore oops from metadata. Oops are not shared. 1031 virtual void remove_unshareable_info(); 1032 virtual void restore_unshareable_info(TRAPS); 1033 1034 // jvm support 1035 jint compute_modifier_flags(TRAPS) const; 1036 1037 // JSR-292 support 1038 MemberNameTable* member_names() { return _member_names; } 1039 void set_member_names(MemberNameTable* member_names) { _member_names = member_names; } 1040 void add_member_name(int index, Handle member_name); 1041 oop get_member_name(int index); 1042 1043 public: 1044 // JVMTI support 1045 jint jvmti_class_status() const; 1046 |