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

Side by Side Diff: src/compiler/simplified-operator.cc

Issue 2203693002: [turbofan] Introduce initial support for TypedArrays. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@5254
Patch Set: Fix Retain Created 4 years, 4 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/compiler/simplified-operator.h ('k') | src/compiler/typer.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 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 "src/compiler/simplified-operator.h" 5 #include "src/compiler/simplified-operator.h"
6 6
7 #include "src/base/lazy-instance.h" 7 #include "src/base/lazy-instance.h"
8 #include "src/compiler/opcodes.h" 8 #include "src/compiler/opcodes.h"
9 #include "src/compiler/operator.h" 9 #include "src/compiler/operator.h"
10 #include "src/types.h" 10 #include "src/types.h"
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 } 174 }
175 175
176 176
177 const ElementAccess& ElementAccessOf(const Operator* op) { 177 const ElementAccess& ElementAccessOf(const Operator* op) {
178 DCHECK_NOT_NULL(op); 178 DCHECK_NOT_NULL(op);
179 DCHECK(op->opcode() == IrOpcode::kLoadElement || 179 DCHECK(op->opcode() == IrOpcode::kLoadElement ||
180 op->opcode() == IrOpcode::kStoreElement); 180 op->opcode() == IrOpcode::kStoreElement);
181 return OpParameter<ElementAccess>(op); 181 return OpParameter<ElementAccess>(op);
182 } 182 }
183 183
184 ExternalArrayType ExternalArrayTypeOf(const Operator* op) {
185 DCHECK(op->opcode() == IrOpcode::kLoadTypedElement ||
186 op->opcode() == IrOpcode::kStoreTypedElement);
187 return OpParameter<ExternalArrayType>(op);
188 }
189
184 size_t hash_value(CheckFloat64HoleMode mode) { 190 size_t hash_value(CheckFloat64HoleMode mode) {
185 return static_cast<size_t>(mode); 191 return static_cast<size_t>(mode);
186 } 192 }
187 193
188 std::ostream& operator<<(std::ostream& os, CheckFloat64HoleMode mode) { 194 std::ostream& operator<<(std::ostream& os, CheckFloat64HoleMode mode) {
189 switch (mode) { 195 switch (mode) {
190 case CheckFloat64HoleMode::kAllowReturnHole: 196 case CheckFloat64HoleMode::kAllowReturnHole:
191 return os << "allow-return-hole"; 197 return os << "allow-return-hole";
192 case CheckFloat64HoleMode::kNeverReturnHole: 198 case CheckFloat64HoleMode::kNeverReturnHole:
193 return os << "never-return-hole"; 199 return os << "never-return-hole";
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 } 633 }
628 634
629 const Operator* SimplifiedOperatorBuilder::SpeculativeNumberLessThanOrEqual( 635 const Operator* SimplifiedOperatorBuilder::SpeculativeNumberLessThanOrEqual(
630 CompareOperationHints::Hint hint) { 636 CompareOperationHints::Hint hint) {
631 return new (zone()) Operator1<CompareOperationHints::Hint>( 637 return new (zone()) Operator1<CompareOperationHints::Hint>(
632 IrOpcode::kSpeculativeNumberLessThanOrEqual, 638 IrOpcode::kSpeculativeNumberLessThanOrEqual,
633 Operator::kFoldable | Operator::kNoThrow, 639 Operator::kFoldable | Operator::kNoThrow,
634 "SpeculativeNumberLessThanOrEqual", 2, 1, 1, 1, 1, 0, hint); 640 "SpeculativeNumberLessThanOrEqual", 2, 1, 1, 1, 1, 0, hint);
635 } 641 }
636 642
637 #define ACCESS_OP_LIST(V) \ 643 #define ACCESS_OP_LIST(V) \
638 V(LoadField, FieldAccess, Operator::kNoWrite, 1, 1, 1) \ 644 V(LoadField, FieldAccess, Operator::kNoWrite, 1, 1, 1) \
639 V(StoreField, FieldAccess, Operator::kNoRead, 2, 1, 0) \ 645 V(StoreField, FieldAccess, Operator::kNoRead, 2, 1, 0) \
640 V(LoadElement, ElementAccess, Operator::kNoWrite, 2, 1, 1) \ 646 V(LoadElement, ElementAccess, Operator::kNoWrite, 2, 1, 1) \
641 V(StoreElement, ElementAccess, Operator::kNoRead, 3, 1, 0) 647 V(StoreElement, ElementAccess, Operator::kNoRead, 3, 1, 0) \
648 V(LoadTypedElement, ExternalArrayType, Operator::kNoWrite, 4, 1, 1) \
649 V(StoreTypedElement, ExternalArrayType, Operator::kNoRead, 5, 1, 0)
642 650
643 #define ACCESS(Name, Type, properties, value_input_count, control_input_count, \ 651 #define ACCESS(Name, Type, properties, value_input_count, control_input_count, \
644 output_count) \ 652 output_count) \
645 const Operator* SimplifiedOperatorBuilder::Name(const Type& access) { \ 653 const Operator* SimplifiedOperatorBuilder::Name(const Type& access) { \
646 return new (zone()) \ 654 return new (zone()) \
647 Operator1<Type>(IrOpcode::k##Name, \ 655 Operator1<Type>(IrOpcode::k##Name, \
648 Operator::kNoDeopt | Operator::kNoThrow | properties, \ 656 Operator::kNoDeopt | Operator::kNoThrow | properties, \
649 #Name, value_input_count, 1, control_input_count, \ 657 #Name, value_input_count, 1, control_input_count, \
650 output_count, 1, 0, access); \ 658 output_count, 1, 0, access); \
651 } 659 }
652 ACCESS_OP_LIST(ACCESS) 660 ACCESS_OP_LIST(ACCESS)
653 #undef ACCESS 661 #undef ACCESS
654 662
655 } // namespace compiler 663 } // namespace compiler
656 } // namespace internal 664 } // namespace internal
657 } // namespace v8 665 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/simplified-operator.h ('k') | src/compiler/typer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698