| // Copyright (c) 2016, 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. |
| // |
| // Test that canonicalization inserts constants with correct representation. |
| // VMOptions=--optimization-counter-threshold=10 --optimization-filter=bar --no-background-compilation |
| |
| // @dart = 2.9 |
| |
| import 'dart:typed_data'; |
| |
| toSigned(v, width) { |
| var signMask = 1 << (width - 1); |
| return (v & (signMask - 1)) - (v & signMask); |
| } |
| |
| foo(value) { |
| return value >> 32; |
| } |
| |
| bar(td) { |
| return toSigned(foo(td[0]), 64); |
| } |
| |
| main() { |
| toSigned(1 << 1, 32); |
| toSigned(1 << 32, 32); |
| |
| var l = new Int64List(1); |
| l[0] = 0x78f7f6f5f4f3f2f1; |
| |
| for (var i = 0; i < 20; i++) { |
| bar(l); |
| } |
| } |