Index: lib/compiler/implementation/ssa/codegen.dart |
diff --git a/lib/compiler/implementation/ssa/codegen.dart b/lib/compiler/implementation/ssa/codegen.dart |
index bba4c84b24d20d54d0b9aeff979f2d74eedb3cc2..4db186fc3a19e2d12810997f879c1e1b85b3bb9f 100644 |
--- a/lib/compiler/implementation/ssa/codegen.dart |
+++ b/lib/compiler/implementation/ssa/codegen.dart |
@@ -1121,8 +1121,11 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor { |
visitBitInvokeBinary(HBinaryBitOp node, String op) { |
if (node.builtin){ |
beginExpression(unsignedShiftPrecedences.precedence); |
+ int oldPrecedence = this.expectedPrecedence; |
+ this.expectedPrecedence = JSPrecedence.SHIFT_PRECEDENCE; |
visitInvokeBinary(node, op); |
buffer.add(' >>> 0'); |
+ this.expectedPrecedence = oldPrecedence; |
endExpression(unsignedShiftPrecedences.precedence); |
} else { |
visitInvokeBinary(node, op); |
@@ -1145,8 +1148,11 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor { |
visitBitInvokeUnary(HInvokeUnary node, String op) { |
if (node.builtin){ |
beginExpression(unsignedShiftPrecedences.precedence); |
+ int oldPrecedence = this.expectedPrecedence; |
+ this.expectedPrecedence = JSPrecedence.SHIFT_PRECEDENCE; |
visitInvokeUnary(node, op); |
buffer.add(' >>> 0'); |
+ this.expectedPrecedence = oldPrecedence; |
endExpression(unsignedShiftPrecedences.precedence); |
} else { |
visitInvokeUnary(node, op); |