6990754: Use native memory and reference counting to implement SymbolTable

Move symbols from permgen into C heap and reference count them

Reviewed-by: never, acorn, jmasa, stefank
This commit is contained in:
Coleen Phillimore 2011-01-27 16:11:27 -08:00
parent 950858350d
commit 7b4f8073f0
223 changed files with 3783 additions and 3641 deletions

View file

@ -35,6 +35,10 @@
#include "oops/oop.inline2.hpp"
#include "runtime/atomic.hpp"
void Klass::set_name(Symbol* n) {
_name = n;
if (_name != NULL) _name->increment_refcount();
}
bool Klass::is_subclass_of(klassOop k) const {
// Run up the super chain and check
@ -115,7 +119,7 @@ bool Klass::compute_is_subtype_of(klassOop k) {
}
methodOop Klass::uncached_lookup_method(symbolOop name, symbolOop signature) const {
methodOop Klass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
#ifdef ASSERT
tty->print_cr("Error: uncached_lookup_method called on a klass oop."
" Likely error: reflection method does not correctly"
@ -454,6 +458,11 @@ void Klass::remove_unshareable_info() {
}
void Klass::shared_symbols_iterate(SymbolClosure* closure) {
closure->do_symbol(&_name);
}
klassOop Klass::array_klass_or_null(int rank) {
EXCEPTION_MARK;
// No exception can be thrown by array_klass_impl when called with or_null == true.