OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #if V8_TARGET_ARCH_MIPS | 5 #if V8_TARGET_ARCH_MIPS |
6 | 6 |
7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" |
8 #include "src/bootstrapper.h" | 8 #include "src/bootstrapper.h" |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 4036 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4047 NameDictionary::GetProbeOffset(i) << Name::kHashShift)); | 4047 NameDictionary::GetProbeOffset(i) << Name::kHashShift)); |
4048 } else { | 4048 } else { |
4049 __ mov(index, hash); | 4049 __ mov(index, hash); |
4050 } | 4050 } |
4051 __ srl(index, index, Name::kHashShift); | 4051 __ srl(index, index, Name::kHashShift); |
4052 __ And(index, mask, index); | 4052 __ And(index, mask, index); |
4053 | 4053 |
4054 // Scale the index by multiplying by the entry size. | 4054 // Scale the index by multiplying by the entry size. |
4055 STATIC_ASSERT(NameDictionary::kEntrySize == 3); | 4055 STATIC_ASSERT(NameDictionary::kEntrySize == 3); |
4056 // index *= 3. | 4056 // index *= 3. |
4057 __ mov(at, index); | |
4058 __ Lsa(index, index, index, 1); | 4057 __ Lsa(index, index, index, 1); |
4059 | 4058 |
4060 | |
4061 STATIC_ASSERT(kSmiTagSize == 1); | 4059 STATIC_ASSERT(kSmiTagSize == 1); |
4062 __ Lsa(index, dictionary, index, 2); | 4060 __ Lsa(index, dictionary, index, 2); |
4063 __ lw(entry_key, FieldMemOperand(index, kElementsStartOffset)); | 4061 __ lw(entry_key, FieldMemOperand(index, kElementsStartOffset)); |
4064 | 4062 |
4065 // Having undefined at this place means the name is not contained. | 4063 // Having undefined at this place means the name is not contained. |
4066 __ Branch(¬_in_dictionary, eq, entry_key, Operand(undefined)); | 4064 __ Branch(¬_in_dictionary, eq, entry_key, Operand(undefined)); |
4067 | 4065 |
4068 // Stop if found the property. | 4066 // Stop if found the property. |
4069 __ Branch(&in_dictionary, eq, entry_key, Operand(key)); | 4067 __ Branch(&in_dictionary, eq, entry_key, Operand(key)); |
4070 | 4068 |
(...skipping 1509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5580 MemOperand(fp, 6 * kPointerSize), NULL); | 5578 MemOperand(fp, 6 * kPointerSize), NULL); |
5581 } | 5579 } |
5582 | 5580 |
5583 | 5581 |
5584 #undef __ | 5582 #undef __ |
5585 | 5583 |
5586 } // namespace internal | 5584 } // namespace internal |
5587 } // namespace v8 | 5585 } // namespace v8 |
5588 | 5586 |
5589 #endif // V8_TARGET_ARCH_MIPS | 5587 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |