Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(529)

Unified Diff: sdk/lib/_internal/compiler/implementation/ssa/nodes.dart

Issue 85663003: We can actually map the Dart shift right to the JavaScript one under certain conditions. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/ssa/nodes.dart
===================================================================
--- sdk/lib/_internal/compiler/implementation/ssa/nodes.dart (revision 30633)
+++ sdk/lib/_internal/compiler/implementation/ssa/nodes.dart (working copy)
@@ -55,6 +55,7 @@
R visitRangeConversion(HRangeConversion node);
R visitReturn(HReturn node);
R visitShiftLeft(HShiftLeft node);
+ R visitShiftRight(HShiftRight node);
R visitStatic(HStatic node);
R visitStaticStore(HStaticStore node);
R visitStringConcat(HStringConcat node);
@@ -336,6 +337,7 @@
visitRangeConversion(HRangeConversion node) => visitCheck(node);
visitReturn(HReturn node) => visitControlFlow(node);
visitShiftLeft(HShiftLeft node) => visitBinaryBitOp(node);
+ visitShiftRight(HShiftRight node) => visitBinaryBitOp(node);
visitSubtract(HSubtract node) => visitBinaryArithmetic(node);
visitSwitch(HSwitch node) => visitControlFlow(node);
visitStatic(HStatic node) => visitInstruction(node);
@@ -801,6 +803,7 @@
static const int INDEX_TYPECODE = 27;
static const int IS_TYPECODE = 28;
static const int INVOKE_DYNAMIC_TYPECODE = 29;
+ static const int SHIFT_RIGHT_TYPECODE = 30;
HInstruction(this.inputs, this.instructionType)
: id = idCounter++, usedBy = <HInstruction>[] {
@@ -1727,6 +1730,17 @@
bool dataEquals(HInstruction other) => true;
}
+class HShiftRight extends HBinaryBitOp {
+ HShiftRight(left, right, selector, type) : super(left, right, selector, type);
+ accept(HVisitor visitor) => visitor.visitShiftRight(this);
+
+ BinaryOperation operation(ConstantSystem constantSystem)
+ => constantSystem.shiftRight;
+ int typeCode() => HInstruction.SHIFT_RIGHT_TYPECODE;
+ bool typeEquals(other) => other is HShiftRight;
+ bool dataEquals(HInstruction other) => true;
+}
+
class HBitOr extends HBinaryBitOp {
HBitOr(left, right, selector, type) : super(left, right, selector, type);
accept(HVisitor visitor) => visitor.visitBitOr(this);

Powered by Google App Engine
This is Rietveld 408576698