Chromium Code Reviews| 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(); |
| +} |