| Index: src/x64/ic-x64.cc
|
| ===================================================================
|
| --- src/x64/ic-x64.cc (revision 5357)
|
| +++ src/x64/ic-x64.cc (working copy)
|
| @@ -572,32 +572,7 @@
|
| }
|
|
|
|
|
| -// Picks out an array index from the hash field.
|
| -static void GenerateIndexFromHash(MacroAssembler* masm,
|
| - Register key,
|
| - Register hash) {
|
| - // Register use:
|
| - // key - holds the overwritten key on exit.
|
| - // hash - holds the key's hash. Clobbered.
|
|
|
| - // The assert checks that the constants for the maximum number of digits
|
| - // for an array index cached in the hash field and the number of bits
|
| - // reserved for it does not conflict.
|
| - ASSERT(TenToThe(String::kMaxCachedArrayIndexLength) <
|
| - (1 << String::kArrayIndexValueBits));
|
| - // We want the smi-tagged index in key. Even if we subsequently go to
|
| - // the slow case, converting the key to a smi is always valid.
|
| - // key: string key
|
| - // hash: key's hash field, including its array index value.
|
| - __ and_(hash, Immediate(String::kArrayIndexValueMask));
|
| - __ shr(hash, Immediate(String::kHashShift));
|
| - // Here we actually clobber the key which will be used if calling into
|
| - // runtime later. However as the new key is the numeric value of a string key
|
| - // there is no difference in using either key.
|
| - __ Integer32ToSmi(key, hash);
|
| -}
|
| -
|
| -
|
| void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| // ----------- S t a t e -------------
|
| // -- rax : key
|
| @@ -743,7 +718,7 @@
|
| __ ret(0);
|
|
|
| __ bind(&index_string);
|
| - GenerateIndexFromHash(masm, rax, rbx);
|
| + __ IndexFromHash(rbx, rax);
|
| __ jmp(&index_smi);
|
| }
|
|
|
| @@ -1599,7 +1574,7 @@
|
| GenerateMiss(masm, argc);
|
|
|
| __ bind(&index_string);
|
| - GenerateIndexFromHash(masm, rcx, rbx);
|
| + __ IndexFromHash(rbx, rcx);
|
| // Now jump to the place where smi keys are handled.
|
| __ jmp(&index_smi);
|
| }
|
|
|