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_X64 | 5 #if V8_TARGET_ARCH_X64 |
6 | 6 |
7 #include "src/codegen.h" | 7 #include "src/codegen.h" |
8 #include "src/ic/ic.h" | 8 #include "src/ic/ic.h" |
9 #include "src/ic/ic-compiler.h" | 9 #include "src/ic/ic-compiler.h" |
10 #include "src/ic/stub-cache.h" | 10 #include "src/ic/stub-cache.h" |
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 Label slow; | 626 Label slow; |
627 | 627 |
628 __ movp(dictionary, FieldOperand(LoadDescriptor::ReceiverRegister(), | 628 __ movp(dictionary, FieldOperand(LoadDescriptor::ReceiverRegister(), |
629 JSObject::kPropertiesOffset)); | 629 JSObject::kPropertiesOffset)); |
630 GenerateDictionaryLoad(masm, &slow, dictionary, | 630 GenerateDictionaryLoad(masm, &slow, dictionary, |
631 LoadDescriptor::NameRegister(), rbx, rdi, rax); | 631 LoadDescriptor::NameRegister(), rbx, rdi, rax); |
632 __ ret(0); | 632 __ ret(0); |
633 | 633 |
634 // Dictionary load failed, go slow (but don't miss). | 634 // Dictionary load failed, go slow (but don't miss). |
635 __ bind(&slow); | 635 __ bind(&slow); |
636 LoadIC::GenerateRuntimeGetProperty(masm); | 636 GenerateRuntimeGetProperty(masm); |
637 } | 637 } |
638 | 638 |
639 | 639 |
640 static void LoadIC_PushArgs(MacroAssembler* masm) { | 640 static void LoadIC_PushArgs(MacroAssembler* masm) { |
641 Register receiver = LoadDescriptor::ReceiverRegister(); | 641 Register receiver = LoadDescriptor::ReceiverRegister(); |
642 Register name = LoadDescriptor::NameRegister(); | 642 Register name = LoadDescriptor::NameRegister(); |
643 Register slot = LoadDescriptor::SlotRegister(); | 643 Register slot = LoadDescriptor::SlotRegister(); |
644 Register vector = LoadWithVectorDescriptor::VectorRegister(); | 644 Register vector = LoadWithVectorDescriptor::VectorRegister(); |
645 DCHECK(!rdi.is(receiver) && !rdi.is(name) && !rdi.is(slot) && | 645 DCHECK(!rdi.is(receiver) && !rdi.is(name) && !rdi.is(slot) && |
646 !rdi.is(vector)); | 646 !rdi.is(vector)); |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
846 Condition cc = | 846 Condition cc = |
847 (check == ENABLE_INLINED_SMI_CHECK) | 847 (check == ENABLE_INLINED_SMI_CHECK) |
848 ? (*jmp_address == Assembler::kJncShortOpcode ? not_zero : zero) | 848 ? (*jmp_address == Assembler::kJncShortOpcode ? not_zero : zero) |
849 : (*jmp_address == Assembler::kJnzShortOpcode ? not_carry : carry); | 849 : (*jmp_address == Assembler::kJnzShortOpcode ? not_carry : carry); |
850 *jmp_address = static_cast<byte>(Assembler::kJccShortPrefix | cc); | 850 *jmp_address = static_cast<byte>(Assembler::kJccShortPrefix | cc); |
851 } | 851 } |
852 } // namespace internal | 852 } // namespace internal |
853 } // namespace v8 | 853 } // namespace v8 |
854 | 854 |
855 #endif // V8_TARGET_ARCH_X64 | 855 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |