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

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

Issue 2475913002: [tests] Change CodeStubAssemblerTester code type to BUILTIN (Closed)
Patch Set: reverting documentation changes Created 4 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 | « no previous file | src/compiler/machine-graph-verifier.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 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 #include "src/code-stub-assembler.h" 4 #include "src/code-stub-assembler.h"
5 #include "src/code-factory.h" 5 #include "src/code-factory.h"
6 #include "src/frames-inl.h" 6 #include "src/frames-inl.h"
7 #include "src/frames.h" 7 #include "src/frames.h"
8 #include "src/ic/handler-configuration.h" 8 #include "src/ic/handler-configuration.h"
9 #include "src/ic/stub-cache.h" 9 #include "src/ic/stub-cache.h"
10 10
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 for (int i = 1; i <= 16; i *= 2) { 134 for (int i = 1; i <= 16; i *= 2) {
135 value = WordOr(value, WordShr(value, IntPtrConstant(i))); 135 value = WordOr(value, WordShr(value, IntPtrConstant(i)));
136 } 136 }
137 return IntPtrAdd(value, IntPtrConstant(1)); 137 return IntPtrAdd(value, IntPtrConstant(1));
138 } 138 }
139 139
140 Node* CodeStubAssembler::WordIsPowerOfTwo(Node* value) { 140 Node* CodeStubAssembler::WordIsPowerOfTwo(Node* value) {
141 // value && !(value & (value - 1)) 141 // value && !(value & (value - 1))
142 return WordEqual( 142 return WordEqual(
143 Select(WordEqual(value, IntPtrConstant(0)), IntPtrConstant(1), 143 Select(WordEqual(value, IntPtrConstant(0)), IntPtrConstant(1),
144 WordAnd(value, IntPtrSub(value, IntPtrConstant(1)))), 144 WordAnd(value, IntPtrSub(value, IntPtrConstant(1))),
145 MachineType::PointerRepresentation()),
145 IntPtrConstant(0)); 146 IntPtrConstant(0));
146 } 147 }
147 148
148 Node* CodeStubAssembler::Float64Round(Node* x) { 149 Node* CodeStubAssembler::Float64Round(Node* x) {
149 Node* one = Float64Constant(1.0); 150 Node* one = Float64Constant(1.0);
150 Node* one_half = Float64Constant(0.5); 151 Node* one_half = Float64Constant(0.5);
151 152
152 Variable var_x(this, MachineRepresentation::kFloat64); 153 Variable var_x(this, MachineRepresentation::kFloat64);
153 Label return_x(this); 154 Label return_x(this);
154 155
(...skipping 1547 matching lines...) Expand 10 before | Expand all | Expand 10 after
1702 SmiTag(capacity), SKIP_WRITE_BARRIER); 1703 SmiTag(capacity), SKIP_WRITE_BARRIER);
1703 // Initialize Dictionary fields. 1704 // Initialize Dictionary fields.
1704 Node* filler = LoadRoot(Heap::kUndefinedValueRootIndex); 1705 Node* filler = LoadRoot(Heap::kUndefinedValueRootIndex);
1705 StoreFixedArrayElement(result, NameDictionary::kMaxNumberKeyIndex, filler, 1706 StoreFixedArrayElement(result, NameDictionary::kMaxNumberKeyIndex, filler,
1706 SKIP_WRITE_BARRIER); 1707 SKIP_WRITE_BARRIER);
1707 StoreFixedArrayElement(result, NameDictionary::kNextEnumerationIndexIndex, 1708 StoreFixedArrayElement(result, NameDictionary::kNextEnumerationIndexIndex,
1708 SmiConstant(PropertyDetails::kInitialIndex), 1709 SmiConstant(PropertyDetails::kInitialIndex),
1709 SKIP_WRITE_BARRIER); 1710 SKIP_WRITE_BARRIER);
1710 1711
1711 // Initialize NameDictionary elements. 1712 // Initialize NameDictionary elements.
1713 result = BitcastTaggedToWord(result);
1712 Node* start_address = IntPtrAdd( 1714 Node* start_address = IntPtrAdd(
1713 result, IntPtrConstant(NameDictionary::OffsetOfElementAt( 1715 result, IntPtrConstant(NameDictionary::OffsetOfElementAt(
1714 NameDictionary::kElementsStartIndex) - 1716 NameDictionary::kElementsStartIndex) -
1715 kHeapObjectTag)); 1717 kHeapObjectTag));
1716 Node* end_address = IntPtrAdd( 1718 Node* end_address = IntPtrAdd(
1717 result, 1719 result,
1718 IntPtrSubFoldConstants(store_size, IntPtrConstant(kHeapObjectTag))); 1720 IntPtrSubFoldConstants(store_size, IntPtrConstant(kHeapObjectTag)));
1719 StoreFieldsNoWriteBarrier(start_address, end_address, filler); 1721 StoreFieldsNoWriteBarrier(start_address, end_address, filler);
1720 return result; 1722 return result;
1721 } 1723 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1766 IntPtrSub(IntPtrAdd(object, size), IntPtrConstant(kHeapObjectTag)); 1768 IntPtrSub(IntPtrAdd(object, size), IntPtrConstant(kHeapObjectTag));
1767 StoreFieldsNoWriteBarrier(start_address, end_address, filler); 1769 StoreFieldsNoWriteBarrier(start_address, end_address, filler);
1768 } 1770 }
1769 1771
1770 void CodeStubAssembler::StoreFieldsNoWriteBarrier(Node* start_address, 1772 void CodeStubAssembler::StoreFieldsNoWriteBarrier(Node* start_address,
1771 Node* end_address, 1773 Node* end_address,
1772 Node* value) { 1774 Node* value) {
1773 Comment("StoreFieldsNoWriteBarrier"); 1775 Comment("StoreFieldsNoWriteBarrier");
1774 CSA_ASSERT(WordIsWordAligned(start_address)); 1776 CSA_ASSERT(WordIsWordAligned(start_address));
1775 CSA_ASSERT(WordIsWordAligned(end_address)); 1777 CSA_ASSERT(WordIsWordAligned(end_address));
1776 BuildFastLoop(MachineType::PointerRepresentation(), start_address, 1778 BuildFastLoop(
1777 end_address, 1779 MachineType::PointerRepresentation(), start_address, end_address,
1778 [value](CodeStubAssembler* a, Node* current) { 1780 [value](CodeStubAssembler* a, Node* current) {
1779 a->StoreNoWriteBarrier(MachineType::PointerRepresentation(), 1781 a->StoreNoWriteBarrier(MachineRepresentation::kTagged, current, value);
1780 current, value); 1782 },
1781 }, 1783 kPointerSize, IndexAdvanceMode::kPost);
1782 kPointerSize, IndexAdvanceMode::kPost);
1783 } 1784 }
1784 1785
1785 Node* CodeStubAssembler::AllocateUninitializedJSArrayWithoutElements( 1786 Node* CodeStubAssembler::AllocateUninitializedJSArrayWithoutElements(
1786 ElementsKind kind, Node* array_map, Node* length, Node* allocation_site) { 1787 ElementsKind kind, Node* array_map, Node* length, Node* allocation_site) {
1787 Comment("begin allocation of JSArray without elements"); 1788 Comment("begin allocation of JSArray without elements");
1788 int base_size = JSArray::kSize; 1789 int base_size = JSArray::kSize;
1789 if (allocation_site != nullptr) { 1790 if (allocation_site != nullptr) {
1790 base_size += AllocationMemento::kSize; 1791 base_size += AllocationMemento::kSize;
1791 } 1792 }
1792 1793
(...skipping 2213 matching lines...) Expand 10 before | Expand all | Expand 10 after
4006 template Node* CodeStubAssembler::EntryToIndex<NameDictionary>(Node*, int); 4007 template Node* CodeStubAssembler::EntryToIndex<NameDictionary>(Node*, int);
4007 template Node* CodeStubAssembler::EntryToIndex<GlobalDictionary>(Node*, int); 4008 template Node* CodeStubAssembler::EntryToIndex<GlobalDictionary>(Node*, int);
4008 4009
4009 Node* CodeStubAssembler::HashTableComputeCapacity(Node* at_least_space_for) { 4010 Node* CodeStubAssembler::HashTableComputeCapacity(Node* at_least_space_for) {
4010 Node* capacity = IntPtrRoundUpToPowerOfTwo32( 4011 Node* capacity = IntPtrRoundUpToPowerOfTwo32(
4011 WordShl(at_least_space_for, IntPtrConstant(1))); 4012 WordShl(at_least_space_for, IntPtrConstant(1)));
4012 return IntPtrMax(capacity, IntPtrConstant(HashTableBase::kMinCapacity)); 4013 return IntPtrMax(capacity, IntPtrConstant(HashTableBase::kMinCapacity));
4013 } 4014 }
4014 4015
4015 Node* CodeStubAssembler::IntPtrMax(Node* left, Node* right) { 4016 Node* CodeStubAssembler::IntPtrMax(Node* left, Node* right) {
4016 return Select(IntPtrGreaterThanOrEqual(left, right), left, right); 4017 return Select(IntPtrGreaterThanOrEqual(left, right), left, right,
4018 MachineType::PointerRepresentation());
4017 } 4019 }
4018 4020
4019 template <typename Dictionary> 4021 template <typename Dictionary>
4020 void CodeStubAssembler::NameDictionaryLookup(Node* dictionary, 4022 void CodeStubAssembler::NameDictionaryLookup(Node* dictionary,
4021 Node* unique_name, Label* if_found, 4023 Node* unique_name, Label* if_found,
4022 Variable* var_name_index, 4024 Variable* var_name_index,
4023 Label* if_not_found, 4025 Label* if_not_found,
4024 int inlined_probes) { 4026 int inlined_probes) {
4025 CSA_ASSERT(IsDictionary(dictionary)); 4027 CSA_ASSERT(IsDictionary(dictionary));
4026 DCHECK_EQ(MachineType::PointerRepresentation(), var_name_index->rep()); 4028 DCHECK_EQ(MachineType::PointerRepresentation(), var_name_index->rep());
(...skipping 4724 matching lines...) Expand 10 before | Expand all | Expand 10 after
8751 Node* buffer_bit_field = LoadObjectField( 8753 Node* buffer_bit_field = LoadObjectField(
8752 buffer, JSArrayBuffer::kBitFieldOffset, MachineType::Uint32()); 8754 buffer, JSArrayBuffer::kBitFieldOffset, MachineType::Uint32());
8753 Node* was_neutered_mask = Int32Constant(JSArrayBuffer::WasNeutered::kMask); 8755 Node* was_neutered_mask = Int32Constant(JSArrayBuffer::WasNeutered::kMask);
8754 8756
8755 return Word32NotEqual(Word32And(buffer_bit_field, was_neutered_mask), 8757 return Word32NotEqual(Word32And(buffer_bit_field, was_neutered_mask),
8756 Int32Constant(0)); 8758 Int32Constant(0));
8757 } 8759 }
8758 8760
8759 } // namespace internal 8761 } // namespace internal
8760 } // namespace v8 8762 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/machine-graph-verifier.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698