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

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

Issue 680313003: Move input/output counts directly into Operators, simplying OperatorProperties. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: yes Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/compiler/operator-properties-inl.h ('k') | src/compiler/simplified-operator.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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-lowering.h" 5 #include "src/compiler/simplified-lowering.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 1023 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 return kFullWriteBarrier; 1034 return kFullWriteBarrier;
1035 } 1035 }
1036 return kNoWriteBarrier; 1036 return kNoWriteBarrier;
1037 } 1037 }
1038 1038
1039 1039
1040 void SimplifiedLowering::DoLoadField(Node* node) { 1040 void SimplifiedLowering::DoLoadField(Node* node) {
1041 const FieldAccess& access = FieldAccessOf(node->op()); 1041 const FieldAccess& access = FieldAccessOf(node->op());
1042 node->set_op(machine()->Load(access.machine_type)); 1042 node->set_op(machine()->Load(access.machine_type));
1043 Node* offset = jsgraph()->Int32Constant(access.offset - access.tag()); 1043 Node* offset = jsgraph()->Int32Constant(access.offset - access.tag());
1044 node->InsertInput(zone(), 1, offset); 1044 node->InsertInput(graph()->zone(), 1, offset);
1045 } 1045 }
1046 1046
1047 1047
1048 void SimplifiedLowering::DoStoreField(Node* node) { 1048 void SimplifiedLowering::DoStoreField(Node* node) {
1049 const FieldAccess& access = FieldAccessOf(node->op()); 1049 const FieldAccess& access = FieldAccessOf(node->op());
1050 WriteBarrierKind kind = ComputeWriteBarrierKind( 1050 WriteBarrierKind kind = ComputeWriteBarrierKind(
1051 access.base_is_tagged, access.machine_type, access.type); 1051 access.base_is_tagged, access.machine_type, access.type);
1052 node->set_op( 1052 node->set_op(
1053 machine()->Store(StoreRepresentation(access.machine_type, kind))); 1053 machine()->Store(StoreRepresentation(access.machine_type, kind)));
1054 Node* offset = jsgraph()->Int32Constant(access.offset - access.tag()); 1054 Node* offset = jsgraph()->Int32Constant(access.offset - access.tag());
1055 node->InsertInput(zone(), 1, offset); 1055 node->InsertInput(graph()->zone(), 1, offset);
1056 } 1056 }
1057 1057
1058 1058
1059 Node* SimplifiedLowering::ComputeIndex(const ElementAccess& access, 1059 Node* SimplifiedLowering::ComputeIndex(const ElementAccess& access,
1060 Node* index) { 1060 Node* index) {
1061 int element_size = ElementSizeOf(access.machine_type); 1061 int element_size = ElementSizeOf(access.machine_type);
1062 if (element_size != 1) { 1062 if (element_size != 1) {
1063 index = graph()->NewNode(machine()->Int32Mul(), 1063 index = graph()->NewNode(machine()->Int32Mul(),
1064 jsgraph()->Int32Constant(element_size), index); 1064 jsgraph()->Int32Constant(element_size), index);
1065 } 1065 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 } 1180 }
1181 1181
1182 1182
1183 void SimplifiedLowering::DoStringAdd(Node* node) { 1183 void SimplifiedLowering::DoStringAdd(Node* node) {
1184 Callable callable = CodeFactory::StringAdd( 1184 Callable callable = CodeFactory::StringAdd(
1185 zone()->isolate(), STRING_ADD_CHECK_NONE, NOT_TENURED); 1185 zone()->isolate(), STRING_ADD_CHECK_NONE, NOT_TENURED);
1186 CallDescriptor::Flags flags = CallDescriptor::kNoFlags; 1186 CallDescriptor::Flags flags = CallDescriptor::kNoFlags;
1187 CallDescriptor* desc = 1187 CallDescriptor* desc =
1188 Linkage::GetStubCallDescriptor(callable.descriptor(), 0, flags, zone()); 1188 Linkage::GetStubCallDescriptor(callable.descriptor(), 0, flags, zone());
1189 node->set_op(common()->Call(desc)); 1189 node->set_op(common()->Call(desc));
1190 node->InsertInput(zone(), 0, jsgraph()->HeapConstant(callable.code())); 1190 node->InsertInput(graph()->zone(), 0,
1191 node->AppendInput(zone(), jsgraph()->UndefinedConstant()); 1191 jsgraph()->HeapConstant(callable.code()));
1192 node->AppendInput(zone(), graph()->start()); 1192 node->AppendInput(graph()->zone(), jsgraph()->UndefinedConstant());
1193 node->AppendInput(zone(), graph()->start()); 1193 node->AppendInput(graph()->zone(), graph()->start());
1194 node->AppendInput(graph()->zone(), graph()->start());
1194 } 1195 }
1195 1196
1196 1197
1197 Node* SimplifiedLowering::StringComparison(Node* node, bool requires_ordering) { 1198 Node* SimplifiedLowering::StringComparison(Node* node, bool requires_ordering) {
1198 CEntryStub stub(zone()->isolate(), 1); 1199 CEntryStub stub(zone()->isolate(), 1);
1199 Runtime::FunctionId f = 1200 Runtime::FunctionId f =
1200 requires_ordering ? Runtime::kStringCompare : Runtime::kStringEquals; 1201 requires_ordering ? Runtime::kStringCompare : Runtime::kStringEquals;
1201 ExternalReference ref(f, zone()->isolate()); 1202 ExternalReference ref(f, zone()->isolate());
1202 Operator::Properties props = node->op()->properties(); 1203 Operator::Properties props = node->op()->properties();
1203 // TODO(mstarzinger): We should call StringCompareStub here instead, once an 1204 // TODO(mstarzinger): We should call StringCompareStub here instead, once an
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 void SimplifiedLowering::DoStringLessThanOrEqual(Node* node) { 1373 void SimplifiedLowering::DoStringLessThanOrEqual(Node* node) {
1373 node->set_op(machine()->IntLessThanOrEqual()); 1374 node->set_op(machine()->IntLessThanOrEqual());
1374 node->ReplaceInput(0, StringComparison(node, true)); 1375 node->ReplaceInput(0, StringComparison(node, true));
1375 node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL)); 1376 node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL));
1376 } 1377 }
1377 1378
1378 1379
1379 } // namespace compiler 1380 } // namespace compiler
1380 } // namespace internal 1381 } // namespace internal
1381 } // namespace v8 1382 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/operator-properties-inl.h ('k') | src/compiler/simplified-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698