changeset 13887:f3e4f746e9c6

Fix gate errors
author Christian Wimmer <christian.wimmer@oracle.com>
date Thu, 06 Feb 2014 00:21:10 -0800
parents 812f3155efba
children 51584f76462d
files graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/demo/SLAddWithoutSpecializationNode.java
diffstat 1 files changed, 84 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/demo/SLAddWithoutSpecializationNode.java	Wed Feb 05 23:38:59 2014 -0800
+++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/expression/demo/SLAddWithoutSpecializationNode.java	Thu Feb 06 00:21:10 2014 -0800
@@ -1,62 +1,84 @@
-package com.oracle.truffle.sl.nodes.expression.demo;
-
-import java.math.*;
-
-import com.oracle.truffle.api.*;
-import com.oracle.truffle.api.dsl.*;
-import com.oracle.truffle.api.frame.*;
-import com.oracle.truffle.api.nodes.*;
-import com.oracle.truffle.sl.nodes.*;
-import com.oracle.truffle.sl.nodes.expression.*;
-
-/**
- * This is an example how the add operation would be implemented without specializations and without
- * the Truffle DSL. Do not write such code in your language! See {@link SLAddNode} how the add
- * operation is implemented correctly.
- */
-public class SLAddWithoutSpecializationNode extends SLExpressionNode {
-
-    @Child private SLExpressionNode leftNode;
-    @Child private SLExpressionNode rightNode;
-
-    public SLAddWithoutSpecializationNode(SLExpressionNode leftNode, SLExpressionNode rightNode) {
-        this.leftNode = adoptChild(leftNode);
-        this.rightNode = adoptChild(rightNode);
-    }
-
-    @Override
-    public Object executeGeneric(VirtualFrame frame) {
-        /* Evaluate the child nodes. */
-        Object left = leftNode.executeGeneric(frame);
-        Object right = rightNode.executeGeneric(frame);
-
-        if (left instanceof Long && right instanceof Long) {
-            /* Fast path of the arbitrary-precision arithmetic. We need to check for overflows */
-            try {
-                return ExactMath.addExact((Long) left, (Long) right);
-            } catch (ArithmeticException ex) {
-                /* Fall through to BigInteger case. */
-            }
-        }
-
-        /* Implicit type conversions. */
-        if (left instanceof Long) {
-            left = BigInteger.valueOf((Long) left);
-        }
-        if (right instanceof Long) {
-            right = BigInteger.valueOf((Long) right);
-        }
-        if (left instanceof BigInteger && right instanceof BigInteger) {
-            /* Slow path of the arbitrary-precision arithmetic. */
-            return ((BigInteger) left).add((BigInteger) right);
-        }
-
-        /* String concatenation if either the left or the right operand is a String. */
-        if (left instanceof String || right instanceof String) {
-            return left.toString() + right.toString();
-        }
-
-        /* Type error. */
-        throw new UnsupportedSpecializationException(this, new Node[]{leftNode, rightNode}, new Object[]{left, right});
-    }
-}
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.truffle.sl.nodes.expression.demo;
+
+import java.math.*;
+
+import com.oracle.truffle.api.*;
+import com.oracle.truffle.api.dsl.*;
+import com.oracle.truffle.api.frame.*;
+import com.oracle.truffle.api.nodes.*;
+import com.oracle.truffle.sl.nodes.*;
+import com.oracle.truffle.sl.nodes.expression.*;
+
+/**
+ * This is an example how the add operation would be implemented without specializations and without
+ * the Truffle DSL. Do not write such code in your language! See {@link SLAddNode} how the add
+ * operation is implemented correctly.
+ */
+public class SLAddWithoutSpecializationNode extends SLExpressionNode {
+
+    @Child private SLExpressionNode leftNode;
+    @Child private SLExpressionNode rightNode;
+
+    public SLAddWithoutSpecializationNode(SLExpressionNode leftNode, SLExpressionNode rightNode) {
+        this.leftNode = adoptChild(leftNode);
+        this.rightNode = adoptChild(rightNode);
+    }
+
+    @Override
+    public Object executeGeneric(VirtualFrame frame) {
+        /* Evaluate the child nodes. */
+        Object left = leftNode.executeGeneric(frame);
+        Object right = rightNode.executeGeneric(frame);
+
+        if (left instanceof Long && right instanceof Long) {
+            /* Fast path of the arbitrary-precision arithmetic. We need to check for overflows */
+            try {
+                return ExactMath.addExact((Long) left, (Long) right);
+            } catch (ArithmeticException ex) {
+                /* Fall through to BigInteger case. */
+            }
+        }
+
+        /* Implicit type conversions. */
+        if (left instanceof Long) {
+            left = BigInteger.valueOf((Long) left);
+        }
+        if (right instanceof Long) {
+            right = BigInteger.valueOf((Long) right);
+        }
+        if (left instanceof BigInteger && right instanceof BigInteger) {
+            /* Slow path of the arbitrary-precision arithmetic. */
+            return ((BigInteger) left).add((BigInteger) right);
+        }
+
+        /* String concatenation if either the left or the right operand is a String. */
+        if (left instanceof String || right instanceof String) {
+            return left.toString() + right.toString();
+        }
+
+        /* Type error. */
+        throw new UnsupportedSpecializationException(this, new Node[]{leftNode, rightNode}, new Object[]{left, right});
+    }
+}