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

Unified Diff: src/compiler/simplified-node-factory.h

Issue 426233002: Land the Fan (disabled) (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review feedback, rebase and "git cl format" Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/simplified-lowering.cc ('k') | src/compiler/simplified-operator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/simplified-node-factory.h
diff --git a/src/compiler/simplified-node-factory.h b/src/compiler/simplified-node-factory.h
new file mode 100644
index 0000000000000000000000000000000000000000..8660ce6700e7dc59de24137f471eaa234978c30a
--- /dev/null
+++ b/src/compiler/simplified-node-factory.h
@@ -0,0 +1,128 @@
+// Copyright 2014 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef V8_COMPILER_SIMPLIFIED_NODE_FACTORY_H_
+#define V8_COMPILER_SIMPLIFIED_NODE_FACTORY_H_
+
+#include "src/compiler/node.h"
+#include "src/compiler/simplified-operator.h"
+
+namespace v8 {
+namespace internal {
+namespace compiler {
+
+#define SIMPLIFIED() static_cast<NodeFactory*>(this)->simplified()
+#define NEW_NODE_1(op, a) static_cast<NodeFactory*>(this)->NewNode(op, a)
+#define NEW_NODE_2(op, a, b) static_cast<NodeFactory*>(this)->NewNode(op, a, b)
+#define NEW_NODE_3(op, a, b, c) \
+ static_cast<NodeFactory*>(this)->NewNode(op, a, b, c)
+
+template <typename NodeFactory>
+class SimplifiedNodeFactory {
+ public:
+ Node* BooleanNot(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->BooleanNot(), a);
+ }
+
+ Node* NumberEqual(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberEqual(), a, b);
+ }
+ Node* NumberNotEqual(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberNotEqual(), a, b);
+ }
+ Node* NumberLessThan(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberLessThan(), a, b);
+ }
+ Node* NumberLessThanOrEqual(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberLessThanOrEqual(), a, b);
+ }
+ Node* NumberAdd(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberAdd(), a, b);
+ }
+ Node* NumberSubtract(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberSubtract(), a, b);
+ }
+ Node* NumberMultiply(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberMultiply(), a, b);
+ }
+ Node* NumberDivide(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberDivide(), a, b);
+ }
+ Node* NumberModulus(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->NumberModulus(), a, b);
+ }
+ Node* NumberToInt32(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->NumberToInt32(), a);
+ }
+ Node* NumberToUint32(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->NumberToUint32(), a);
+ }
+
+ Node* ReferenceEqual(Type* type, Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->ReferenceEqual(), a, b);
+ }
+
+ Node* StringEqual(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->StringEqual(), a, b);
+ }
+ Node* StringLessThan(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->StringLessThan(), a, b);
+ }
+ Node* StringLessThanOrEqual(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->StringLessThanOrEqual(), a, b);
+ }
+ Node* StringAdd(Node* a, Node* b) {
+ return NEW_NODE_2(SIMPLIFIED()->StringAdd(), a, b);
+ }
+
+ Node* ChangeTaggedToInt32(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->ChangeTaggedToInt32(), a);
+ }
+ Node* ChangeTaggedToUint32(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->ChangeTaggedToUint32(), a);
+ }
+ Node* ChangeTaggedToFloat64(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->ChangeTaggedToFloat64(), a);
+ }
+ Node* ChangeInt32ToTagged(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->ChangeInt32ToTagged(), a);
+ }
+ Node* ChangeUint32ToTagged(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->ChangeUint32ToTagged(), a);
+ }
+ Node* ChangeFloat64ToTagged(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->ChangeFloat64ToTagged(), a);
+ }
+ Node* ChangeBoolToBit(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->ChangeBoolToBit(), a);
+ }
+ Node* ChangeBitToBool(Node* a) {
+ return NEW_NODE_1(SIMPLIFIED()->ChangeBitToBool(), a);
+ }
+
+ Node* LoadField(const FieldAccess& access, Node* object) {
+ return NEW_NODE_1(SIMPLIFIED()->LoadField(access), object);
+ }
+ Node* StoreField(const FieldAccess& access, Node* object, Node* value) {
+ return NEW_NODE_2(SIMPLIFIED()->StoreField(access), object, value);
+ }
+ Node* LoadElement(const ElementAccess& access, Node* object, Node* index) {
+ return NEW_NODE_2(SIMPLIFIED()->LoadElement(access), object, index);
+ }
+ Node* StoreElement(const ElementAccess& access, Node* object, Node* index,
+ Node* value) {
+ return NEW_NODE_3(SIMPLIFIED()->StoreElement(access), object, index, value);
+ }
+};
+
+#undef NEW_NODE_1
+#undef NEW_NODE_2
+#undef NEW_NODE_3
+#undef SIMPLIFIED
+
+} // namespace compiler
+} // namespace internal
+} // namespace v8
+
+#endif // V8_COMPILER_SIMPLIFIED_NODE_FACTORY_H_
« no previous file with comments | « src/compiler/simplified-lowering.cc ('k') | src/compiler/simplified-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698