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

Side by Side Diff: src/compiler/machine-node-factory.h

Issue 436593002: [turbofan] Add Int32AddWithOverflow machine operator. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | Annotate | Revision Log
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 #ifndef V8_COMPILER_MACHINE_NODE_FACTORY_H_ 5 #ifndef V8_COMPILER_MACHINE_NODE_FACTORY_H_
6 #define V8_COMPILER_MACHINE_NODE_FACTORY_H_ 6 #define V8_COMPILER_MACHINE_NODE_FACTORY_H_
7 7
8 #ifdef USE_SIMULATOR 8 #ifdef USE_SIMULATOR
9 #define MACHINE_ASSEMBLER_SUPPORTS_CALL_C 0 9 #define MACHINE_ASSEMBLER_SUPPORTS_CALL_C 0
10 #else 10 #else
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 } 78 }
79 Node* Float64Constant(double value) { 79 Node* Float64Constant(double value) {
80 return NEW_NODE_0(COMMON()->Float64Constant(value)); 80 return NEW_NODE_0(COMMON()->Float64Constant(value));
81 } 81 }
82 Node* HeapConstant(Handle<Object> object) { 82 Node* HeapConstant(Handle<Object> object) {
83 PrintableUnique<Object> val = 83 PrintableUnique<Object> val =
84 PrintableUnique<Object>::CreateUninitialized(ZONE(), object); 84 PrintableUnique<Object>::CreateUninitialized(ZONE(), object);
85 return NEW_NODE_0(COMMON()->HeapConstant(val)); 85 return NEW_NODE_0(COMMON()->HeapConstant(val));
86 } 86 }
87 87
88 // Projections.
89 Node* Projection(int index, Node* tuple) {
90 return NEW_NODE_1(COMMON()->Projection(index), tuple);
91 }
92
88 // Memory Operations. 93 // Memory Operations.
89 Node* Load(MachineRepresentation rep, Node* base) { 94 Node* Load(MachineRepresentation rep, Node* base) {
90 return Load(rep, base, Int32Constant(0)); 95 return Load(rep, base, Int32Constant(0));
91 } 96 }
92 Node* Load(MachineRepresentation rep, Node* base, Node* index) { 97 Node* Load(MachineRepresentation rep, Node* base, Node* index) {
93 return NEW_NODE_2(MACHINE()->Load(rep), base, index); 98 return NEW_NODE_2(MACHINE()->Load(rep), base, index);
94 } 99 }
95 void Store(MachineRepresentation rep, Node* base, Node* value) { 100 void Store(MachineRepresentation rep, Node* base, Node* value) {
96 Store(rep, base, Int32Constant(0), value); 101 Store(rep, base, Int32Constant(0), value);
97 } 102 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 } 193 }
189 Node* Word64NotEqual(Node* a, Node* b) { 194 Node* Word64NotEqual(Node* a, Node* b) {
190 return Word64BinaryNot(Word64Equal(a, b)); 195 return Word64BinaryNot(Word64Equal(a, b));
191 } 196 }
192 Node* Word64Not(Node* a) { return Word64Xor(a, Int64Constant(-1)); } 197 Node* Word64Not(Node* a) { return Word64Xor(a, Int64Constant(-1)); }
193 Node* Word64BinaryNot(Node* a) { return Word64Equal(a, Int64Constant(0)); } 198 Node* Word64BinaryNot(Node* a) { return Word64Equal(a, Int64Constant(0)); }
194 199
195 Node* Int32Add(Node* a, Node* b) { 200 Node* Int32Add(Node* a, Node* b) {
196 return NEW_NODE_2(MACHINE()->Int32Add(), a, b); 201 return NEW_NODE_2(MACHINE()->Int32Add(), a, b);
197 } 202 }
203 Node* Int32AddWithOverflow(Node* a, Node* b) {
titzer 2014/07/31 15:16:34 Maybe we want to return the two projection nodes f
Benedikt Meurer 2014/07/31 15:18:19 I'd leave it this way for consistency with calls.
Benedikt Meurer 2014/08/01 05:01:18 Done.
204 return NEW_NODE_2(MACHINE()->Int32AddWithOverflow(), a, b);
205 }
198 Node* Int32Sub(Node* a, Node* b) { 206 Node* Int32Sub(Node* a, Node* b) {
199 return NEW_NODE_2(MACHINE()->Int32Sub(), a, b); 207 return NEW_NODE_2(MACHINE()->Int32Sub(), a, b);
200 } 208 }
201 Node* Int32Mul(Node* a, Node* b) { 209 Node* Int32Mul(Node* a, Node* b) {
202 return NEW_NODE_2(MACHINE()->Int32Mul(), a, b); 210 return NEW_NODE_2(MACHINE()->Int32Mul(), a, b);
203 } 211 }
204 Node* Int32Div(Node* a, Node* b) { 212 Node* Int32Div(Node* a, Node* b) {
205 return NEW_NODE_2(MACHINE()->Int32Div(), a, b); 213 return NEW_NODE_2(MACHINE()->Int32Div(), a, b);
206 } 214 }
207 Node* Int32UDiv(Node* a, Node* b) { 215 Node* Int32UDiv(Node* a, Node* b) {
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 #undef NEW_NODE_3 373 #undef NEW_NODE_3
366 #undef MACHINE 374 #undef MACHINE
367 #undef COMMON 375 #undef COMMON
368 #undef ZONE 376 #undef ZONE
369 377
370 } // namespace compiler 378 } // namespace compiler
371 } // namespace internal 379 } // namespace internal
372 } // namespace v8 380 } // namespace v8
373 381
374 #endif // V8_COMPILER_MACHINE_NODE_FACTORY_H_ 382 #endif // V8_COMPILER_MACHINE_NODE_FACTORY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698