|
28 | 28 | #include "memory/referenceType.hpp" |
29 | 29 | #include "oops/annotations.hpp" |
30 | 30 | #include "oops/constMethod.hpp" |
31 | | -#include "oops/constantPool.hpp" |
32 | 31 | #include "oops/fieldInfo.hpp" |
33 | 32 | #include "oops/instanceKlassFlags.hpp" |
34 | 33 | #include "oops/instanceOop.hpp" |
35 | 34 | #include "runtime/handles.hpp" |
| 35 | +#include "runtime/javaThread.hpp" |
36 | 36 | #include "utilities/accessFlags.hpp" |
37 | 37 | #include "utilities/align.hpp" |
| 38 | +#include "utilities/growableArray.hpp" |
38 | 39 | #include "utilities/macros.hpp" |
39 | 40 | #if INCLUDE_JFR |
40 | 41 | #include "jfr/support/jfrKlassExtension.hpp" |
41 | 42 | #endif |
42 | 43 |
|
| 44 | +class ConstantPool; |
43 | 45 | class DeoptimizationScope; |
44 | 46 | class klassItable; |
| 47 | +class Monitor; |
45 | 48 | class RecordComponent; |
46 | 49 |
|
47 | 50 | // An InstanceKlass is the VM level representation of a Java class. |
@@ -645,15 +648,15 @@ class InstanceKlass: public Klass { |
645 | 648 | void set_is_contended(bool value) { _misc_flags.set_is_contended(value); } |
646 | 649 |
|
647 | 650 | // source file name |
648 | | - Symbol* source_file_name() const { return _constants->source_file_name(); } |
649 | | - u2 source_file_name_index() const { return _constants->source_file_name_index(); } |
650 | | - void set_source_file_name_index(u2 sourcefile_index) { _constants->set_source_file_name_index(sourcefile_index); } |
| 651 | + Symbol* source_file_name() const; |
| 652 | + u2 source_file_name_index() const; |
| 653 | + void set_source_file_name_index(u2 sourcefile_index); |
651 | 654 |
|
652 | 655 | // minor and major version numbers of class file |
653 | | - u2 minor_version() const { return _constants->minor_version(); } |
654 | | - void set_minor_version(u2 minor_version) { _constants->set_minor_version(minor_version); } |
655 | | - u2 major_version() const { return _constants->major_version(); } |
656 | | - void set_major_version(u2 major_version) { _constants->set_major_version(major_version); } |
| 656 | + u2 minor_version() const; |
| 657 | + void set_minor_version(u2 minor_version); |
| 658 | + u2 major_version() const; |
| 659 | + void set_major_version(u2 major_version); |
657 | 660 |
|
658 | 661 | // source debug extension |
659 | 662 | const char* source_debug_extension() const { return _source_debug_extension; } |
@@ -690,14 +693,7 @@ class InstanceKlass: public Klass { |
690 | 693 | InstanceKlass* previous_versions() const { return nullptr; } |
691 | 694 | #endif |
692 | 695 |
|
693 | | - InstanceKlass* get_klass_version(int version) { |
694 | | - for (InstanceKlass* ik = this; ik != nullptr; ik = ik->previous_versions()) { |
695 | | - if (ik->constants()->version() == version) { |
696 | | - return ik; |
697 | | - } |
698 | | - } |
699 | | - return nullptr; |
700 | | - } |
| 696 | + InstanceKlass* get_klass_version(int version); |
701 | 697 |
|
702 | 698 | bool has_been_redefined() const { return _misc_flags.has_been_redefined(); } |
703 | 699 | void set_has_been_redefined() { _misc_flags.set_has_been_redefined(true); } |
@@ -773,9 +769,9 @@ class InstanceKlass: public Klass { |
773 | 769 | void set_initial_method_idnum(u2 value) { _idnum_allocated_count = value; } |
774 | 770 |
|
775 | 771 | // generics support |
776 | | - Symbol* generic_signature() const { return _constants->generic_signature(); } |
777 | | - u2 generic_signature_index() const { return _constants->generic_signature_index(); } |
778 | | - void set_generic_signature_index(u2 sig_index) { _constants->set_generic_signature_index(sig_index); } |
| 772 | + Symbol* generic_signature() const; |
| 773 | + u2 generic_signature_index() const; |
| 774 | + void set_generic_signature_index(u2 sig_index); |
779 | 775 |
|
780 | 776 | u2 enclosing_method_data(int offset) const; |
781 | 777 | u2 enclosing_method_class_index() const { |
@@ -995,9 +991,7 @@ class InstanceKlass: public Klass { |
995 | 991 | void static deallocate_record_components(ClassLoaderData* loader_data, |
996 | 992 | Array<RecordComponent*>* record_component); |
997 | 993 |
|
998 | | - // The constant pool is on stack if any of the methods are executing or |
999 | | - // referenced by handles. |
1000 | | - bool on_stack() const { return _constants->on_stack(); } |
| 994 | + virtual bool on_stack() const; |
1001 | 995 |
|
1002 | 996 | // callbacks for actions during class unloading |
1003 | 997 | static void unload_class(InstanceKlass* ik); |
|
0 commit comments