< prev index next >

src/hotspot/share/prims/jvmtiClassFileReconstituter.hpp

Print this page




  35   SymbolHashMap*       _classmap;
  36   constantPoolHandle   _cpool;
  37   InstanceKlass*       _ik;
  38   jvmtiError           _err;
  39 
  40  protected:
  41   InstanceKlass*  ik()           { return _ik; };
  42   constantPoolHandle   cpool()   { return _cpool; };
  43 
  44   u2 symbol_to_cpool_index(Symbol* sym) {
  45     return _symmap->symbol_to_value(sym);
  46   }
  47 
  48   u2 class_symbol_to_cpool_index(Symbol* sym) {
  49     return _classmap->symbol_to_value(sym);
  50   }
  51 
  52  public:
  53   // Calls to this constructor must be proceeded by a ResourceMark
  54   // and a HandleMark
  55   JvmtiConstantPoolReconstituter(InstanceKlass* ik){
  56     set_error(JVMTI_ERROR_NONE);
  57     _ik = ik;
  58     _cpool = constantPoolHandle(Thread::current(), ik->constants());
  59     _symmap = new SymbolHashMap();
  60     _classmap = new SymbolHashMap();
  61     _cpool_size = _cpool->hash_entries_to(_symmap, _classmap);
  62     if (_cpool_size == 0) {
  63       set_error(JVMTI_ERROR_OUT_OF_MEMORY);
  64     } else if (_cpool_size < 0) {
  65       set_error(JVMTI_ERROR_INTERNAL);
  66     }
  67   }
  68 
  69   ~JvmtiConstantPoolReconstituter() {
  70     if (_symmap != NULL) {
  71       delete _symmap;
  72       _symmap = NULL;
  73     }
  74     if (_classmap != NULL) {
  75       delete _classmap;
  76       _classmap = NULL;
  77     }
  78   }
  79 
  80 
  81   void       set_error(jvmtiError err)    { _err = err; }
  82   jvmtiError get_error()                  { return _err; }
  83 
  84   int cpool_size()                        { return _cpool_size; }
  85 
  86   void copy_cpool_bytes(unsigned char *cpool_bytes) {
  87     if (cpool_bytes == NULL) {




  35   SymbolHashMap*       _classmap;
  36   constantPoolHandle   _cpool;
  37   InstanceKlass*       _ik;
  38   jvmtiError           _err;
  39 
  40  protected:
  41   InstanceKlass*  ik()           { return _ik; };
  42   constantPoolHandle   cpool()   { return _cpool; };
  43 
  44   u2 symbol_to_cpool_index(Symbol* sym) {
  45     return _symmap->symbol_to_value(sym);
  46   }
  47 
  48   u2 class_symbol_to_cpool_index(Symbol* sym) {
  49     return _classmap->symbol_to_value(sym);
  50   }
  51 
  52  public:
  53   // Calls to this constructor must be proceeded by a ResourceMark
  54   // and a HandleMark
  55   JvmtiConstantPoolReconstituter(InstanceKlass* ik);












  56 
  57   ~JvmtiConstantPoolReconstituter() {
  58     if (_symmap != NULL) {
  59       delete _symmap;
  60       _symmap = NULL;
  61     }
  62     if (_classmap != NULL) {
  63       delete _classmap;
  64       _classmap = NULL;
  65     }
  66   }
  67 
  68 
  69   void       set_error(jvmtiError err)    { _err = err; }
  70   jvmtiError get_error()                  { return _err; }
  71 
  72   int cpool_size()                        { return _cpool_size; }
  73 
  74   void copy_cpool_bytes(unsigned char *cpool_bytes) {
  75     if (cpool_bytes == NULL) {


< prev index next >