Index: tests/language/vm/reusable_boxes_test.dart |
diff --git a/tests/language/vm/reusable_boxes_test.dart b/tests/language/vm/reusable_boxes_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..52d372134f9c6a01aebc35ed31c2a3ac49c10b3c |
--- /dev/null |
+++ b/tests/language/vm/reusable_boxes_test.dart |
@@ -0,0 +1,75 @@ |
+// Copyright (c) 2013, 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. |
+// Test correct handling reusable boxes. |
+// VMOptions=--optimization_counter_threshold=100 |
+ |
+library reusable_boxes_test; |
+ |
+import 'dart:typed_data'; |
+ |
+class D { |
+ var a = 0.0; |
+ var b = 1.0; |
+ var c = 2.0; |
+ test() { |
+ a = 0.0; |
+ b = 1.0; |
+ c = a + b; |
+ } |
+ |
+ testParam(x, y) { |
+ x = x * x; |
+ y = y * y; |
+ c = x + y; |
+ } |
+} |
+ |
+testD() { |
+ var f = new D(); |
+ for (var i = 0; i < 20; i++) { |
+ f.test(); |
+ } |
+ // Trigger a deopt of test. |
+ f.testParam(new Float32x4(1.0, 2.0, 3.0, 4.0), new Float32x4.zero()); |
+ for (var i = 0; i < 20; i++) { |
+ f.test(); |
Florian Schneider
2014/02/06 12:38:49
Maybe return a value to check from test(), or chec
Cutch
2014/02/06 23:15:38
Done.
|
+ } |
+} |
+ |
+ |
+class F { |
+ var a = new Float32x4.zero(); |
+ var b = new Float32x4(1.0, 2.0, 3.0, 4.0); |
+ var c = new Float32x4.zero(); |
+ test() { |
+ a = new Float32x4.zero(); |
+ b = new Float32x4(1.0, 2.0, 3.0, 4.0); |
+ c = a + b; |
+ } |
+ |
+ testParam(x, y) { |
+ x = x * x; |
+ y = y * y; |
+ c = x + y; |
+ } |
+ |
+} |
+ |
+testF() { |
+ var f = new F(); |
+ for (var i = 0; i < 20; i++) { |
+ f.test(); |
+ } |
+ // Trigger a deopt of test. |
+ f.testParam(1.0, 2.0); |
+ for (var i = 0; i < 20; i++) { |
+ f.test(); |
Florian Schneider
2014/02/06 12:38:49
Maybe return a value to check from test(), or chec
Cutch
2014/02/06 23:15:38
Done.
|
+ } |
+} |
+ |
+ |
+main() { |
+ testD(); |
+ testF(); |
+} |