Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1132)

Side by Side Diff: src/x64/code-stubs-x64.cc

Issue 1406113007: Merge GlobalObject with JSGlobalObject. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/snapshot/serialize.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_X64 5 #if V8_TARGET_ARCH_X64
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.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/ic/handler-compiler.h" 10 #include "src/ic/handler-compiler.h"
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 __ addp(r8, Immediate(Heap::kSloppyArgumentsObjectSize)); 657 __ addp(r8, Immediate(Heap::kSloppyArgumentsObjectSize));
658 658
659 // Do the allocation of all three objects in one go. 659 // Do the allocation of all three objects in one go.
660 __ Allocate(r8, rax, r9, no_reg, &runtime, TAG_OBJECT); 660 __ Allocate(r8, rax, r9, no_reg, &runtime, TAG_OBJECT);
661 661
662 // rax = address of new object(s) (tagged) 662 // rax = address of new object(s) (tagged)
663 // r11 = argument count (untagged) 663 // r11 = argument count (untagged)
664 // Get the arguments map from the current native context into r9. 664 // Get the arguments map from the current native context into r9.
665 Label has_mapped_parameters, instantiate; 665 Label has_mapped_parameters, instantiate;
666 __ movp(r9, Operand(rsi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); 666 __ movp(r9, Operand(rsi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
667 __ movp(r9, FieldOperand(r9, GlobalObject::kNativeContextOffset)); 667 __ movp(r9, FieldOperand(r9, JSGlobalObject::kNativeContextOffset));
668 __ testp(rbx, rbx); 668 __ testp(rbx, rbx);
669 __ j(not_zero, &has_mapped_parameters, Label::kNear); 669 __ j(not_zero, &has_mapped_parameters, Label::kNear);
670 670
671 const int kIndex = Context::SLOPPY_ARGUMENTS_MAP_INDEX; 671 const int kIndex = Context::SLOPPY_ARGUMENTS_MAP_INDEX;
672 __ movp(r9, Operand(r9, Context::SlotOffset(kIndex))); 672 __ movp(r9, Operand(r9, Context::SlotOffset(kIndex)));
673 __ jmp(&instantiate, Label::kNear); 673 __ jmp(&instantiate, Label::kNear);
674 674
675 const int kAliasedIndex = Context::FAST_ALIASED_ARGUMENTS_MAP_INDEX; 675 const int kAliasedIndex = Context::FAST_ALIASED_ARGUMENTS_MAP_INDEX;
676 __ bind(&has_mapped_parameters); 676 __ bind(&has_mapped_parameters);
677 __ movp(r9, Operand(r9, Context::SlotOffset(kAliasedIndex))); 677 __ movp(r9, Operand(r9, Context::SlotOffset(kAliasedIndex)));
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 __ j(zero, &add_arguments_object, Label::kNear); 939 __ j(zero, &add_arguments_object, Label::kNear);
940 __ leap(rax, Operand(rax, times_pointer_size, FixedArray::kHeaderSize)); 940 __ leap(rax, Operand(rax, times_pointer_size, FixedArray::kHeaderSize));
941 __ bind(&add_arguments_object); 941 __ bind(&add_arguments_object);
942 __ addp(rax, Immediate(Heap::kStrictArgumentsObjectSize)); 942 __ addp(rax, Immediate(Heap::kStrictArgumentsObjectSize));
943 943
944 // Do the allocation of both objects in one go. 944 // Do the allocation of both objects in one go.
945 __ Allocate(rax, rax, rbx, no_reg, &runtime, TAG_OBJECT); 945 __ Allocate(rax, rax, rbx, no_reg, &runtime, TAG_OBJECT);
946 946
947 // Get the arguments map from the current native context. 947 // Get the arguments map from the current native context.
948 __ movp(rdi, Operand(rsi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); 948 __ movp(rdi, Operand(rsi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
949 __ movp(rdi, FieldOperand(rdi, GlobalObject::kNativeContextOffset)); 949 __ movp(rdi, FieldOperand(rdi, JSGlobalObject::kNativeContextOffset));
950 const int offset = Context::SlotOffset(Context::STRICT_ARGUMENTS_MAP_INDEX); 950 const int offset = Context::SlotOffset(Context::STRICT_ARGUMENTS_MAP_INDEX);
951 __ movp(rdi, Operand(rdi, offset)); 951 __ movp(rdi, Operand(rdi, offset));
952 952
953 __ movp(FieldOperand(rax, JSObject::kMapOffset), rdi); 953 __ movp(FieldOperand(rax, JSObject::kMapOffset), rdi);
954 __ LoadRoot(kScratchRegister, Heap::kEmptyFixedArrayRootIndex); 954 __ LoadRoot(kScratchRegister, Heap::kEmptyFixedArrayRootIndex);
955 __ movp(FieldOperand(rax, JSObject::kPropertiesOffset), kScratchRegister); 955 __ movp(FieldOperand(rax, JSObject::kPropertiesOffset), kScratchRegister);
956 __ movp(FieldOperand(rax, JSObject::kElementsOffset), kScratchRegister); 956 __ movp(FieldOperand(rax, JSObject::kElementsOffset), kScratchRegister);
957 957
958 // Get the length (smi tagged) and set that as an in-object property too. 958 // Get the length (smi tagged) and set that as an in-object property too.
959 STATIC_ASSERT(Heap::kArgumentsLengthIndex == 0); 959 STATIC_ASSERT(Heap::kArgumentsLengthIndex == 0);
(...skipping 4635 matching lines...) Expand 10 before | Expand all | Expand 10 after
5595 kStackSpace, nullptr, return_value_operand, NULL); 5595 kStackSpace, nullptr, return_value_operand, NULL);
5596 } 5596 }
5597 5597
5598 5598
5599 #undef __ 5599 #undef __
5600 5600
5601 } // namespace internal 5601 } // namespace internal
5602 } // namespace v8 5602 } // namespace v8
5603 5603
5604 #endif // V8_TARGET_ARCH_X64 5604 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/snapshot/serialize.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698