58 Klass* get_Klass() const {
59 Klass* k = (Klass*)_metadata;
60 assert(k != nullptr, "illegal use of unloaded klass");
61 return k;
62 }
63
64 // Certain subklasses have an associated class loader.
65 virtual oop loader() { return nullptr; }
66 virtual jobject loader_handle() { return nullptr; }
67
68 virtual oop protection_domain() { return nullptr; }
69 virtual jobject protection_domain_handle() { return nullptr; }
70
71 const char* type_string() { return "ciKlass"; }
72
73 void print_impl(outputStream* st);
74
75 public:
76 ciKlass(Klass* k);
77
78 // What is the name of this klass?
79 ciSymbol* name() const { return _name; }
80
81 // What is its layout helper value?
82 jint layout_helper() { return _layout_helper; }
83
84 bool is_subtype_of(ciKlass* klass);
85 bool is_subclass_of(ciKlass* klass);
86 juint super_depth();
87 juint super_check_offset();
88 ciKlass* super_of_depth(juint i);
89 static juint primary_super_limit() { return Klass::primary_super_limit(); }
90
91 // Is this ciObject the ciInstanceKlass representing java.lang.Object()?
92 virtual bool is_java_lang_Object() const { return false; }
93
94 // Get the shared parent of two klasses.
95 ciKlass* least_common_ancestor(ciKlass* k);
96
97 virtual bool is_interface() {
|
58 Klass* get_Klass() const {
59 Klass* k = (Klass*)_metadata;
60 assert(k != nullptr, "illegal use of unloaded klass");
61 return k;
62 }
63
64 // Certain subklasses have an associated class loader.
65 virtual oop loader() { return nullptr; }
66 virtual jobject loader_handle() { return nullptr; }
67
68 virtual oop protection_domain() { return nullptr; }
69 virtual jobject protection_domain_handle() { return nullptr; }
70
71 const char* type_string() { return "ciKlass"; }
72
73 void print_impl(outputStream* st);
74
75 public:
76 ciKlass(Klass* k);
77
78 bool is_mirror_instance_klass() { return get_Klass()->is_mirror_instance_klass(); }
79 bool is_reference_instance_klass() { return get_Klass()->is_reference_instance_klass(); }
80
81 // What is the name of this klass?
82 ciSymbol* name() const { return _name; }
83
84 // What is its layout helper value?
85 jint layout_helper() { return _layout_helper; }
86
87 bool is_subtype_of(ciKlass* klass);
88 bool is_subclass_of(ciKlass* klass);
89 juint super_depth();
90 juint super_check_offset();
91 ciKlass* super_of_depth(juint i);
92 static juint primary_super_limit() { return Klass::primary_super_limit(); }
93
94 // Is this ciObject the ciInstanceKlass representing java.lang.Object()?
95 virtual bool is_java_lang_Object() const { return false; }
96
97 // Get the shared parent of two klasses.
98 ciKlass* least_common_ancestor(ciKlass* k);
99
100 virtual bool is_interface() {
|