blob: 4a76cc05c2d26016108e65cc0fbfd999dc8724fe [file] [log] [blame]
// Copyright (c) 2025, 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.
main() {
const n = 1 << 12;
// TODO(https://github.com/dart-lang/sdk/issues/61310): n = 1 << 16
print("class C {");
for (var i = 0; i < n; i++) {
print(" dynamic f$i = ${i * 2};");
}
print(" @pragma('vm:never-inline') C();");
print("}");
print("@pragma('vm:never-inline') setDouble(c) {");
for (var i = 0; i < n; i++) {
print(" c.f$i = ${i * 2.0};");
}
print(" return c;");
print("}");
print("@pragma('vm:never-inline') check(c) {");
for (var i = 0; i < n; i++) {
print(" if (c.f$i != ${i * 2}) throw 'Wrong!';");
}
print(" return c;");
print("}");
print("""
main() {
var c = new C(); // Initialized to Smi.
check(c);
setDouble(c); // Storm of field-guard updates
check(c);
}
""");
}