src/share/vm/ci/ciKlass.hpp

Print this page




  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 Dependencies;
  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; }