Roll V8 back to 3.6
Roll back to V8 3.6 to fix x86 build, we don't have ucontext.h.
This reverts commits:
5d4cdbf7a67d3662fa0bee4efdb7edd8daec9b0b
c7cc028aaeedbbfa11c11d0b7b243b3d9e837ed9
592a9fc1d8ea420377a2e7efd0600e20b058be2b
Bug: 5688872
Change-Id: Ic961bb5e65b778e98bbfb71cce71d99fa949e995
diff --git a/test/mjsunit/compiler/alloc-object-huge.js b/test/mjsunit/compiler/alloc-object-huge.js
deleted file mode 100644
index d6d9f1b..0000000
--- a/test/mjsunit/compiler/alloc-object-huge.js
+++ /dev/null
@@ -1,308 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax --inline-construct --nolimit-inlining
-
-// Test that huge constructors (more than 256 this assignments) are
-// handled correctly.
-
-// Test huge constructor when being inlined into hydrogen.
-function test() {
- return new huge();
-}
-test();
-test();
-%OptimizeFunctionOnNextCall(test);
-var o = test();
-assertEquals(1, o.foo1);
-assertEquals(257, o.foo257);
-
-// Test huge constructor with specialized constructor stub.
-var o = new huge();
-assertEquals(1, o.foo1);
-assertEquals(257, o.foo257);
-
-// The huge constructor, nothing interesting beyond this point.
-function huge() {
- this.foo1 = 1;
- this.foo2 = 2;
- this.foo3 = 3;
- this.foo4 = 4;
- this.foo5 = 5;
- this.foo6 = 6;
- this.foo7 = 7;
- this.foo8 = 8;
- this.foo9 = 9;
- this.foo10 = 10;
- this.foo11 = 11;
- this.foo12 = 12;
- this.foo13 = 13;
- this.foo14 = 14;
- this.foo15 = 15;
- this.foo16 = 16;
- this.foo17 = 17;
- this.foo18 = 18;
- this.foo19 = 19;
- this.foo20 = 20;
- this.foo21 = 21;
- this.foo22 = 22;
- this.foo23 = 23;
- this.foo24 = 24;
- this.foo25 = 25;
- this.foo26 = 26;
- this.foo27 = 27;
- this.foo28 = 28;
- this.foo29 = 29;
- this.foo30 = 30;
- this.foo31 = 31;
- this.foo32 = 32;
- this.foo33 = 33;
- this.foo34 = 34;
- this.foo35 = 35;
- this.foo36 = 36;
- this.foo37 = 37;
- this.foo38 = 38;
- this.foo39 = 39;
- this.foo40 = 40;
- this.foo41 = 41;
- this.foo42 = 42;
- this.foo43 = 43;
- this.foo44 = 44;
- this.foo45 = 45;
- this.foo46 = 46;
- this.foo47 = 47;
- this.foo48 = 48;
- this.foo49 = 49;
- this.foo50 = 50;
- this.foo51 = 51;
- this.foo52 = 52;
- this.foo53 = 53;
- this.foo54 = 54;
- this.foo55 = 55;
- this.foo56 = 56;
- this.foo57 = 57;
- this.foo58 = 58;
- this.foo59 = 59;
- this.foo60 = 60;
- this.foo61 = 61;
- this.foo62 = 62;
- this.foo63 = 63;
- this.foo64 = 64;
- this.foo65 = 65;
- this.foo66 = 66;
- this.foo67 = 67;
- this.foo68 = 68;
- this.foo69 = 69;
- this.foo70 = 70;
- this.foo71 = 71;
- this.foo72 = 72;
- this.foo73 = 73;
- this.foo74 = 74;
- this.foo75 = 75;
- this.foo76 = 76;
- this.foo77 = 77;
- this.foo78 = 78;
- this.foo79 = 79;
- this.foo80 = 80;
- this.foo81 = 81;
- this.foo82 = 82;
- this.foo83 = 83;
- this.foo84 = 84;
- this.foo85 = 85;
- this.foo86 = 86;
- this.foo87 = 87;
- this.foo88 = 88;
- this.foo89 = 89;
- this.foo90 = 90;
- this.foo91 = 91;
- this.foo92 = 92;
- this.foo93 = 93;
- this.foo94 = 94;
- this.foo95 = 95;
- this.foo96 = 96;
- this.foo97 = 97;
- this.foo98 = 98;
- this.foo99 = 99;
- this.foo100 = 100;
- this.foo101 = 101;
- this.foo102 = 102;
- this.foo103 = 103;
- this.foo104 = 104;
- this.foo105 = 105;
- this.foo106 = 106;
- this.foo107 = 107;
- this.foo108 = 108;
- this.foo109 = 109;
- this.foo110 = 110;
- this.foo111 = 111;
- this.foo112 = 112;
- this.foo113 = 113;
- this.foo114 = 114;
- this.foo115 = 115;
- this.foo116 = 116;
- this.foo117 = 117;
- this.foo118 = 118;
- this.foo119 = 119;
- this.foo120 = 120;
- this.foo121 = 121;
- this.foo122 = 122;
- this.foo123 = 123;
- this.foo124 = 124;
- this.foo125 = 125;
- this.foo126 = 126;
- this.foo127 = 127;
- this.foo128 = 128;
- this.foo129 = 129;
- this.foo130 = 130;
- this.foo131 = 131;
- this.foo132 = 132;
- this.foo133 = 133;
- this.foo134 = 134;
- this.foo135 = 135;
- this.foo136 = 136;
- this.foo137 = 137;
- this.foo138 = 138;
- this.foo139 = 139;
- this.foo140 = 140;
- this.foo141 = 141;
- this.foo142 = 142;
- this.foo143 = 143;
- this.foo144 = 144;
- this.foo145 = 145;
- this.foo146 = 146;
- this.foo147 = 147;
- this.foo148 = 148;
- this.foo149 = 149;
- this.foo150 = 150;
- this.foo151 = 151;
- this.foo152 = 152;
- this.foo153 = 153;
- this.foo154 = 154;
- this.foo155 = 155;
- this.foo156 = 156;
- this.foo157 = 157;
- this.foo158 = 158;
- this.foo159 = 159;
- this.foo160 = 160;
- this.foo161 = 161;
- this.foo162 = 162;
- this.foo163 = 163;
- this.foo164 = 164;
- this.foo165 = 165;
- this.foo166 = 166;
- this.foo167 = 167;
- this.foo168 = 168;
- this.foo169 = 169;
- this.foo170 = 170;
- this.foo171 = 171;
- this.foo172 = 172;
- this.foo173 = 173;
- this.foo174 = 174;
- this.foo175 = 175;
- this.foo176 = 176;
- this.foo177 = 177;
- this.foo178 = 178;
- this.foo179 = 179;
- this.foo180 = 180;
- this.foo181 = 181;
- this.foo182 = 182;
- this.foo183 = 183;
- this.foo184 = 184;
- this.foo185 = 185;
- this.foo186 = 186;
- this.foo187 = 187;
- this.foo188 = 188;
- this.foo189 = 189;
- this.foo190 = 190;
- this.foo191 = 191;
- this.foo192 = 192;
- this.foo193 = 193;
- this.foo194 = 194;
- this.foo195 = 195;
- this.foo196 = 196;
- this.foo197 = 197;
- this.foo198 = 198;
- this.foo199 = 199;
- this.foo200 = 200;
- this.foo201 = 201;
- this.foo202 = 202;
- this.foo203 = 203;
- this.foo204 = 204;
- this.foo205 = 205;
- this.foo206 = 206;
- this.foo207 = 207;
- this.foo208 = 208;
- this.foo209 = 209;
- this.foo210 = 210;
- this.foo211 = 211;
- this.foo212 = 212;
- this.foo213 = 213;
- this.foo214 = 214;
- this.foo215 = 215;
- this.foo216 = 216;
- this.foo217 = 217;
- this.foo218 = 218;
- this.foo219 = 219;
- this.foo220 = 220;
- this.foo221 = 221;
- this.foo222 = 222;
- this.foo223 = 223;
- this.foo224 = 224;
- this.foo225 = 225;
- this.foo226 = 226;
- this.foo227 = 227;
- this.foo228 = 228;
- this.foo229 = 229;
- this.foo230 = 230;
- this.foo231 = 231;
- this.foo232 = 232;
- this.foo233 = 233;
- this.foo234 = 234;
- this.foo235 = 235;
- this.foo236 = 236;
- this.foo237 = 237;
- this.foo238 = 238;
- this.foo239 = 239;
- this.foo240 = 240;
- this.foo241 = 241;
- this.foo242 = 242;
- this.foo243 = 243;
- this.foo244 = 244;
- this.foo245 = 245;
- this.foo246 = 246;
- this.foo247 = 247;
- this.foo248 = 248;
- this.foo249 = 249;
- this.foo250 = 250;
- this.foo251 = 251;
- this.foo252 = 252;
- this.foo253 = 253;
- this.foo254 = 254;
- this.foo255 = 255;
- this.foo256 = 256;
- this.foo257 = 257;
-}
diff --git a/test/mjsunit/compiler/alloc-object.js b/test/mjsunit/compiler/alloc-object.js
deleted file mode 100644
index 1d44efb..0000000
--- a/test/mjsunit/compiler/alloc-object.js
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax --expose-gc --inline-construct
-
-// Test that inlined object allocation works for different layouts of
-// objects (e.g. in object properties, slack tracking in progress or
-// changing of function prototypes)
-
-function test_helper(construct, a, b) {
- return new construct(a, b);
-}
-
-function test(construct) {
- %DeoptimizeFunction(test);
- test_helper(construct, 0, 0);
- test_helper(construct, 0, 0);
- %OptimizeFunctionOnNextCall(test_helper);
- // Test adding a new property after allocation was inlined.
- var o = test_helper(construct, 1, 2);
- o.z = 3;
- assertEquals(1, o.x);
- assertEquals(2, o.y);
- assertEquals(3, o.z);
- // Test changing the prototype after allocation was inlined.
- construct.prototype = { z:6 };
- var o = test_helper(construct, 4, 5);
- assertEquals(4, o.x);
- assertEquals(5, o.y);
- assertEquals(6, o.z);
- %DeoptimizeFunction(test_helper);
- gc(); // Makes V8 forget about type information for test_helper.
-}
-
-function finalize_slack_tracking(construct) {
- // Value chosen based on kGenerousAllocationCount = 8.
- for (var i = 0; i < 8; i++) {
- new construct(0, 0);
- }
-}
-
-
-// Both properties are pre-allocated in object properties.
-function ConstructInObjectPreAllocated(a, b) {
- this.x = a;
- this.y = b;
-}
-finalize_slack_tracking(ConstructInObjectPreAllocated);
-test(ConstructInObjectPreAllocated);
-
-
-// Both properties are unused in object properties.
-function ConstructInObjectUnused(a, b) {
- this.x = a < 0 ? 0 : a;
- this.y = b > 0 ? b : 0;
-}
-finalize_slack_tracking(ConstructInObjectUnused);
-test(ConstructInObjectUnused);
-
-
-// Test inlined allocation while slack tracking is still in progress.
-function ConstructWhileSlackTracking(a, b) {
- this.x = a;
- this.y = b;
-}
-test(ConstructWhileSlackTracking);
diff --git a/test/mjsunit/compiler/compare.js b/test/mjsunit/compiler/compare.js
index 460b0ab..3f96087 100644
--- a/test/mjsunit/compiler/compare.js
+++ b/test/mjsunit/compiler/compare.js
@@ -83,9 +83,9 @@
}
TestNonPrimitive("xy", MaxLT);
-TestNonPrimitive("xy", MaxLE);
+TestNonPrimitive("yx", MaxLE);
TestNonPrimitive("xy", MaxGE);
-TestNonPrimitive("xy", MaxGT);
+TestNonPrimitive("yx", MaxGT);
// Test compare in case of aliased registers.
function CmpX(x) { if (x == x) return 42; }
diff --git a/test/mjsunit/compiler/inline-arguments.js b/test/mjsunit/compiler/inline-arguments.js
index b6adf7f..532fc26 100644
--- a/test/mjsunit/compiler/inline-arguments.js
+++ b/test/mjsunit/compiler/inline-arguments.js
@@ -27,89 +27,11 @@
// Flags: --allow-natives-syntax
-function A() {
-}
+// Test inlining functions that use arguments.
+function f() { return g(1, 2, 3); }
-A.prototype.X = function (a, b, c) {
- assertTrue(this instanceof A);
- assertEquals(1, a);
- assertEquals(2, b);
- assertEquals(3, c);
-};
+function g(x, y, z) { return %_ArgumentsLength(); }
-A.prototype.Y = function () {
- this.X.apply(this, arguments);
-};
-
-A.prototype.Z = function () {
- this.Y(1,2,3);
-};
-
-var a = new A();
-a.Z(4,5,6);
-a.Z(4,5,6);
-%OptimizeFunctionOnNextCall(a.Z);
-a.Z(4,5,6);
-A.prototype.X.apply = function (receiver, args) {
- return Function.prototype.apply.call(this, receiver, args);
-};
-a.Z(4,5,6);
-
-
-// Ensure that HArgumentsObject is inserted in a correct place
-// and dominates all uses.
-function F1() { }
-function F2() { F1.apply(this, arguments); }
-function F3(x, y) {
- if (x) {
- F2(y);
- }
-}
-
-function F31() {
- return F1.apply(this, arguments);
-}
-
-function F4() {
- F3(true, false);
- return F31(1);
-}
-
-F4(1);
-F4(1);
-F4(1);
-%OptimizeFunctionOnNextCall(F4);
-F4(1);
-
-
-// Test correct adapation of arguments.
-// Strict mode prevents arguments object from shadowing parameters.
-(function () {
- "use strict";
-
- function G2() {
- assertArrayEquals([1,2], arguments);
- }
-
- function G4() {
- assertArrayEquals([1,2,3,4], arguments);
- }
-
- function adapt2to4(a, b, c, d) {
- G2.apply(this, arguments);
- }
-
- function adapt4to2(a, b) {
- G4.apply(this, arguments);
- }
-
- function test_adaptation() {
- adapt2to4(1, 2);
- adapt4to2(1, 2, 3, 4);
- }
-
- test_adaptation();
- test_adaptation();
- %OptimizeFunctionOnNextCall(test_adaptation);
- test_adaptation();
-})();
+for (var i = 0; i < 5; ++i) f();
+%OptimizeFunctionOnNextCall(f);
+assertEquals(3, f());
diff --git a/test/mjsunit/compiler/inline-arity-mismatch.js b/test/mjsunit/compiler/inline-arity-mismatch.js
deleted file mode 100644
index 4a61fa3..0000000
--- a/test/mjsunit/compiler/inline-arity-mismatch.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax
-
-// Test inlining at call sites with mismatched arity.
-
-function f(a) {
- return a.x;
-}
-
-function g(a, b) {
- return a.x;
-}
-
-function h1(a, b) {
- return f(a, a) * g(b);
-}
-
-function h2(a, b) {
- return f(a, a) * g(b);
-}
-
-
-var o = {x: 2};
-
-assertEquals(4, h1(o, o));
-assertEquals(4, h1(o, o));
-assertEquals(4, h2(o, o));
-assertEquals(4, h2(o, o));
-%OptimizeFunctionOnNextCall(h1);
-%OptimizeFunctionOnNextCall(h2);
-assertEquals(4, h1(o, o));
-assertEquals(4, h2(o, o));
-
-var u = {y:0, x:1};
-assertEquals(2, h1(u, o));
-assertEquals(2, h2(o, u));
diff --git a/test/mjsunit/compiler/inline-construct.js b/test/mjsunit/compiler/inline-construct.js
deleted file mode 100644
index af9e69c..0000000
--- a/test/mjsunit/compiler/inline-construct.js
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax --expose-gc --inline-construct
-
-// Test inlining of constructor calls.
-
-function TestInlinedConstructor(closure) {
- var result;
- var counter = { value:0 };
- result = closure(11, 12, counter);
- assertEquals(23, result);
- assertEquals(1, counter.value);
- result = closure(23, 19, counter);
- assertEquals(42, result);
- assertEquals(2, counter.value);
- %OptimizeFunctionOnNextCall(closure);
- result = closure(1, 42, counter)
- assertEquals(43, result);
- assertEquals(3, counter.value);
- result = closure("foo", "bar", counter)
- assertEquals("foobar", result)
- assertEquals(4, counter.value);
-}
-
-function TestInAllContexts(constructor) {
- function value_context(a, b, counter) {
- var obj = new constructor(a, b, counter);
- return obj.x;
- }
- function test_context(a, b, counter) {
- if (!new constructor(a, b, counter)) {
- assertUnreachable("should not happen");
- }
- return a + b;
- }
- function effect_context(a, b, counter) {
- new constructor(a, b, counter);
- return a + b;
- }
- TestInlinedConstructor(value_context);
- TestInlinedConstructor(test_context);
- TestInlinedConstructor(effect_context);
- %DeoptimizeFunction(value_context);
- %DeoptimizeFunction(test_context);
- %DeoptimizeFunction(effect_context);
- gc(); // Makes V8 forget about type information for *_context.
-}
-
-
-// Test constructor returning nothing in all contexts.
-function c1(a, b, counter) {
- this.x = a + b;
- counter.value++;
-}
-TestInAllContexts(c1);
-
-
-// Test constructor returning an object in all contexts.
-function c2(a, b, counter) {
- var obj = new Object();
- obj.x = a + b;
- counter.value++;
- return obj;
-}
-TestInAllContexts(c2);
-
-
-// Test constructor returning a primitive value in all contexts.
-function c3(a, b, counter) {
- this.x = a + b;
- counter.value++;
- return "not an object";
-}
-TestInAllContexts(c3);
-
-
-// Test constructor called with too many arguments.
-function c_too_many(a, b) {
- this.x = a + b;
-}
-function f_too_many(a, b, c) {
- var obj = new c_too_many(a, b, c);
- return obj.x;
-}
-assertEquals(23, f_too_many(11, 12, 1));
-assertEquals(42, f_too_many(23, 19, 1));
-%OptimizeFunctionOnNextCall(f_too_many);
-assertEquals(43, f_too_many(1, 42, 1));
-assertEquals("foobar", f_too_many("foo", "bar", "baz"))
-
-
-// Test constructor called with too few arguments.
-function c_too_few(a, b) {
- assertSame(undefined, b);
- this.x = a + 1;
-}
-function f_too_few(a) {
- var obj = new c_too_few(a);
- return obj.x;
-}
-assertEquals(12, f_too_few(11));
-assertEquals(24, f_too_few(23));
-%OptimizeFunctionOnNextCall(f_too_few);
-assertEquals(2, f_too_few(1));
-assertEquals("foo1", f_too_few("foo"))
-
-
-// Test constructor that cannot be inlined.
-function c_unsupported_syntax(a, b, counter) {
- try {
- this.x = a + b;
- counter.value++;
- } catch(e) {
- throw new Error();
- }
-}
-TestInAllContexts(c_unsupported_syntax);
-
-
-// Regression test: Inlined constructors called as functions do not get their
-// implicit receiver object set to undefined, even in strict mode.
-function c_strict(a, b, counter) {
- "use strict";
- this.x = a + b;
- counter.value++;
-}
-TestInAllContexts(c_strict);
diff --git a/test/mjsunit/compiler/inline-context-slots.js b/test/mjsunit/compiler/inline-context-slots.js
deleted file mode 100644
index d0e907b..0000000
--- a/test/mjsunit/compiler/inline-context-slots.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Test inlining of functions with context slots.
-
-// Flags: --allow-natives-syntax
-
-
-// Caller/callee without a local context.
-
-(function() {
- var X = 5;
- var Y = 10;
- function F() {}
- F.prototype.max = function() {
- return X > Y ? X : Y;
- }
- F.prototype.run = function() {
- return this.max();
- }
- var f = new F();
- for (var i=0; i<5; i++) f.run();
- %OptimizeFunctionOnNextCall(f.run);
- assertEquals(10, f.run());
-})();
diff --git a/test/mjsunit/compiler/inline-literals.js b/test/mjsunit/compiler/inline-literals.js
deleted file mode 100644
index f78abe8..0000000
--- a/test/mjsunit/compiler/inline-literals.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax
-
-// Test that we can inline functions containing materialized literals.
-
-function o2(b, c) {
- return { 'b':b, 'c':c, 'y':b + c };
-}
-
-function o1(a, b, c) {
- return { 'a':a, 'x':o2(b, c) };
-}
-
-function TestObjectLiteral(a, b, c) {
- var expected = { 'a':a, 'x':{ 'b':b, 'c':c, 'y':b + c } };
- var result = o1(a, b, c);
- assertEquals(expected, result, "TestObjectLiteral");
-}
-
-TestObjectLiteral(1, 2, 3);
-TestObjectLiteral(1, 2, 3);
-%OptimizeFunctionOnNextCall(TestObjectLiteral);
-TestObjectLiteral(1, 2, 3);
-TestObjectLiteral('a', 'b', 'c');
diff --git a/test/mjsunit/compiler/lazy-const-lookup.js b/test/mjsunit/compiler/lazy-const-lookup.js
deleted file mode 100644
index b4f15a1..0000000
--- a/test/mjsunit/compiler/lazy-const-lookup.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax
-
-function outer() {
- const x = 1;
- function inner() {
- return x;
- }
- inner();
- %OptimizeFunctionOnNextCall(inner);
- inner();
-}
-
-outer();
-
diff --git a/test/mjsunit/compiler/literals-optimized.js b/test/mjsunit/compiler/literals-optimized.js
deleted file mode 100644
index 049e21a..0000000
--- a/test/mjsunit/compiler/literals-optimized.js
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax
-
-// Test optimized versions of array and object literals.
-
-function TestOptimizedLiteral(create, verify) {
- verify(create(1, 2, 3), 1, 2, 3);
- verify(create(3, 5, 7), 3, 5, 7);
- %OptimizeFunctionOnNextCall(create);
- verify(create(11, 23, 42), 11, 23, 42);
-}
-
-
-// Test shallow array literal.
-function create_arr_shallow(a, b, c) {
- return [0, a, 0, b, 0, c];
-}
-function verify_arr_shallow(array, a, b, c) {
- assertSame(6, array.length);
- assertSame(0, array[0]);
- assertSame(a, array[1]);
- assertSame(0, array[2]);
- assertSame(b, array[3]);
- assertSame(0, array[4]);
- assertSame(c, array[5]);
-}
-TestOptimizedLiteral(create_arr_shallow, verify_arr_shallow);
-
-
-// Test nested array literal.
-function create_arr_nested(a, b, c) {
- return [[0, a], [b, c], [1, 2], 3];
-}
-function verify_arr_nested(array, a, b, c) {
- assertSame(4, array.length);
- assertSame(2, array[0].length);
- assertSame(0, array[0][0]);
- assertSame(a, array[0][1]);
- assertSame(2, array[1].length);
- assertSame(b, array[1][0]);
- assertSame(c, array[1][1]);
- assertSame(2, array[2].length);
- assertSame(1, array[2][0]);
- assertSame(2, array[2][1]);
- assertSame(3, array[3]);
-}
-TestOptimizedLiteral(create_arr_nested, verify_arr_nested);
-
-
-// Test shallow object literal.
-function create_obj_shallow(a, b, c) {
- return { x:a, y:b, z:c, v:'foo', 9:'bar' };
-}
-function verify_obj_shallow(object, a, b, c) {
- assertSame(a, object.x);
- assertSame(b, object.y);
- assertSame(c, object.z);
- assertSame('foo', object.v);
- assertSame('bar', object[9]);
-}
-TestOptimizedLiteral(create_obj_shallow, verify_obj_shallow);
-
-
-// Test nested object literal.
-function create_obj_nested(a, b, c) {
- return { x:{ v:a, w:b }, y:{ v:1, w:2 }, z:c, v:'foo', 9:'bar' };
-}
-function verify_obj_nested(object, a, b, c) {
- assertSame(a, object.x.v);
- assertSame(b, object.x.w);
- assertSame(1, object.y.v);
- assertSame(2, object.y.w);
- assertSame(c, object.z);
- assertSame('foo', object.v);
- assertSame('bar', object[9]);
-}
-TestOptimizedLiteral(create_obj_nested, verify_obj_nested);
-
-
-// Test mixed array and object literal.
-function create_mixed_nested(a, b, c) {
- return { x:[1, 2], y:[a, b], z:c, v:{ v:'foo' }, 9:'bar' };
-}
-function verify_mixed_nested(object, a, b, c) {
- assertSame(2, object.x.length);
- assertSame(1, object.x[0]);
- assertSame(2, object.x[1]);
- assertSame(2, object.y.length);
- assertSame(a, object.y[0]);
- assertSame(b, object.y[1]);
- assertSame(c, object.z);
- assertSame('foo', object.v.v);
- assertSame('bar', object[9]);
-}
-TestOptimizedLiteral(create_mixed_nested, verify_mixed_nested);
diff --git a/test/mjsunit/compiler/math-floor-global.js b/test/mjsunit/compiler/math-floor-global.js
deleted file mode 100644
index 9ec183f..0000000
--- a/test/mjsunit/compiler/math-floor-global.js
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --max-new-space-size=256 --allow-natives-syntax
-
-// Test inlining of Math.floor when assigned to a global.
-var flo = Math.floor;
-var test_id = 0;
-
-function testFloor(expect, input) {
- var test = new Function('n',
- '"' + (test_id++) + '";return flo(n)');
- assertEquals(expect, test(input));
- assertEquals(expect, test(input));
- assertEquals(expect, test(input));
- %OptimizeFunctionOnNextCall(test);
- assertEquals(expect, test(input));
-}
-
-function zero() {
- var x = 0.5;
- return (function() { return x - 0.5; })();
-}
-
-function test() {
- testFloor(0, 0);
- testFloor(0, zero());
- testFloor(-0, -0);
- testFloor(Infinity, Infinity);
- testFloor(-Infinity, -Infinity);
- testFloor(NaN, NaN);
-
- // Ensure that a negative zero coming from Math.floor is properly handled
- // by other operations.
- function ifloor(x) {
- return 1 / Math.floor(x);
- }
- assertEquals(-Infinity, ifloor(-0));
- assertEquals(-Infinity, ifloor(-0));
- assertEquals(-Infinity, ifloor(-0));
- %OptimizeFunctionOnNextCall(ifloor);
- assertEquals(-Infinity, ifloor(-0));
-
- testFloor(0, 0.1);
- testFloor(0, 0.49999999999999994);
- testFloor(0, 0.5);
- testFloor(0, 0.7);
- testFloor(-1, -0.1);
- testFloor(-1, -0.49999999999999994);
- testFloor(-1, -0.5);
- testFloor(-1, -0.7);
- testFloor(1, 1);
- testFloor(1, 1.1);
- testFloor(1, 1.5);
- testFloor(1, 1.7);
- testFloor(-1, -1);
- testFloor(-2, -1.1);
- testFloor(-2, -1.5);
- testFloor(-2, -1.7);
-
- testFloor(0, Number.MIN_VALUE);
- testFloor(-1, -Number.MIN_VALUE);
- testFloor(Number.MAX_VALUE, Number.MAX_VALUE);
- testFloor(-Number.MAX_VALUE, -Number.MAX_VALUE);
- testFloor(Infinity, Infinity);
- testFloor(-Infinity, -Infinity);
-
- // 2^30 is a smi boundary.
- var two_30 = 1 << 30;
-
- testFloor(two_30, two_30);
- testFloor(two_30, two_30 + 0.1);
- testFloor(two_30, two_30 + 0.5);
- testFloor(two_30, two_30 + 0.7);
-
- testFloor(two_30 - 1, two_30 - 1);
- testFloor(two_30 - 1, two_30 - 1 + 0.1);
- testFloor(two_30 - 1, two_30 - 1 + 0.5);
- testFloor(two_30 - 1, two_30 - 1 + 0.7);
-
- testFloor(-two_30, -two_30);
- testFloor(-two_30, -two_30 + 0.1);
- testFloor(-two_30, -two_30 + 0.5);
- testFloor(-two_30, -two_30 + 0.7);
-
- testFloor(-two_30 + 1, -two_30 + 1);
- testFloor(-two_30 + 1, -two_30 + 1 + 0.1);
- testFloor(-two_30 + 1, -two_30 + 1 + 0.5);
- testFloor(-two_30 + 1, -two_30 + 1 + 0.7);
-
- // 2^52 is a precision boundary.
- var two_52 = (1 << 30) * (1 << 22);
-
- testFloor(two_52, two_52);
- testFloor(two_52, two_52 + 0.1);
- assertEquals(two_52, two_52 + 0.5);
- testFloor(two_52, two_52 + 0.5);
- assertEquals(two_52 + 1, two_52 + 0.7);
- testFloor(two_52 + 1, two_52 + 0.7);
-
- testFloor(two_52 - 1, two_52 - 1);
- testFloor(two_52 - 1, two_52 - 1 + 0.1);
- testFloor(two_52 - 1, two_52 - 1 + 0.5);
- testFloor(two_52 - 1, two_52 - 1 + 0.7);
-
- testFloor(-two_52, -two_52);
- testFloor(-two_52, -two_52 + 0.1);
- testFloor(-two_52, -two_52 + 0.5);
- testFloor(-two_52, -two_52 + 0.7);
-
- testFloor(-two_52 + 1, -two_52 + 1);
- testFloor(-two_52 + 1, -two_52 + 1 + 0.1);
- testFloor(-two_52 + 1, -two_52 + 1 + 0.5);
- testFloor(-two_52 + 1, -two_52 + 1 + 0.7);
-}
-
-
-// Test in a loop to cover the custom IC and GC-related issues.
-for (var i = 0; i < 50; i++) {
- test();
-}
-
-
-// Regression test for a bug where a negative zero coming from Math.floor
-// was not properly handled by other operations.
-function floorsum(i, n) {
- var ret = Math.floor(n);
- while (--i > 0) {
- ret += Math.floor(n);
- }
- return ret;
-}
-assertEquals(-0, floorsum(1, -0));
-%OptimizeFunctionOnNextCall(floorsum);
-// The optimized function will deopt. Run it with enough iterations to try
-// to optimize via OSR (triggering the bug).
-assertEquals(-0, floorsum(100000, -0));
diff --git a/test/mjsunit/compiler/math-floor-local.js b/test/mjsunit/compiler/math-floor-local.js
deleted file mode 100644
index e44b15c..0000000
--- a/test/mjsunit/compiler/math-floor-local.js
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --max-new-space-size=256 --allow-natives-syntax
-
-// Test inlining of Math.floor when assigned to a local.
-var test_id = 0;
-
-function testFloor(expect, input) {
- var test = new Function('n',
- '"' + (test_id++) +
- '";var f = Math.floor; return f(n)');
- assertEquals(expect, test(input));
- assertEquals(expect, test(input));
- assertEquals(expect, test(input));
- %OptimizeFunctionOnNextCall(test);
- assertEquals(expect, test(input));
-}
-
-function zero() {
- var x = 0.5;
- return (function() { return x - 0.5; })();
-}
-
-function test() {
- testFloor(0, 0);
- testFloor(0, zero());
- testFloor(-0, -0);
- testFloor(Infinity, Infinity);
- testFloor(-Infinity, -Infinity);
- testFloor(NaN, NaN);
-
- // Ensure that a negative zero coming from Math.floor is properly handled
- // by other operations.
- function ifloor(x) {
- return 1 / Math.floor(x);
- }
- assertEquals(-Infinity, ifloor(-0));
- assertEquals(-Infinity, ifloor(-0));
- assertEquals(-Infinity, ifloor(-0));
- %OptimizeFunctionOnNextCall(ifloor);
- assertEquals(-Infinity, ifloor(-0));
-
- testFloor(0, 0.1);
- testFloor(0, 0.49999999999999994);
- testFloor(0, 0.5);
- testFloor(0, 0.7);
- testFloor(-1, -0.1);
- testFloor(-1, -0.49999999999999994);
- testFloor(-1, -0.5);
- testFloor(-1, -0.7);
- testFloor(1, 1);
- testFloor(1, 1.1);
- testFloor(1, 1.5);
- testFloor(1, 1.7);
- testFloor(-1, -1);
- testFloor(-2, -1.1);
- testFloor(-2, -1.5);
- testFloor(-2, -1.7);
-
- testFloor(0, Number.MIN_VALUE);
- testFloor(-1, -Number.MIN_VALUE);
- testFloor(Number.MAX_VALUE, Number.MAX_VALUE);
- testFloor(-Number.MAX_VALUE, -Number.MAX_VALUE);
- testFloor(Infinity, Infinity);
- testFloor(-Infinity, -Infinity);
-
- // 2^30 is a smi boundary.
- var two_30 = 1 << 30;
-
- testFloor(two_30, two_30);
- testFloor(two_30, two_30 + 0.1);
- testFloor(two_30, two_30 + 0.5);
- testFloor(two_30, two_30 + 0.7);
-
- testFloor(two_30 - 1, two_30 - 1);
- testFloor(two_30 - 1, two_30 - 1 + 0.1);
- testFloor(two_30 - 1, two_30 - 1 + 0.5);
- testFloor(two_30 - 1, two_30 - 1 + 0.7);
-
- testFloor(-two_30, -two_30);
- testFloor(-two_30, -two_30 + 0.1);
- testFloor(-two_30, -two_30 + 0.5);
- testFloor(-two_30, -two_30 + 0.7);
-
- testFloor(-two_30 + 1, -two_30 + 1);
- testFloor(-two_30 + 1, -two_30 + 1 + 0.1);
- testFloor(-two_30 + 1, -two_30 + 1 + 0.5);
- testFloor(-two_30 + 1, -two_30 + 1 + 0.7);
-
- // 2^52 is a precision boundary.
- var two_52 = (1 << 30) * (1 << 22);
-
- testFloor(two_52, two_52);
- testFloor(two_52, two_52 + 0.1);
- assertEquals(two_52, two_52 + 0.5);
- testFloor(two_52, two_52 + 0.5);
- assertEquals(two_52 + 1, two_52 + 0.7);
- testFloor(two_52 + 1, two_52 + 0.7);
-
- testFloor(two_52 - 1, two_52 - 1);
- testFloor(two_52 - 1, two_52 - 1 + 0.1);
- testFloor(two_52 - 1, two_52 - 1 + 0.5);
- testFloor(two_52 - 1, two_52 - 1 + 0.7);
-
- testFloor(-two_52, -two_52);
- testFloor(-two_52, -two_52 + 0.1);
- testFloor(-two_52, -two_52 + 0.5);
- testFloor(-two_52, -two_52 + 0.7);
-
- testFloor(-two_52 + 1, -two_52 + 1);
- testFloor(-two_52 + 1, -two_52 + 1 + 0.1);
- testFloor(-two_52 + 1, -two_52 + 1 + 0.5);
- testFloor(-two_52 + 1, -two_52 + 1 + 0.7);
-}
-
-
-// Test in a loop to cover the custom IC and GC-related issues.
-for (var i = 0; i < 50; i++) {
- test();
-}
-
-
-// Regression test for a bug where a negative zero coming from Math.floor
-// was not properly handled by other operations.
-function floorsum(i, n) {
- var ret = Math.floor(n);
- while (--i > 0) {
- ret += Math.floor(n);
- }
- return ret;
-}
-assertEquals(-0, floorsum(1, -0));
-%OptimizeFunctionOnNextCall(floorsum);
-// The optimized function will deopt. Run it with enough iterations to try
-// to optimize via OSR (triggering the bug).
-assertEquals(-0, floorsum(100000, -0));
diff --git a/test/mjsunit/compiler/optimized-for-in.js b/test/mjsunit/compiler/optimized-for-in.js
deleted file mode 100644
index cb8c66d..0000000
--- a/test/mjsunit/compiler/optimized-for-in.js
+++ /dev/null
@@ -1,300 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --optimize-for-in --allow-natives-syntax
-
-// Test for-in support in Crankshaft. For simplicity this tests assumes certain
-// fixed iteration order for properties and will have to be adjusted if V8
-// stops following insertion order.
-
-
-function a(t) {
- var result = [];
- for (var i in t) {
- result.push(i + t[i]);
- }
- return result.join('');
-}
-
-// Check that we correctly deoptimize on map check.
-function b(t) {
- var result = [];
- for (var i in t) {
- result.push(i + t[i]);
- delete t[i];
- }
- return result.join('');
-}
-
-// Check that we correctly deoptimize during preparation step.
-function c(t) {
- var result = [];
- for (var i in t) {
- result.push(i + t[i]);
- }
- return result.join('');
-}
-
-// Check that we deoptimize to the place after side effect in the right state.
-function d(t) {
- var result = [];
- var o;
- for (var i in (o = t())) {
- result.push(i + o[i]);
- }
- return result.join('');
-}
-
-// Check that we correctly deoptimize on map check inserted for fused load.
-function e(t) {
- var result = [];
- for (var i in t) {
- delete t[i];
- t[i] = i;
- result.push(i + t[i]);
- }
- return result.join('');
-}
-
-// Nested for-in loops.
-function f(t) {
- var result = [];
- for (var i in t) {
- for (var j in t) {
- result.push(i + j + t[i] + t[j]);
- }
- }
- return result.join('');
-}
-
-// Deoptimization from the inner for-in loop.
-function g(t) {
- var result = [];
- for (var i in t) {
- for (var j in t) {
- result.push(i + j + t[i] + t[j]);
- var v = t[i];
- delete t[i];
- t[i] = v;
- }
- }
- return result.join('');
-}
-
-
-// Break from the inner for-in loop.
-function h(t, deopt) {
- var result = [];
- for (var i in t) {
- for (var j in t) {
- result.push(i + j + t[i] + t[j]);
- break;
- }
- }
- deopt.deopt;
- return result.join('');
-}
-
-// Continue in the inner loop.
-function j(t, deopt) {
- var result = [];
- for (var i in t) {
- for (var j in t) {
- result.push(i + j + t[i] + t[j]);
- continue;
- }
- }
- deopt.deopt;
- return result.join('');
-}
-
-// Continue of the outer loop.
-function k(t, deopt) {
- var result = [];
- outer: for (var i in t) {
- for (var j in t) {
- result.push(i + j + t[i] + t[j]);
- continue outer;
- }
- }
- deopt.deopt;
- return result.join('');
-}
-
-// Break of the outer loop.
-function l(t, deopt) {
- var result = [];
- outer: for (var i in t) {
- for (var j in t) {
- result.push(i + j + t[i] + t[j]);
- break outer;
- }
- }
- deopt.deopt;
- return result.join('');
-}
-
-// Test deoptimization from inlined frame (currently it is not inlined).
-function m0(t, deopt) {
- for (var i in t) {
- for (var j in t) {
- deopt.deopt;
- return i + j + t[i] + t[j];
- }
- }
-}
-
-function m(t, deopt) {
- return m0(t, deopt);
-}
-
-
-function tryFunction(s, mkT, f) {
- var d = {deopt: false};
- assertEquals(s, f(mkT(), d));
- assertEquals(s, f(mkT(), d));
- assertEquals(s, f(mkT(), d));
- %OptimizeFunctionOnNextCall(f);
- assertEquals(s, f(mkT(), d));
- assertEquals(s, f(mkT(), {}));
-}
-
-var s = "a1b2c3d4";
-function mkTable() { return { a: "1", b: "2", c: "3", d: "4" }; }
-
-
-tryFunction(s, mkTable, a);
-tryFunction(s, mkTable, b);
-tryFunction("0a1b2c3d", function () { return "abcd"; }, c);
-tryFunction("0a1b2c3d", function () {
- var cnt = false;
- return function () {
- cnt = true;
- return "abcd";
- }
-}, d);
-tryFunction("aabbccdd", mkTable, e);
-
-function mkSmallTable() { return { a: "1", b: "2" }; }
-
-tryFunction("aa11ab12ba21bb22", mkSmallTable, f);
-tryFunction("aa11ab12bb22ba21", mkSmallTable, g);
-tryFunction("aa11ba21", mkSmallTable, h);
-tryFunction("aa11ab12ba21bb22", mkSmallTable, j);
-tryFunction("aa11ba21", mkSmallTable, h);
-tryFunction("aa11ba21", mkSmallTable, k);
-tryFunction("aa11", mkSmallTable, l);
-tryFunction("aa11", mkSmallTable, m);
-
-// Test handling of null.
-tryFunction("", function () {
- return function () { return null; }
-}, function (t) {
- for (var i in t()) { return i; }
- return "";
-});
-
-// Test smis.
-tryFunction("", function () {
- return function () { return 11; }
-}, function (t) {
- for (var i in t()) { return i; }
- return "";
-});
-
-// Test LoadFieldByIndex for out of object properties.
-function O() { this.a = 1; }
-for (var i = 0; i < 10; i++) new O();
-tryFunction("a1b2c3d4e5f6", function () {
- var o = new O();
- o.b = 2;
- o.c = 3;
- o.d = 4;
- o.e = 5;
- o.f = 6;
- return o;
-}, function (t) {
- var r = [];
- for (var i in t) r.push(i + t[i]);
- return r.join('');
-});
-
-// Test OSR inside for-in.
-function osr_inner(t, limit) {
- var r = 1;
- for (var x in t) {
- if (t.hasOwnProperty(x)) {
- for (var i = 0; i < t[x].length; i++) {
- r += t[x][i];
- if (i === limit) {
- %OptimizeFunctionOnNextCall(osr_inner, "osr");
- }
- }
- r += x;
- }
- }
- return r;
-}
-
-function osr_outer(t, osr_after) {
- var r = 1;
- for (var x in t) {
- for (var i = 0; i < t[x].length; i++) {
- r += t[x][i];
- }
- if (x === osr_after) {
- %OptimizeFunctionOnNextCall(osr_outer, "osr");
- }
- r += x;
- }
- return r;
-}
-
-function osr_outer_and_deopt(t, osr_after) {
- var r = 1;
- for (var x in t) {
- r += x;
- if (x == osr_after) {
- %OptimizeFunctionOnNextCall(osr_outer_and_deopt, "osr");
- }
- }
- return r;
-}
-
-function test_osr() {
- with ({}) {} // Disable optimizations of this function.
- var arr = new Array(20);
- for (var i = 0; i < arr.length; i++) {
- arr[i] = i + 1;
- }
- arr.push(":"); // Force deopt at the end of the loop.
- assertEquals("211:x1234567891011121314151617181920:y", osr_inner({x: arr, y: arr}, (arr.length / 2) | 0));
- assertEquals("7x456y", osr_outer({x: [1,2,3], y: [4,5,6]}, "x"));
- assertEquals("101234567", osr_outer_and_deopt([1,2,3,4,5,6,7,8], "5"));
-}
-
-test_osr();
diff --git a/test/mjsunit/compiler/regress-96989.js b/test/mjsunit/compiler/regress-96989.js
deleted file mode 100644
index aedeb24..0000000
--- a/test/mjsunit/compiler/regress-96989.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Flags: --allow-natives-syntax
-
-// Test correct handling of uninitialized const.
-
-function test() {
- for (var i = 41; i < 42; i++) {
- var c = t ^ i;
- }
- const t;
- return c;
-}
-
-for (var i=0; i<10; i++) test();
-%OptimizeFunctionOnNextCall(test);
-assertEquals(41, test());
diff --git a/test/mjsunit/compiler/regress-deopt-call-as-function.js b/test/mjsunit/compiler/regress-deopt-call-as-function.js
deleted file mode 100644
index c408096..0000000
--- a/test/mjsunit/compiler/regress-deopt-call-as-function.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Test deoptimization after inlined call.
-
-function bar(a, b) {try { return a; } finally { } }
-
-function test_context() {
- function foo(x) { return 42; }
- var s, t;
- for (var i = 0x7fff0000; i < 0x80000000; i++) {
- bar(t = foo(i) ? bar(42 + i - i) : bar(0), s = i + t);
- }
- return s;
-}
-assertEquals(0x7fffffff + 42, test_context());
-
-
-function value_context() {
- function foo(x) { return 42; }
- var s, t;
- for (var i = 0x7fff0000; i < 0x80000000; i++) {
- bar(t = foo(i), s = i + t);
- }
- return s;
-}
-assertEquals(0x7fffffff + 42, value_context());
-
-
-function effect_context() {
- function foo(x) { return 42; }
- var s, t;
- for (var i = 0x7fff0000; i < 0x80000000; i++) {
- bar(foo(i), s = i + 42);
- }
- return s;
-}
-assertEquals(0x7fffffff + 42, effect_context());
diff --git a/test/mjsunit/compiler/regress-funarguments.js b/test/mjsunit/compiler/regress-funarguments.js
index c913bd9..cea40bc 100644
--- a/test/mjsunit/compiler/regress-funarguments.js
+++ b/test/mjsunit/compiler/regress-funarguments.js
@@ -1,4 +1,4 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
+// Copyright 2010 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
@@ -25,8 +25,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Flags: --allow-natives-syntax
-
// Test function.arguments.
function A() {}
@@ -62,16 +60,13 @@
return o.g(x, "z");
}
-function opt() {
- for (var k=0; k<2; k++) {
- for (var i=0; i<5; i++) o.g(i, "g");
- for (var j=0; j<5; j++) hej(j);
- }
- %OptimizeFunctionOnNextCall(o.g);
- %OptimizeFunctionOnNextCall(hej);
+function stress() {
+ for (var i=0; i<5000000; i++) o.g(i, "g");
+ for (var j=0; j<5000000; j++) hej(j);
}
-opt();
+stress();
+
assertArrayEquals([0, "g"], o.g(0, "g"));
assertArrayEquals([1, "f"], o.g(1, "g"));
assertArrayEquals([0, "h"], hej(0));
@@ -79,7 +74,8 @@
o = new B();
-opt();
+stress();
+
assertArrayEquals([0, "f"], o.g(0, "g"));
assertArrayEquals([1, "g"], o.g(1, "g"));
assertArrayEquals([0, "f"], hej(0));
diff --git a/test/mjsunit/compiler/regress-inline-callfunctionstub.js b/test/mjsunit/compiler/regress-inline-callfunctionstub.js
deleted file mode 100644
index a39d26d..0000000
--- a/test/mjsunit/compiler/regress-inline-callfunctionstub.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax
-
-// Test inlined of calls-as-function two levels deep.
-function f() { return 42; }
-
-var o = {g : function () { return f(); } }
-function main(func) {
- var v=0;
- for (var i=0; i<1; i++) {
- if (func()) v = 42;
- }
-}
-
-main(o.g);
-main(o.g);
-main(o.g);
-%OptimizeFunctionOnNextCall(main);
-main(o.g);
-
diff --git a/test/mjsunit/compiler/regress-toint32.js b/test/mjsunit/compiler/regress-toint32.js
deleted file mode 100644
index 54c2f76..0000000
--- a/test/mjsunit/compiler/regress-toint32.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax --noenable-sse3
-
-var a = new Int32Array(1);
-var G = 0x80000000;
-
-function f(x) {
- var v = x;
- v = v + 1;
- a[0] = v;
- v = v - 1;
- return v;
-}
-
-assertEquals(G, f(G));
-assertEquals(G, f(G));
-%OptimizeFunctionOnNextCall(f);
-assertEquals(G, f(G));
-
diff --git a/test/mjsunit/compiler/strict-recompile.js b/test/mjsunit/compiler/strict-recompile.js
deleted file mode 100644
index 96e8bca..0000000
--- a/test/mjsunit/compiler/strict-recompile.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --allow-natives-syntax
-
-function foo() {
- try {
- var o = {};
- Object.defineProperty(o, 'x', {value: 12, writable: false});
- o.x = 13;
- } catch(e) {
- return true;
- }
- return false;
-}
-
-assertFalse(foo());
-
-function do_eval(str) {
- "use strict";
- return eval(str);
-}
-
-var eval_foo = do_eval('(' + foo + ')');
-for (var i = 0; i < 5; i++) assertTrue(eval_foo());
-%OptimizeFunctionOnNextCall(eval_foo);
-assertTrue(eval_foo());