OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 15 matching lines...) Expand all Loading... |
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | 27 |
28 // Flags: --allow-natives-syntax | 28 // Flags: --allow-natives-syntax |
29 | 29 |
30 var X = 1.1; | 30 var X = 1.1; |
31 var K = 0.5; | 31 var K = 0.5; |
32 | 32 |
33 var O = 0; | 33 var O = 0; |
34 var result = new Float64Array(2); | 34 var result = new Float64Array(2); |
35 | 35 |
| 36 %NeverOptimizeFunction(spill); |
36 function spill() { | 37 function spill() { |
37 %NeverOptimize(); | |
38 } | 38 } |
39 | 39 |
40 function buggy() { | 40 function buggy() { |
41 var v = X; | 41 var v = X; |
42 var phi1 = v + K; | 42 var phi1 = v + K; |
43 var phi2 = v - K; | 43 var phi2 = v - K; |
44 | 44 |
45 spill(); // At this point initial values for phi1 and phi2 are spilled. | 45 spill(); // At this point initial values for phi1 and phi2 are spilled. |
46 | 46 |
47 var xmm1 = v; | 47 var xmm1 = v; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 | 79 |
80 function test() { | 80 function test() { |
81 buggy(); | 81 buggy(); |
82 assertArrayEquals([X + K, X - K], result); | 82 assertArrayEquals([X + K, X - K], result); |
83 } | 83 } |
84 | 84 |
85 test(); | 85 test(); |
86 test(); | 86 test(); |
87 %OptimizeFunctionOnNextCall(buggy); | 87 %OptimizeFunctionOnNextCall(buggy); |
88 test(); | 88 test(); |
OLD | NEW |