| Index: test/mjsunit/elements-transition-hoisting.js
|
| diff --git a/test/mjsunit/elements-transition-hoisting.js b/test/mjsunit/elements-transition-hoisting.js
|
| index 76f7b82b5ae4d15711364ccbf0e3db1c86ae6e36..5e78f10a0b4a2f58842dfc4b956beb9f7e4feb3d 100644
|
| --- a/test/mjsunit/elements-transition-hoisting.js
|
| +++ b/test/mjsunit/elements-transition-hoisting.js
|
| @@ -170,4 +170,42 @@ if (support_smi_only_arrays) {
|
| testHoistingWithSideEffect(new Array(5));
|
| testHoistingWithSideEffect(new Array(5));
|
| assertTrue(2 != %GetOptimizationStatus(testHoistingWithSideEffect));
|
| +
|
| + function testStraightLineDupeElinination(a,b,c,d,e,f) {
|
| + var count = 3;
|
| + do {
|
| + assertTrue(true);
|
| + a[0] = b;
|
| + a[1] = c;
|
| + a[2] = d;
|
| + assertTrue(true);
|
| + a[3] = e; // TransitionElementsKind should be eliminated despite call.
|
| + a[4] = f;
|
| + } while (--count > 3);
|
| + }
|
| +
|
| + testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),0,0,0,0,.5);
|
| + testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),0,0,0,.5,0);
|
| + testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),0,0,.5,0,0);
|
| + testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),0,.5,0,0,0);
|
| + testStraightLineDupeElinination(new Array(0, 0, 0, 0, 0),.5,0,0,0,0);
|
| + testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),0,0,0,0,.5);
|
| + testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),0,0,0,.5,0);
|
| + testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),0,0,.5,0,0);
|
| + testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),0,.5,0,0,0);
|
| + testStraightLineDupeElinination(new Array(.1,.1,.1,.1,.1),.5,0,0,0,0);
|
| + testStraightLineDupeElinination(new Array(5),.5,0,0,0,0);
|
| + testStraightLineDupeElinination(new Array(5),0,.5,0,0,0);
|
| + testStraightLineDupeElinination(new Array(5),0,0,.5,0,0);
|
| + testStraightLineDupeElinination(new Array(5),0,0,0,.5,0);
|
| + testStraightLineDupeElinination(new Array(5),0,0,0,0,.5);
|
| + testStraightLineDupeElinination(new Array(5),.5,0,0,0,0);
|
| + testStraightLineDupeElinination(new Array(5),0,.5,0,0,0);
|
| + testStraightLineDupeElinination(new Array(5),0,0,.5,0,0);
|
| + testStraightLineDupeElinination(new Array(5),0,0,0,.5,0);
|
| + testStraightLineDupeElinination(new Array(5),0,0,0,0,.5);
|
| + %OptimizeFunctionOnNextCall(testStraightLineDupeElinination);
|
| + testStraightLineDupeElinination(new Array(5));
|
| + testStraightLineDupeElinination(new Array(5));
|
| + assertTrue(2 != %GetOptimizationStatus(testStraightLineDupeElinination));
|
| }
|
|
|