76ac2ee172
Change-Id: I1ecf0d2628685738b0631040d6fe61d635164fb6 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212340 Reviewed-by: Stephen Adams <sra@google.com> Commit-Queue: Joshua Litt <joshualitt@google.com>
118 lines
2.5 KiB
Dart
118 lines
2.5 KiB
Dart
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
//@dart=2.14
|
|
|
|
/*member: main:ignore*/
|
|
void main() {
|
|
for (var a in [false, true]) {
|
|
sink = cannotRecognize(a ? 10 : C());
|
|
sink = unspecialized(a ? -1 : 1);
|
|
sink = otherPositive2(a);
|
|
sink = shiftBySix(a);
|
|
sink = shiftByMasked(a, 9);
|
|
sink = shiftByMasked(a, -9);
|
|
}
|
|
|
|
sink = cannotConstantFold();
|
|
sink = constantFoldPositive();
|
|
sink = constantFoldNegative();
|
|
test6();
|
|
}
|
|
|
|
Object? sink;
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*spec|canary.member: cannotRecognize:function(thing) {
|
|
return A._asInt(J.$shru$n(thing, 1));
|
|
}*/
|
|
/*prod.member: cannotRecognize:function(thing) {
|
|
return J.$shru$n(thing, 1);
|
|
}*/
|
|
int cannotRecognize(dynamic thing) {
|
|
return thing >>> 1;
|
|
}
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*member: cannotConstantFold:function() {
|
|
return B.JSInt_methods.$shru(1, -1);
|
|
}*/
|
|
int cannotConstantFold() {
|
|
var a = 1;
|
|
return a >>> -1;
|
|
}
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*member: constantFoldPositive:function() {
|
|
return 25;
|
|
}*/
|
|
int constantFoldPositive() {
|
|
var a = 100;
|
|
return a >>> 2;
|
|
}
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*member: constantFoldNegative:function() {
|
|
return 3;
|
|
}*/
|
|
int constantFoldNegative() {
|
|
var a = -1;
|
|
return a >>> 30;
|
|
}
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*member: unspecialized:function(a) {
|
|
return B.JSInt_methods.$shru(1, a);
|
|
}*/
|
|
int unspecialized(int a) {
|
|
return 1 >>> a;
|
|
}
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*member: otherPositive2:function(param) {
|
|
return B.JSInt_methods._shruOtherPositive$1(1, param ? 1 : 2);
|
|
}*/
|
|
int otherPositive2(bool param) {
|
|
var a = param ? 1 : 2;
|
|
return 1 >>> a;
|
|
}
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*member: shiftBySix:function(param) {
|
|
return (param ? 4294967295 : -1) >>> 6;
|
|
}*/
|
|
int shiftBySix(bool param) {
|
|
var a = param ? 0xFFFFFFFF : -1;
|
|
return a >>> 6;
|
|
}
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*member: shiftByMasked:function(param1, shift) {
|
|
var a = param1 ? 4294967295 : 0;
|
|
return a >>> (shift & 31);
|
|
}*/
|
|
int shiftByMasked(bool param1, int shift) {
|
|
var a = param1 ? 0xFFFFFFFF : 0;
|
|
return a >>> (shift & 31);
|
|
}
|
|
|
|
@pragma('dart2js:noInline')
|
|
/*member: otherPositive6:function(a, b) {
|
|
return B.JSInt_methods._shruOtherPositive$1(a, b);
|
|
}*/
|
|
int otherPositive6(int a, int b) {
|
|
return a >>> b;
|
|
}
|
|
|
|
void test6() {
|
|
sink = otherPositive6(1, 3);
|
|
sink = otherPositive6(0, 4);
|
|
sink = otherPositive6(-1, 2);
|
|
}
|
|
|
|
class C {
|
|
/*member: C.>>>:ignore*/
|
|
C operator >>>(int i) => this;
|
|
}
|