Mercurial > hg > graal-compiler
diff src/share/vm/oops/klass.hpp @ 2177:3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
Summary: move symbols from permgen into C heap and reference count them
Reviewed-by: never, acorn, jmasa, stefank
author | coleenp |
---|---|
date | Thu, 27 Jan 2011 16:11:27 -0800 |
parents | f95d63e2154a |
children | d25d4ca69222 c7f3d0b4570f |
line wrap: on
line diff
--- a/src/share/vm/oops/klass.hpp Thu Jan 27 13:42:28 2011 -0800 +++ b/src/share/vm/oops/klass.hpp Thu Jan 27 16:11:27 2011 -0800 @@ -212,6 +212,10 @@ // secondary supers, else is &_primary_supers[depth()]. juint _super_check_offset; + // Class name. Instance classes: java/lang/String, etc. Array classes: [I, + // [Ljava/lang/String;, etc. Set to zero for all other kinds of classes. + Symbol* _name; + public: oop* oop_block_beg() const { return adr_secondary_super_cache(); } oop* oop_block_end() const { return adr_next_sibling() + 1; } @@ -235,9 +239,6 @@ oop _java_mirror; // Superclass klassOop _super; - // Class name. Instance classes: java/lang/String, etc. Array classes: [I, - // [Ljava/lang/String;, etc. Set to zero for all other kinds of classes. - symbolOop _name; // First subclass (NULL if none); _subklass->next_sibling() is next one klassOop _subklass; // Sibling link (or NULL); links all subklasses of a klass @@ -361,7 +362,6 @@ oop* adr_secondary_super_cache() const { return (oop*)&_secondary_super_cache; } oop* adr_secondary_supers()const { return (oop*)&_secondary_supers; } oop* adr_java_mirror() const { return (oop*)&_java_mirror; } - oop* adr_name() const { return (oop*)&_name; } oop* adr_subklass() const { return (oop*)&_subklass; } oop* adr_next_sibling() const { return (oop*)&_next_sibling; } @@ -511,9 +511,9 @@ virtual void initialize(TRAPS); // lookup operation for MethodLookupCache friend class MethodLookupCache; - virtual methodOop uncached_lookup_method(symbolOop name, symbolOop signature) const; + virtual methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const; public: - methodOop lookup_method(symbolOop name, symbolOop signature) const { + methodOop lookup_method(Symbol* name, Symbol* signature) const { return uncached_lookup_method(name, signature); } @@ -537,6 +537,7 @@ public: virtual void remove_unshareable_info(); + virtual void shared_symbols_iterate(SymbolClosure* closure); protected: // computes the subtype relationship @@ -579,7 +580,6 @@ virtual bool oop_is_instanceRef() const { return false; } virtual bool oop_is_array() const { return false; } virtual bool oop_is_objArray_slow() const { return false; } - virtual bool oop_is_symbol() const { return false; } virtual bool oop_is_klass() const { return false; } virtual bool oop_is_thread() const { return false; } virtual bool oop_is_method() const { return false; } @@ -781,8 +781,8 @@ Klass *up_cast_abstract(); // klass name - symbolOop name() const { return _name; } - void set_name(symbolOop n) { oop_store_without_check((oop*) &_name, (oop) n); } + Symbol* name() const { return _name; } + void set_name(Symbol* n); friend class klassKlass;