| Index: test/codegen/lib/mirrors/accessor_cache_overflow_test.dart
|
| diff --git a/test/codegen/lib/mirrors/accessor_cache_overflow_test.dart b/test/codegen/lib/mirrors/accessor_cache_overflow_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..860bc93a697481b331dd3dfcc73bbc9adc62057c
|
| --- /dev/null
|
| +++ b/test/codegen/lib/mirrors/accessor_cache_overflow_test.dart
|
| @@ -0,0 +1,292 @@
|
| +// 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;
|
| +
|
| +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;
|
| +}
|
|
|