OLD | NEW |
1 library NativeGCTest; | 1 library NativeGCTest; |
2 import '../../pkg/unittest/lib/unittest.dart'; | 2 import '../../pkg/unittest/lib/unittest.dart'; |
3 import '../../pkg/unittest/lib/html_config.dart'; | 3 import '../../pkg/unittest/lib/html_config.dart'; |
4 import 'dart:html'; | 4 import 'dart:html'; |
5 | 5 |
6 main() { | 6 main() { |
7 useHtmlConfiguration(); | 7 useHtmlConfiguration(); |
8 | 8 |
9 test('EventListener', () { | 9 test('EventListener', () { |
10 final int N = 1000000; | 10 final int N = 1000000; |
11 final int M = 1000; | 11 final int M = 1000; |
12 | 12 |
13 var div; | 13 var div; |
14 for (int i = 0; i < M; ++i) { | 14 for (int i = 0; i < M; ++i) { |
15 // This memory should be freed when the listener below is | 15 // This memory should be freed when the listener below is |
16 // collected. | 16 // collected. |
17 List l = new List(N); | 17 List l = new List.fixedLength(N); |
18 | 18 |
19 // Record the iteration number. | 19 // Record the iteration number. |
20 l[N - 1] = i; | 20 l[N - 1] = i; |
21 | 21 |
22 div = new Element.tag('div'); | 22 div = new Element.tag('div'); |
23 div.on['test'].add((_) { | 23 div.on['test'].add((_) { |
24 // Only the final iteration's listener should be invoked. | 24 // Only the final iteration's listener should be invoked. |
25 // Note: the reference to l keeps the entire list alive. | 25 // Note: the reference to l keeps the entire list alive. |
26 expect(l[N - 1], M - 1); | 26 expect(l[N - 1], M - 1); |
27 }, false); | 27 }, false); |
(...skipping 12 matching lines...) Expand all Loading... |
40 for (int i = 0; i < 100; ++i) { | 40 for (int i = 0; i < 100; ++i) { |
41 triggerMajorGC(); | 41 triggerMajorGC(); |
42 } | 42 } |
43 | 43 |
44 testDiv.on.click.add(expectAsync1((e) {})); | 44 testDiv.on.click.add(expectAsync1((e) {})); |
45 window.postMessage('test', '*'); | 45 window.postMessage('test', '*'); |
46 }); | 46 }); |
47 } | 47 } |
48 | 48 |
49 void triggerMajorGC() { | 49 void triggerMajorGC() { |
50 List list = new List(1000000); | 50 List list = new List.fixedLength(1000000); |
51 Element div = new DivElement(); | 51 Element div = new DivElement(); |
52 div.on.click.add((e) => print(list[0])); | 52 div.on.click.add((e) => print(list[0])); |
53 } | 53 } |
OLD | NEW |