< prev index next >

test/hotspot/gtest/classfile/test_AltHashing.cpp

Print this page




  34 static const jchar TWO_CHAR[] = {(jchar) 0x8180, (jchar) 0x8382};
  35 static const jint ONE_INT[] = {(jint) 0x83828180};
  36 static const jbyte SIX_BYTE[] = {(jbyte) 0x80, (jbyte) 0x81, (jbyte) 0x82, (jbyte) 0x83, (jbyte) 0x84, (jbyte) 0x85};
  37 static const jchar THREE_CHAR[] = {(jchar) 0x8180, (jchar) 0x8382, (jchar) 0x8584};
  38 static const jbyte EIGHT_BYTE[] = {
  39   (jbyte) 0x80, (jbyte) 0x81, (jbyte) 0x82,
  40   (jbyte) 0x83, (jbyte) 0x84, (jbyte) 0x85,
  41   (jbyte) 0x86, (jbyte) 0x87
  42 };
  43 static const jchar FOUR_CHAR[] = {
  44   (jchar) 0x8180, (jchar) 0x8382,
  45   (jchar) 0x8584, (jchar) 0x8786
  46 };
  47 
  48 static const jint TWO_INT[] = {(jint) 0x83828180, (jint) 0x87868584};
  49 static const juint MURMUR3_32_X86_CHECK_VALUE = 0xB0F57EE3;
  50 
  51 class AltHashingTest : public ::testing::Test {
  52  public:
  53 
  54   static juint murmur3_32(const int* data, int len) {
  55     return AltHashing::murmur3_32(data, len);
  56   }
  57 };
  58 
  59 TEST_F(AltHashingTest, murmur3_32_byte_array_test) {
  60   jbyte vector[256];
  61   jbyte hashes[4 * 256];
  62 
  63   for (int i = 0; i < 256; i++) {
  64     vector[i] = (jbyte) i;
  65   }
  66 
  67   // Hash subranges {}, {0}, {0,1}, {0,1,2}, ..., {0,...,255}
  68   for (int i = 0; i < 256; i++) {
  69     juint hash = AltHashing::murmur3_32(256 - i, vector, i);
  70     hashes[i * 4] = (jbyte) hash;
  71     hashes[i * 4 + 1] = (jbyte) (hash >> 8);
  72     hashes[i * 4 + 2] = (jbyte) (hash >> 16);
  73     hashes[i * 4 + 3] = (jbyte) (hash >> 24);
  74   }




  34 static const jchar TWO_CHAR[] = {(jchar) 0x8180, (jchar) 0x8382};
  35 static const jint ONE_INT[] = {(jint) 0x83828180};
  36 static const jbyte SIX_BYTE[] = {(jbyte) 0x80, (jbyte) 0x81, (jbyte) 0x82, (jbyte) 0x83, (jbyte) 0x84, (jbyte) 0x85};
  37 static const jchar THREE_CHAR[] = {(jchar) 0x8180, (jchar) 0x8382, (jchar) 0x8584};
  38 static const jbyte EIGHT_BYTE[] = {
  39   (jbyte) 0x80, (jbyte) 0x81, (jbyte) 0x82,
  40   (jbyte) 0x83, (jbyte) 0x84, (jbyte) 0x85,
  41   (jbyte) 0x86, (jbyte) 0x87
  42 };
  43 static const jchar FOUR_CHAR[] = {
  44   (jchar) 0x8180, (jchar) 0x8382,
  45   (jchar) 0x8584, (jchar) 0x8786
  46 };
  47 
  48 static const jint TWO_INT[] = {(jint) 0x83828180, (jint) 0x87868584};
  49 static const juint MURMUR3_32_X86_CHECK_VALUE = 0xB0F57EE3;
  50 
  51 class AltHashingTest : public ::testing::Test {
  52  public:
  53 
  54   static juint murmur3_32(const jint* data, int len) {
  55     return AltHashing::murmur3_32(data, len);
  56   }
  57 };
  58 
  59 TEST_F(AltHashingTest, murmur3_32_byte_array_test) {
  60   jbyte vector[256];
  61   jbyte hashes[4 * 256];
  62 
  63   for (int i = 0; i < 256; i++) {
  64     vector[i] = (jbyte) i;
  65   }
  66 
  67   // Hash subranges {}, {0}, {0,1}, {0,1,2}, ..., {0,...,255}
  68   for (int i = 0; i < 256; i++) {
  69     juint hash = AltHashing::murmur3_32(256 - i, vector, i);
  70     hashes[i * 4] = (jbyte) hash;
  71     hashes[i * 4 + 1] = (jbyte) (hash >> 8);
  72     hashes[i * 4 + 2] = (jbyte) (hash >> 16);
  73     hashes[i * 4 + 3] = (jbyte) (hash >> 24);
  74   }


< prev index next >