Mercurial > hg > graal-compiler
diff src/share/vm/oops/oop.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | b632e80fc9dc |
children | f34d701e952e |
line wrap: on
line diff
--- a/src/share/vm/oops/oop.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/oops/oop.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "classfile/altHashing.hpp" #include "classfile/javaClasses.hpp" #include "oops/oop.inline.hpp" #include "runtime/handles.inline.hpp" @@ -48,7 +49,7 @@ if (this == NULL) { st->print_cr("NULL"); } else { - blueprint()->oop_print_on(oop(this), st); + klass()->oop_print_on(oop(this), st); } } @@ -86,19 +87,15 @@ } else if (java_lang_String::is_instance(obj)) { java_lang_String::print(obj, st); if (PrintOopAddress) print_address_on(st); -#ifdef ASSERT - } else if (!Universe::heap()->is_in(obj) || !Universe::heap()->is_in(klass())) { - st->print("### BAD OOP %p ###", (address)obj); -#endif //ASSERT } else { - blueprint()->oop_print_value_on(obj, st); + klass()->oop_print_value_on(obj, st); } } void oopDesc::verify_on(outputStream* st) { if (this != NULL) { - blueprint()->oop_verify_on(this, st); + klass()->oop_verify_on(this, st); } } @@ -107,25 +104,23 @@ verify_on(tty); } -bool oopDesc::partially_loaded() { - return blueprint()->oop_partially_loaded(this); -} - - -void oopDesc::set_partially_loaded() { - blueprint()->oop_set_partially_loaded(this); -} - - intptr_t oopDesc::slow_identity_hash() { // slow case; we have to acquire the micro lock in order to locate the header ResetNoHandleMark rnm; // Might be called from LEAF/QUICK ENTRY HandleMark hm; - Handle object((oop)this); - assert(!is_shared_readonly(), "using identity hash on readonly object?"); + Handle object(this); return ObjectSynchronizer::identity_hash_value_for(object); } +// When String table needs to rehash +unsigned int oopDesc::new_hash(jint seed) { + ResourceMark rm; + int length; + jchar* chars = java_lang_String::as_unicode_string(this, length); + // Use alternate hashing algorithm on the string + return AltHashing::murmur3_32(seed, chars, length); +} + VerifyOopClosure VerifyOopClosure::verify_oop; void VerifyOopClosure::do_oop(oop* p) { VerifyOopClosure::do_oop_work(p); }