blob: 9818f68091d78cee8673f0516cc31b400fad973f [file] [log] [blame]
// Copyright (c) 2014, 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.
// This test runs invokes getField and setField enough times to get cached
// closures generated and with enough different field names to trip the path
// that flushes the closure cache.
library test.hot_get_field;
@MirrorsUsed(targets: "test.hot_get_field")
import 'dart:mirrors';
import 'package:expect/expect.dart';
const int optimizationThreshold = 20;
main() {
var digits = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'A',
'B',
'C',
'D',
'E',
'F'
];
var symbols = new List();
for (var high in digits) {
for (var low in digits) {
symbols.add(MirrorSystem.getSymbol("v$high$low"));
}
}
var im = reflect(new C());
for (var i = 0; i < optimizationThreshold * 2; i++) {
for (var fieldName in symbols) {
im.getField(fieldName);
im.setField(fieldName, 'foo');
}
}
}
class C {
var v00;
var v01;
var v02;
var v03;
var v04;
var v05;
var v06;
var v07;
var v08;
var v09;
var v0A;
var v0B;
var v0C;
var v0D;
var v0E;
var v0F;
var v10;
var v11;
var v12;
var v13;
var v14;
var v15;
var v16;
var v17;
var v18;
var v19;
var v1A;
var v1B;
var v1C;
var v1D;
var v1E;
var v1F;
var v20;
var v21;
var v22;
var v23;
var v24;
var v25;
var v26;
var v27;
var v28;
var v29;
var v2A;
var v2B;
var v2C;
var v2D;
var v2E;
var v2F;
var v30;
var v31;
var v32;
var v33;
var v34;
var v35;
var v36;
var v37;
var v38;
var v39;
var v3A;
var v3B;
var v3C;
var v3D;
var v3E;
var v3F;
var v40;
var v41;
var v42;
var v43;
var v44;
var v45;
var v46;
var v47;
var v48;
var v49;
var v4A;
var v4B;
var v4C;
var v4D;
var v4E;
var v4F;
var v50;
var v51;
var v52;
var v53;
var v54;
var v55;
var v56;
var v57;
var v58;
var v59;
var v5A;
var v5B;
var v5C;
var v5D;
var v5E;
var v5F;
var v60;
var v61;
var v62;
var v63;
var v64;
var v65;
var v66;
var v67;
var v68;
var v69;
var v6A;
var v6B;
var v6C;
var v6D;
var v6E;
var v6F;
var v70;
var v71;
var v72;
var v73;
var v74;
var v75;
var v76;
var v77;
var v78;
var v79;
var v7A;
var v7B;
var v7C;
var v7D;
var v7E;
var v7F;
var v80;
var v81;
var v82;
var v83;
var v84;
var v85;
var v86;
var v87;
var v88;
var v89;
var v8A;
var v8B;
var v8C;
var v8D;
var v8E;
var v8F;
var v90;
var v91;
var v92;
var v93;
var v94;
var v95;
var v96;
var v97;
var v98;
var v99;
var v9A;
var v9B;
var v9C;
var v9D;
var v9E;
var v9F;
var vA0;
var vA1;
var vA2;
var vA3;
var vA4;
var vA5;
var vA6;
var vA7;
var vA8;
var vA9;
var vAA;
var vAB;
var vAC;
var vAD;
var vAE;
var vAF;
var vB0;
var vB1;
var vB2;
var vB3;
var vB4;
var vB5;
var vB6;
var vB7;
var vB8;
var vB9;
var vBA;
var vBB;
var vBC;
var vBD;
var vBE;
var vBF;
var vC0;
var vC1;
var vC2;
var vC3;
var vC4;
var vC5;
var vC6;
var vC7;
var vC8;
var vC9;
var vCA;
var vCB;
var vCC;
var vCD;
var vCE;
var vCF;
var vD0;
var vD1;
var vD2;
var vD3;
var vD4;
var vD5;
var vD6;
var vD7;
var vD8;
var vD9;
var vDA;
var vDB;
var vDC;
var vDD;
var vDE;
var vDF;
var vE0;
var vE1;
var vE2;
var vE3;
var vE4;
var vE5;
var vE6;
var vE7;
var vE8;
var vE9;
var vEA;
var vEB;
var vEC;
var vED;
var vEE;
var vEF;
var vF0;
var vF1;
var vF2;
var vF3;
var vF4;
var vF5;
var vF6;
var vF7;
var vF8;
var vF9;
var vFA;
var vFB;
var vFC;
var vFD;
var vFE;
var vFF;
}