55 ciKlass(Klass* k, ciSymbol* name);
56 ciKlass(ciSymbol* name, BasicType bt);
57
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 const char* type_string() { return "ciKlass"; }
69
70 void print_impl(outputStream* st);
71
72 public:
73 ciKlass(Klass* k);
74
75 // What is the name of this klass?
76 ciSymbol* name() const { return _name; }
77
78 // What is its layout helper value?
79 jint layout_helper() { return _layout_helper; }
80
81 bool is_subtype_of(ciKlass* klass);
82 bool is_subclass_of(ciKlass* klass);
83 juint super_depth();
84 juint super_check_offset();
85 ciKlass* super_of_depth(juint i);
86 static juint primary_super_limit() { return Klass::primary_super_limit(); }
87
88 // Is this ciObject the ciInstanceKlass representing java.lang.Object()?
89 virtual bool is_java_lang_Object() const { return false; }
90
91 // Get the shared parent of two klasses.
92 ciKlass* least_common_ancestor(ciKlass* k);
93
94 virtual bool is_interface() {
|
55 ciKlass(Klass* k, ciSymbol* name);
56 ciKlass(ciSymbol* name, BasicType bt);
57
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 const char* type_string() { return "ciKlass"; }
69
70 void print_impl(outputStream* st);
71
72 public:
73 ciKlass(Klass* k);
74
75 bool is_mirror_instance_klass() { return get_Klass()->is_mirror_instance_klass(); }
76 bool is_reference_instance_klass() { return get_Klass()->is_reference_instance_klass(); }
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() {
|