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_IA32 | 7 #if V8_TARGET_ARCH_IA32 |
8 | 8 |
9 #include "code-stubs.h" | 9 #include "code-stubs.h" |
10 #include "codegen.h" | 10 #include "codegen.h" |
(...skipping 2968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2979 __ j(equal, &done); | 2979 __ j(equal, &done); |
2980 | 2980 |
2981 __ LoadInstanceDescriptors(ebx, ebx); | 2981 __ LoadInstanceDescriptors(ebx, ebx); |
2982 // ebx: descriptor array. | 2982 // ebx: descriptor array. |
2983 // ecx: valid entries in the descriptor array. | 2983 // ecx: valid entries in the descriptor array. |
2984 // Calculate the end of the descriptor array. | 2984 // Calculate the end of the descriptor array. |
2985 STATIC_ASSERT(kSmiTag == 0); | 2985 STATIC_ASSERT(kSmiTag == 0); |
2986 STATIC_ASSERT(kSmiTagSize == 1); | 2986 STATIC_ASSERT(kSmiTagSize == 1); |
2987 STATIC_ASSERT(kPointerSize == 4); | 2987 STATIC_ASSERT(kPointerSize == 4); |
2988 __ imul(ecx, ecx, DescriptorArray::kDescriptorSize); | 2988 __ imul(ecx, ecx, DescriptorArray::kDescriptorSize); |
2989 __ lea(ecx, Operand(ebx, ecx, times_2, DescriptorArray::kFirstOffset)); | 2989 __ lea(ecx, Operand(ebx, ecx, times_4, DescriptorArray::kFirstOffset)); |
2990 // Calculate location of the first key name. | 2990 // Calculate location of the first key name. |
2991 __ add(ebx, Immediate(DescriptorArray::kFirstOffset)); | 2991 __ add(ebx, Immediate(DescriptorArray::kFirstOffset)); |
2992 // Loop through all the keys in the descriptor array. If one of these is the | 2992 // Loop through all the keys in the descriptor array. If one of these is the |
2993 // internalized string "valueOf" the result is false. | 2993 // internalized string "valueOf" the result is false. |
2994 __ jmp(&entry); | 2994 __ jmp(&entry); |
2995 __ bind(&loop); | 2995 __ bind(&loop); |
2996 __ mov(edx, FieldOperand(ebx, 0)); | 2996 __ mov(edx, FieldOperand(ebx, 0)); |
2997 __ cmp(edx, isolate()->factory()->value_of_string()); | 2997 __ cmp(edx, isolate()->factory()->value_of_string()); |
2998 __ j(equal, if_false); | 2998 __ j(equal, if_false); |
2999 __ add(ebx, Immediate(DescriptorArray::kDescriptorSize * kPointerSize)); | 2999 __ add(ebx, Immediate(DescriptorArray::kDescriptorSize * kPointerSize)); |
(...skipping 1828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4828 ASSERT_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), | 4828 ASSERT_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), |
4829 Assembler::target_address_at(call_target_address, | 4829 Assembler::target_address_at(call_target_address, |
4830 unoptimized_code)); | 4830 unoptimized_code)); |
4831 return OSR_AFTER_STACK_CHECK; | 4831 return OSR_AFTER_STACK_CHECK; |
4832 } | 4832 } |
4833 | 4833 |
4834 | 4834 |
4835 } } // namespace v8::internal | 4835 } } // namespace v8::internal |
4836 | 4836 |
4837 #endif // V8_TARGET_ARCH_IA32 | 4837 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |