| Index: dart/frog/leg/ssa/builder.dart
|
| diff --git a/dart/frog/leg/ssa/builder.dart b/dart/frog/leg/ssa/builder.dart
|
| index 04deac976cc90c3fc947801210c55d635b4e4caa..2adefaf7ea9bdcd3ff9539c0a4cfbcd061be811f 100644
|
| --- a/dart/frog/leg/ssa/builder.dart
|
| +++ b/dart/frog/leg/ssa/builder.dart
|
| @@ -1302,7 +1302,16 @@ class SsaBuilder implements Visitor {
|
| new HStatic(interceptors.getPrefixOperatorInterceptor(op));
|
| add(target);
|
| switch (op.source.stringValue) {
|
| - case "-": push(new HNegate(target, operand)); break;
|
| + case "-":
|
| + // TODO(kasperl): Avoid calling visit(node.receiver) above.
|
| + if ((operand is HLiteral) && (operand.value is double)) {
|
| + stack.add(graph.addNewLiteralDouble(-operand.value));
|
| + } else if ((operand is HLiteral) && (operand.value is int)) {
|
| + stack.add(graph.addNewLiteralInt(-operand.value));
|
| + } else {
|
| + push(new HNegate(target, operand));
|
| + }
|
| + break;
|
| case "~": push(new HBitNot(target, operand)); break;
|
| default: unreachable();
|
| }
|
|
|