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

Side by Side Diff: src/code-stub-assembler.cc

Issue 1948433002: [stubs] Convert InternalArrayNoArgumentsConstructor to a TurboFan stub (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 7 months 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/code-stub-assembler.h ('k') | src/code-stubs.h » ('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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 "src/code-stub-assembler.h" 5 #include "src/code-stub-assembler.h"
6 #include "src/code-factory.h" 6 #include "src/code-factory.h"
7 7
8 namespace v8 { 8 namespace v8 {
9 namespace internal { 9 namespace internal {
10 10
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 Node* offset = IntPtrConstant(FixedArray::kHeaderSize - kHeapObjectTag + 549 Node* offset = IntPtrConstant(FixedArray::kHeaderSize - kHeapObjectTag +
550 index * kPointerSize); 550 index * kPointerSize);
551 return Load(MachineType::AnyTagged(), object, offset); 551 return Load(MachineType::AnyTagged(), object, offset);
552 } 552 }
553 553
554 Node* CodeStubAssembler::LoadNativeContext(Node* context) { 554 Node* CodeStubAssembler::LoadNativeContext(Node* context) {
555 return LoadFixedArrayElementConstantIndex(context, 555 return LoadFixedArrayElementConstantIndex(context,
556 Context::NATIVE_CONTEXT_INDEX); 556 Context::NATIVE_CONTEXT_INDEX);
557 } 557 }
558 558
559 Node* CodeStubAssembler::LoadJSArrayElementsMap(ElementsKind kind,
560 Node* native_context) {
561 return LoadFixedArrayElementConstantIndex(native_context,
562 Context::ArrayMapIndex(kind));
563 }
564
559 Node* CodeStubAssembler::StoreHeapNumberValue(Node* object, Node* value) { 565 Node* CodeStubAssembler::StoreHeapNumberValue(Node* object, Node* value) {
560 return StoreNoWriteBarrier( 566 return StoreNoWriteBarrier(
561 MachineRepresentation::kFloat64, object, 567 MachineRepresentation::kFloat64, object,
562 IntPtrConstant(HeapNumber::kValueOffset - kHeapObjectTag), value); 568 IntPtrConstant(HeapNumber::kValueOffset - kHeapObjectTag), value);
563 } 569 }
564 570
565 Node* CodeStubAssembler::StoreObjectField( 571 Node* CodeStubAssembler::StoreObjectField(
566 Node* object, int offset, Node* value) { 572 Node* object, int offset, Node* value) {
567 return Store(MachineRepresentation::kTagged, object, 573 return Store(MachineRepresentation::kTagged, object,
568 IntPtrConstant(offset - kHeapObjectTag), value); 574 IntPtrConstant(offset - kHeapObjectTag), value);
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 Node* CodeStubAssembler::AllocateSeqTwoByteString(int length) { 669 Node* CodeStubAssembler::AllocateSeqTwoByteString(int length) {
664 Node* result = Allocate(SeqTwoByteString::SizeFor(length)); 670 Node* result = Allocate(SeqTwoByteString::SizeFor(length));
665 StoreMapNoWriteBarrier(result, LoadRoot(Heap::kStringMapRootIndex)); 671 StoreMapNoWriteBarrier(result, LoadRoot(Heap::kStringMapRootIndex));
666 StoreObjectFieldNoWriteBarrier(result, SeqTwoByteString::kLengthOffset, 672 StoreObjectFieldNoWriteBarrier(result, SeqTwoByteString::kLengthOffset,
667 SmiConstant(Smi::FromInt(length))); 673 SmiConstant(Smi::FromInt(length)));
668 StoreObjectFieldNoWriteBarrier(result, SeqTwoByteString::kHashFieldSlot, 674 StoreObjectFieldNoWriteBarrier(result, SeqTwoByteString::kHashFieldSlot,
669 IntPtrConstant(String::kEmptyHashField)); 675 IntPtrConstant(String::kEmptyHashField));
670 return result; 676 return result;
671 } 677 }
672 678
673 Node* CodeStubAssembler::AllocateJSArray(ElementsKind kind, 679 Node* CodeStubAssembler::AllocateJSArray(ElementsKind kind, Node* array_map,
674 Node* native_context, int capacity, 680 int capacity, int length,
675 int length,
676 compiler::Node* allocation_site) { 681 compiler::Node* allocation_site) {
677 bool is_double = IsFastDoubleElementsKind(kind); 682 bool is_double = IsFastDoubleElementsKind(kind);
678 int element_size = is_double ? kDoubleSize : kPointerSize; 683 int element_size = is_double ? kDoubleSize : kPointerSize;
679 int total_size = 684 int total_size =
680 JSArray::kSize + FixedArray::kHeaderSize + element_size * capacity; 685 JSArray::kSize + FixedArray::kHeaderSize + element_size * capacity;
681 int elements_offset = JSArray::kSize; 686 int elements_offset = JSArray::kSize;
682 687
683 if (allocation_site != nullptr) { 688 if (allocation_site != nullptr) {
684 total_size += AllocationMemento::kSize; 689 total_size += AllocationMemento::kSize;
685 elements_offset += AllocationMemento::kSize; 690 elements_offset += AllocationMemento::kSize;
686 } 691 }
687 692
688 // Allocate both array and elements object, and initialize the JSArray. 693 // Allocate both array and elements object, and initialize the JSArray.
689 Heap* heap = isolate()->heap(); 694 Heap* heap = isolate()->heap();
690 Node* array = Allocate(total_size); 695 Node* array = Allocate(total_size);
691 Node* array_map = LoadFixedArrayElementConstantIndex(
692 native_context, Context::ArrayMapIndex(kind));
693 StoreMapNoWriteBarrier(array, array_map); 696 StoreMapNoWriteBarrier(array, array_map);
694 Node* empty_properties = 697 Node* empty_properties =
695 HeapConstant(Handle<HeapObject>(heap->empty_fixed_array())); 698 HeapConstant(Handle<HeapObject>(heap->empty_fixed_array()));
696 StoreObjectFieldNoWriteBarrier(array, JSArray::kPropertiesOffset, 699 StoreObjectFieldNoWriteBarrier(array, JSArray::kPropertiesOffset,
697 empty_properties); 700 empty_properties);
698 StoreObjectFieldNoWriteBarrier(array, JSArray::kLengthOffset, 701 StoreObjectFieldNoWriteBarrier(array, JSArray::kLengthOffset,
699 SmiConstant(Smi::FromInt(length))); 702 SmiConstant(Smi::FromInt(length)));
700 703
701 if (allocation_site != nullptr) { 704 if (allocation_site != nullptr) {
702 InitializeAllocationMemento(array, JSArray::kSize, allocation_site); 705 InitializeAllocationMemento(array, JSArray::kSize, allocation_site);
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 } 1262 }
1260 1263
1261 Node* CodeStubAssembler::BitFieldDecode(Node* word32, uint32_t shift, 1264 Node* CodeStubAssembler::BitFieldDecode(Node* word32, uint32_t shift,
1262 uint32_t mask) { 1265 uint32_t mask) {
1263 return Word32Shr(Word32And(word32, Int32Constant(mask)), 1266 return Word32Shr(Word32And(word32, Int32Constant(mask)),
1264 Int32Constant(shift)); 1267 Int32Constant(shift));
1265 } 1268 }
1266 1269
1267 } // namespace internal 1270 } // namespace internal
1268 } // namespace v8 1271 } // namespace v8
OLDNEW
« no previous file with comments | « src/code-stub-assembler.h ('k') | src/code-stubs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698