comparison src/share/vm/oops/instanceKlass.hpp @ 14518:d8041d695d19

Merged with jdk9/dev/hotspot changeset 3812c088b945
author twisti
date Tue, 11 Mar 2014 18:45:59 -0700
parents 02f27ecb4f3a fdad2932c73f
children 4ca6dc0799b6
comparison
equal deleted inserted replaced
14141:f97c5ec83832 14518:d8041d695d19
1 /* 1 /*
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
304 // The embedded implementor only exists if the current klass is an 304 // The embedded implementor only exists if the current klass is an
305 // iterface. The possible values of the implementor fall into following 305 // iterface. The possible values of the implementor fall into following
306 // three cases: 306 // three cases:
307 // NULL: no implementor. 307 // NULL: no implementor.
308 // A Klass* that's not itself: one implementor. 308 // A Klass* that's not itself: one implementor.
309 // Itsef: more than one implementors. 309 // Itself: more than one implementors.
310 // embedded host klass follows here 310 // embedded host klass follows here
311 // The embedded host klass only exists in an anonymous class for 311 // The embedded host klass only exists in an anonymous class for
312 // dynamic language support (JSR 292 enabled). The host class grants 312 // dynamic language support (JSR 292 enabled). The host class grants
313 // its access privileges to this class also. The host class is either 313 // its access privileges to this class also. The host class is either
314 // named, or a previously loaded anonymous class. A non-anonymous class 314 // named, or a previously loaded anonymous class. A non-anonymous class
523 // lookup operation (returns NULL if not found) 523 // lookup operation (returns NULL if not found)
524 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; 524 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const;
525 525
526 // lookup a method in all the interfaces that this class implements 526 // lookup a method in all the interfaces that this class implements
527 // (returns NULL if not found) 527 // (returns NULL if not found)
528 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const; 528 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature, bool skip_default_methods) const;
529
529 // lookup a method in local defaults then in all interfaces 530 // lookup a method in local defaults then in all interfaces
530 // (returns NULL if not found) 531 // (returns NULL if not found)
531 Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const; 532 Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const;
532 533
533 // Find method indices by name. If a method with the specified name is 534 // Find method indices by name. If a method with the specified name is
551 Klass* host_klass() const { 552 Klass* host_klass() const {
552 Klass** hk = (Klass**)adr_host_klass(); 553 Klass** hk = (Klass**)adr_host_klass();
553 if (hk == NULL) { 554 if (hk == NULL) {
554 return NULL; 555 return NULL;
555 } else { 556 } else {
557 assert(*hk != NULL, "host klass should always be set if the address is not null");
556 return *hk; 558 return *hk;
557 } 559 }
558 } 560 }
559 void set_host_klass(Klass* host) { 561 void set_host_klass(Klass* host) {
560 assert(is_anonymous(), "not anonymous"); 562 assert(is_anonymous(), "not anonymous");
1083 #endif 1085 #endif
1084 1086
1085 const char* internal_name() const; 1087 const char* internal_name() const;
1086 1088
1087 // Verification 1089 // Verification
1088 void verify_on(outputStream* st, bool check_dictionary); 1090 void verify_on(outputStream* st);
1089 1091
1090 void oop_verify_on(oop obj, outputStream* st); 1092 void oop_verify_on(oop obj, outputStream* st);
1091 }; 1093 };
1092 1094
1093 inline Method* InstanceKlass::method_at_vtable(int index) { 1095 inline Method* InstanceKlass::method_at_vtable(int index) {