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