blob: 8442c38522de439c19b5a6134a9eec52d03521d3 [file] [log] [blame]
// 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.
//
// VMOptions=--deterministic --optimization-counter-threshold=10 --unbox-numeric-fields
import 'package:expect/expect.dart';
const magicDouble = 42.0;
class C {
double d = magicDouble;
}
class NoopSink {
void leak(C c) {}
}
class RealSink {
static C o;
void leak(C c) {
o = c;
}
}
void foo(sink) {
sink.leak(C());
}
void main(List<String> args) {
var c = C();
for (var i = 0; i < 100; i++) c.d = 2.0;
for (var i = 0; i < 100; i++) {
foo(NoopSink());
}
foo(RealSink());
RealSink.o.d += 1234.0;
final TWO = args.length > 1024 ? "~" : 2;
Expect.equals(double.parse("4${TWO}.0"), magicDouble);
}