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 #include "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_MIPS | 7 #if V8_TARGET_ARCH_MIPS |
8 | 8 |
9 // Note on Mips implementation: | 9 // Note on Mips implementation: |
10 // | 10 // |
(...skipping 3021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3032 // a3: valid entries in the descriptor array. | 3032 // a3: valid entries in the descriptor array. |
3033 STATIC_ASSERT(kSmiTag == 0); | 3033 STATIC_ASSERT(kSmiTag == 0); |
3034 STATIC_ASSERT(kSmiTagSize == 1); | 3034 STATIC_ASSERT(kSmiTagSize == 1); |
3035 STATIC_ASSERT(kPointerSize == 4); | 3035 STATIC_ASSERT(kPointerSize == 4); |
3036 __ li(at, Operand(DescriptorArray::kDescriptorSize)); | 3036 __ li(at, Operand(DescriptorArray::kDescriptorSize)); |
3037 __ Mul(a3, a3, at); | 3037 __ Mul(a3, a3, at); |
3038 // Calculate location of the first key name. | 3038 // Calculate location of the first key name. |
3039 __ Addu(t0, t0, Operand(DescriptorArray::kFirstOffset - kHeapObjectTag)); | 3039 __ Addu(t0, t0, Operand(DescriptorArray::kFirstOffset - kHeapObjectTag)); |
3040 // Calculate the end of the descriptor array. | 3040 // Calculate the end of the descriptor array. |
3041 __ mov(a2, t0); | 3041 __ mov(a2, t0); |
3042 __ sll(t1, a3, kPointerSizeLog2 - kSmiTagSize); | 3042 __ sll(t1, a3, kPointerSizeLog2); |
3043 __ Addu(a2, a2, t1); | 3043 __ Addu(a2, a2, t1); |
3044 | 3044 |
3045 // Loop through all the keys in the descriptor array. If one of these is the | 3045 // Loop through all the keys in the descriptor array. If one of these is the |
3046 // string "valueOf" the result is false. | 3046 // string "valueOf" the result is false. |
3047 // The use of t2 to store the valueOf string assumes that it is not otherwise | 3047 // The use of t2 to store the valueOf string assumes that it is not otherwise |
3048 // used in the loop below. | 3048 // used in the loop below. |
3049 __ li(t2, Operand(isolate()->factory()->value_of_string())); | 3049 __ li(t2, Operand(isolate()->factory()->value_of_string())); |
3050 __ jmp(&entry); | 3050 __ jmp(&entry); |
3051 __ bind(&loop); | 3051 __ bind(&loop); |
3052 __ lw(a3, MemOperand(t0, 0)); | 3052 __ lw(a3, MemOperand(t0, 0)); |
(...skipping 1799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4852 Assembler::target_address_at(pc_immediate_load_address)) == | 4852 Assembler::target_address_at(pc_immediate_load_address)) == |
4853 reinterpret_cast<uint32_t>( | 4853 reinterpret_cast<uint32_t>( |
4854 isolate->builtins()->OsrAfterStackCheck()->entry())); | 4854 isolate->builtins()->OsrAfterStackCheck()->entry())); |
4855 return OSR_AFTER_STACK_CHECK; | 4855 return OSR_AFTER_STACK_CHECK; |
4856 } | 4856 } |
4857 | 4857 |
4858 | 4858 |
4859 } } // namespace v8::internal | 4859 } } // namespace v8::internal |
4860 | 4860 |
4861 #endif // V8_TARGET_ARCH_MIPS | 4861 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |