< prev index next >
src/hotspot/share/classfile/classLoaderStats.hpp
Print this page
rev 59248 : 8244777: ClassLoaderStats VM Op uses constant hash value
*** 100,111 ****
static bool oop_equals(oop const& s1, oop const& s2) {
return s1 == s2;
}
static unsigned oop_hash(oop const& s1) {
! unsigned hash = (unsigned)((uintptr_t)&s1);
! return hash ^ (hash >> LogMinObjAlignment);
}
typedef ResourceHashtable<oop, ClassLoaderStats*,
ClassLoaderStatsClosure::oop_hash, ClassLoaderStatsClosure::oop_equals> StatsTable;
--- 100,118 ----
static bool oop_equals(oop const& s1, oop const& s2) {
return s1 == s2;
}
static unsigned oop_hash(oop const& s1) {
! uintptr_t tmp = cast_from_oop<uintptr_t>(s1);
! unsigned hash = (unsigned)tmp;
! hash = ~hash + (hash << 15);
! hash = hash ^ (hash >> 12);
! hash = hash + (hash << 2);
! hash = hash ^ (hash >> 4);
! hash = hash * 2057;
! hash = hash ^ (hash >> 16);
! return hash;
}
typedef ResourceHashtable<oop, ClassLoaderStats*,
ClassLoaderStatsClosure::oop_hash, ClassLoaderStatsClosure::oop_equals> StatsTable;
< prev index next >