< prev index next >

src/hotspot/share/ci/ciSymbol.hpp

Print this page




  29 #include "ci/ciObject.hpp"
  30 #include "ci/ciObjectFactory.hpp"
  31 #include "classfile/vmSymbols.hpp"
  32 #include "oops/symbol.hpp"
  33 
  34 // ciSymbol
  35 //
  36 // This class represents a Symbol* in the HotSpot virtual
  37 // machine.
  38 class ciSymbol : public ciBaseObject {
  39   Symbol* _symbol;
  40 
  41   CI_PACKAGE_ACCESS
  42   // These friends all make direct use of get_symbol:
  43   friend class ciEnv;
  44   friend class ciInstanceKlass;
  45   friend class ciSignature;
  46   friend class ciMethod;
  47   friend class ciField;
  48   friend class ciObjArrayKlass;

  49 
  50 private:
  51   const vmSymbols::SID _sid;
  52   DEBUG_ONLY( bool sid_ok() { return vmSymbols::find_sid(get_symbol()) == _sid; } )
  53 
  54   ciSymbol(Symbol* s);  // normal case, for symbols not mentioned in vmSymbols
  55   ciSymbol(Symbol* s, vmSymbols::SID sid);   // for use with vmSymbols
  56 
  57   Symbol* get_symbol() const { return _symbol; }
  58 
  59   const char* type_string() { return "ciSymbol"; }
  60 
  61   void print_impl(outputStream* st);
  62 
  63   // This is public in Symbol* but private here, because the base can move:
  64   const u1* base();
  65 
  66   // Make a ciSymbol from a C string (implementation).
  67   static ciSymbol* make_impl(const char* s);
  68 




  29 #include "ci/ciObject.hpp"
  30 #include "ci/ciObjectFactory.hpp"
  31 #include "classfile/vmSymbols.hpp"
  32 #include "oops/symbol.hpp"
  33 
  34 // ciSymbol
  35 //
  36 // This class represents a Symbol* in the HotSpot virtual
  37 // machine.
  38 class ciSymbol : public ciBaseObject {
  39   Symbol* _symbol;
  40 
  41   CI_PACKAGE_ACCESS
  42   // These friends all make direct use of get_symbol:
  43   friend class ciEnv;
  44   friend class ciInstanceKlass;
  45   friend class ciSignature;
  46   friend class ciMethod;
  47   friend class ciField;
  48   friend class ciObjArrayKlass;
  49   friend class ciValueArrayKlass;
  50 
  51 private:
  52   const vmSymbols::SID _sid;
  53   DEBUG_ONLY( bool sid_ok() { return vmSymbols::find_sid(get_symbol()) == _sid; } )
  54 
  55   ciSymbol(Symbol* s);  // normal case, for symbols not mentioned in vmSymbols
  56   ciSymbol(Symbol* s, vmSymbols::SID sid);   // for use with vmSymbols
  57 
  58   Symbol* get_symbol() const { return _symbol; }
  59 
  60   const char* type_string() { return "ciSymbol"; }
  61 
  62   void print_impl(outputStream* st);
  63 
  64   // This is public in Symbol* but private here, because the base can move:
  65   const u1* base();
  66 
  67   // Make a ciSymbol from a C string (implementation).
  68   static ciSymbol* make_impl(const char* s);
  69 


< prev index next >