src/hotspot/share/classfile/altHashing.cpp
changeset 47765 b7c7428eaab9
parent 47216 71c04702a3d5
child 49722 a47d1e21b3f1
equal deleted inserted replaced
47764:029d5efaaa6c 47765:b7c7428eaab9
    40 
    40 
    41 // Seed value used for each alternative hash calculated.
    41 // Seed value used for each alternative hash calculated.
    42 juint AltHashing::compute_seed() {
    42 juint AltHashing::compute_seed() {
    43   jlong nanos = os::javaTimeNanos();
    43   jlong nanos = os::javaTimeNanos();
    44   jlong now = os::javaTimeMillis();
    44   jlong now = os::javaTimeMillis();
    45   int SEED_MATERIAL[8] = {
    45   jint SEED_MATERIAL[8] = {
    46             (int) object_hash(SystemDictionary::String_klass()),
    46             (jint) object_hash(SystemDictionary::String_klass()),
    47             (int) object_hash(SystemDictionary::System_klass()),
    47             (jint) object_hash(SystemDictionary::System_klass()),
    48             os::random(),  // current thread isn't a java thread
    48             (jint) os::random(),  // current thread isn't a java thread
    49             (int) (((julong)nanos) >> 32),
    49             (jint) (((julong)nanos) >> 32),
    50             (int) nanos,
    50             (jint) nanos,
    51             (int) (((julong)now) >> 32),
    51             (jint) (((julong)now) >> 32),
    52             (int) now,
    52             (jint) now,
    53             (int) (os::javaTimeNanos() >> 2)
    53             (jint) (os::javaTimeNanos() >> 2)
    54   };
    54   };
    55 
    55 
    56   return murmur3_32(SEED_MATERIAL, 8);
    56   return murmur3_32(SEED_MATERIAL, 8);
    57 }
    57 }
    58 
    58 
   165 
   165 
   166   return h1;
   166   return h1;
   167 }
   167 }
   168 
   168 
   169 // Hash used for the seed.
   169 // Hash used for the seed.
   170 juint AltHashing::murmur3_32(juint seed, const int* data, int len) {
   170 juint AltHashing::murmur3_32(juint seed, const jint* data, int len) {
   171   juint h1 = seed;
   171   juint h1 = seed;
   172 
   172 
   173   int off = 0;
   173   int off = 0;
   174   int end = len;
   174   int end = len;
   175 
   175 
   200   h1 ^= h1 >> 16;
   200   h1 ^= h1 >> 16;
   201 
   201 
   202   return h1;
   202   return h1;
   203 }
   203 }
   204 
   204 
   205 juint AltHashing::murmur3_32(const int* data, int len) {
   205 juint AltHashing::murmur3_32(const jint* data, int len) {
   206   return murmur3_32(0, data, len);
   206   return murmur3_32(0, data, len);
   207 }
   207 }