Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: src/arm64/code-stubs-arm64.cc

Issue 544613002: Remove dead code for inline string hashing. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm64/code-stubs-arm64.h ('k') | src/ia32/code-stubs-ia32.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_ARM64 7 #if V8_TARGET_ARCH_ARM64
8 8
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 3514 matching lines...) Expand 10 before | Expand all | Expand 10 after
3525 __ Add(stub_entry, x0, Code::kHeaderSize - kHeapObjectTag); 3525 __ Add(stub_entry, x0, Code::kHeaderSize - kHeapObjectTag);
3526 // Restore caller-saved registers. 3526 // Restore caller-saved registers.
3527 __ Pop(lr, x0, x1); 3527 __ Pop(lr, x0, x1);
3528 } 3528 }
3529 3529
3530 // Tail-call to the new stub. 3530 // Tail-call to the new stub.
3531 __ Jump(stub_entry); 3531 __ Jump(stub_entry);
3532 } 3532 }
3533 3533
3534 3534
3535 void StringHelper::GenerateHashInit(MacroAssembler* masm,
3536 Register hash,
3537 Register character) {
3538 DCHECK(!AreAliased(hash, character));
3539
3540 // hash = character + (character << 10);
3541 __ LoadRoot(hash, Heap::kHashSeedRootIndex);
3542 // Untag smi seed and add the character.
3543 __ Add(hash, character, Operand::UntagSmi(hash));
3544
3545 // Compute hashes modulo 2^32 using a 32-bit W register.
3546 Register hash_w = hash.W();
3547
3548 // hash += hash << 10;
3549 __ Add(hash_w, hash_w, Operand(hash_w, LSL, 10));
3550 // hash ^= hash >> 6;
3551 __ Eor(hash_w, hash_w, Operand(hash_w, LSR, 6));
3552 }
3553
3554
3555 void StringHelper::GenerateHashAddCharacter(MacroAssembler* masm,
3556 Register hash,
3557 Register character) {
3558 DCHECK(!AreAliased(hash, character));
3559
3560 // hash += character;
3561 __ Add(hash, hash, character);
3562
3563 // Compute hashes modulo 2^32 using a 32-bit W register.
3564 Register hash_w = hash.W();
3565
3566 // hash += hash << 10;
3567 __ Add(hash_w, hash_w, Operand(hash_w, LSL, 10));
3568 // hash ^= hash >> 6;
3569 __ Eor(hash_w, hash_w, Operand(hash_w, LSR, 6));
3570 }
3571
3572
3573 void StringHelper::GenerateHashGetHash(MacroAssembler* masm,
3574 Register hash,
3575 Register scratch) {
3576 // Compute hashes modulo 2^32 using a 32-bit W register.
3577 Register hash_w = hash.W();
3578 Register scratch_w = scratch.W();
3579 DCHECK(!AreAliased(hash_w, scratch_w));
3580
3581 // hash += hash << 3;
3582 __ Add(hash_w, hash_w, Operand(hash_w, LSL, 3));
3583 // hash ^= hash >> 11;
3584 __ Eor(hash_w, hash_w, Operand(hash_w, LSR, 11));
3585 // hash += hash << 15;
3586 __ Add(hash_w, hash_w, Operand(hash_w, LSL, 15));
3587
3588 __ Ands(hash_w, hash_w, String::kHashBitMask);
3589
3590 // if (hash == 0) hash = 27;
3591 __ Mov(scratch_w, StringHasher::kZeroHash);
3592 __ Csel(hash_w, scratch_w, hash_w, eq);
3593 }
3594
3595
3596 void SubStringStub::Generate(MacroAssembler* masm) { 3535 void SubStringStub::Generate(MacroAssembler* masm) {
3597 ASM_LOCATION("SubStringStub::Generate"); 3536 ASM_LOCATION("SubStringStub::Generate");
3598 Label runtime; 3537 Label runtime;
3599 3538
3600 // Stack frame on entry. 3539 // Stack frame on entry.
3601 // lr: return address 3540 // lr: return address
3602 // jssp[0]: substring "to" offset 3541 // jssp[0]: substring "to" offset
3603 // jssp[8]: substring "from" offset 3542 // jssp[8]: substring "from" offset
3604 // jssp[16]: pointer to string object 3543 // jssp[16]: pointer to string object
3605 3544
(...skipping 1508 matching lines...) Expand 10 before | Expand all | Expand 10 after
5114 MemOperand(fp, 6 * kPointerSize), 5053 MemOperand(fp, 6 * kPointerSize),
5115 NULL); 5054 NULL);
5116 } 5055 }
5117 5056
5118 5057
5119 #undef __ 5058 #undef __
5120 5059
5121 } } // namespace v8::internal 5060 } } // namespace v8::internal
5122 5061
5123 #endif // V8_TARGET_ARCH_ARM64 5062 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm64/code-stubs-arm64.h ('k') | src/ia32/code-stubs-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698