summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/test-hashing.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/test-hashing.cc')
-rw-r--r--deps/v8/test/cctest/test-hashing.cc153
1 files changed, 0 insertions, 153 deletions
diff --git a/deps/v8/test/cctest/test-hashing.cc b/deps/v8/test/cctest/test-hashing.cc
index 9857f9d88a..692861cfe4 100644
--- a/deps/v8/test/cctest/test-hashing.cc
+++ b/deps/v8/test/cctest/test-hashing.cc
@@ -47,94 +47,6 @@ typedef uint32_t (*HASH_FUNCTION)();
#define __ masm->
-void generate(MacroAssembler* masm, i::Vector<const uint8_t> string) {
- // GenerateHashInit takes the first character as an argument so it can't
- // handle the zero length string.
- DCHECK(string.length() > 0);
-#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87
- __ push(ebx);
- __ push(ecx);
- __ mov(eax, Immediate(0));
- __ mov(ebx, Immediate(string.at(0)));
- StringHelper::GenerateHashInit(masm, eax, ebx, ecx);
- for (int i = 1; i < string.length(); i++) {
- __ mov(ebx, Immediate(string.at(i)));
- StringHelper::GenerateHashAddCharacter(masm, eax, ebx, ecx);
- }
- StringHelper::GenerateHashGetHash(masm, eax, ecx);
- __ pop(ecx);
- __ pop(ebx);
- __ Ret();
-#elif V8_TARGET_ARCH_X64
- __ pushq(kRootRegister);
- __ InitializeRootRegister();
- __ pushq(rbx);
- __ pushq(rcx);
- __ movp(rax, Immediate(0));
- __ movp(rbx, Immediate(string.at(0)));
- StringHelper::GenerateHashInit(masm, rax, rbx, rcx);
- for (int i = 1; i < string.length(); i++) {
- __ movp(rbx, Immediate(string.at(i)));
- StringHelper::GenerateHashAddCharacter(masm, rax, rbx, rcx);
- }
- StringHelper::GenerateHashGetHash(masm, rax, rcx);
- __ popq(rcx);
- __ popq(rbx);
- __ popq(kRootRegister);
- __ Ret();
-#elif V8_TARGET_ARCH_ARM
- __ push(kRootRegister);
- __ InitializeRootRegister();
-
- __ mov(r0, Operand(0));
- __ mov(ip, Operand(string.at(0)));
- StringHelper::GenerateHashInit(masm, r0, ip);
- for (int i = 1; i < string.length(); i++) {
- __ mov(ip, Operand(string.at(i)));
- StringHelper::GenerateHashAddCharacter(masm, r0, ip);
- }
- StringHelper::GenerateHashGetHash(masm, r0);
- __ pop(kRootRegister);
- __ mov(pc, Operand(lr));
-#elif V8_TARGET_ARCH_ARM64
- // The ARM64 assembler usually uses jssp (x28) as a stack pointer, but only
- // csp is initialized by the calling (C++) code.
- Register old_stack_pointer = __ StackPointer();
- __ SetStackPointer(csp);
- __ Push(root, xzr);
- __ InitializeRootRegister();
- __ Mov(x0, 0);
- __ Mov(x10, Operand(string.at(0)));
- StringHelper::GenerateHashInit(masm, x0, x10);
- for (int i = 1; i < string.length(); i++) {
- __ Mov(x10, Operand(string.at(i)));
- StringHelper::GenerateHashAddCharacter(masm, x0, x10);
- }
- StringHelper::GenerateHashGetHash(masm, x0, x10);
- __ Pop(xzr, root);
- __ Ret();
- __ SetStackPointer(old_stack_pointer);
-#elif V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64
- __ push(kRootRegister);
- __ InitializeRootRegister();
-
- __ mov(v0, zero_reg);
- __ li(t1, Operand(string.at(0)));
- StringHelper::GenerateHashInit(masm, v0, t1);
- for (int i = 1; i < string.length(); i++) {
- __ li(t1, Operand(string.at(i)));
- StringHelper::GenerateHashAddCharacter(masm, v0, t1);
- }
- StringHelper::GenerateHashGetHash(masm, v0);
- __ pop(kRootRegister);
- __ jr(ra);
- __ nop();
-#else
-#error Unsupported architecture.
-#endif
-}
-
-
void generate(MacroAssembler* masm, uint32_t key) {
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87
__ push(ebx);
@@ -184,44 +96,6 @@ void generate(MacroAssembler* masm, uint32_t key) {
}
-void check(i::Vector<const uint8_t> string) {
- Isolate* isolate = CcTest::i_isolate();
- Factory* factory = isolate->factory();
- HandleScope scope(isolate);
-
- v8::internal::byte buffer[2048];
- MacroAssembler masm(isolate, buffer, sizeof buffer);
-
- generate(&masm, string);
-
- CodeDesc desc;
- masm.GetCode(&desc);
- Handle<Object> undefined(isolate->heap()->undefined_value(), isolate);
- Handle<Code> code = factory->NewCode(desc,
- Code::ComputeFlags(Code::STUB),
- undefined);
- CHECK(code->IsCode());
-
- HASH_FUNCTION hash = FUNCTION_CAST<HASH_FUNCTION>(code->entry());
- Handle<String> v8_string =
- factory->NewStringFromOneByte(string).ToHandleChecked();
- v8_string->set_hash_field(String::kEmptyHashField);
-#ifdef USE_SIMULATOR
- uint32_t codegen_hash = static_cast<uint32_t>(
- reinterpret_cast<uintptr_t>(CALL_GENERATED_CODE(hash, 0, 0, 0, 0, 0)));
-#else
- uint32_t codegen_hash = hash();
-#endif
- uint32_t runtime_hash = v8_string->Hash();
- CHECK(runtime_hash == codegen_hash);
-}
-
-
-void check(i::Vector<const char> s) {
- check(i::Vector<const uint8_t>::cast(s));
-}
-
-
void check(uint32_t key) {
Isolate* isolate = CcTest::i_isolate();
Factory* factory = isolate->factory();
@@ -253,38 +127,11 @@ void check(uint32_t key) {
}
-void check_twochars(uint8_t a, uint8_t b) {
- uint8_t ab[2] = {a, b};
- check(i::Vector<const uint8_t>(ab, 2));
-}
-
-
static uint32_t PseudoRandom(uint32_t i, uint32_t j) {
return ~(~((i * 781) ^ (j * 329)));
}
-TEST(StringHash) {
- v8::Isolate* isolate = CcTest::isolate();
- v8::HandleScope handle_scope(isolate);
- v8::Context::Scope context_scope(v8::Context::New(isolate));
-
- for (uint8_t a = 0; a < String::kMaxOneByteCharCode; a++) {
- // Numbers are hashed differently.
- if (a >= '0' && a <= '9') continue;
- for (uint8_t b = 0; b < String::kMaxOneByteCharCode; b++) {
- if (b >= '0' && b <= '9') continue;
- check_twochars(a, b);
- }
- }
- check(i::Vector<const char>("*", 1));
- check(i::Vector<const char>(".zZ", 3));
- check(i::Vector<const char>("muc", 3));
- check(i::Vector<const char>("(>'_')>", 7));
- check(i::Vector<const char>("-=[ vee eight ftw ]=-", 21));
-}
-
-
TEST(NumberHash) {
v8::Isolate* isolate = CcTest::isolate();
v8::HandleScope handle_scope(isolate);