< prev index next >

src/share/vm/classfile/symbolTable.cpp

Print this page


  64     sym = new (len, THREAD) Symbol(name, len, 1);
  65     assert(sym != NULL, "new should call vm_exit_out_of_memory if C_HEAP is exhausted");
  66   } else {
  67     // Allocate to global arena
  68     sym = new (len, arena(), THREAD) Symbol(name, len, PERM_REFCOUNT);
  69   }
  70   return sym;
  71 }
  72 
  73 void SymbolTable::initialize_symbols(int arena_alloc_size) {
  74   // Initialize the arena for global symbols, size passed in depends on CDS.
  75   if (arena_alloc_size == 0) {
  76     _arena = new (mtSymbol) Arena(mtSymbol);
  77   } else {
  78     _arena = new (mtSymbol) Arena(mtSymbol, arena_alloc_size);
  79   }
  80 }
  81 
  82 // Call function for all symbols in the symbol table.
  83 void SymbolTable::symbols_do(SymbolClosure *cl) {
  84   if (!DumpSharedSpaces) {
  85     // all symbols from shared table
  86     _shared_table.symbols_do(cl);
  87   }
  88 
  89   // all symbols from the dynamic table
  90   const int n = the_table()->table_size();
  91   for (int i = 0; i < n; i++) {
  92     for (HashtableEntry<Symbol*, mtSymbol>* p = the_table()->bucket(i);
  93          p != NULL;
  94          p = p->next()) {
  95       cl->do_symbol(p->literal_addr());
  96     }
  97   }
  98 }
  99 
 100 void SymbolTable::metaspace_pointers_do(MetaspaceClosure* it) {
 101   assert(DumpSharedSpaces, "called only during dump time");
 102   const int n = the_table()->table_size();
 103   for (int i = 0; i < n; i++) {
 104     for (HashtableEntry<Symbol*, mtSymbol>* p = the_table()->bucket(i);
 105          p != NULL;
 106          p = p->next()) {
 107       it->push(p->literal_addr());




  64     sym = new (len, THREAD) Symbol(name, len, 1);
  65     assert(sym != NULL, "new should call vm_exit_out_of_memory if C_HEAP is exhausted");
  66   } else {
  67     // Allocate to global arena
  68     sym = new (len, arena(), THREAD) Symbol(name, len, PERM_REFCOUNT);
  69   }
  70   return sym;
  71 }
  72 
  73 void SymbolTable::initialize_symbols(int arena_alloc_size) {
  74   // Initialize the arena for global symbols, size passed in depends on CDS.
  75   if (arena_alloc_size == 0) {
  76     _arena = new (mtSymbol) Arena(mtSymbol);
  77   } else {
  78     _arena = new (mtSymbol) Arena(mtSymbol, arena_alloc_size);
  79   }
  80 }
  81 
  82 // Call function for all symbols in the symbol table.
  83 void SymbolTable::symbols_do(SymbolClosure *cl) {

  84   // all symbols from shared table
  85   _shared_table.symbols_do(cl);

  86 
  87   // all symbols from the dynamic table
  88   const int n = the_table()->table_size();
  89   for (int i = 0; i < n; i++) {
  90     for (HashtableEntry<Symbol*, mtSymbol>* p = the_table()->bucket(i);
  91          p != NULL;
  92          p = p->next()) {
  93       cl->do_symbol(p->literal_addr());
  94     }
  95   }
  96 }
  97 
  98 void SymbolTable::metaspace_pointers_do(MetaspaceClosure* it) {
  99   assert(DumpSharedSpaces, "called only during dump time");
 100   const int n = the_table()->table_size();
 101   for (int i = 0; i < n; i++) {
 102     for (HashtableEntry<Symbol*, mtSymbol>* p = the_table()->bucket(i);
 103          p != NULL;
 104          p = p->next()) {
 105       it->push(p->literal_addr());


< prev index next >