public Operand computeValue(String methodName, Operand arg) { double v1 = value; double v2 = (arg instanceof Fixnum) ? 1.0 * ((Fixnum)arg).value : (double)((Float)arg).value; if (methodName.equals("+")) { return new Float(v1 + v2); } else if (methodName.equals("-")) { return new Float(v1 - v2); } else if (methodName.equals("*")) { return new Float(v1 * v2); } else if (methodName.equals("/")) { return v2 == 0.0 ? null : new Float(v1 / v2); // If divisor is zero, don't simplify! } return null; }
public Operand computeValue(String methodName, Operand arg) { double v1 = value; double v2 = (arg instanceof Fixnum) ? 1.0 * ((Fixnum)arg).value : (double)((Float)arg).value; if (methodName.equals("+")) { return new Float(v1 + v2); } else if (methodName.equals("-")) { return new Float(v1 - v2); } else if (methodName.equals("*")) { return new Float(v1 * v2); } else if (methodName.equals("/")) { return v2 == 0.0 ? null : new Float(v1 / v2); // If divisor is zero, don't simplify! } return null; }
public Operand buildFloat(FloatNode node) { // Since flaot literals are effectively interned objects, no need to copyAndReturnValue(...) // SSS FIXME: Or is this a premature optimization? return new Float(node.getValue()); }
public Operand buildFloat(FloatNode node, IRScope s) { // SSS: Since flaot literals are effectively interned objects, no need to copyAndReturnValue(...) // Or is this a premature optimization? return new Float(node.getValue()); }
public Operand buildFloat(FloatNode node) { // Since flaot literals are effectively interned objects, no need to copyAndReturnValue(...) // SSS FIXME: Or is this a premature optimization? return new Float(node.getValue()); }
public Operand buildFloat(FloatNode node, IRScope s) { // SSS: Since flaot literals are effectively interned objects, no need to copyAndReturnValue(...) // Or is this a premature optimization? return new Float(node.getValue()); }
public static Float decode(IRReaderDecoder d) { return new Float(d.decodeDouble()); }
public static Float decode(IRReaderDecoder d) { return new Float(d.decodeDouble()); }
public Operand computeValue(String methodName, Operand arg) { if (arg instanceof Fixnum) { if (methodName.equals("+")) return new Fixnum(value + ((Fixnum)arg).value); if (methodName.equals("-")) return new Fixnum(value - ((Fixnum)arg).value); if (methodName.equals("*")) return new Fixnum(value * ((Fixnum)arg).value); if (methodName.equals("/")) { Long divisor = ((Fixnum)arg).value; return divisor == 0L ? null : new Fixnum(value / divisor); // If divisor is zero, don't simplify! } } else if (arg instanceof Float) { if (methodName.equals("+")) return new Float(value + ((Float)arg).value); if (methodName.equals("-")) return new Float(value - ((Float)arg).value); if (methodName.equals("*")) return new Float(value * ((Float)arg).value); if (methodName.equals("/")) { Double divisor = ((Float)arg).value; return divisor == 0.0 ? null : new Float(value / divisor); // If divisor is zero, don't simplify! } } return null; }
public Operand computeValue(String methodName, Operand arg) { if (arg instanceof Fixnum) { if (methodName.equals("+")) return new Fixnum(value + ((Fixnum)arg).value); if (methodName.equals("-")) return new Fixnum(value - ((Fixnum)arg).value); if (methodName.equals("*")) return new Fixnum(value * ((Fixnum)arg).value); if (methodName.equals("/")) { Long divisor = ((Fixnum)arg).value; return divisor == 0L ? null : new Fixnum(value / divisor); // If divisor is zero, don't simplify! } } else if (arg instanceof Float) { if (methodName.equals("+")) return new Float(value + ((Float)arg).value); if (methodName.equals("-")) return new Float(value - ((Float)arg).value); if (methodName.equals("*")) return new Float(value * ((Float)arg).value); if (methodName.equals("/")) { Double divisor = ((Float)arg).value; return divisor == 0.0 ? null : new Float(value / divisor); // If divisor is zero, don't simplify! } } return null; }