26 #define SHARE_VM_CI_CIKLASS_HPP
27
28 #include "ci/ciType.hpp"
29
30 // ciKlass
31 //
32 // This class and its subclasses represent Klass*s in the
33 // HotSpot virtual machine. In the vm, each Klass* contains an
34 // embedded Klass object. ciKlass is subclassed to explicitly
35 // represent the kind of Klass embedded in the Klass*. For
36 // example, a Klass* with an embedded ObjArrayKlass object is
37 // represented in the ciObject hierarchy by the class
38 // ciObjArrayKlass.
39 class ciKlass : public ciType {
40 CI_PACKAGE_ACCESS
41 friend class ciEnv;
42 friend class ciField;
43 friend class ciMethod;
44 friend class ciMethodData;
45 friend class ciObjArrayKlass;
46
47 private:
48 ciSymbol* _name;
49 jint _layout_helper;
50
51 protected:
52 ciKlass(KlassHandle k_h, ciSymbol* name);
53 ciKlass(ciSymbol* name, BasicType bt);
54
55 Klass* get_Klass() const {
56 Klass* k = (Klass*)_metadata;
57 assert(k != NULL, "illegal use of unloaded klass");
58 return k;
59 }
60
61 // Certain subklasses have an associated class loader.
62 virtual oop loader() { return NULL; }
63 virtual jobject loader_handle() { return NULL; }
64
65 virtual oop protection_domain() { return NULL; }
|
26 #define SHARE_VM_CI_CIKLASS_HPP
27
28 #include "ci/ciType.hpp"
29
30 // ciKlass
31 //
32 // This class and its subclasses represent Klass*s in the
33 // HotSpot virtual machine. In the vm, each Klass* contains an
34 // embedded Klass object. ciKlass is subclassed to explicitly
35 // represent the kind of Klass embedded in the Klass*. For
36 // example, a Klass* with an embedded ObjArrayKlass object is
37 // represented in the ciObject hierarchy by the class
38 // ciObjArrayKlass.
39 class ciKlass : public ciType {
40 CI_PACKAGE_ACCESS
41 friend class ciEnv;
42 friend class ciField;
43 friend class ciMethod;
44 friend class ciMethodData;
45 friend class ciObjArrayKlass;
46 friend class ciReceiverTypeData;
47
48 private:
49 ciSymbol* _name;
50 jint _layout_helper;
51
52 protected:
53 ciKlass(KlassHandle k_h, ciSymbol* name);
54 ciKlass(ciSymbol* name, BasicType bt);
55
56 Klass* get_Klass() const {
57 Klass* k = (Klass*)_metadata;
58 assert(k != NULL, "illegal use of unloaded klass");
59 return k;
60 }
61
62 // Certain subklasses have an associated class loader.
63 virtual oop loader() { return NULL; }
64 virtual jobject loader_handle() { return NULL; }
65
66 virtual oop protection_domain() { return NULL; }
|