package mumbler.truffle.node.builtin.arithmetic; import java.math.BigInteger; import mumbler.truffle.node.builtin.BuiltinNode; import com.oracle.truffle.api.ExactMath; import com.oracle.truffle.api.dsl.GenerateNodeFactory; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.nodes.NodeInfo; @NodeInfo(shortName = "+") @GenerateNodeFactory public abstract class AddBuiltinNode extends BuiltinNode { @Specialization(rewriteOn = ArithmeticException.class) public long add(long value0, long value1) { return ExactMath.addExact(value0, value1); } @Specialization protected BigInteger add(BigInteger value0, BigInteger value1) { return value0.add(value1); } }