OLD | NEW |
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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
6 | 6 |
7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" |
8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 #include "src/codegen.h" | 9 #include "src/codegen.h" |
10 #include "src/compiler.h" | 10 #include "src/compiler.h" |
(...skipping 3151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3162 __ Add(descriptors, descriptors, | 3162 __ Add(descriptors, descriptors, |
3163 DescriptorArray::kFirstOffset - kHeapObjectTag); | 3163 DescriptorArray::kFirstOffset - kHeapObjectTag); |
3164 // Calculate the end of the descriptor array. | 3164 // Calculate the end of the descriptor array. |
3165 __ Add(descriptors_end, descriptors, | 3165 __ Add(descriptors_end, descriptors, |
3166 Operand(descriptors_length, LSL, kPointerSizeLog2)); | 3166 Operand(descriptors_length, LSL, kPointerSizeLog2)); |
3167 | 3167 |
3168 // Loop through all the keys in the descriptor array. If one of these is the | 3168 // Loop through all the keys in the descriptor array. If one of these is the |
3169 // string "valueOf" the result is false. | 3169 // string "valueOf" the result is false. |
3170 Register valueof_string = x1; | 3170 Register valueof_string = x1; |
3171 int descriptor_size = DescriptorArray::kDescriptorSize * kPointerSize; | 3171 int descriptor_size = DescriptorArray::kDescriptorSize * kPointerSize; |
3172 __ Mov(valueof_string, Operand(isolate()->factory()->value_of_string())); | 3172 __ LoadRoot(valueof_string, Heap::kvalueOf_stringRootIndex); |
3173 __ Bind(&loop); | 3173 __ Bind(&loop); |
3174 __ Ldr(x15, MemOperand(descriptors, descriptor_size, PostIndex)); | 3174 __ Ldr(x15, MemOperand(descriptors, descriptor_size, PostIndex)); |
3175 __ Cmp(x15, valueof_string); | 3175 __ Cmp(x15, valueof_string); |
3176 __ B(eq, if_false); | 3176 __ B(eq, if_false); |
3177 __ Cmp(descriptors, descriptors_end); | 3177 __ Cmp(descriptors, descriptors_end); |
3178 __ B(ne, &loop); | 3178 __ B(ne, &loop); |
3179 | 3179 |
3180 __ Bind(&done); | 3180 __ Bind(&done); |
3181 | 3181 |
3182 // Set the bit in the map to indicate that there is no local valueOf field. | 3182 // Set the bit in the map to indicate that there is no local valueOf field. |
(...skipping 2183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5366 } | 5366 } |
5367 | 5367 |
5368 return INTERRUPT; | 5368 return INTERRUPT; |
5369 } | 5369 } |
5370 | 5370 |
5371 | 5371 |
5372 } // namespace internal | 5372 } // namespace internal |
5373 } // namespace v8 | 5373 } // namespace v8 |
5374 | 5374 |
5375 #endif // V8_TARGET_ARCH_ARM64 | 5375 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |