summaryrefslogtreecommitdiff
path: root/src/3rdparty/v8/test/mjsunit/regress
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/v8/test/mjsunit/regress')
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-1117.js15
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-1118.js2
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-115100.js36
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-117409.js2
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-1199637.js4
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-128146.js11
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-131923.js30
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-131994.js70
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-133211.js35
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-133211b.js39
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-136048.js34
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-137768.js73
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-143967.js34
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-145201.js107
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-148378.js38
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-1563.js2
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-1591.js48
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-1849.js6
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-1878.js4
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-1969.js5045
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2119.js36
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2153.js32
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2156.js39
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2163.js70
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2170.js58
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2172.js35
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2185-2.js145
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2185.js36
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2186.js49
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2193.js58
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2219.js32
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2225.js65
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2226.js36
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2234.js41
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2249.js33
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2250.js68
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2261.js113
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2284.js32
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2285.js32
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2286.js32
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2289.js34
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2291.js36
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2294.js70
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2296.js40
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2318.js66
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2322.js36
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2326.js54
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2336.js53
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2339.js59
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2346.js123
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2373.js29
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2374.js33
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-2398.js41
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-334.js2
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-builtin-array-op.js38
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-cnlt-elements.js43
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-cnlt-enum-indices.js45
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-cntl-descriptors-enum.js46
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-convert-enum.js60
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-convert-enum2.js46
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-convert-transition.js40
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-119926.js4
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-122271.js8
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-125148.js90
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-134055.js63
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-134609.js59
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-135008.js45
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-135066.js53
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-137689.js47
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-138887.js48
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-140083.js44
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-142087.js38
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-142218.js44
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-145961.js39
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-146910.js38
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-147475.js48
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-148376.js35
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-150545.js53
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-150729.js39
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-157019.js54
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-157520.js38
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-158185.js39
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-crbug-160010.js33
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-debug-code-recompilation.js3
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-deep-proto.js45
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-delete-empty-double.js40
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-iteration-order.js42
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-json-stringify-gc.js41
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-load-elements.js49
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-smi-only-concat.js4
-rw-r--r--src/3rdparty/v8/test/mjsunit/regress/regress-undefined-store-keyed-fast-element.js37
91 files changed, 3815 insertions, 5076 deletions
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-1117.js b/src/3rdparty/v8/test/mjsunit/regress/regress-1117.js
index b013a22..981a1b7 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-1117.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-1117.js
@@ -25,11 +25,20 @@
// (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 actually return the right value (-0) when we multiply
// constant 0 with a negative integer.
function foo(y) {return 0 * y; }
-for( var i = 0; i< 1000000; i++){
- foo(42);
-}
assertEquals(1/foo(-42), -Infinity);
+assertEquals(1/foo(-42), -Infinity);
+%OptimizeFunctionOnNextCall(foo);
+assertEquals(1/foo(-42), -Infinity);
+
+function bar(x) { return x * 0; }
+assertEquals(Infinity, 1/bar(5));
+assertEquals(Infinity, 1/bar(5));
+%OptimizeFunctionOnNextCall(bar);
+assertEquals(-Infinity, 1/bar(-5));
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-1118.js b/src/3rdparty/v8/test/mjsunit/regress/regress-1118.js
index 7e0461d..3e3920f 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-1118.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-1118.js
@@ -25,7 +25,7 @@
// (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
+// Flags: --allow-natives-syntax --noparallel-recompilation
// An exception thrown in a function optimized by on-stack replacement (OSR)
// should be able to construct a receiver from all optimized stack frames.
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-115100.js b/src/3rdparty/v8/test/mjsunit/regress/regress-115100.js
new file mode 100644
index 0000000..c917446
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-115100.js
@@ -0,0 +1,36 @@
+// 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
+
+function foo(obj) { obj.prop = 0; }
+function mk() { return Object.create(null); }
+
+foo(mk());
+foo(mk());
+%OptimizeFunctionOnNextCall(foo);
+foo(mk());
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-117409.js b/src/3rdparty/v8/test/mjsunit/regress/regress-117409.js
index 9222191..98aab5a 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-117409.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-117409.js
@@ -36,7 +36,7 @@ var literal = [1.2];
KeyedStoreIC(literal);
KeyedStoreIC(literal);
-// Trruncate array to 0 elements, at which point backing store will be replaced
+// Truncate array to 0 elements, at which point backing store will be replaced
// with empty fixed array.
literal.length = 0;
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-1199637.js b/src/3rdparty/v8/test/mjsunit/regress/regress-1199637.js
index 9c560a9..8b02a65 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-1199637.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-1199637.js
@@ -25,7 +25,7 @@
// (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
+// Flags: --allow-natives-syntax --es52_globals
// Make sure that we can introduce global variables (using
// both var and const) that shadow even READ_ONLY variables
@@ -74,5 +74,3 @@ assertEquals(5678, z);
assertEquals(1234, w);
eval("with({}) { const w = 5678; }");
assertEquals(5678, w);
-
-
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-128146.js b/src/3rdparty/v8/test/mjsunit/regress/regress-128146.js
index 5c22b4e..730dd91 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-128146.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-128146.js
@@ -25,14 +25,9 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Define accessor properties, resulting in an AccessorPair with 2 transitions.
Object.defineProperty({},"foo",{set:function(){},configurable:false});
Object.defineProperty({},"foo",{get:function(){},configurable:false});
-Object.defineProperty({},"foo",{});
-
-// From WebKit layout tests (fast/js/prototypes.html)
-var wasSet = false;
-var o = { };
-o.__defineGetter__("__proto__", function() { wasSet = true });
-o.__proto__;
-assertFalse(wasSet);
+// Define a data property under the same name.
+Object.defineProperty({},"foo",{});
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-131923.js b/src/3rdparty/v8/test/mjsunit/regress/regress-131923.js
new file mode 100644
index 0000000..58da07c
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-131923.js
@@ -0,0 +1,30 @@
+// 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.
+
+assertFalse(/\u9999{4}/.test(""));
+assertTrue(/\u9999{0,4}/.test(""));
+assertFalse(/\u9999{4,}/.test(""));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-131994.js b/src/3rdparty/v8/test/mjsunit/regress/regress-131994.js
new file mode 100644
index 0000000..8347653
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-131994.js
@@ -0,0 +1,70 @@
+// 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: --expose-debug-as debug
+
+// Test that a variable in the local scope that shadows a context-allocated
+// variable is correctly resolved when being evaluated in the debugger.
+
+Debug = debug.Debug;
+
+var exception = false;
+
+function listener(event, exec_state, event_data, data) {
+ if (event != Debug.DebugEvent.Break) return;
+ var breakpoint = exec_state.frame(0);
+ try {
+ // Assert correct break point.
+ assertTrue(breakpoint.sourceLineText().indexOf("// Break") > -1);
+ // Assert correct value.
+ assertEquals(3, breakpoint.evaluate('x').value());
+ } catch (e) {
+ exception = e;
+ }
+}
+
+Debug.setListener(listener);
+
+function h() {
+ var x; // Context-allocated due to g().
+
+ var g = function g() {
+ x = -7;
+ };
+
+ var f = function f() {
+ var x = 3; // Allocated in the local scope.
+ debugger; // Break.
+ };
+
+ f();
+}
+
+h();
+
+assertFalse(exception);
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-133211.js b/src/3rdparty/v8/test/mjsunit/regress/regress-133211.js
new file mode 100644
index 0000000..f9473d1
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-133211.js
@@ -0,0 +1,35 @@
+// 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.
+
+// Make sure we don't leak maps when reading intermediate property descriptors.
+
+var o = {};
+var x = {};
+Object.defineProperty(o, "foo", { get: undefined });
+Object.defineProperty(x, "foo", { get: undefined, set: undefined });
+var pd = Object.getOwnPropertyDescriptor(o, "foo");
+assertEquals(undefined, pd.set);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-133211b.js b/src/3rdparty/v8/test/mjsunit/regress/regress-133211b.js
new file mode 100644
index 0000000..87e35f4
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-133211b.js
@@ -0,0 +1,39 @@
+// 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: --expose-gc
+
+setter = function(x) { return; }
+var o = {};
+Object.defineProperty(o, "foo", { set: setter });
+var x = {};
+Object.defineProperty(x, "foo", { set: setter });
+x.bar = 20;
+x = {};
+gc();
+o.foo = 20;
+assertEquals(undefined, o.foo);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-136048.js b/src/3rdparty/v8/test/mjsunit/regress/regress-136048.js
new file mode 100644
index 0000000..c9972e9
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-136048.js
@@ -0,0 +1,34 @@
+// 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.
+
+try {
+ /foo/\u0069
+} catch (e) {
+ assertEquals(
+ "SyntaxError: Invalid flags supplied to RegExp constructor '\\u0069'",
+ e.toString());
+}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-137768.js b/src/3rdparty/v8/test/mjsunit/regress/regress-137768.js
new file mode 100644
index 0000000..9fbd7f3
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-137768.js
@@ -0,0 +1,73 @@
+// 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
+
+// Create elements in a constructor function to ensure map sharing.
+function TestConstructor() {
+ this[0] = 1;
+ this[1] = 2;
+ this[2] = 3;
+}
+
+function bad_func(o,a) {
+ var s = 0;
+ for (var i = 0; i < 1; ++i) {
+ o.newFileToChangeMap = undefined;
+ var x = a[0];
+ s += x;
+ }
+ return s;
+}
+
+o = new Object();
+a = new TestConstructor();
+bad_func(o, a);
+
+// Make sure that we're out of pre-monomorphic state for the member add of
+// 'newFileToChangeMap' which causes a map transition.
+o = new Object();
+a = new TestConstructor();
+bad_func(o, a);
+
+// Optimize, before the fix, the element load and subsequent tagged-to-i were
+// hoisted above the map check, which can't be hoisted due to the map-changing
+// store.
+o = new Object();
+a = new TestConstructor();
+%OptimizeFunctionOnNextCall(bad_func);
+bad_func(o, a);
+
+// Pass in a array of doubles. Before the fix, the optimized load and
+// tagged-to-i will treat part of a double value as a pointer and de-ref it
+// before the map check was executed that should have deopt.
+o = new Object();
+// Pass in an elements buffer where the bit representation of the double numbers
+// are two adjacent small 32-bit values with the lowest bit set to one, causing
+// tagged-to-i to SIGSEGV.
+a = [2.122e-314, 2.122e-314, 2.122e-314];
+bad_func(o, a);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-143967.js b/src/3rdparty/v8/test/mjsunit/regress/regress-143967.js
new file mode 100644
index 0000000..7c12e67
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-143967.js
@@ -0,0 +1,34 @@
+// 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.
+
+// Check that Accessors::FunctionGetPrototype traverses the prototype
+// chain correctly and doesn't get stuck.
+
+var functionWithoutProto = [].filter;
+var obj = Object.create(functionWithoutProto);
+functionWithoutProto.__proto__ = function() {};
+assertEquals(functionWithoutProto.prototype, obj.prototype);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-145201.js b/src/3rdparty/v8/test/mjsunit/regress/regress-145201.js
new file mode 100644
index 0000000..7fe7bce
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-145201.js
@@ -0,0 +1,107 @@
+// 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.
+
+// Fix some corner cases in skipping native methods using caller.
+var net = [];
+
+
+var x = 0;
+
+function collect () {
+ function item(operator) {
+ binary(operator, 1, false);
+ binary(operator, 1, true);
+ binary(operator, '{}', false);
+ binary(operator, '{}', true);
+ binary(operator, '"x"', false);
+ binary(operator, '"x"', true);
+ unary(operator, "");
+ }
+
+ function unary(op, after) {
+ // Capture:
+ try {
+ eval(op + " custom " + after);
+ } catch(e) {
+ }
+ }
+
+ function binary(op, other_side, inverted) {
+ // Capture:
+ try {
+ if (inverted) {
+ eval("custom " + op + " " + other_side);
+ } else {
+ eval(other_side + " " + op + " custom");
+ }
+ } catch(e) {
+ }
+ }
+
+ function catcher() {
+ var caller = catcher.caller;
+ if (/native/i.test(caller) || /ADD/.test(caller)) {
+ net[caller] = 0;
+ }
+ }
+
+ var custom = Object.create(null, {
+ toString: { value: catcher },
+ length: { get: catcher }
+ });
+
+ item('^');
+ item('~');
+ item('<<');
+ item('<');
+ item('==');
+ item('>>>');
+ item('>>');
+ item('|');
+ item('-');
+ item('*');
+ item('&');
+ item('%');
+ item('+');
+ item('in');
+ item('instanceof');
+ unary('{}[', ']');
+ unary('delete {}[', ']');
+ unary('(function() {}).apply(null, ', ')');
+}
+
+collect();
+collect();
+collect();
+
+var keys = 0;
+for (var key in net) {
+ print(key);
+ keys++;
+}
+
+assertTrue(keys == 0);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-148378.js b/src/3rdparty/v8/test/mjsunit/regress/regress-148378.js
new file mode 100644
index 0000000..d37cea1
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-148378.js
@@ -0,0 +1,38 @@
+// 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.
+
+"a".replace(/a/g, function() { return "c"; });
+
+function test() {
+ try {
+ test();
+ } catch(e) {
+ "b".replace(/(b)/g, function() { return "c"; });
+ }
+}
+
+test();
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-1563.js b/src/3rdparty/v8/test/mjsunit/regress/regress-1563.js
index c25b6c7..884b125 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-1563.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-1563.js
@@ -27,7 +27,7 @@
// Flags: --allow-natives-syntax
-obj = new PixelArray(10);
+obj = new Uint8ClampedArray(10);
// Test that undefined gets properly clamped in Crankshafted pixel array
// assignments.
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-1591.js b/src/3rdparty/v8/test/mjsunit/regress/regress-1591.js
new file mode 100644
index 0000000..69efd0b
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-1591.js
@@ -0,0 +1,48 @@
+// 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.
+
+var stack;
+var used_custom_lookup = false;
+
+({
+ __lookupGetter__ : function() {
+ used_custom_lookup = true;
+ },
+
+ test : function() {
+ try {
+ f();
+ } catch (err) {
+ stack = err.stack;
+ }
+ }
+}).test();
+
+var expected_message = "ReferenceError: f is not defined";
+assertTrue(stack.indexOf(expected_message) >= 0);
+assertFalse(used_custom_lookup);
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-1849.js b/src/3rdparty/v8/test/mjsunit/regress/regress-1849.js
index 176f918..5b8fc50 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-1849.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-1849.js
@@ -1,4 +1,4 @@
-// Copyright 2011 the V8 project authors. All rights reserved.
+// 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:
@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// See: http://code.google.com/p/v8/issues/detail?id=1878
+// See: http://code.google.com/p/v8/issues/detail?id=1849
// Flags: --allow-natives-syntax
@@ -36,4 +36,4 @@ for (var i = 0; i < count; i++) {
arr[i] = 0;
}
assertFalse(%HasFastDoubleElements(arr));
-assertTrue(%HasFastSmiOnlyElements(arr));
+assertTrue(%HasFastSmiElements(arr));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-1878.js b/src/3rdparty/v8/test/mjsunit/regress/regress-1878.js
index a1648b1..fbc47bd 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-1878.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-1878.js
@@ -34,11 +34,11 @@ var a = Array();
for (var i = 0; i < 1000; i++) {
var ai = natives.InternalArray(10000);
assertFalse(%HaveSameMap(ai, a));
- assertTrue(%HasFastElements(ai));
+ assertTrue(%HasFastObjectElements(ai));
}
for (var i = 0; i < 1000; i++) {
var ai = new natives.InternalArray(10000);
assertFalse(%HaveSameMap(ai, a));
- assertTrue(%HasFastElements(ai));
+ assertTrue(%HasFastObjectElements(ai));
}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-1969.js b/src/3rdparty/v8/test/mjsunit/regress/regress-1969.js
deleted file mode 100644
index 2728c2c..0000000
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-1969.js
+++ /dev/null
@@ -1,5045 +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
-
-f();
-f();
-%OptimizeFunctionOnNextCall(f);
-var start = (new Date()).getTime();
-var array = f();
-var end = (new Date()).getTime();
-
-// Assert that recompiling and executing f() takes less than a second.
-assertTrue((end - start) < 1000);
-
-for (var i = 0; i < 5000; i++) assertEquals(0, array[i]);
-
-function f() {
- var a = new Array(5000);
- a[0]=0;
- a[1]=0;
- a[2]=0;
- a[3]=0;
- a[4]=0;
- a[5]=0;
- a[6]=0;
- a[7]=0;
- a[8]=0;
- a[9]=0;
- a[10]=0;
- a[11]=0;
- a[12]=0;
- a[13]=0;
- a[14]=0;
- a[15]=0;
- a[16]=0;
- a[17]=0;
- a[18]=0;
- a[19]=0;
- a[20]=0;
- a[21]=0;
- a[22]=0;
- a[23]=0;
- a[24]=0;
- a[25]=0;
- a[26]=0;
- a[27]=0;
- a[28]=0;
- a[29]=0;
- a[30]=0;
- a[31]=0;
- a[32]=0;
- a[33]=0;
- a[34]=0;
- a[35]=0;
- a[36]=0;
- a[37]=0;
- a[38]=0;
- a[39]=0;
- a[40]=0;
- a[41]=0;
- a[42]=0;
- a[43]=0;
- a[44]=0;
- a[45]=0;
- a[46]=0;
- a[47]=0;
- a[48]=0;
- a[49]=0;
- a[50]=0;
- a[51]=0;
- a[52]=0;
- a[53]=0;
- a[54]=0;
- a[55]=0;
- a[56]=0;
- a[57]=0;
- a[58]=0;
- a[59]=0;
- a[60]=0;
- a[61]=0;
- a[62]=0;
- a[63]=0;
- a[64]=0;
- a[65]=0;
- a[66]=0;
- a[67]=0;
- a[68]=0;
- a[69]=0;
- a[70]=0;
- a[71]=0;
- a[72]=0;
- a[73]=0;
- a[74]=0;
- a[75]=0;
- a[76]=0;
- a[77]=0;
- a[78]=0;
- a[79]=0;
- a[80]=0;
- a[81]=0;
- a[82]=0;
- a[83]=0;
- a[84]=0;
- a[85]=0;
- a[86]=0;
- a[87]=0;
- a[88]=0;
- a[89]=0;
- a[90]=0;
- a[91]=0;
- a[92]=0;
- a[93]=0;
- a[94]=0;
- a[95]=0;
- a[96]=0;
- a[97]=0;
- a[98]=0;
- a[99]=0;
- a[100]=0;
- a[101]=0;
- a[102]=0;
- a[103]=0;
- a[104]=0;
- a[105]=0;
- a[106]=0;
- a[107]=0;
- a[108]=0;
- a[109]=0;
- a[110]=0;
- a[111]=0;
- a[112]=0;
- a[113]=0;
- a[114]=0;
- a[115]=0;
- a[116]=0;
- a[117]=0;
- a[118]=0;
- a[119]=0;
- a[120]=0;
- a[121]=0;
- a[122]=0;
- a[123]=0;
- a[124]=0;
- a[125]=0;
- a[126]=0;
- a[127]=0;
- a[128]=0;
- a[129]=0;
- a[130]=0;
- a[131]=0;
- a[132]=0;
- a[133]=0;
- a[134]=0;
- a[135]=0;
- a[136]=0;
- a[137]=0;
- a[138]=0;
- a[139]=0;
- a[140]=0;
- a[141]=0;
- a[142]=0;
- a[143]=0;
- a[144]=0;
- a[145]=0;
- a[146]=0;
- a[147]=0;
- a[148]=0;
- a[149]=0;
- a[150]=0;
- a[151]=0;
- a[152]=0;
- a[153]=0;
- a[154]=0;
- a[155]=0;
- a[156]=0;
- a[157]=0;
- a[158]=0;
- a[159]=0;
- a[160]=0;
- a[161]=0;
- a[162]=0;
- a[163]=0;
- a[164]=0;
- a[165]=0;
- a[166]=0;
- a[167]=0;
- a[168]=0;
- a[169]=0;
- a[170]=0;
- a[171]=0;
- a[172]=0;
- a[173]=0;
- a[174]=0;
- a[175]=0;
- a[176]=0;
- a[177]=0;
- a[178]=0;
- a[179]=0;
- a[180]=0;
- a[181]=0;
- a[182]=0;
- a[183]=0;
- a[184]=0;
- a[185]=0;
- a[186]=0;
- a[187]=0;
- a[188]=0;
- a[189]=0;
- a[190]=0;
- a[191]=0;
- a[192]=0;
- a[193]=0;
- a[194]=0;
- a[195]=0;
- a[196]=0;
- a[197]=0;
- a[198]=0;
- a[199]=0;
- a[200]=0;
- a[201]=0;
- a[202]=0;
- a[203]=0;
- a[204]=0;
- a[205]=0;
- a[206]=0;
- a[207]=0;
- a[208]=0;
- a[209]=0;
- a[210]=0;
- a[211]=0;
- a[212]=0;
- a[213]=0;
- a[214]=0;
- a[215]=0;
- a[216]=0;
- a[217]=0;
- a[218]=0;
- a[219]=0;
- a[220]=0;
- a[221]=0;
- a[222]=0;
- a[223]=0;
- a[224]=0;
- a[225]=0;
- a[226]=0;
- a[227]=0;
- a[228]=0;
- a[229]=0;
- a[230]=0;
- a[231]=0;
- a[232]=0;
- a[233]=0;
- a[234]=0;
- a[235]=0;
- a[236]=0;
- a[237]=0;
- a[238]=0;
- a[239]=0;
- a[240]=0;
- a[241]=0;
- a[242]=0;
- a[243]=0;
- a[244]=0;
- a[245]=0;
- a[246]=0;
- a[247]=0;
- a[248]=0;
- a[249]=0;
- a[250]=0;
- a[251]=0;
- a[252]=0;
- a[253]=0;
- a[254]=0;
- a[255]=0;
- a[256]=0;
- a[257]=0;
- a[258]=0;
- a[259]=0;
- a[260]=0;
- a[261]=0;
- a[262]=0;
- a[263]=0;
- a[264]=0;
- a[265]=0;
- a[266]=0;
- a[267]=0;
- a[268]=0;
- a[269]=0;
- a[270]=0;
- a[271]=0;
- a[272]=0;
- a[273]=0;
- a[274]=0;
- a[275]=0;
- a[276]=0;
- a[277]=0;
- a[278]=0;
- a[279]=0;
- a[280]=0;
- a[281]=0;
- a[282]=0;
- a[283]=0;
- a[284]=0;
- a[285]=0;
- a[286]=0;
- a[287]=0;
- a[288]=0;
- a[289]=0;
- a[290]=0;
- a[291]=0;
- a[292]=0;
- a[293]=0;
- a[294]=0;
- a[295]=0;
- a[296]=0;
- a[297]=0;
- a[298]=0;
- a[299]=0;
- a[300]=0;
- a[301]=0;
- a[302]=0;
- a[303]=0;
- a[304]=0;
- a[305]=0;
- a[306]=0;
- a[307]=0;
- a[308]=0;
- a[309]=0;
- a[310]=0;
- a[311]=0;
- a[312]=0;
- a[313]=0;
- a[314]=0;
- a[315]=0;
- a[316]=0;
- a[317]=0;
- a[318]=0;
- a[319]=0;
- a[320]=0;
- a[321]=0;
- a[322]=0;
- a[323]=0;
- a[324]=0;
- a[325]=0;
- a[326]=0;
- a[327]=0;
- a[328]=0;
- a[329]=0;
- a[330]=0;
- a[331]=0;
- a[332]=0;
- a[333]=0;
- a[334]=0;
- a[335]=0;
- a[336]=0;
- a[337]=0;
- a[338]=0;
- a[339]=0;
- a[340]=0;
- a[341]=0;
- a[342]=0;
- a[343]=0;
- a[344]=0;
- a[345]=0;
- a[346]=0;
- a[347]=0;
- a[348]=0;
- a[349]=0;
- a[350]=0;
- a[351]=0;
- a[352]=0;
- a[353]=0;
- a[354]=0;
- a[355]=0;
- a[356]=0;
- a[357]=0;
- a[358]=0;
- a[359]=0;
- a[360]=0;
- a[361]=0;
- a[362]=0;
- a[363]=0;
- a[364]=0;
- a[365]=0;
- a[366]=0;
- a[367]=0;
- a[368]=0;
- a[369]=0;
- a[370]=0;
- a[371]=0;
- a[372]=0;
- a[373]=0;
- a[374]=0;
- a[375]=0;
- a[376]=0;
- a[377]=0;
- a[378]=0;
- a[379]=0;
- a[380]=0;
- a[381]=0;
- a[382]=0;
- a[383]=0;
- a[384]=0;
- a[385]=0;
- a[386]=0;
- a[387]=0;
- a[388]=0;
- a[389]=0;
- a[390]=0;
- a[391]=0;
- a[392]=0;
- a[393]=0;
- a[394]=0;
- a[395]=0;
- a[396]=0;
- a[397]=0;
- a[398]=0;
- a[399]=0;
- a[400]=0;
- a[401]=0;
- a[402]=0;
- a[403]=0;
- a[404]=0;
- a[405]=0;
- a[406]=0;
- a[407]=0;
- a[408]=0;
- a[409]=0;
- a[410]=0;
- a[411]=0;
- a[412]=0;
- a[413]=0;
- a[414]=0;
- a[415]=0;
- a[416]=0;
- a[417]=0;
- a[418]=0;
- a[419]=0;
- a[420]=0;
- a[421]=0;
- a[422]=0;
- a[423]=0;
- a[424]=0;
- a[425]=0;
- a[426]=0;
- a[427]=0;
- a[428]=0;
- a[429]=0;
- a[430]=0;
- a[431]=0;
- a[432]=0;
- a[433]=0;
- a[434]=0;
- a[435]=0;
- a[436]=0;
- a[437]=0;
- a[438]=0;
- a[439]=0;
- a[440]=0;
- a[441]=0;
- a[442]=0;
- a[443]=0;
- a[444]=0;
- a[445]=0;
- a[446]=0;
- a[447]=0;
- a[448]=0;
- a[449]=0;
- a[450]=0;
- a[451]=0;
- a[452]=0;
- a[453]=0;
- a[454]=0;
- a[455]=0;
- a[456]=0;
- a[457]=0;
- a[458]=0;
- a[459]=0;
- a[460]=0;
- a[461]=0;
- a[462]=0;
- a[463]=0;
- a[464]=0;
- a[465]=0;
- a[466]=0;
- a[467]=0;
- a[468]=0;
- a[469]=0;
- a[470]=0;
- a[471]=0;
- a[472]=0;
- a[473]=0;
- a[474]=0;
- a[475]=0;
- a[476]=0;
- a[477]=0;
- a[478]=0;
- a[479]=0;
- a[480]=0;
- a[481]=0;
- a[482]=0;
- a[483]=0;
- a[484]=0;
- a[485]=0;
- a[486]=0;
- a[487]=0;
- a[488]=0;
- a[489]=0;
- a[490]=0;
- a[491]=0;
- a[492]=0;
- a[493]=0;
- a[494]=0;
- a[495]=0;
- a[496]=0;
- a[497]=0;
- a[498]=0;
- a[499]=0;
- a[500]=0;
- a[501]=0;
- a[502]=0;
- a[503]=0;
- a[504]=0;
- a[505]=0;
- a[506]=0;
- a[507]=0;
- a[508]=0;
- a[509]=0;
- a[510]=0;
- a[511]=0;
- a[512]=0;
- a[513]=0;
- a[514]=0;
- a[515]=0;
- a[516]=0;
- a[517]=0;
- a[518]=0;
- a[519]=0;
- a[520]=0;
- a[521]=0;
- a[522]=0;
- a[523]=0;
- a[524]=0;
- a[525]=0;
- a[526]=0;
- a[527]=0;
- a[528]=0;
- a[529]=0;
- a[530]=0;
- a[531]=0;
- a[532]=0;
- a[533]=0;
- a[534]=0;
- a[535]=0;
- a[536]=0;
- a[537]=0;
- a[538]=0;
- a[539]=0;
- a[540]=0;
- a[541]=0;
- a[542]=0;
- a[543]=0;
- a[544]=0;
- a[545]=0;
- a[546]=0;
- a[547]=0;
- a[548]=0;
- a[549]=0;
- a[550]=0;
- a[551]=0;
- a[552]=0;
- a[553]=0;
- a[554]=0;
- a[555]=0;
- a[556]=0;
- a[557]=0;
- a[558]=0;
- a[559]=0;
- a[560]=0;
- a[561]=0;
- a[562]=0;
- a[563]=0;
- a[564]=0;
- a[565]=0;
- a[566]=0;
- a[567]=0;
- a[568]=0;
- a[569]=0;
- a[570]=0;
- a[571]=0;
- a[572]=0;
- a[573]=0;
- a[574]=0;
- a[575]=0;
- a[576]=0;
- a[577]=0;
- a[578]=0;
- a[579]=0;
- a[580]=0;
- a[581]=0;
- a[582]=0;
- a[583]=0;
- a[584]=0;
- a[585]=0;
- a[586]=0;
- a[587]=0;
- a[588]=0;
- a[589]=0;
- a[590]=0;
- a[591]=0;
- a[592]=0;
- a[593]=0;
- a[594]=0;
- a[595]=0;
- a[596]=0;
- a[597]=0;
- a[598]=0;
- a[599]=0;
- a[600]=0;
- a[601]=0;
- a[602]=0;
- a[603]=0;
- a[604]=0;
- a[605]=0;
- a[606]=0;
- a[607]=0;
- a[608]=0;
- a[609]=0;
- a[610]=0;
- a[611]=0;
- a[612]=0;
- a[613]=0;
- a[614]=0;
- a[615]=0;
- a[616]=0;
- a[617]=0;
- a[618]=0;
- a[619]=0;
- a[620]=0;
- a[621]=0;
- a[622]=0;
- a[623]=0;
- a[624]=0;
- a[625]=0;
- a[626]=0;
- a[627]=0;
- a[628]=0;
- a[629]=0;
- a[630]=0;
- a[631]=0;
- a[632]=0;
- a[633]=0;
- a[634]=0;
- a[635]=0;
- a[636]=0;
- a[637]=0;
- a[638]=0;
- a[639]=0;
- a[640]=0;
- a[641]=0;
- a[642]=0;
- a[643]=0;
- a[644]=0;
- a[645]=0;
- a[646]=0;
- a[647]=0;
- a[648]=0;
- a[649]=0;
- a[650]=0;
- a[651]=0;
- a[652]=0;
- a[653]=0;
- a[654]=0;
- a[655]=0;
- a[656]=0;
- a[657]=0;
- a[658]=0;
- a[659]=0;
- a[660]=0;
- a[661]=0;
- a[662]=0;
- a[663]=0;
- a[664]=0;
- a[665]=0;
- a[666]=0;
- a[667]=0;
- a[668]=0;
- a[669]=0;
- a[670]=0;
- a[671]=0;
- a[672]=0;
- a[673]=0;
- a[674]=0;
- a[675]=0;
- a[676]=0;
- a[677]=0;
- a[678]=0;
- a[679]=0;
- a[680]=0;
- a[681]=0;
- a[682]=0;
- a[683]=0;
- a[684]=0;
- a[685]=0;
- a[686]=0;
- a[687]=0;
- a[688]=0;
- a[689]=0;
- a[690]=0;
- a[691]=0;
- a[692]=0;
- a[693]=0;
- a[694]=0;
- a[695]=0;
- a[696]=0;
- a[697]=0;
- a[698]=0;
- a[699]=0;
- a[700]=0;
- a[701]=0;
- a[702]=0;
- a[703]=0;
- a[704]=0;
- a[705]=0;
- a[706]=0;
- a[707]=0;
- a[708]=0;
- a[709]=0;
- a[710]=0;
- a[711]=0;
- a[712]=0;
- a[713]=0;
- a[714]=0;
- a[715]=0;
- a[716]=0;
- a[717]=0;
- a[718]=0;
- a[719]=0;
- a[720]=0;
- a[721]=0;
- a[722]=0;
- a[723]=0;
- a[724]=0;
- a[725]=0;
- a[726]=0;
- a[727]=0;
- a[728]=0;
- a[729]=0;
- a[730]=0;
- a[731]=0;
- a[732]=0;
- a[733]=0;
- a[734]=0;
- a[735]=0;
- a[736]=0;
- a[737]=0;
- a[738]=0;
- a[739]=0;
- a[740]=0;
- a[741]=0;
- a[742]=0;
- a[743]=0;
- a[744]=0;
- a[745]=0;
- a[746]=0;
- a[747]=0;
- a[748]=0;
- a[749]=0;
- a[750]=0;
- a[751]=0;
- a[752]=0;
- a[753]=0;
- a[754]=0;
- a[755]=0;
- a[756]=0;
- a[757]=0;
- a[758]=0;
- a[759]=0;
- a[760]=0;
- a[761]=0;
- a[762]=0;
- a[763]=0;
- a[764]=0;
- a[765]=0;
- a[766]=0;
- a[767]=0;
- a[768]=0;
- a[769]=0;
- a[770]=0;
- a[771]=0;
- a[772]=0;
- a[773]=0;
- a[774]=0;
- a[775]=0;
- a[776]=0;
- a[777]=0;
- a[778]=0;
- a[779]=0;
- a[780]=0;
- a[781]=0;
- a[782]=0;
- a[783]=0;
- a[784]=0;
- a[785]=0;
- a[786]=0;
- a[787]=0;
- a[788]=0;
- a[789]=0;
- a[790]=0;
- a[791]=0;
- a[792]=0;
- a[793]=0;
- a[794]=0;
- a[795]=0;
- a[796]=0;
- a[797]=0;
- a[798]=0;
- a[799]=0;
- a[800]=0;
- a[801]=0;
- a[802]=0;
- a[803]=0;
- a[804]=0;
- a[805]=0;
- a[806]=0;
- a[807]=0;
- a[808]=0;
- a[809]=0;
- a[810]=0;
- a[811]=0;
- a[812]=0;
- a[813]=0;
- a[814]=0;
- a[815]=0;
- a[816]=0;
- a[817]=0;
- a[818]=0;
- a[819]=0;
- a[820]=0;
- a[821]=0;
- a[822]=0;
- a[823]=0;
- a[824]=0;
- a[825]=0;
- a[826]=0;
- a[827]=0;
- a[828]=0;
- a[829]=0;
- a[830]=0;
- a[831]=0;
- a[832]=0;
- a[833]=0;
- a[834]=0;
- a[835]=0;
- a[836]=0;
- a[837]=0;
- a[838]=0;
- a[839]=0;
- a[840]=0;
- a[841]=0;
- a[842]=0;
- a[843]=0;
- a[844]=0;
- a[845]=0;
- a[846]=0;
- a[847]=0;
- a[848]=0;
- a[849]=0;
- a[850]=0;
- a[851]=0;
- a[852]=0;
- a[853]=0;
- a[854]=0;
- a[855]=0;
- a[856]=0;
- a[857]=0;
- a[858]=0;
- a[859]=0;
- a[860]=0;
- a[861]=0;
- a[862]=0;
- a[863]=0;
- a[864]=0;
- a[865]=0;
- a[866]=0;
- a[867]=0;
- a[868]=0;
- a[869]=0;
- a[870]=0;
- a[871]=0;
- a[872]=0;
- a[873]=0;
- a[874]=0;
- a[875]=0;
- a[876]=0;
- a[877]=0;
- a[878]=0;
- a[879]=0;
- a[880]=0;
- a[881]=0;
- a[882]=0;
- a[883]=0;
- a[884]=0;
- a[885]=0;
- a[886]=0;
- a[887]=0;
- a[888]=0;
- a[889]=0;
- a[890]=0;
- a[891]=0;
- a[892]=0;
- a[893]=0;
- a[894]=0;
- a[895]=0;
- a[896]=0;
- a[897]=0;
- a[898]=0;
- a[899]=0;
- a[900]=0;
- a[901]=0;
- a[902]=0;
- a[903]=0;
- a[904]=0;
- a[905]=0;
- a[906]=0;
- a[907]=0;
- a[908]=0;
- a[909]=0;
- a[910]=0;
- a[911]=0;
- a[912]=0;
- a[913]=0;
- a[914]=0;
- a[915]=0;
- a[916]=0;
- a[917]=0;
- a[918]=0;
- a[919]=0;
- a[920]=0;
- a[921]=0;
- a[922]=0;
- a[923]=0;
- a[924]=0;
- a[925]=0;
- a[926]=0;
- a[927]=0;
- a[928]=0;
- a[929]=0;
- a[930]=0;
- a[931]=0;
- a[932]=0;
- a[933]=0;
- a[934]=0;
- a[935]=0;
- a[936]=0;
- a[937]=0;
- a[938]=0;
- a[939]=0;
- a[940]=0;
- a[941]=0;
- a[942]=0;
- a[943]=0;
- a[944]=0;
- a[945]=0;
- a[946]=0;
- a[947]=0;
- a[948]=0;
- a[949]=0;
- a[950]=0;
- a[951]=0;
- a[952]=0;
- a[953]=0;
- a[954]=0;
- a[955]=0;
- a[956]=0;
- a[957]=0;
- a[958]=0;
- a[959]=0;
- a[960]=0;
- a[961]=0;
- a[962]=0;
- a[963]=0;
- a[964]=0;
- a[965]=0;
- a[966]=0;
- a[967]=0;
- a[968]=0;
- a[969]=0;
- a[970]=0;
- a[971]=0;
- a[972]=0;
- a[973]=0;
- a[974]=0;
- a[975]=0;
- a[976]=0;
- a[977]=0;
- a[978]=0;
- a[979]=0;
- a[980]=0;
- a[981]=0;
- a[982]=0;
- a[983]=0;
- a[984]=0;
- a[985]=0;
- a[986]=0;
- a[987]=0;
- a[988]=0;
- a[989]=0;
- a[990]=0;
- a[991]=0;
- a[992]=0;
- a[993]=0;
- a[994]=0;
- a[995]=0;
- a[996]=0;
- a[997]=0;
- a[998]=0;
- a[999]=0;
- a[1000]=0;
- a[1001]=0;
- a[1002]=0;
- a[1003]=0;
- a[1004]=0;
- a[1005]=0;
- a[1006]=0;
- a[1007]=0;
- a[1008]=0;
- a[1009]=0;
- a[1010]=0;
- a[1011]=0;
- a[1012]=0;
- a[1013]=0;
- a[1014]=0;
- a[1015]=0;
- a[1016]=0;
- a[1017]=0;
- a[1018]=0;
- a[1019]=0;
- a[1020]=0;
- a[1021]=0;
- a[1022]=0;
- a[1023]=0;
- a[1024]=0;
- a[1025]=0;
- a[1026]=0;
- a[1027]=0;
- a[1028]=0;
- a[1029]=0;
- a[1030]=0;
- a[1031]=0;
- a[1032]=0;
- a[1033]=0;
- a[1034]=0;
- a[1035]=0;
- a[1036]=0;
- a[1037]=0;
- a[1038]=0;
- a[1039]=0;
- a[1040]=0;
- a[1041]=0;
- a[1042]=0;
- a[1043]=0;
- a[1044]=0;
- a[1045]=0;
- a[1046]=0;
- a[1047]=0;
- a[1048]=0;
- a[1049]=0;
- a[1050]=0;
- a[1051]=0;
- a[1052]=0;
- a[1053]=0;
- a[1054]=0;
- a[1055]=0;
- a[1056]=0;
- a[1057]=0;
- a[1058]=0;
- a[1059]=0;
- a[1060]=0;
- a[1061]=0;
- a[1062]=0;
- a[1063]=0;
- a[1064]=0;
- a[1065]=0;
- a[1066]=0;
- a[1067]=0;
- a[1068]=0;
- a[1069]=0;
- a[1070]=0;
- a[1071]=0;
- a[1072]=0;
- a[1073]=0;
- a[1074]=0;
- a[1075]=0;
- a[1076]=0;
- a[1077]=0;
- a[1078]=0;
- a[1079]=0;
- a[1080]=0;
- a[1081]=0;
- a[1082]=0;
- a[1083]=0;
- a[1084]=0;
- a[1085]=0;
- a[1086]=0;
- a[1087]=0;
- a[1088]=0;
- a[1089]=0;
- a[1090]=0;
- a[1091]=0;
- a[1092]=0;
- a[1093]=0;
- a[1094]=0;
- a[1095]=0;
- a[1096]=0;
- a[1097]=0;
- a[1098]=0;
- a[1099]=0;
- a[1100]=0;
- a[1101]=0;
- a[1102]=0;
- a[1103]=0;
- a[1104]=0;
- a[1105]=0;
- a[1106]=0;
- a[1107]=0;
- a[1108]=0;
- a[1109]=0;
- a[1110]=0;
- a[1111]=0;
- a[1112]=0;
- a[1113]=0;
- a[1114]=0;
- a[1115]=0;
- a[1116]=0;
- a[1117]=0;
- a[1118]=0;
- a[1119]=0;
- a[1120]=0;
- a[1121]=0;
- a[1122]=0;
- a[1123]=0;
- a[1124]=0;
- a[1125]=0;
- a[1126]=0;
- a[1127]=0;
- a[1128]=0;
- a[1129]=0;
- a[1130]=0;
- a[1131]=0;
- a[1132]=0;
- a[1133]=0;
- a[1134]=0;
- a[1135]=0;
- a[1136]=0;
- a[1137]=0;
- a[1138]=0;
- a[1139]=0;
- a[1140]=0;
- a[1141]=0;
- a[1142]=0;
- a[1143]=0;
- a[1144]=0;
- a[1145]=0;
- a[1146]=0;
- a[1147]=0;
- a[1148]=0;
- a[1149]=0;
- a[1150]=0;
- a[1151]=0;
- a[1152]=0;
- a[1153]=0;
- a[1154]=0;
- a[1155]=0;
- a[1156]=0;
- a[1157]=0;
- a[1158]=0;
- a[1159]=0;
- a[1160]=0;
- a[1161]=0;
- a[1162]=0;
- a[1163]=0;
- a[1164]=0;
- a[1165]=0;
- a[1166]=0;
- a[1167]=0;
- a[1168]=0;
- a[1169]=0;
- a[1170]=0;
- a[1171]=0;
- a[1172]=0;
- a[1173]=0;
- a[1174]=0;
- a[1175]=0;
- a[1176]=0;
- a[1177]=0;
- a[1178]=0;
- a[1179]=0;
- a[1180]=0;
- a[1181]=0;
- a[1182]=0;
- a[1183]=0;
- a[1184]=0;
- a[1185]=0;
- a[1186]=0;
- a[1187]=0;
- a[1188]=0;
- a[1189]=0;
- a[1190]=0;
- a[1191]=0;
- a[1192]=0;
- a[1193]=0;
- a[1194]=0;
- a[1195]=0;
- a[1196]=0;
- a[1197]=0;
- a[1198]=0;
- a[1199]=0;
- a[1200]=0;
- a[1201]=0;
- a[1202]=0;
- a[1203]=0;
- a[1204]=0;
- a[1205]=0;
- a[1206]=0;
- a[1207]=0;
- a[1208]=0;
- a[1209]=0;
- a[1210]=0;
- a[1211]=0;
- a[1212]=0;
- a[1213]=0;
- a[1214]=0;
- a[1215]=0;
- a[1216]=0;
- a[1217]=0;
- a[1218]=0;
- a[1219]=0;
- a[1220]=0;
- a[1221]=0;
- a[1222]=0;
- a[1223]=0;
- a[1224]=0;
- a[1225]=0;
- a[1226]=0;
- a[1227]=0;
- a[1228]=0;
- a[1229]=0;
- a[1230]=0;
- a[1231]=0;
- a[1232]=0;
- a[1233]=0;
- a[1234]=0;
- a[1235]=0;
- a[1236]=0;
- a[1237]=0;
- a[1238]=0;
- a[1239]=0;
- a[1240]=0;
- a[1241]=0;
- a[1242]=0;
- a[1243]=0;
- a[1244]=0;
- a[1245]=0;
- a[1246]=0;
- a[1247]=0;
- a[1248]=0;
- a[1249]=0;
- a[1250]=0;
- a[1251]=0;
- a[1252]=0;
- a[1253]=0;
- a[1254]=0;
- a[1255]=0;
- a[1256]=0;
- a[1257]=0;
- a[1258]=0;
- a[1259]=0;
- a[1260]=0;
- a[1261]=0;
- a[1262]=0;
- a[1263]=0;
- a[1264]=0;
- a[1265]=0;
- a[1266]=0;
- a[1267]=0;
- a[1268]=0;
- a[1269]=0;
- a[1270]=0;
- a[1271]=0;
- a[1272]=0;
- a[1273]=0;
- a[1274]=0;
- a[1275]=0;
- a[1276]=0;
- a[1277]=0;
- a[1278]=0;
- a[1279]=0;
- a[1280]=0;
- a[1281]=0;
- a[1282]=0;
- a[1283]=0;
- a[1284]=0;
- a[1285]=0;
- a[1286]=0;
- a[1287]=0;
- a[1288]=0;
- a[1289]=0;
- a[1290]=0;
- a[1291]=0;
- a[1292]=0;
- a[1293]=0;
- a[1294]=0;
- a[1295]=0;
- a[1296]=0;
- a[1297]=0;
- a[1298]=0;
- a[1299]=0;
- a[1300]=0;
- a[1301]=0;
- a[1302]=0;
- a[1303]=0;
- a[1304]=0;
- a[1305]=0;
- a[1306]=0;
- a[1307]=0;
- a[1308]=0;
- a[1309]=0;
- a[1310]=0;
- a[1311]=0;
- a[1312]=0;
- a[1313]=0;
- a[1314]=0;
- a[1315]=0;
- a[1316]=0;
- a[1317]=0;
- a[1318]=0;
- a[1319]=0;
- a[1320]=0;
- a[1321]=0;
- a[1322]=0;
- a[1323]=0;
- a[1324]=0;
- a[1325]=0;
- a[1326]=0;
- a[1327]=0;
- a[1328]=0;
- a[1329]=0;
- a[1330]=0;
- a[1331]=0;
- a[1332]=0;
- a[1333]=0;
- a[1334]=0;
- a[1335]=0;
- a[1336]=0;
- a[1337]=0;
- a[1338]=0;
- a[1339]=0;
- a[1340]=0;
- a[1341]=0;
- a[1342]=0;
- a[1343]=0;
- a[1344]=0;
- a[1345]=0;
- a[1346]=0;
- a[1347]=0;
- a[1348]=0;
- a[1349]=0;
- a[1350]=0;
- a[1351]=0;
- a[1352]=0;
- a[1353]=0;
- a[1354]=0;
- a[1355]=0;
- a[1356]=0;
- a[1357]=0;
- a[1358]=0;
- a[1359]=0;
- a[1360]=0;
- a[1361]=0;
- a[1362]=0;
- a[1363]=0;
- a[1364]=0;
- a[1365]=0;
- a[1366]=0;
- a[1367]=0;
- a[1368]=0;
- a[1369]=0;
- a[1370]=0;
- a[1371]=0;
- a[1372]=0;
- a[1373]=0;
- a[1374]=0;
- a[1375]=0;
- a[1376]=0;
- a[1377]=0;
- a[1378]=0;
- a[1379]=0;
- a[1380]=0;
- a[1381]=0;
- a[1382]=0;
- a[1383]=0;
- a[1384]=0;
- a[1385]=0;
- a[1386]=0;
- a[1387]=0;
- a[1388]=0;
- a[1389]=0;
- a[1390]=0;
- a[1391]=0;
- a[1392]=0;
- a[1393]=0;
- a[1394]=0;
- a[1395]=0;
- a[1396]=0;
- a[1397]=0;
- a[1398]=0;
- a[1399]=0;
- a[1400]=0;
- a[1401]=0;
- a[1402]=0;
- a[1403]=0;
- a[1404]=0;
- a[1405]=0;
- a[1406]=0;
- a[1407]=0;
- a[1408]=0;
- a[1409]=0;
- a[1410]=0;
- a[1411]=0;
- a[1412]=0;
- a[1413]=0;
- a[1414]=0;
- a[1415]=0;
- a[1416]=0;
- a[1417]=0;
- a[1418]=0;
- a[1419]=0;
- a[1420]=0;
- a[1421]=0;
- a[1422]=0;
- a[1423]=0;
- a[1424]=0;
- a[1425]=0;
- a[1426]=0;
- a[1427]=0;
- a[1428]=0;
- a[1429]=0;
- a[1430]=0;
- a[1431]=0;
- a[1432]=0;
- a[1433]=0;
- a[1434]=0;
- a[1435]=0;
- a[1436]=0;
- a[1437]=0;
- a[1438]=0;
- a[1439]=0;
- a[1440]=0;
- a[1441]=0;
- a[1442]=0;
- a[1443]=0;
- a[1444]=0;
- a[1445]=0;
- a[1446]=0;
- a[1447]=0;
- a[1448]=0;
- a[1449]=0;
- a[1450]=0;
- a[1451]=0;
- a[1452]=0;
- a[1453]=0;
- a[1454]=0;
- a[1455]=0;
- a[1456]=0;
- a[1457]=0;
- a[1458]=0;
- a[1459]=0;
- a[1460]=0;
- a[1461]=0;
- a[1462]=0;
- a[1463]=0;
- a[1464]=0;
- a[1465]=0;
- a[1466]=0;
- a[1467]=0;
- a[1468]=0;
- a[1469]=0;
- a[1470]=0;
- a[1471]=0;
- a[1472]=0;
- a[1473]=0;
- a[1474]=0;
- a[1475]=0;
- a[1476]=0;
- a[1477]=0;
- a[1478]=0;
- a[1479]=0;
- a[1480]=0;
- a[1481]=0;
- a[1482]=0;
- a[1483]=0;
- a[1484]=0;
- a[1485]=0;
- a[1486]=0;
- a[1487]=0;
- a[1488]=0;
- a[1489]=0;
- a[1490]=0;
- a[1491]=0;
- a[1492]=0;
- a[1493]=0;
- a[1494]=0;
- a[1495]=0;
- a[1496]=0;
- a[1497]=0;
- a[1498]=0;
- a[1499]=0;
- a[1500]=0;
- a[1501]=0;
- a[1502]=0;
- a[1503]=0;
- a[1504]=0;
- a[1505]=0;
- a[1506]=0;
- a[1507]=0;
- a[1508]=0;
- a[1509]=0;
- a[1510]=0;
- a[1511]=0;
- a[1512]=0;
- a[1513]=0;
- a[1514]=0;
- a[1515]=0;
- a[1516]=0;
- a[1517]=0;
- a[1518]=0;
- a[1519]=0;
- a[1520]=0;
- a[1521]=0;
- a[1522]=0;
- a[1523]=0;
- a[1524]=0;
- a[1525]=0;
- a[1526]=0;
- a[1527]=0;
- a[1528]=0;
- a[1529]=0;
- a[1530]=0;
- a[1531]=0;
- a[1532]=0;
- a[1533]=0;
- a[1534]=0;
- a[1535]=0;
- a[1536]=0;
- a[1537]=0;
- a[1538]=0;
- a[1539]=0;
- a[1540]=0;
- a[1541]=0;
- a[1542]=0;
- a[1543]=0;
- a[1544]=0;
- a[1545]=0;
- a[1546]=0;
- a[1547]=0;
- a[1548]=0;
- a[1549]=0;
- a[1550]=0;
- a[1551]=0;
- a[1552]=0;
- a[1553]=0;
- a[1554]=0;
- a[1555]=0;
- a[1556]=0;
- a[1557]=0;
- a[1558]=0;
- a[1559]=0;
- a[1560]=0;
- a[1561]=0;
- a[1562]=0;
- a[1563]=0;
- a[1564]=0;
- a[1565]=0;
- a[1566]=0;
- a[1567]=0;
- a[1568]=0;
- a[1569]=0;
- a[1570]=0;
- a[1571]=0;
- a[1572]=0;
- a[1573]=0;
- a[1574]=0;
- a[1575]=0;
- a[1576]=0;
- a[1577]=0;
- a[1578]=0;
- a[1579]=0;
- a[1580]=0;
- a[1581]=0;
- a[1582]=0;
- a[1583]=0;
- a[1584]=0;
- a[1585]=0;
- a[1586]=0;
- a[1587]=0;
- a[1588]=0;
- a[1589]=0;
- a[1590]=0;
- a[1591]=0;
- a[1592]=0;
- a[1593]=0;
- a[1594]=0;
- a[1595]=0;
- a[1596]=0;
- a[1597]=0;
- a[1598]=0;
- a[1599]=0;
- a[1600]=0;
- a[1601]=0;
- a[1602]=0;
- a[1603]=0;
- a[1604]=0;
- a[1605]=0;
- a[1606]=0;
- a[1607]=0;
- a[1608]=0;
- a[1609]=0;
- a[1610]=0;
- a[1611]=0;
- a[1612]=0;
- a[1613]=0;
- a[1614]=0;
- a[1615]=0;
- a[1616]=0;
- a[1617]=0;
- a[1618]=0;
- a[1619]=0;
- a[1620]=0;
- a[1621]=0;
- a[1622]=0;
- a[1623]=0;
- a[1624]=0;
- a[1625]=0;
- a[1626]=0;
- a[1627]=0;
- a[1628]=0;
- a[1629]=0;
- a[1630]=0;
- a[1631]=0;
- a[1632]=0;
- a[1633]=0;
- a[1634]=0;
- a[1635]=0;
- a[1636]=0;
- a[1637]=0;
- a[1638]=0;
- a[1639]=0;
- a[1640]=0;
- a[1641]=0;
- a[1642]=0;
- a[1643]=0;
- a[1644]=0;
- a[1645]=0;
- a[1646]=0;
- a[1647]=0;
- a[1648]=0;
- a[1649]=0;
- a[1650]=0;
- a[1651]=0;
- a[1652]=0;
- a[1653]=0;
- a[1654]=0;
- a[1655]=0;
- a[1656]=0;
- a[1657]=0;
- a[1658]=0;
- a[1659]=0;
- a[1660]=0;
- a[1661]=0;
- a[1662]=0;
- a[1663]=0;
- a[1664]=0;
- a[1665]=0;
- a[1666]=0;
- a[1667]=0;
- a[1668]=0;
- a[1669]=0;
- a[1670]=0;
- a[1671]=0;
- a[1672]=0;
- a[1673]=0;
- a[1674]=0;
- a[1675]=0;
- a[1676]=0;
- a[1677]=0;
- a[1678]=0;
- a[1679]=0;
- a[1680]=0;
- a[1681]=0;
- a[1682]=0;
- a[1683]=0;
- a[1684]=0;
- a[1685]=0;
- a[1686]=0;
- a[1687]=0;
- a[1688]=0;
- a[1689]=0;
- a[1690]=0;
- a[1691]=0;
- a[1692]=0;
- a[1693]=0;
- a[1694]=0;
- a[1695]=0;
- a[1696]=0;
- a[1697]=0;
- a[1698]=0;
- a[1699]=0;
- a[1700]=0;
- a[1701]=0;
- a[1702]=0;
- a[1703]=0;
- a[1704]=0;
- a[1705]=0;
- a[1706]=0;
- a[1707]=0;
- a[1708]=0;
- a[1709]=0;
- a[1710]=0;
- a[1711]=0;
- a[1712]=0;
- a[1713]=0;
- a[1714]=0;
- a[1715]=0;
- a[1716]=0;
- a[1717]=0;
- a[1718]=0;
- a[1719]=0;
- a[1720]=0;
- a[1721]=0;
- a[1722]=0;
- a[1723]=0;
- a[1724]=0;
- a[1725]=0;
- a[1726]=0;
- a[1727]=0;
- a[1728]=0;
- a[1729]=0;
- a[1730]=0;
- a[1731]=0;
- a[1732]=0;
- a[1733]=0;
- a[1734]=0;
- a[1735]=0;
- a[1736]=0;
- a[1737]=0;
- a[1738]=0;
- a[1739]=0;
- a[1740]=0;
- a[1741]=0;
- a[1742]=0;
- a[1743]=0;
- a[1744]=0;
- a[1745]=0;
- a[1746]=0;
- a[1747]=0;
- a[1748]=0;
- a[1749]=0;
- a[1750]=0;
- a[1751]=0;
- a[1752]=0;
- a[1753]=0;
- a[1754]=0;
- a[1755]=0;
- a[1756]=0;
- a[1757]=0;
- a[1758]=0;
- a[1759]=0;
- a[1760]=0;
- a[1761]=0;
- a[1762]=0;
- a[1763]=0;
- a[1764]=0;
- a[1765]=0;
- a[1766]=0;
- a[1767]=0;
- a[1768]=0;
- a[1769]=0;
- a[1770]=0;
- a[1771]=0;
- a[1772]=0;
- a[1773]=0;
- a[1774]=0;
- a[1775]=0;
- a[1776]=0;
- a[1777]=0;
- a[1778]=0;
- a[1779]=0;
- a[1780]=0;
- a[1781]=0;
- a[1782]=0;
- a[1783]=0;
- a[1784]=0;
- a[1785]=0;
- a[1786]=0;
- a[1787]=0;
- a[1788]=0;
- a[1789]=0;
- a[1790]=0;
- a[1791]=0;
- a[1792]=0;
- a[1793]=0;
- a[1794]=0;
- a[1795]=0;
- a[1796]=0;
- a[1797]=0;
- a[1798]=0;
- a[1799]=0;
- a[1800]=0;
- a[1801]=0;
- a[1802]=0;
- a[1803]=0;
- a[1804]=0;
- a[1805]=0;
- a[1806]=0;
- a[1807]=0;
- a[1808]=0;
- a[1809]=0;
- a[1810]=0;
- a[1811]=0;
- a[1812]=0;
- a[1813]=0;
- a[1814]=0;
- a[1815]=0;
- a[1816]=0;
- a[1817]=0;
- a[1818]=0;
- a[1819]=0;
- a[1820]=0;
- a[1821]=0;
- a[1822]=0;
- a[1823]=0;
- a[1824]=0;
- a[1825]=0;
- a[1826]=0;
- a[1827]=0;
- a[1828]=0;
- a[1829]=0;
- a[1830]=0;
- a[1831]=0;
- a[1832]=0;
- a[1833]=0;
- a[1834]=0;
- a[1835]=0;
- a[1836]=0;
- a[1837]=0;
- a[1838]=0;
- a[1839]=0;
- a[1840]=0;
- a[1841]=0;
- a[1842]=0;
- a[1843]=0;
- a[1844]=0;
- a[1845]=0;
- a[1846]=0;
- a[1847]=0;
- a[1848]=0;
- a[1849]=0;
- a[1850]=0;
- a[1851]=0;
- a[1852]=0;
- a[1853]=0;
- a[1854]=0;
- a[1855]=0;
- a[1856]=0;
- a[1857]=0;
- a[1858]=0;
- a[1859]=0;
- a[1860]=0;
- a[1861]=0;
- a[1862]=0;
- a[1863]=0;
- a[1864]=0;
- a[1865]=0;
- a[1866]=0;
- a[1867]=0;
- a[1868]=0;
- a[1869]=0;
- a[1870]=0;
- a[1871]=0;
- a[1872]=0;
- a[1873]=0;
- a[1874]=0;
- a[1875]=0;
- a[1876]=0;
- a[1877]=0;
- a[1878]=0;
- a[1879]=0;
- a[1880]=0;
- a[1881]=0;
- a[1882]=0;
- a[1883]=0;
- a[1884]=0;
- a[1885]=0;
- a[1886]=0;
- a[1887]=0;
- a[1888]=0;
- a[1889]=0;
- a[1890]=0;
- a[1891]=0;
- a[1892]=0;
- a[1893]=0;
- a[1894]=0;
- a[1895]=0;
- a[1896]=0;
- a[1897]=0;
- a[1898]=0;
- a[1899]=0;
- a[1900]=0;
- a[1901]=0;
- a[1902]=0;
- a[1903]=0;
- a[1904]=0;
- a[1905]=0;
- a[1906]=0;
- a[1907]=0;
- a[1908]=0;
- a[1909]=0;
- a[1910]=0;
- a[1911]=0;
- a[1912]=0;
- a[1913]=0;
- a[1914]=0;
- a[1915]=0;
- a[1916]=0;
- a[1917]=0;
- a[1918]=0;
- a[1919]=0;
- a[1920]=0;
- a[1921]=0;
- a[1922]=0;
- a[1923]=0;
- a[1924]=0;
- a[1925]=0;
- a[1926]=0;
- a[1927]=0;
- a[1928]=0;
- a[1929]=0;
- a[1930]=0;
- a[1931]=0;
- a[1932]=0;
- a[1933]=0;
- a[1934]=0;
- a[1935]=0;
- a[1936]=0;
- a[1937]=0;
- a[1938]=0;
- a[1939]=0;
- a[1940]=0;
- a[1941]=0;
- a[1942]=0;
- a[1943]=0;
- a[1944]=0;
- a[1945]=0;
- a[1946]=0;
- a[1947]=0;
- a[1948]=0;
- a[1949]=0;
- a[1950]=0;
- a[1951]=0;
- a[1952]=0;
- a[1953]=0;
- a[1954]=0;
- a[1955]=0;
- a[1956]=0;
- a[1957]=0;
- a[1958]=0;
- a[1959]=0;
- a[1960]=0;
- a[1961]=0;
- a[1962]=0;
- a[1963]=0;
- a[1964]=0;
- a[1965]=0;
- a[1966]=0;
- a[1967]=0;
- a[1968]=0;
- a[1969]=0;
- a[1970]=0;
- a[1971]=0;
- a[1972]=0;
- a[1973]=0;
- a[1974]=0;
- a[1975]=0;
- a[1976]=0;
- a[1977]=0;
- a[1978]=0;
- a[1979]=0;
- a[1980]=0;
- a[1981]=0;
- a[1982]=0;
- a[1983]=0;
- a[1984]=0;
- a[1985]=0;
- a[1986]=0;
- a[1987]=0;
- a[1988]=0;
- a[1989]=0;
- a[1990]=0;
- a[1991]=0;
- a[1992]=0;
- a[1993]=0;
- a[1994]=0;
- a[1995]=0;
- a[1996]=0;
- a[1997]=0;
- a[1998]=0;
- a[1999]=0;
- a[2000]=0;
- a[2001]=0;
- a[2002]=0;
- a[2003]=0;
- a[2004]=0;
- a[2005]=0;
- a[2006]=0;
- a[2007]=0;
- a[2008]=0;
- a[2009]=0;
- a[2010]=0;
- a[2011]=0;
- a[2012]=0;
- a[2013]=0;
- a[2014]=0;
- a[2015]=0;
- a[2016]=0;
- a[2017]=0;
- a[2018]=0;
- a[2019]=0;
- a[2020]=0;
- a[2021]=0;
- a[2022]=0;
- a[2023]=0;
- a[2024]=0;
- a[2025]=0;
- a[2026]=0;
- a[2027]=0;
- a[2028]=0;
- a[2029]=0;
- a[2030]=0;
- a[2031]=0;
- a[2032]=0;
- a[2033]=0;
- a[2034]=0;
- a[2035]=0;
- a[2036]=0;
- a[2037]=0;
- a[2038]=0;
- a[2039]=0;
- a[2040]=0;
- a[2041]=0;
- a[2042]=0;
- a[2043]=0;
- a[2044]=0;
- a[2045]=0;
- a[2046]=0;
- a[2047]=0;
- a[2048]=0;
- a[2049]=0;
- a[2050]=0;
- a[2051]=0;
- a[2052]=0;
- a[2053]=0;
- a[2054]=0;
- a[2055]=0;
- a[2056]=0;
- a[2057]=0;
- a[2058]=0;
- a[2059]=0;
- a[2060]=0;
- a[2061]=0;
- a[2062]=0;
- a[2063]=0;
- a[2064]=0;
- a[2065]=0;
- a[2066]=0;
- a[2067]=0;
- a[2068]=0;
- a[2069]=0;
- a[2070]=0;
- a[2071]=0;
- a[2072]=0;
- a[2073]=0;
- a[2074]=0;
- a[2075]=0;
- a[2076]=0;
- a[2077]=0;
- a[2078]=0;
- a[2079]=0;
- a[2080]=0;
- a[2081]=0;
- a[2082]=0;
- a[2083]=0;
- a[2084]=0;
- a[2085]=0;
- a[2086]=0;
- a[2087]=0;
- a[2088]=0;
- a[2089]=0;
- a[2090]=0;
- a[2091]=0;
- a[2092]=0;
- a[2093]=0;
- a[2094]=0;
- a[2095]=0;
- a[2096]=0;
- a[2097]=0;
- a[2098]=0;
- a[2099]=0;
- a[2100]=0;
- a[2101]=0;
- a[2102]=0;
- a[2103]=0;
- a[2104]=0;
- a[2105]=0;
- a[2106]=0;
- a[2107]=0;
- a[2108]=0;
- a[2109]=0;
- a[2110]=0;
- a[2111]=0;
- a[2112]=0;
- a[2113]=0;
- a[2114]=0;
- a[2115]=0;
- a[2116]=0;
- a[2117]=0;
- a[2118]=0;
- a[2119]=0;
- a[2120]=0;
- a[2121]=0;
- a[2122]=0;
- a[2123]=0;
- a[2124]=0;
- a[2125]=0;
- a[2126]=0;
- a[2127]=0;
- a[2128]=0;
- a[2129]=0;
- a[2130]=0;
- a[2131]=0;
- a[2132]=0;
- a[2133]=0;
- a[2134]=0;
- a[2135]=0;
- a[2136]=0;
- a[2137]=0;
- a[2138]=0;
- a[2139]=0;
- a[2140]=0;
- a[2141]=0;
- a[2142]=0;
- a[2143]=0;
- a[2144]=0;
- a[2145]=0;
- a[2146]=0;
- a[2147]=0;
- a[2148]=0;
- a[2149]=0;
- a[2150]=0;
- a[2151]=0;
- a[2152]=0;
- a[2153]=0;
- a[2154]=0;
- a[2155]=0;
- a[2156]=0;
- a[2157]=0;
- a[2158]=0;
- a[2159]=0;
- a[2160]=0;
- a[2161]=0;
- a[2162]=0;
- a[2163]=0;
- a[2164]=0;
- a[2165]=0;
- a[2166]=0;
- a[2167]=0;
- a[2168]=0;
- a[2169]=0;
- a[2170]=0;
- a[2171]=0;
- a[2172]=0;
- a[2173]=0;
- a[2174]=0;
- a[2175]=0;
- a[2176]=0;
- a[2177]=0;
- a[2178]=0;
- a[2179]=0;
- a[2180]=0;
- a[2181]=0;
- a[2182]=0;
- a[2183]=0;
- a[2184]=0;
- a[2185]=0;
- a[2186]=0;
- a[2187]=0;
- a[2188]=0;
- a[2189]=0;
- a[2190]=0;
- a[2191]=0;
- a[2192]=0;
- a[2193]=0;
- a[2194]=0;
- a[2195]=0;
- a[2196]=0;
- a[2197]=0;
- a[2198]=0;
- a[2199]=0;
- a[2200]=0;
- a[2201]=0;
- a[2202]=0;
- a[2203]=0;
- a[2204]=0;
- a[2205]=0;
- a[2206]=0;
- a[2207]=0;
- a[2208]=0;
- a[2209]=0;
- a[2210]=0;
- a[2211]=0;
- a[2212]=0;
- a[2213]=0;
- a[2214]=0;
- a[2215]=0;
- a[2216]=0;
- a[2217]=0;
- a[2218]=0;
- a[2219]=0;
- a[2220]=0;
- a[2221]=0;
- a[2222]=0;
- a[2223]=0;
- a[2224]=0;
- a[2225]=0;
- a[2226]=0;
- a[2227]=0;
- a[2228]=0;
- a[2229]=0;
- a[2230]=0;
- a[2231]=0;
- a[2232]=0;
- a[2233]=0;
- a[2234]=0;
- a[2235]=0;
- a[2236]=0;
- a[2237]=0;
- a[2238]=0;
- a[2239]=0;
- a[2240]=0;
- a[2241]=0;
- a[2242]=0;
- a[2243]=0;
- a[2244]=0;
- a[2245]=0;
- a[2246]=0;
- a[2247]=0;
- a[2248]=0;
- a[2249]=0;
- a[2250]=0;
- a[2251]=0;
- a[2252]=0;
- a[2253]=0;
- a[2254]=0;
- a[2255]=0;
- a[2256]=0;
- a[2257]=0;
- a[2258]=0;
- a[2259]=0;
- a[2260]=0;
- a[2261]=0;
- a[2262]=0;
- a[2263]=0;
- a[2264]=0;
- a[2265]=0;
- a[2266]=0;
- a[2267]=0;
- a[2268]=0;
- a[2269]=0;
- a[2270]=0;
- a[2271]=0;
- a[2272]=0;
- a[2273]=0;
- a[2274]=0;
- a[2275]=0;
- a[2276]=0;
- a[2277]=0;
- a[2278]=0;
- a[2279]=0;
- a[2280]=0;
- a[2281]=0;
- a[2282]=0;
- a[2283]=0;
- a[2284]=0;
- a[2285]=0;
- a[2286]=0;
- a[2287]=0;
- a[2288]=0;
- a[2289]=0;
- a[2290]=0;
- a[2291]=0;
- a[2292]=0;
- a[2293]=0;
- a[2294]=0;
- a[2295]=0;
- a[2296]=0;
- a[2297]=0;
- a[2298]=0;
- a[2299]=0;
- a[2300]=0;
- a[2301]=0;
- a[2302]=0;
- a[2303]=0;
- a[2304]=0;
- a[2305]=0;
- a[2306]=0;
- a[2307]=0;
- a[2308]=0;
- a[2309]=0;
- a[2310]=0;
- a[2311]=0;
- a[2312]=0;
- a[2313]=0;
- a[2314]=0;
- a[2315]=0;
- a[2316]=0;
- a[2317]=0;
- a[2318]=0;
- a[2319]=0;
- a[2320]=0;
- a[2321]=0;
- a[2322]=0;
- a[2323]=0;
- a[2324]=0;
- a[2325]=0;
- a[2326]=0;
- a[2327]=0;
- a[2328]=0;
- a[2329]=0;
- a[2330]=0;
- a[2331]=0;
- a[2332]=0;
- a[2333]=0;
- a[2334]=0;
- a[2335]=0;
- a[2336]=0;
- a[2337]=0;
- a[2338]=0;
- a[2339]=0;
- a[2340]=0;
- a[2341]=0;
- a[2342]=0;
- a[2343]=0;
- a[2344]=0;
- a[2345]=0;
- a[2346]=0;
- a[2347]=0;
- a[2348]=0;
- a[2349]=0;
- a[2350]=0;
- a[2351]=0;
- a[2352]=0;
- a[2353]=0;
- a[2354]=0;
- a[2355]=0;
- a[2356]=0;
- a[2357]=0;
- a[2358]=0;
- a[2359]=0;
- a[2360]=0;
- a[2361]=0;
- a[2362]=0;
- a[2363]=0;
- a[2364]=0;
- a[2365]=0;
- a[2366]=0;
- a[2367]=0;
- a[2368]=0;
- a[2369]=0;
- a[2370]=0;
- a[2371]=0;
- a[2372]=0;
- a[2373]=0;
- a[2374]=0;
- a[2375]=0;
- a[2376]=0;
- a[2377]=0;
- a[2378]=0;
- a[2379]=0;
- a[2380]=0;
- a[2381]=0;
- a[2382]=0;
- a[2383]=0;
- a[2384]=0;
- a[2385]=0;
- a[2386]=0;
- a[2387]=0;
- a[2388]=0;
- a[2389]=0;
- a[2390]=0;
- a[2391]=0;
- a[2392]=0;
- a[2393]=0;
- a[2394]=0;
- a[2395]=0;
- a[2396]=0;
- a[2397]=0;
- a[2398]=0;
- a[2399]=0;
- a[2400]=0;
- a[2401]=0;
- a[2402]=0;
- a[2403]=0;
- a[2404]=0;
- a[2405]=0;
- a[2406]=0;
- a[2407]=0;
- a[2408]=0;
- a[2409]=0;
- a[2410]=0;
- a[2411]=0;
- a[2412]=0;
- a[2413]=0;
- a[2414]=0;
- a[2415]=0;
- a[2416]=0;
- a[2417]=0;
- a[2418]=0;
- a[2419]=0;
- a[2420]=0;
- a[2421]=0;
- a[2422]=0;
- a[2423]=0;
- a[2424]=0;
- a[2425]=0;
- a[2426]=0;
- a[2427]=0;
- a[2428]=0;
- a[2429]=0;
- a[2430]=0;
- a[2431]=0;
- a[2432]=0;
- a[2433]=0;
- a[2434]=0;
- a[2435]=0;
- a[2436]=0;
- a[2437]=0;
- a[2438]=0;
- a[2439]=0;
- a[2440]=0;
- a[2441]=0;
- a[2442]=0;
- a[2443]=0;
- a[2444]=0;
- a[2445]=0;
- a[2446]=0;
- a[2447]=0;
- a[2448]=0;
- a[2449]=0;
- a[2450]=0;
- a[2451]=0;
- a[2452]=0;
- a[2453]=0;
- a[2454]=0;
- a[2455]=0;
- a[2456]=0;
- a[2457]=0;
- a[2458]=0;
- a[2459]=0;
- a[2460]=0;
- a[2461]=0;
- a[2462]=0;
- a[2463]=0;
- a[2464]=0;
- a[2465]=0;
- a[2466]=0;
- a[2467]=0;
- a[2468]=0;
- a[2469]=0;
- a[2470]=0;
- a[2471]=0;
- a[2472]=0;
- a[2473]=0;
- a[2474]=0;
- a[2475]=0;
- a[2476]=0;
- a[2477]=0;
- a[2478]=0;
- a[2479]=0;
- a[2480]=0;
- a[2481]=0;
- a[2482]=0;
- a[2483]=0;
- a[2484]=0;
- a[2485]=0;
- a[2486]=0;
- a[2487]=0;
- a[2488]=0;
- a[2489]=0;
- a[2490]=0;
- a[2491]=0;
- a[2492]=0;
- a[2493]=0;
- a[2494]=0;
- a[2495]=0;
- a[2496]=0;
- a[2497]=0;
- a[2498]=0;
- a[2499]=0;
- a[2500]=0;
- a[2501]=0;
- a[2502]=0;
- a[2503]=0;
- a[2504]=0;
- a[2505]=0;
- a[2506]=0;
- a[2507]=0;
- a[2508]=0;
- a[2509]=0;
- a[2510]=0;
- a[2511]=0;
- a[2512]=0;
- a[2513]=0;
- a[2514]=0;
- a[2515]=0;
- a[2516]=0;
- a[2517]=0;
- a[2518]=0;
- a[2519]=0;
- a[2520]=0;
- a[2521]=0;
- a[2522]=0;
- a[2523]=0;
- a[2524]=0;
- a[2525]=0;
- a[2526]=0;
- a[2527]=0;
- a[2528]=0;
- a[2529]=0;
- a[2530]=0;
- a[2531]=0;
- a[2532]=0;
- a[2533]=0;
- a[2534]=0;
- a[2535]=0;
- a[2536]=0;
- a[2537]=0;
- a[2538]=0;
- a[2539]=0;
- a[2540]=0;
- a[2541]=0;
- a[2542]=0;
- a[2543]=0;
- a[2544]=0;
- a[2545]=0;
- a[2546]=0;
- a[2547]=0;
- a[2548]=0;
- a[2549]=0;
- a[2550]=0;
- a[2551]=0;
- a[2552]=0;
- a[2553]=0;
- a[2554]=0;
- a[2555]=0;
- a[2556]=0;
- a[2557]=0;
- a[2558]=0;
- a[2559]=0;
- a[2560]=0;
- a[2561]=0;
- a[2562]=0;
- a[2563]=0;
- a[2564]=0;
- a[2565]=0;
- a[2566]=0;
- a[2567]=0;
- a[2568]=0;
- a[2569]=0;
- a[2570]=0;
- a[2571]=0;
- a[2572]=0;
- a[2573]=0;
- a[2574]=0;
- a[2575]=0;
- a[2576]=0;
- a[2577]=0;
- a[2578]=0;
- a[2579]=0;
- a[2580]=0;
- a[2581]=0;
- a[2582]=0;
- a[2583]=0;
- a[2584]=0;
- a[2585]=0;
- a[2586]=0;
- a[2587]=0;
- a[2588]=0;
- a[2589]=0;
- a[2590]=0;
- a[2591]=0;
- a[2592]=0;
- a[2593]=0;
- a[2594]=0;
- a[2595]=0;
- a[2596]=0;
- a[2597]=0;
- a[2598]=0;
- a[2599]=0;
- a[2600]=0;
- a[2601]=0;
- a[2602]=0;
- a[2603]=0;
- a[2604]=0;
- a[2605]=0;
- a[2606]=0;
- a[2607]=0;
- a[2608]=0;
- a[2609]=0;
- a[2610]=0;
- a[2611]=0;
- a[2612]=0;
- a[2613]=0;
- a[2614]=0;
- a[2615]=0;
- a[2616]=0;
- a[2617]=0;
- a[2618]=0;
- a[2619]=0;
- a[2620]=0;
- a[2621]=0;
- a[2622]=0;
- a[2623]=0;
- a[2624]=0;
- a[2625]=0;
- a[2626]=0;
- a[2627]=0;
- a[2628]=0;
- a[2629]=0;
- a[2630]=0;
- a[2631]=0;
- a[2632]=0;
- a[2633]=0;
- a[2634]=0;
- a[2635]=0;
- a[2636]=0;
- a[2637]=0;
- a[2638]=0;
- a[2639]=0;
- a[2640]=0;
- a[2641]=0;
- a[2642]=0;
- a[2643]=0;
- a[2644]=0;
- a[2645]=0;
- a[2646]=0;
- a[2647]=0;
- a[2648]=0;
- a[2649]=0;
- a[2650]=0;
- a[2651]=0;
- a[2652]=0;
- a[2653]=0;
- a[2654]=0;
- a[2655]=0;
- a[2656]=0;
- a[2657]=0;
- a[2658]=0;
- a[2659]=0;
- a[2660]=0;
- a[2661]=0;
- a[2662]=0;
- a[2663]=0;
- a[2664]=0;
- a[2665]=0;
- a[2666]=0;
- a[2667]=0;
- a[2668]=0;
- a[2669]=0;
- a[2670]=0;
- a[2671]=0;
- a[2672]=0;
- a[2673]=0;
- a[2674]=0;
- a[2675]=0;
- a[2676]=0;
- a[2677]=0;
- a[2678]=0;
- a[2679]=0;
- a[2680]=0;
- a[2681]=0;
- a[2682]=0;
- a[2683]=0;
- a[2684]=0;
- a[2685]=0;
- a[2686]=0;
- a[2687]=0;
- a[2688]=0;
- a[2689]=0;
- a[2690]=0;
- a[2691]=0;
- a[2692]=0;
- a[2693]=0;
- a[2694]=0;
- a[2695]=0;
- a[2696]=0;
- a[2697]=0;
- a[2698]=0;
- a[2699]=0;
- a[2700]=0;
- a[2701]=0;
- a[2702]=0;
- a[2703]=0;
- a[2704]=0;
- a[2705]=0;
- a[2706]=0;
- a[2707]=0;
- a[2708]=0;
- a[2709]=0;
- a[2710]=0;
- a[2711]=0;
- a[2712]=0;
- a[2713]=0;
- a[2714]=0;
- a[2715]=0;
- a[2716]=0;
- a[2717]=0;
- a[2718]=0;
- a[2719]=0;
- a[2720]=0;
- a[2721]=0;
- a[2722]=0;
- a[2723]=0;
- a[2724]=0;
- a[2725]=0;
- a[2726]=0;
- a[2727]=0;
- a[2728]=0;
- a[2729]=0;
- a[2730]=0;
- a[2731]=0;
- a[2732]=0;
- a[2733]=0;
- a[2734]=0;
- a[2735]=0;
- a[2736]=0;
- a[2737]=0;
- a[2738]=0;
- a[2739]=0;
- a[2740]=0;
- a[2741]=0;
- a[2742]=0;
- a[2743]=0;
- a[2744]=0;
- a[2745]=0;
- a[2746]=0;
- a[2747]=0;
- a[2748]=0;
- a[2749]=0;
- a[2750]=0;
- a[2751]=0;
- a[2752]=0;
- a[2753]=0;
- a[2754]=0;
- a[2755]=0;
- a[2756]=0;
- a[2757]=0;
- a[2758]=0;
- a[2759]=0;
- a[2760]=0;
- a[2761]=0;
- a[2762]=0;
- a[2763]=0;
- a[2764]=0;
- a[2765]=0;
- a[2766]=0;
- a[2767]=0;
- a[2768]=0;
- a[2769]=0;
- a[2770]=0;
- a[2771]=0;
- a[2772]=0;
- a[2773]=0;
- a[2774]=0;
- a[2775]=0;
- a[2776]=0;
- a[2777]=0;
- a[2778]=0;
- a[2779]=0;
- a[2780]=0;
- a[2781]=0;
- a[2782]=0;
- a[2783]=0;
- a[2784]=0;
- a[2785]=0;
- a[2786]=0;
- a[2787]=0;
- a[2788]=0;
- a[2789]=0;
- a[2790]=0;
- a[2791]=0;
- a[2792]=0;
- a[2793]=0;
- a[2794]=0;
- a[2795]=0;
- a[2796]=0;
- a[2797]=0;
- a[2798]=0;
- a[2799]=0;
- a[2800]=0;
- a[2801]=0;
- a[2802]=0;
- a[2803]=0;
- a[2804]=0;
- a[2805]=0;
- a[2806]=0;
- a[2807]=0;
- a[2808]=0;
- a[2809]=0;
- a[2810]=0;
- a[2811]=0;
- a[2812]=0;
- a[2813]=0;
- a[2814]=0;
- a[2815]=0;
- a[2816]=0;
- a[2817]=0;
- a[2818]=0;
- a[2819]=0;
- a[2820]=0;
- a[2821]=0;
- a[2822]=0;
- a[2823]=0;
- a[2824]=0;
- a[2825]=0;
- a[2826]=0;
- a[2827]=0;
- a[2828]=0;
- a[2829]=0;
- a[2830]=0;
- a[2831]=0;
- a[2832]=0;
- a[2833]=0;
- a[2834]=0;
- a[2835]=0;
- a[2836]=0;
- a[2837]=0;
- a[2838]=0;
- a[2839]=0;
- a[2840]=0;
- a[2841]=0;
- a[2842]=0;
- a[2843]=0;
- a[2844]=0;
- a[2845]=0;
- a[2846]=0;
- a[2847]=0;
- a[2848]=0;
- a[2849]=0;
- a[2850]=0;
- a[2851]=0;
- a[2852]=0;
- a[2853]=0;
- a[2854]=0;
- a[2855]=0;
- a[2856]=0;
- a[2857]=0;
- a[2858]=0;
- a[2859]=0;
- a[2860]=0;
- a[2861]=0;
- a[2862]=0;
- a[2863]=0;
- a[2864]=0;
- a[2865]=0;
- a[2866]=0;
- a[2867]=0;
- a[2868]=0;
- a[2869]=0;
- a[2870]=0;
- a[2871]=0;
- a[2872]=0;
- a[2873]=0;
- a[2874]=0;
- a[2875]=0;
- a[2876]=0;
- a[2877]=0;
- a[2878]=0;
- a[2879]=0;
- a[2880]=0;
- a[2881]=0;
- a[2882]=0;
- a[2883]=0;
- a[2884]=0;
- a[2885]=0;
- a[2886]=0;
- a[2887]=0;
- a[2888]=0;
- a[2889]=0;
- a[2890]=0;
- a[2891]=0;
- a[2892]=0;
- a[2893]=0;
- a[2894]=0;
- a[2895]=0;
- a[2896]=0;
- a[2897]=0;
- a[2898]=0;
- a[2899]=0;
- a[2900]=0;
- a[2901]=0;
- a[2902]=0;
- a[2903]=0;
- a[2904]=0;
- a[2905]=0;
- a[2906]=0;
- a[2907]=0;
- a[2908]=0;
- a[2909]=0;
- a[2910]=0;
- a[2911]=0;
- a[2912]=0;
- a[2913]=0;
- a[2914]=0;
- a[2915]=0;
- a[2916]=0;
- a[2917]=0;
- a[2918]=0;
- a[2919]=0;
- a[2920]=0;
- a[2921]=0;
- a[2922]=0;
- a[2923]=0;
- a[2924]=0;
- a[2925]=0;
- a[2926]=0;
- a[2927]=0;
- a[2928]=0;
- a[2929]=0;
- a[2930]=0;
- a[2931]=0;
- a[2932]=0;
- a[2933]=0;
- a[2934]=0;
- a[2935]=0;
- a[2936]=0;
- a[2937]=0;
- a[2938]=0;
- a[2939]=0;
- a[2940]=0;
- a[2941]=0;
- a[2942]=0;
- a[2943]=0;
- a[2944]=0;
- a[2945]=0;
- a[2946]=0;
- a[2947]=0;
- a[2948]=0;
- a[2949]=0;
- a[2950]=0;
- a[2951]=0;
- a[2952]=0;
- a[2953]=0;
- a[2954]=0;
- a[2955]=0;
- a[2956]=0;
- a[2957]=0;
- a[2958]=0;
- a[2959]=0;
- a[2960]=0;
- a[2961]=0;
- a[2962]=0;
- a[2963]=0;
- a[2964]=0;
- a[2965]=0;
- a[2966]=0;
- a[2967]=0;
- a[2968]=0;
- a[2969]=0;
- a[2970]=0;
- a[2971]=0;
- a[2972]=0;
- a[2973]=0;
- a[2974]=0;
- a[2975]=0;
- a[2976]=0;
- a[2977]=0;
- a[2978]=0;
- a[2979]=0;
- a[2980]=0;
- a[2981]=0;
- a[2982]=0;
- a[2983]=0;
- a[2984]=0;
- a[2985]=0;
- a[2986]=0;
- a[2987]=0;
- a[2988]=0;
- a[2989]=0;
- a[2990]=0;
- a[2991]=0;
- a[2992]=0;
- a[2993]=0;
- a[2994]=0;
- a[2995]=0;
- a[2996]=0;
- a[2997]=0;
- a[2998]=0;
- a[2999]=0;
- a[3000]=0;
- a[3001]=0;
- a[3002]=0;
- a[3003]=0;
- a[3004]=0;
- a[3005]=0;
- a[3006]=0;
- a[3007]=0;
- a[3008]=0;
- a[3009]=0;
- a[3010]=0;
- a[3011]=0;
- a[3012]=0;
- a[3013]=0;
- a[3014]=0;
- a[3015]=0;
- a[3016]=0;
- a[3017]=0;
- a[3018]=0;
- a[3019]=0;
- a[3020]=0;
- a[3021]=0;
- a[3022]=0;
- a[3023]=0;
- a[3024]=0;
- a[3025]=0;
- a[3026]=0;
- a[3027]=0;
- a[3028]=0;
- a[3029]=0;
- a[3030]=0;
- a[3031]=0;
- a[3032]=0;
- a[3033]=0;
- a[3034]=0;
- a[3035]=0;
- a[3036]=0;
- a[3037]=0;
- a[3038]=0;
- a[3039]=0;
- a[3040]=0;
- a[3041]=0;
- a[3042]=0;
- a[3043]=0;
- a[3044]=0;
- a[3045]=0;
- a[3046]=0;
- a[3047]=0;
- a[3048]=0;
- a[3049]=0;
- a[3050]=0;
- a[3051]=0;
- a[3052]=0;
- a[3053]=0;
- a[3054]=0;
- a[3055]=0;
- a[3056]=0;
- a[3057]=0;
- a[3058]=0;
- a[3059]=0;
- a[3060]=0;
- a[3061]=0;
- a[3062]=0;
- a[3063]=0;
- a[3064]=0;
- a[3065]=0;
- a[3066]=0;
- a[3067]=0;
- a[3068]=0;
- a[3069]=0;
- a[3070]=0;
- a[3071]=0;
- a[3072]=0;
- a[3073]=0;
- a[3074]=0;
- a[3075]=0;
- a[3076]=0;
- a[3077]=0;
- a[3078]=0;
- a[3079]=0;
- a[3080]=0;
- a[3081]=0;
- a[3082]=0;
- a[3083]=0;
- a[3084]=0;
- a[3085]=0;
- a[3086]=0;
- a[3087]=0;
- a[3088]=0;
- a[3089]=0;
- a[3090]=0;
- a[3091]=0;
- a[3092]=0;
- a[3093]=0;
- a[3094]=0;
- a[3095]=0;
- a[3096]=0;
- a[3097]=0;
- a[3098]=0;
- a[3099]=0;
- a[3100]=0;
- a[3101]=0;
- a[3102]=0;
- a[3103]=0;
- a[3104]=0;
- a[3105]=0;
- a[3106]=0;
- a[3107]=0;
- a[3108]=0;
- a[3109]=0;
- a[3110]=0;
- a[3111]=0;
- a[3112]=0;
- a[3113]=0;
- a[3114]=0;
- a[3115]=0;
- a[3116]=0;
- a[3117]=0;
- a[3118]=0;
- a[3119]=0;
- a[3120]=0;
- a[3121]=0;
- a[3122]=0;
- a[3123]=0;
- a[3124]=0;
- a[3125]=0;
- a[3126]=0;
- a[3127]=0;
- a[3128]=0;
- a[3129]=0;
- a[3130]=0;
- a[3131]=0;
- a[3132]=0;
- a[3133]=0;
- a[3134]=0;
- a[3135]=0;
- a[3136]=0;
- a[3137]=0;
- a[3138]=0;
- a[3139]=0;
- a[3140]=0;
- a[3141]=0;
- a[3142]=0;
- a[3143]=0;
- a[3144]=0;
- a[3145]=0;
- a[3146]=0;
- a[3147]=0;
- a[3148]=0;
- a[3149]=0;
- a[3150]=0;
- a[3151]=0;
- a[3152]=0;
- a[3153]=0;
- a[3154]=0;
- a[3155]=0;
- a[3156]=0;
- a[3157]=0;
- a[3158]=0;
- a[3159]=0;
- a[3160]=0;
- a[3161]=0;
- a[3162]=0;
- a[3163]=0;
- a[3164]=0;
- a[3165]=0;
- a[3166]=0;
- a[3167]=0;
- a[3168]=0;
- a[3169]=0;
- a[3170]=0;
- a[3171]=0;
- a[3172]=0;
- a[3173]=0;
- a[3174]=0;
- a[3175]=0;
- a[3176]=0;
- a[3177]=0;
- a[3178]=0;
- a[3179]=0;
- a[3180]=0;
- a[3181]=0;
- a[3182]=0;
- a[3183]=0;
- a[3184]=0;
- a[3185]=0;
- a[3186]=0;
- a[3187]=0;
- a[3188]=0;
- a[3189]=0;
- a[3190]=0;
- a[3191]=0;
- a[3192]=0;
- a[3193]=0;
- a[3194]=0;
- a[3195]=0;
- a[3196]=0;
- a[3197]=0;
- a[3198]=0;
- a[3199]=0;
- a[3200]=0;
- a[3201]=0;
- a[3202]=0;
- a[3203]=0;
- a[3204]=0;
- a[3205]=0;
- a[3206]=0;
- a[3207]=0;
- a[3208]=0;
- a[3209]=0;
- a[3210]=0;
- a[3211]=0;
- a[3212]=0;
- a[3213]=0;
- a[3214]=0;
- a[3215]=0;
- a[3216]=0;
- a[3217]=0;
- a[3218]=0;
- a[3219]=0;
- a[3220]=0;
- a[3221]=0;
- a[3222]=0;
- a[3223]=0;
- a[3224]=0;
- a[3225]=0;
- a[3226]=0;
- a[3227]=0;
- a[3228]=0;
- a[3229]=0;
- a[3230]=0;
- a[3231]=0;
- a[3232]=0;
- a[3233]=0;
- a[3234]=0;
- a[3235]=0;
- a[3236]=0;
- a[3237]=0;
- a[3238]=0;
- a[3239]=0;
- a[3240]=0;
- a[3241]=0;
- a[3242]=0;
- a[3243]=0;
- a[3244]=0;
- a[3245]=0;
- a[3246]=0;
- a[3247]=0;
- a[3248]=0;
- a[3249]=0;
- a[3250]=0;
- a[3251]=0;
- a[3252]=0;
- a[3253]=0;
- a[3254]=0;
- a[3255]=0;
- a[3256]=0;
- a[3257]=0;
- a[3258]=0;
- a[3259]=0;
- a[3260]=0;
- a[3261]=0;
- a[3262]=0;
- a[3263]=0;
- a[3264]=0;
- a[3265]=0;
- a[3266]=0;
- a[3267]=0;
- a[3268]=0;
- a[3269]=0;
- a[3270]=0;
- a[3271]=0;
- a[3272]=0;
- a[3273]=0;
- a[3274]=0;
- a[3275]=0;
- a[3276]=0;
- a[3277]=0;
- a[3278]=0;
- a[3279]=0;
- a[3280]=0;
- a[3281]=0;
- a[3282]=0;
- a[3283]=0;
- a[3284]=0;
- a[3285]=0;
- a[3286]=0;
- a[3287]=0;
- a[3288]=0;
- a[3289]=0;
- a[3290]=0;
- a[3291]=0;
- a[3292]=0;
- a[3293]=0;
- a[3294]=0;
- a[3295]=0;
- a[3296]=0;
- a[3297]=0;
- a[3298]=0;
- a[3299]=0;
- a[3300]=0;
- a[3301]=0;
- a[3302]=0;
- a[3303]=0;
- a[3304]=0;
- a[3305]=0;
- a[3306]=0;
- a[3307]=0;
- a[3308]=0;
- a[3309]=0;
- a[3310]=0;
- a[3311]=0;
- a[3312]=0;
- a[3313]=0;
- a[3314]=0;
- a[3315]=0;
- a[3316]=0;
- a[3317]=0;
- a[3318]=0;
- a[3319]=0;
- a[3320]=0;
- a[3321]=0;
- a[3322]=0;
- a[3323]=0;
- a[3324]=0;
- a[3325]=0;
- a[3326]=0;
- a[3327]=0;
- a[3328]=0;
- a[3329]=0;
- a[3330]=0;
- a[3331]=0;
- a[3332]=0;
- a[3333]=0;
- a[3334]=0;
- a[3335]=0;
- a[3336]=0;
- a[3337]=0;
- a[3338]=0;
- a[3339]=0;
- a[3340]=0;
- a[3341]=0;
- a[3342]=0;
- a[3343]=0;
- a[3344]=0;
- a[3345]=0;
- a[3346]=0;
- a[3347]=0;
- a[3348]=0;
- a[3349]=0;
- a[3350]=0;
- a[3351]=0;
- a[3352]=0;
- a[3353]=0;
- a[3354]=0;
- a[3355]=0;
- a[3356]=0;
- a[3357]=0;
- a[3358]=0;
- a[3359]=0;
- a[3360]=0;
- a[3361]=0;
- a[3362]=0;
- a[3363]=0;
- a[3364]=0;
- a[3365]=0;
- a[3366]=0;
- a[3367]=0;
- a[3368]=0;
- a[3369]=0;
- a[3370]=0;
- a[3371]=0;
- a[3372]=0;
- a[3373]=0;
- a[3374]=0;
- a[3375]=0;
- a[3376]=0;
- a[3377]=0;
- a[3378]=0;
- a[3379]=0;
- a[3380]=0;
- a[3381]=0;
- a[3382]=0;
- a[3383]=0;
- a[3384]=0;
- a[3385]=0;
- a[3386]=0;
- a[3387]=0;
- a[3388]=0;
- a[3389]=0;
- a[3390]=0;
- a[3391]=0;
- a[3392]=0;
- a[3393]=0;
- a[3394]=0;
- a[3395]=0;
- a[3396]=0;
- a[3397]=0;
- a[3398]=0;
- a[3399]=0;
- a[3400]=0;
- a[3401]=0;
- a[3402]=0;
- a[3403]=0;
- a[3404]=0;
- a[3405]=0;
- a[3406]=0;
- a[3407]=0;
- a[3408]=0;
- a[3409]=0;
- a[3410]=0;
- a[3411]=0;
- a[3412]=0;
- a[3413]=0;
- a[3414]=0;
- a[3415]=0;
- a[3416]=0;
- a[3417]=0;
- a[3418]=0;
- a[3419]=0;
- a[3420]=0;
- a[3421]=0;
- a[3422]=0;
- a[3423]=0;
- a[3424]=0;
- a[3425]=0;
- a[3426]=0;
- a[3427]=0;
- a[3428]=0;
- a[3429]=0;
- a[3430]=0;
- a[3431]=0;
- a[3432]=0;
- a[3433]=0;
- a[3434]=0;
- a[3435]=0;
- a[3436]=0;
- a[3437]=0;
- a[3438]=0;
- a[3439]=0;
- a[3440]=0;
- a[3441]=0;
- a[3442]=0;
- a[3443]=0;
- a[3444]=0;
- a[3445]=0;
- a[3446]=0;
- a[3447]=0;
- a[3448]=0;
- a[3449]=0;
- a[3450]=0;
- a[3451]=0;
- a[3452]=0;
- a[3453]=0;
- a[3454]=0;
- a[3455]=0;
- a[3456]=0;
- a[3457]=0;
- a[3458]=0;
- a[3459]=0;
- a[3460]=0;
- a[3461]=0;
- a[3462]=0;
- a[3463]=0;
- a[3464]=0;
- a[3465]=0;
- a[3466]=0;
- a[3467]=0;
- a[3468]=0;
- a[3469]=0;
- a[3470]=0;
- a[3471]=0;
- a[3472]=0;
- a[3473]=0;
- a[3474]=0;
- a[3475]=0;
- a[3476]=0;
- a[3477]=0;
- a[3478]=0;
- a[3479]=0;
- a[3480]=0;
- a[3481]=0;
- a[3482]=0;
- a[3483]=0;
- a[3484]=0;
- a[3485]=0;
- a[3486]=0;
- a[3487]=0;
- a[3488]=0;
- a[3489]=0;
- a[3490]=0;
- a[3491]=0;
- a[3492]=0;
- a[3493]=0;
- a[3494]=0;
- a[3495]=0;
- a[3496]=0;
- a[3497]=0;
- a[3498]=0;
- a[3499]=0;
- a[3500]=0;
- a[3501]=0;
- a[3502]=0;
- a[3503]=0;
- a[3504]=0;
- a[3505]=0;
- a[3506]=0;
- a[3507]=0;
- a[3508]=0;
- a[3509]=0;
- a[3510]=0;
- a[3511]=0;
- a[3512]=0;
- a[3513]=0;
- a[3514]=0;
- a[3515]=0;
- a[3516]=0;
- a[3517]=0;
- a[3518]=0;
- a[3519]=0;
- a[3520]=0;
- a[3521]=0;
- a[3522]=0;
- a[3523]=0;
- a[3524]=0;
- a[3525]=0;
- a[3526]=0;
- a[3527]=0;
- a[3528]=0;
- a[3529]=0;
- a[3530]=0;
- a[3531]=0;
- a[3532]=0;
- a[3533]=0;
- a[3534]=0;
- a[3535]=0;
- a[3536]=0;
- a[3537]=0;
- a[3538]=0;
- a[3539]=0;
- a[3540]=0;
- a[3541]=0;
- a[3542]=0;
- a[3543]=0;
- a[3544]=0;
- a[3545]=0;
- a[3546]=0;
- a[3547]=0;
- a[3548]=0;
- a[3549]=0;
- a[3550]=0;
- a[3551]=0;
- a[3552]=0;
- a[3553]=0;
- a[3554]=0;
- a[3555]=0;
- a[3556]=0;
- a[3557]=0;
- a[3558]=0;
- a[3559]=0;
- a[3560]=0;
- a[3561]=0;
- a[3562]=0;
- a[3563]=0;
- a[3564]=0;
- a[3565]=0;
- a[3566]=0;
- a[3567]=0;
- a[3568]=0;
- a[3569]=0;
- a[3570]=0;
- a[3571]=0;
- a[3572]=0;
- a[3573]=0;
- a[3574]=0;
- a[3575]=0;
- a[3576]=0;
- a[3577]=0;
- a[3578]=0;
- a[3579]=0;
- a[3580]=0;
- a[3581]=0;
- a[3582]=0;
- a[3583]=0;
- a[3584]=0;
- a[3585]=0;
- a[3586]=0;
- a[3587]=0;
- a[3588]=0;
- a[3589]=0;
- a[3590]=0;
- a[3591]=0;
- a[3592]=0;
- a[3593]=0;
- a[3594]=0;
- a[3595]=0;
- a[3596]=0;
- a[3597]=0;
- a[3598]=0;
- a[3599]=0;
- a[3600]=0;
- a[3601]=0;
- a[3602]=0;
- a[3603]=0;
- a[3604]=0;
- a[3605]=0;
- a[3606]=0;
- a[3607]=0;
- a[3608]=0;
- a[3609]=0;
- a[3610]=0;
- a[3611]=0;
- a[3612]=0;
- a[3613]=0;
- a[3614]=0;
- a[3615]=0;
- a[3616]=0;
- a[3617]=0;
- a[3618]=0;
- a[3619]=0;
- a[3620]=0;
- a[3621]=0;
- a[3622]=0;
- a[3623]=0;
- a[3624]=0;
- a[3625]=0;
- a[3626]=0;
- a[3627]=0;
- a[3628]=0;
- a[3629]=0;
- a[3630]=0;
- a[3631]=0;
- a[3632]=0;
- a[3633]=0;
- a[3634]=0;
- a[3635]=0;
- a[3636]=0;
- a[3637]=0;
- a[3638]=0;
- a[3639]=0;
- a[3640]=0;
- a[3641]=0;
- a[3642]=0;
- a[3643]=0;
- a[3644]=0;
- a[3645]=0;
- a[3646]=0;
- a[3647]=0;
- a[3648]=0;
- a[3649]=0;
- a[3650]=0;
- a[3651]=0;
- a[3652]=0;
- a[3653]=0;
- a[3654]=0;
- a[3655]=0;
- a[3656]=0;
- a[3657]=0;
- a[3658]=0;
- a[3659]=0;
- a[3660]=0;
- a[3661]=0;
- a[3662]=0;
- a[3663]=0;
- a[3664]=0;
- a[3665]=0;
- a[3666]=0;
- a[3667]=0;
- a[3668]=0;
- a[3669]=0;
- a[3670]=0;
- a[3671]=0;
- a[3672]=0;
- a[3673]=0;
- a[3674]=0;
- a[3675]=0;
- a[3676]=0;
- a[3677]=0;
- a[3678]=0;
- a[3679]=0;
- a[3680]=0;
- a[3681]=0;
- a[3682]=0;
- a[3683]=0;
- a[3684]=0;
- a[3685]=0;
- a[3686]=0;
- a[3687]=0;
- a[3688]=0;
- a[3689]=0;
- a[3690]=0;
- a[3691]=0;
- a[3692]=0;
- a[3693]=0;
- a[3694]=0;
- a[3695]=0;
- a[3696]=0;
- a[3697]=0;
- a[3698]=0;
- a[3699]=0;
- a[3700]=0;
- a[3701]=0;
- a[3702]=0;
- a[3703]=0;
- a[3704]=0;
- a[3705]=0;
- a[3706]=0;
- a[3707]=0;
- a[3708]=0;
- a[3709]=0;
- a[3710]=0;
- a[3711]=0;
- a[3712]=0;
- a[3713]=0;
- a[3714]=0;
- a[3715]=0;
- a[3716]=0;
- a[3717]=0;
- a[3718]=0;
- a[3719]=0;
- a[3720]=0;
- a[3721]=0;
- a[3722]=0;
- a[3723]=0;
- a[3724]=0;
- a[3725]=0;
- a[3726]=0;
- a[3727]=0;
- a[3728]=0;
- a[3729]=0;
- a[3730]=0;
- a[3731]=0;
- a[3732]=0;
- a[3733]=0;
- a[3734]=0;
- a[3735]=0;
- a[3736]=0;
- a[3737]=0;
- a[3738]=0;
- a[3739]=0;
- a[3740]=0;
- a[3741]=0;
- a[3742]=0;
- a[3743]=0;
- a[3744]=0;
- a[3745]=0;
- a[3746]=0;
- a[3747]=0;
- a[3748]=0;
- a[3749]=0;
- a[3750]=0;
- a[3751]=0;
- a[3752]=0;
- a[3753]=0;
- a[3754]=0;
- a[3755]=0;
- a[3756]=0;
- a[3757]=0;
- a[3758]=0;
- a[3759]=0;
- a[3760]=0;
- a[3761]=0;
- a[3762]=0;
- a[3763]=0;
- a[3764]=0;
- a[3765]=0;
- a[3766]=0;
- a[3767]=0;
- a[3768]=0;
- a[3769]=0;
- a[3770]=0;
- a[3771]=0;
- a[3772]=0;
- a[3773]=0;
- a[3774]=0;
- a[3775]=0;
- a[3776]=0;
- a[3777]=0;
- a[3778]=0;
- a[3779]=0;
- a[3780]=0;
- a[3781]=0;
- a[3782]=0;
- a[3783]=0;
- a[3784]=0;
- a[3785]=0;
- a[3786]=0;
- a[3787]=0;
- a[3788]=0;
- a[3789]=0;
- a[3790]=0;
- a[3791]=0;
- a[3792]=0;
- a[3793]=0;
- a[3794]=0;
- a[3795]=0;
- a[3796]=0;
- a[3797]=0;
- a[3798]=0;
- a[3799]=0;
- a[3800]=0;
- a[3801]=0;
- a[3802]=0;
- a[3803]=0;
- a[3804]=0;
- a[3805]=0;
- a[3806]=0;
- a[3807]=0;
- a[3808]=0;
- a[3809]=0;
- a[3810]=0;
- a[3811]=0;
- a[3812]=0;
- a[3813]=0;
- a[3814]=0;
- a[3815]=0;
- a[3816]=0;
- a[3817]=0;
- a[3818]=0;
- a[3819]=0;
- a[3820]=0;
- a[3821]=0;
- a[3822]=0;
- a[3823]=0;
- a[3824]=0;
- a[3825]=0;
- a[3826]=0;
- a[3827]=0;
- a[3828]=0;
- a[3829]=0;
- a[3830]=0;
- a[3831]=0;
- a[3832]=0;
- a[3833]=0;
- a[3834]=0;
- a[3835]=0;
- a[3836]=0;
- a[3837]=0;
- a[3838]=0;
- a[3839]=0;
- a[3840]=0;
- a[3841]=0;
- a[3842]=0;
- a[3843]=0;
- a[3844]=0;
- a[3845]=0;
- a[3846]=0;
- a[3847]=0;
- a[3848]=0;
- a[3849]=0;
- a[3850]=0;
- a[3851]=0;
- a[3852]=0;
- a[3853]=0;
- a[3854]=0;
- a[3855]=0;
- a[3856]=0;
- a[3857]=0;
- a[3858]=0;
- a[3859]=0;
- a[3860]=0;
- a[3861]=0;
- a[3862]=0;
- a[3863]=0;
- a[3864]=0;
- a[3865]=0;
- a[3866]=0;
- a[3867]=0;
- a[3868]=0;
- a[3869]=0;
- a[3870]=0;
- a[3871]=0;
- a[3872]=0;
- a[3873]=0;
- a[3874]=0;
- a[3875]=0;
- a[3876]=0;
- a[3877]=0;
- a[3878]=0;
- a[3879]=0;
- a[3880]=0;
- a[3881]=0;
- a[3882]=0;
- a[3883]=0;
- a[3884]=0;
- a[3885]=0;
- a[3886]=0;
- a[3887]=0;
- a[3888]=0;
- a[3889]=0;
- a[3890]=0;
- a[3891]=0;
- a[3892]=0;
- a[3893]=0;
- a[3894]=0;
- a[3895]=0;
- a[3896]=0;
- a[3897]=0;
- a[3898]=0;
- a[3899]=0;
- a[3900]=0;
- a[3901]=0;
- a[3902]=0;
- a[3903]=0;
- a[3904]=0;
- a[3905]=0;
- a[3906]=0;
- a[3907]=0;
- a[3908]=0;
- a[3909]=0;
- a[3910]=0;
- a[3911]=0;
- a[3912]=0;
- a[3913]=0;
- a[3914]=0;
- a[3915]=0;
- a[3916]=0;
- a[3917]=0;
- a[3918]=0;
- a[3919]=0;
- a[3920]=0;
- a[3921]=0;
- a[3922]=0;
- a[3923]=0;
- a[3924]=0;
- a[3925]=0;
- a[3926]=0;
- a[3927]=0;
- a[3928]=0;
- a[3929]=0;
- a[3930]=0;
- a[3931]=0;
- a[3932]=0;
- a[3933]=0;
- a[3934]=0;
- a[3935]=0;
- a[3936]=0;
- a[3937]=0;
- a[3938]=0;
- a[3939]=0;
- a[3940]=0;
- a[3941]=0;
- a[3942]=0;
- a[3943]=0;
- a[3944]=0;
- a[3945]=0;
- a[3946]=0;
- a[3947]=0;
- a[3948]=0;
- a[3949]=0;
- a[3950]=0;
- a[3951]=0;
- a[3952]=0;
- a[3953]=0;
- a[3954]=0;
- a[3955]=0;
- a[3956]=0;
- a[3957]=0;
- a[3958]=0;
- a[3959]=0;
- a[3960]=0;
- a[3961]=0;
- a[3962]=0;
- a[3963]=0;
- a[3964]=0;
- a[3965]=0;
- a[3966]=0;
- a[3967]=0;
- a[3968]=0;
- a[3969]=0;
- a[3970]=0;
- a[3971]=0;
- a[3972]=0;
- a[3973]=0;
- a[3974]=0;
- a[3975]=0;
- a[3976]=0;
- a[3977]=0;
- a[3978]=0;
- a[3979]=0;
- a[3980]=0;
- a[3981]=0;
- a[3982]=0;
- a[3983]=0;
- a[3984]=0;
- a[3985]=0;
- a[3986]=0;
- a[3987]=0;
- a[3988]=0;
- a[3989]=0;
- a[3990]=0;
- a[3991]=0;
- a[3992]=0;
- a[3993]=0;
- a[3994]=0;
- a[3995]=0;
- a[3996]=0;
- a[3997]=0;
- a[3998]=0;
- a[3999]=0;
- a[4000]=0;
- a[4001]=0;
- a[4002]=0;
- a[4003]=0;
- a[4004]=0;
- a[4005]=0;
- a[4006]=0;
- a[4007]=0;
- a[4008]=0;
- a[4009]=0;
- a[4010]=0;
- a[4011]=0;
- a[4012]=0;
- a[4013]=0;
- a[4014]=0;
- a[4015]=0;
- a[4016]=0;
- a[4017]=0;
- a[4018]=0;
- a[4019]=0;
- a[4020]=0;
- a[4021]=0;
- a[4022]=0;
- a[4023]=0;
- a[4024]=0;
- a[4025]=0;
- a[4026]=0;
- a[4027]=0;
- a[4028]=0;
- a[4029]=0;
- a[4030]=0;
- a[4031]=0;
- a[4032]=0;
- a[4033]=0;
- a[4034]=0;
- a[4035]=0;
- a[4036]=0;
- a[4037]=0;
- a[4038]=0;
- a[4039]=0;
- a[4040]=0;
- a[4041]=0;
- a[4042]=0;
- a[4043]=0;
- a[4044]=0;
- a[4045]=0;
- a[4046]=0;
- a[4047]=0;
- a[4048]=0;
- a[4049]=0;
- a[4050]=0;
- a[4051]=0;
- a[4052]=0;
- a[4053]=0;
- a[4054]=0;
- a[4055]=0;
- a[4056]=0;
- a[4057]=0;
- a[4058]=0;
- a[4059]=0;
- a[4060]=0;
- a[4061]=0;
- a[4062]=0;
- a[4063]=0;
- a[4064]=0;
- a[4065]=0;
- a[4066]=0;
- a[4067]=0;
- a[4068]=0;
- a[4069]=0;
- a[4070]=0;
- a[4071]=0;
- a[4072]=0;
- a[4073]=0;
- a[4074]=0;
- a[4075]=0;
- a[4076]=0;
- a[4077]=0;
- a[4078]=0;
- a[4079]=0;
- a[4080]=0;
- a[4081]=0;
- a[4082]=0;
- a[4083]=0;
- a[4084]=0;
- a[4085]=0;
- a[4086]=0;
- a[4087]=0;
- a[4088]=0;
- a[4089]=0;
- a[4090]=0;
- a[4091]=0;
- a[4092]=0;
- a[4093]=0;
- a[4094]=0;
- a[4095]=0;
- a[4096]=0;
- a[4097]=0;
- a[4098]=0;
- a[4099]=0;
- a[4100]=0;
- a[4101]=0;
- a[4102]=0;
- a[4103]=0;
- a[4104]=0;
- a[4105]=0;
- a[4106]=0;
- a[4107]=0;
- a[4108]=0;
- a[4109]=0;
- a[4110]=0;
- a[4111]=0;
- a[4112]=0;
- a[4113]=0;
- a[4114]=0;
- a[4115]=0;
- a[4116]=0;
- a[4117]=0;
- a[4118]=0;
- a[4119]=0;
- a[4120]=0;
- a[4121]=0;
- a[4122]=0;
- a[4123]=0;
- a[4124]=0;
- a[4125]=0;
- a[4126]=0;
- a[4127]=0;
- a[4128]=0;
- a[4129]=0;
- a[4130]=0;
- a[4131]=0;
- a[4132]=0;
- a[4133]=0;
- a[4134]=0;
- a[4135]=0;
- a[4136]=0;
- a[4137]=0;
- a[4138]=0;
- a[4139]=0;
- a[4140]=0;
- a[4141]=0;
- a[4142]=0;
- a[4143]=0;
- a[4144]=0;
- a[4145]=0;
- a[4146]=0;
- a[4147]=0;
- a[4148]=0;
- a[4149]=0;
- a[4150]=0;
- a[4151]=0;
- a[4152]=0;
- a[4153]=0;
- a[4154]=0;
- a[4155]=0;
- a[4156]=0;
- a[4157]=0;
- a[4158]=0;
- a[4159]=0;
- a[4160]=0;
- a[4161]=0;
- a[4162]=0;
- a[4163]=0;
- a[4164]=0;
- a[4165]=0;
- a[4166]=0;
- a[4167]=0;
- a[4168]=0;
- a[4169]=0;
- a[4170]=0;
- a[4171]=0;
- a[4172]=0;
- a[4173]=0;
- a[4174]=0;
- a[4175]=0;
- a[4176]=0;
- a[4177]=0;
- a[4178]=0;
- a[4179]=0;
- a[4180]=0;
- a[4181]=0;
- a[4182]=0;
- a[4183]=0;
- a[4184]=0;
- a[4185]=0;
- a[4186]=0;
- a[4187]=0;
- a[4188]=0;
- a[4189]=0;
- a[4190]=0;
- a[4191]=0;
- a[4192]=0;
- a[4193]=0;
- a[4194]=0;
- a[4195]=0;
- a[4196]=0;
- a[4197]=0;
- a[4198]=0;
- a[4199]=0;
- a[4200]=0;
- a[4201]=0;
- a[4202]=0;
- a[4203]=0;
- a[4204]=0;
- a[4205]=0;
- a[4206]=0;
- a[4207]=0;
- a[4208]=0;
- a[4209]=0;
- a[4210]=0;
- a[4211]=0;
- a[4212]=0;
- a[4213]=0;
- a[4214]=0;
- a[4215]=0;
- a[4216]=0;
- a[4217]=0;
- a[4218]=0;
- a[4219]=0;
- a[4220]=0;
- a[4221]=0;
- a[4222]=0;
- a[4223]=0;
- a[4224]=0;
- a[4225]=0;
- a[4226]=0;
- a[4227]=0;
- a[4228]=0;
- a[4229]=0;
- a[4230]=0;
- a[4231]=0;
- a[4232]=0;
- a[4233]=0;
- a[4234]=0;
- a[4235]=0;
- a[4236]=0;
- a[4237]=0;
- a[4238]=0;
- a[4239]=0;
- a[4240]=0;
- a[4241]=0;
- a[4242]=0;
- a[4243]=0;
- a[4244]=0;
- a[4245]=0;
- a[4246]=0;
- a[4247]=0;
- a[4248]=0;
- a[4249]=0;
- a[4250]=0;
- a[4251]=0;
- a[4252]=0;
- a[4253]=0;
- a[4254]=0;
- a[4255]=0;
- a[4256]=0;
- a[4257]=0;
- a[4258]=0;
- a[4259]=0;
- a[4260]=0;
- a[4261]=0;
- a[4262]=0;
- a[4263]=0;
- a[4264]=0;
- a[4265]=0;
- a[4266]=0;
- a[4267]=0;
- a[4268]=0;
- a[4269]=0;
- a[4270]=0;
- a[4271]=0;
- a[4272]=0;
- a[4273]=0;
- a[4274]=0;
- a[4275]=0;
- a[4276]=0;
- a[4277]=0;
- a[4278]=0;
- a[4279]=0;
- a[4280]=0;
- a[4281]=0;
- a[4282]=0;
- a[4283]=0;
- a[4284]=0;
- a[4285]=0;
- a[4286]=0;
- a[4287]=0;
- a[4288]=0;
- a[4289]=0;
- a[4290]=0;
- a[4291]=0;
- a[4292]=0;
- a[4293]=0;
- a[4294]=0;
- a[4295]=0;
- a[4296]=0;
- a[4297]=0;
- a[4298]=0;
- a[4299]=0;
- a[4300]=0;
- a[4301]=0;
- a[4302]=0;
- a[4303]=0;
- a[4304]=0;
- a[4305]=0;
- a[4306]=0;
- a[4307]=0;
- a[4308]=0;
- a[4309]=0;
- a[4310]=0;
- a[4311]=0;
- a[4312]=0;
- a[4313]=0;
- a[4314]=0;
- a[4315]=0;
- a[4316]=0;
- a[4317]=0;
- a[4318]=0;
- a[4319]=0;
- a[4320]=0;
- a[4321]=0;
- a[4322]=0;
- a[4323]=0;
- a[4324]=0;
- a[4325]=0;
- a[4326]=0;
- a[4327]=0;
- a[4328]=0;
- a[4329]=0;
- a[4330]=0;
- a[4331]=0;
- a[4332]=0;
- a[4333]=0;
- a[4334]=0;
- a[4335]=0;
- a[4336]=0;
- a[4337]=0;
- a[4338]=0;
- a[4339]=0;
- a[4340]=0;
- a[4341]=0;
- a[4342]=0;
- a[4343]=0;
- a[4344]=0;
- a[4345]=0;
- a[4346]=0;
- a[4347]=0;
- a[4348]=0;
- a[4349]=0;
- a[4350]=0;
- a[4351]=0;
- a[4352]=0;
- a[4353]=0;
- a[4354]=0;
- a[4355]=0;
- a[4356]=0;
- a[4357]=0;
- a[4358]=0;
- a[4359]=0;
- a[4360]=0;
- a[4361]=0;
- a[4362]=0;
- a[4363]=0;
- a[4364]=0;
- a[4365]=0;
- a[4366]=0;
- a[4367]=0;
- a[4368]=0;
- a[4369]=0;
- a[4370]=0;
- a[4371]=0;
- a[4372]=0;
- a[4373]=0;
- a[4374]=0;
- a[4375]=0;
- a[4376]=0;
- a[4377]=0;
- a[4378]=0;
- a[4379]=0;
- a[4380]=0;
- a[4381]=0;
- a[4382]=0;
- a[4383]=0;
- a[4384]=0;
- a[4385]=0;
- a[4386]=0;
- a[4387]=0;
- a[4388]=0;
- a[4389]=0;
- a[4390]=0;
- a[4391]=0;
- a[4392]=0;
- a[4393]=0;
- a[4394]=0;
- a[4395]=0;
- a[4396]=0;
- a[4397]=0;
- a[4398]=0;
- a[4399]=0;
- a[4400]=0;
- a[4401]=0;
- a[4402]=0;
- a[4403]=0;
- a[4404]=0;
- a[4405]=0;
- a[4406]=0;
- a[4407]=0;
- a[4408]=0;
- a[4409]=0;
- a[4410]=0;
- a[4411]=0;
- a[4412]=0;
- a[4413]=0;
- a[4414]=0;
- a[4415]=0;
- a[4416]=0;
- a[4417]=0;
- a[4418]=0;
- a[4419]=0;
- a[4420]=0;
- a[4421]=0;
- a[4422]=0;
- a[4423]=0;
- a[4424]=0;
- a[4425]=0;
- a[4426]=0;
- a[4427]=0;
- a[4428]=0;
- a[4429]=0;
- a[4430]=0;
- a[4431]=0;
- a[4432]=0;
- a[4433]=0;
- a[4434]=0;
- a[4435]=0;
- a[4436]=0;
- a[4437]=0;
- a[4438]=0;
- a[4439]=0;
- a[4440]=0;
- a[4441]=0;
- a[4442]=0;
- a[4443]=0;
- a[4444]=0;
- a[4445]=0;
- a[4446]=0;
- a[4447]=0;
- a[4448]=0;
- a[4449]=0;
- a[4450]=0;
- a[4451]=0;
- a[4452]=0;
- a[4453]=0;
- a[4454]=0;
- a[4455]=0;
- a[4456]=0;
- a[4457]=0;
- a[4458]=0;
- a[4459]=0;
- a[4460]=0;
- a[4461]=0;
- a[4462]=0;
- a[4463]=0;
- a[4464]=0;
- a[4465]=0;
- a[4466]=0;
- a[4467]=0;
- a[4468]=0;
- a[4469]=0;
- a[4470]=0;
- a[4471]=0;
- a[4472]=0;
- a[4473]=0;
- a[4474]=0;
- a[4475]=0;
- a[4476]=0;
- a[4477]=0;
- a[4478]=0;
- a[4479]=0;
- a[4480]=0;
- a[4481]=0;
- a[4482]=0;
- a[4483]=0;
- a[4484]=0;
- a[4485]=0;
- a[4486]=0;
- a[4487]=0;
- a[4488]=0;
- a[4489]=0;
- a[4490]=0;
- a[4491]=0;
- a[4492]=0;
- a[4493]=0;
- a[4494]=0;
- a[4495]=0;
- a[4496]=0;
- a[4497]=0;
- a[4498]=0;
- a[4499]=0;
- a[4500]=0;
- a[4501]=0;
- a[4502]=0;
- a[4503]=0;
- a[4504]=0;
- a[4505]=0;
- a[4506]=0;
- a[4507]=0;
- a[4508]=0;
- a[4509]=0;
- a[4510]=0;
- a[4511]=0;
- a[4512]=0;
- a[4513]=0;
- a[4514]=0;
- a[4515]=0;
- a[4516]=0;
- a[4517]=0;
- a[4518]=0;
- a[4519]=0;
- a[4520]=0;
- a[4521]=0;
- a[4522]=0;
- a[4523]=0;
- a[4524]=0;
- a[4525]=0;
- a[4526]=0;
- a[4527]=0;
- a[4528]=0;
- a[4529]=0;
- a[4530]=0;
- a[4531]=0;
- a[4532]=0;
- a[4533]=0;
- a[4534]=0;
- a[4535]=0;
- a[4536]=0;
- a[4537]=0;
- a[4538]=0;
- a[4539]=0;
- a[4540]=0;
- a[4541]=0;
- a[4542]=0;
- a[4543]=0;
- a[4544]=0;
- a[4545]=0;
- a[4546]=0;
- a[4547]=0;
- a[4548]=0;
- a[4549]=0;
- a[4550]=0;
- a[4551]=0;
- a[4552]=0;
- a[4553]=0;
- a[4554]=0;
- a[4555]=0;
- a[4556]=0;
- a[4557]=0;
- a[4558]=0;
- a[4559]=0;
- a[4560]=0;
- a[4561]=0;
- a[4562]=0;
- a[4563]=0;
- a[4564]=0;
- a[4565]=0;
- a[4566]=0;
- a[4567]=0;
- a[4568]=0;
- a[4569]=0;
- a[4570]=0;
- a[4571]=0;
- a[4572]=0;
- a[4573]=0;
- a[4574]=0;
- a[4575]=0;
- a[4576]=0;
- a[4577]=0;
- a[4578]=0;
- a[4579]=0;
- a[4580]=0;
- a[4581]=0;
- a[4582]=0;
- a[4583]=0;
- a[4584]=0;
- a[4585]=0;
- a[4586]=0;
- a[4587]=0;
- a[4588]=0;
- a[4589]=0;
- a[4590]=0;
- a[4591]=0;
- a[4592]=0;
- a[4593]=0;
- a[4594]=0;
- a[4595]=0;
- a[4596]=0;
- a[4597]=0;
- a[4598]=0;
- a[4599]=0;
- a[4600]=0;
- a[4601]=0;
- a[4602]=0;
- a[4603]=0;
- a[4604]=0;
- a[4605]=0;
- a[4606]=0;
- a[4607]=0;
- a[4608]=0;
- a[4609]=0;
- a[4610]=0;
- a[4611]=0;
- a[4612]=0;
- a[4613]=0;
- a[4614]=0;
- a[4615]=0;
- a[4616]=0;
- a[4617]=0;
- a[4618]=0;
- a[4619]=0;
- a[4620]=0;
- a[4621]=0;
- a[4622]=0;
- a[4623]=0;
- a[4624]=0;
- a[4625]=0;
- a[4626]=0;
- a[4627]=0;
- a[4628]=0;
- a[4629]=0;
- a[4630]=0;
- a[4631]=0;
- a[4632]=0;
- a[4633]=0;
- a[4634]=0;
- a[4635]=0;
- a[4636]=0;
- a[4637]=0;
- a[4638]=0;
- a[4639]=0;
- a[4640]=0;
- a[4641]=0;
- a[4642]=0;
- a[4643]=0;
- a[4644]=0;
- a[4645]=0;
- a[4646]=0;
- a[4647]=0;
- a[4648]=0;
- a[4649]=0;
- a[4650]=0;
- a[4651]=0;
- a[4652]=0;
- a[4653]=0;
- a[4654]=0;
- a[4655]=0;
- a[4656]=0;
- a[4657]=0;
- a[4658]=0;
- a[4659]=0;
- a[4660]=0;
- a[4661]=0;
- a[4662]=0;
- a[4663]=0;
- a[4664]=0;
- a[4665]=0;
- a[4666]=0;
- a[4667]=0;
- a[4668]=0;
- a[4669]=0;
- a[4670]=0;
- a[4671]=0;
- a[4672]=0;
- a[4673]=0;
- a[4674]=0;
- a[4675]=0;
- a[4676]=0;
- a[4677]=0;
- a[4678]=0;
- a[4679]=0;
- a[4680]=0;
- a[4681]=0;
- a[4682]=0;
- a[4683]=0;
- a[4684]=0;
- a[4685]=0;
- a[4686]=0;
- a[4687]=0;
- a[4688]=0;
- a[4689]=0;
- a[4690]=0;
- a[4691]=0;
- a[4692]=0;
- a[4693]=0;
- a[4694]=0;
- a[4695]=0;
- a[4696]=0;
- a[4697]=0;
- a[4698]=0;
- a[4699]=0;
- a[4700]=0;
- a[4701]=0;
- a[4702]=0;
- a[4703]=0;
- a[4704]=0;
- a[4705]=0;
- a[4706]=0;
- a[4707]=0;
- a[4708]=0;
- a[4709]=0;
- a[4710]=0;
- a[4711]=0;
- a[4712]=0;
- a[4713]=0;
- a[4714]=0;
- a[4715]=0;
- a[4716]=0;
- a[4717]=0;
- a[4718]=0;
- a[4719]=0;
- a[4720]=0;
- a[4721]=0;
- a[4722]=0;
- a[4723]=0;
- a[4724]=0;
- a[4725]=0;
- a[4726]=0;
- a[4727]=0;
- a[4728]=0;
- a[4729]=0;
- a[4730]=0;
- a[4731]=0;
- a[4732]=0;
- a[4733]=0;
- a[4734]=0;
- a[4735]=0;
- a[4736]=0;
- a[4737]=0;
- a[4738]=0;
- a[4739]=0;
- a[4740]=0;
- a[4741]=0;
- a[4742]=0;
- a[4743]=0;
- a[4744]=0;
- a[4745]=0;
- a[4746]=0;
- a[4747]=0;
- a[4748]=0;
- a[4749]=0;
- a[4750]=0;
- a[4751]=0;
- a[4752]=0;
- a[4753]=0;
- a[4754]=0;
- a[4755]=0;
- a[4756]=0;
- a[4757]=0;
- a[4758]=0;
- a[4759]=0;
- a[4760]=0;
- a[4761]=0;
- a[4762]=0;
- a[4763]=0;
- a[4764]=0;
- a[4765]=0;
- a[4766]=0;
- a[4767]=0;
- a[4768]=0;
- a[4769]=0;
- a[4770]=0;
- a[4771]=0;
- a[4772]=0;
- a[4773]=0;
- a[4774]=0;
- a[4775]=0;
- a[4776]=0;
- a[4777]=0;
- a[4778]=0;
- a[4779]=0;
- a[4780]=0;
- a[4781]=0;
- a[4782]=0;
- a[4783]=0;
- a[4784]=0;
- a[4785]=0;
- a[4786]=0;
- a[4787]=0;
- a[4788]=0;
- a[4789]=0;
- a[4790]=0;
- a[4791]=0;
- a[4792]=0;
- a[4793]=0;
- a[4794]=0;
- a[4795]=0;
- a[4796]=0;
- a[4797]=0;
- a[4798]=0;
- a[4799]=0;
- a[4800]=0;
- a[4801]=0;
- a[4802]=0;
- a[4803]=0;
- a[4804]=0;
- a[4805]=0;
- a[4806]=0;
- a[4807]=0;
- a[4808]=0;
- a[4809]=0;
- a[4810]=0;
- a[4811]=0;
- a[4812]=0;
- a[4813]=0;
- a[4814]=0;
- a[4815]=0;
- a[4816]=0;
- a[4817]=0;
- a[4818]=0;
- a[4819]=0;
- a[4820]=0;
- a[4821]=0;
- a[4822]=0;
- a[4823]=0;
- a[4824]=0;
- a[4825]=0;
- a[4826]=0;
- a[4827]=0;
- a[4828]=0;
- a[4829]=0;
- a[4830]=0;
- a[4831]=0;
- a[4832]=0;
- a[4833]=0;
- a[4834]=0;
- a[4835]=0;
- a[4836]=0;
- a[4837]=0;
- a[4838]=0;
- a[4839]=0;
- a[4840]=0;
- a[4841]=0;
- a[4842]=0;
- a[4843]=0;
- a[4844]=0;
- a[4845]=0;
- a[4846]=0;
- a[4847]=0;
- a[4848]=0;
- a[4849]=0;
- a[4850]=0;
- a[4851]=0;
- a[4852]=0;
- a[4853]=0;
- a[4854]=0;
- a[4855]=0;
- a[4856]=0;
- a[4857]=0;
- a[4858]=0;
- a[4859]=0;
- a[4860]=0;
- a[4861]=0;
- a[4862]=0;
- a[4863]=0;
- a[4864]=0;
- a[4865]=0;
- a[4866]=0;
- a[4867]=0;
- a[4868]=0;
- a[4869]=0;
- a[4870]=0;
- a[4871]=0;
- a[4872]=0;
- a[4873]=0;
- a[4874]=0;
- a[4875]=0;
- a[4876]=0;
- a[4877]=0;
- a[4878]=0;
- a[4879]=0;
- a[4880]=0;
- a[4881]=0;
- a[4882]=0;
- a[4883]=0;
- a[4884]=0;
- a[4885]=0;
- a[4886]=0;
- a[4887]=0;
- a[4888]=0;
- a[4889]=0;
- a[4890]=0;
- a[4891]=0;
- a[4892]=0;
- a[4893]=0;
- a[4894]=0;
- a[4895]=0;
- a[4896]=0;
- a[4897]=0;
- a[4898]=0;
- a[4899]=0;
- a[4900]=0;
- a[4901]=0;
- a[4902]=0;
- a[4903]=0;
- a[4904]=0;
- a[4905]=0;
- a[4906]=0;
- a[4907]=0;
- a[4908]=0;
- a[4909]=0;
- a[4910]=0;
- a[4911]=0;
- a[4912]=0;
- a[4913]=0;
- a[4914]=0;
- a[4915]=0;
- a[4916]=0;
- a[4917]=0;
- a[4918]=0;
- a[4919]=0;
- a[4920]=0;
- a[4921]=0;
- a[4922]=0;
- a[4923]=0;
- a[4924]=0;
- a[4925]=0;
- a[4926]=0;
- a[4927]=0;
- a[4928]=0;
- a[4929]=0;
- a[4930]=0;
- a[4931]=0;
- a[4932]=0;
- a[4933]=0;
- a[4934]=0;
- a[4935]=0;
- a[4936]=0;
- a[4937]=0;
- a[4938]=0;
- a[4939]=0;
- a[4940]=0;
- a[4941]=0;
- a[4942]=0;
- a[4943]=0;
- a[4944]=0;
- a[4945]=0;
- a[4946]=0;
- a[4947]=0;
- a[4948]=0;
- a[4949]=0;
- a[4950]=0;
- a[4951]=0;
- a[4952]=0;
- a[4953]=0;
- a[4954]=0;
- a[4955]=0;
- a[4956]=0;
- a[4957]=0;
- a[4958]=0;
- a[4959]=0;
- a[4960]=0;
- a[4961]=0;
- a[4962]=0;
- a[4963]=0;
- a[4964]=0;
- a[4965]=0;
- a[4966]=0;
- a[4967]=0;
- a[4968]=0;
- a[4969]=0;
- a[4970]=0;
- a[4971]=0;
- a[4972]=0;
- a[4973]=0;
- a[4974]=0;
- a[4975]=0;
- a[4976]=0;
- a[4977]=0;
- a[4978]=0;
- a[4979]=0;
- a[4980]=0;
- a[4981]=0;
- a[4982]=0;
- a[4983]=0;
- a[4984]=0;
- a[4985]=0;
- a[4986]=0;
- a[4987]=0;
- a[4988]=0;
- a[4989]=0;
- a[4990]=0;
- a[4991]=0;
- a[4992]=0;
- a[4993]=0;
- a[4994]=0;
- a[4995]=0;
- a[4996]=0;
- a[4997]=0;
- a[4998]=0;
- a[4999]=0;
- return a;
-}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2119.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2119.js
new file mode 100644
index 0000000..54840c2
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2119.js
@@ -0,0 +1,36 @@
+// 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: --nouse-ic
+
+function strict_function() {
+ "use strict"
+ undeclared = 1;
+}
+
+assertThrows(strict_function);
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2153.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2153.js
new file mode 100644
index 0000000..3170042
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2153.js
@@ -0,0 +1,32 @@
+// 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.
+
+var o = {};
+o.__defineGetter__('foo', function () { return null; });
+var o = {};
+o.foo = 42;
+assertEquals(42, o.foo);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2156.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2156.js
new file mode 100644
index 0000000..3482571
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2156.js
@@ -0,0 +1,39 @@
+// 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 --harmony-collections
+
+var key1 = {};
+var key2 = {};
+var map = new WeakMap;
+
+// Adding hidden properties preserves map sharing. Putting the key into
+// a WeakMap will cause the first hidden property to be added.
+assertTrue(%HaveSameMap(key1, key2));
+map.set(key1, 1);
+map.set(key2, 2);
+assertTrue(%HaveSameMap(key1, key2));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2163.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2163.js
new file mode 100644
index 0000000..bfce9ff
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2163.js
@@ -0,0 +1,70 @@
+// 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: --expose-gc
+
+// Handy abbreviation.
+var dp = Object.defineProperty;
+
+function getter() { return 111; }
+function setter(x) { print(222); }
+function anotherGetter() { return 333; }
+function anotherSetter(x) { print(444); }
+var obj1, obj2;
+
+// obj1 and obj2 share the getter accessor.
+obj1 = {};
+dp(obj1, "alpha", { get: getter, set: setter });
+obj2 = {}
+dp(obj2, "alpha", { get: getter });
+obj1 = {};
+assertEquals(111, obj2.alpha);
+gc();
+assertEquals(111, obj2.alpha);
+
+// obj1, obj2, and obj3 share the getter accessor.
+obj1 = {};
+dp(obj1, "alpha", { get: getter, set: setter });
+obj2 = {}
+dp(obj2, "alpha", { get: getter });
+obj1 = {};
+gc();
+obj3 = {}
+dp(obj3, "alpha", { get: getter });
+
+
+// obj1 and obj2 share the getter and setter accessor.
+obj1 = {};
+dp(obj1, "alpha", { get: getter, set: setter });
+obj1.beta = 10;
+obj2 = {}
+dp(obj2, "alpha", { get: getter, set: setter });
+obj1 = {};
+assertEquals(111, obj2.alpha);
+gc();
+obj2.alpha = 100
+assertEquals(111, obj2.alpha);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2170.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2170.js
new file mode 100644
index 0000000..01cb1ea
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2170.js
@@ -0,0 +1,58 @@
+// 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
+
+function array_fun() {
+ for (var i = 0; i < 2; i++) {
+ var a = [1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8];
+ var x = new Array();
+ x.fixed$length = true;
+ for (var j = 0; j < a.length; j++) {
+ x.push(a[j]);
+ }
+ for(var j = 0; j < x.length; j++) {
+ if (typeof x[j] != 'number') {
+ throw "foo";
+ }
+ x[j] = x[j];
+ }
+ }
+}
+
+try {
+ for (var i = 0; i < 10; ++i) {
+ array_fun();
+ }
+ %OptimizeFunctionOnNextCall(array_fun);
+ for (var i = 0; i < 10; ++i) {
+ array_fun();
+ }
+} catch (e) {
+ assertUnreachable();
+}
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2172.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2172.js
new file mode 100644
index 0000000..5d06f4e
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2172.js
@@ -0,0 +1,35 @@
+// 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.
+
+for (var i = 0; i < 10000; i++){
+ (i + "\0").split(/(.)\1/i);
+}
+
+for (var i = 0; i < 10000; i++){
+ (i + "\u1234\0").split(/(.)\1/i);
+}
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2185-2.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2185-2.js
new file mode 100644
index 0000000..b1eedb9
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2185-2.js
@@ -0,0 +1,145 @@
+// 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.
+
+// These tests used to time out before this was fixed.
+
+var LEN = 2e4;
+
+function short() {
+ var sum = 0;
+ for (var i = 0; i < 1000; i++) {
+ var a = [1, 4, 34, 23, 6, 123, 3, 2, 11, 515, 4, 33, 22, 2, 2, 1, 0, 123,
+ 23, 42, 43, 1002, 44, 43, 101, 23, 55, 11, 101, 102, 45, 11, 404,
+ 31415, 34, 53, 453, 45, 34, 5, 2, 35, 5, 345, 36, 45, 345, 3, 45,
+ 3, 5, 5, 2, 2342344, 2234, 23, 2718, 1500, 2, 19, 22, 43, 41, 0,
+ -1, 33, 45, 78];
+ a.sort(function(a, b) { return a - b; });
+ sum += a[0];
+ }
+ return sum;
+}
+
+function short_bench(name, array) {
+ var start = new Date();
+ short();
+ var end = new Date();
+ var ms = end - start;
+ print("Short " + Math.floor(ms) + "ms");
+}
+
+function sawseq(a, tooth) {
+ var count = 0;
+ while (true) {
+ for (var i = 0; i < tooth; i++) {
+ a.push(i);
+ if (++count >= LEN) return a;
+ }
+ }
+}
+
+function sawseq2(a, tooth) {
+ var count = 0;
+ while (true) {
+ for (var i = 0; i < tooth; i++) {
+ a.push(i);
+ if (++count >= LEN) return a;
+ }
+ for (var i = 0; i < tooth; i++) {
+ a.push(tooth - i);
+ if (++count >= LEN) return a;
+ }
+ }
+}
+
+function sawseq3(a, tooth) {
+ var count = 0;
+ while (true) {
+ for (var i = 0; i < tooth; i++) {
+ a.push(tooth - i);
+ if (++count >= LEN) return a;
+ }
+ }
+}
+
+function up(a) {
+ for (var i = 0; i < LEN; i++) {
+ a.push(i);
+ }
+ return a;
+}
+
+function down(a) {
+ for (var i = 0; i < LEN; i++) {
+ a.push(LEN - i);
+ }
+ return a;
+}
+
+function ran(a) {
+ for (var i = 0; i < LEN; i++) {
+ a.push(Math.floor(Math.random() * LEN));
+ }
+ return a;
+}
+
+var random = ran([]);
+var asc = up([]);
+var desc = down([]);
+var asc_desc = down(up([]));
+var desc_asc = up(down([]));
+var asc_asc = up(up([]));
+var desc_desc = down(down([]));
+var saw1 = sawseq([], 1000);
+var saw2 = sawseq([], 500);
+var saw3 = sawseq([], 200);
+var saw4 = sawseq2([], 200);
+var saw5 = sawseq3([], 200);
+
+function bench(name, array) {
+ var start = new Date();
+ array.sort(function(a, b) { return a - b; });
+ var end = new Date();
+ for (var i = 0; i < array.length - 1; i++) {
+ if (array[i] > array[i + 1]) throw name + " " + i;
+ }
+ var ms = end - start;
+ print(name + " " + Math.floor(ms) + "ms");
+}
+
+short_bench();
+bench("random", random);
+bench("up", asc);
+bench("down", desc);
+bench("saw 1000", saw1);
+bench("saw 500", saw2);
+bench("saw 200", saw3);
+bench("saw 200 symmetric", saw4);
+bench("saw 200 down", saw4);
+bench("up, down", asc_desc);
+bench("up, up", asc_asc);
+bench("down, down", desc_desc);
+bench("down, up", desc_asc);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2185.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2185.js
new file mode 100644
index 0000000..895f322
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2185.js
@@ -0,0 +1,36 @@
+// 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.
+
+var a = [];
+
+for (var i = 0; i < 2; i++) {
+ for (var j = 0; j < 30000; j++) {
+ a.push(j);
+ }
+}
+
+a.sort(function(a, b) { return a - b; } );
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2186.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2186.js
new file mode 100644
index 0000000..0921dce
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2186.js
@@ -0,0 +1,49 @@
+// 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: --harmony-collections
+
+function heapify(i) {
+ return 2.0 * (i / 2);
+}
+heapify(1);
+
+var ONE = 1;
+var ANOTHER_ONE = heapify(ONE);
+assertSame(ONE, ANOTHER_ONE);
+assertEquals("number", typeof ONE);
+assertEquals("number", typeof ANOTHER_ONE);
+
+var set = new Set;
+set.add(ONE);
+assertTrue(set.has(ONE));
+assertTrue(set.has(ANOTHER_ONE));
+
+var map = new Map;
+map.set(ONE, 23);
+assertSame(23, map.get(ONE));
+assertSame(23, map.get(ANOTHER_ONE));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2193.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2193.js
new file mode 100644
index 0000000..50509bf
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2193.js
@@ -0,0 +1,58 @@
+// 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 --cache-optimized-code
+
+function bozo() {};
+function MakeClosure() {
+ return function f(use_literals) {
+ if (use_literals) {
+ return [1,2,3,3,4,5,6,7,8,9,bozo];
+ } else {
+ return 0;
+ }
+ }
+}
+
+// Create two closures that share the same literal boilerplates.
+var closure1 = MakeClosure();
+var closure2 = MakeClosure();
+var expected = [1,2,3,3,4,5,6,7,8,9,bozo];
+
+// Make sure we generate optimized code for the first closure after
+// warming it up properly so that the literals boilerplate is generated
+// and the optimized code uses CreateArrayLiteralShallow runtime call.
+assertEquals(0, closure1(false));
+assertEquals(expected, closure1(true));
+%OptimizeFunctionOnNextCall(closure1);
+assertEquals(expected, closure1(true));
+
+// Optimize the second closure, which should reuse the optimized code
+// from the first closure with the same literal boilerplates.
+assertEquals(0, closure2(false));
+%OptimizeFunctionOnNextCall(closure2);
+assertEquals(expected, closure2(true));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2219.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2219.js
new file mode 100644
index 0000000..946c75b
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2219.js
@@ -0,0 +1,32 @@
+// 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: --harmony-proxies --expose-gc
+
+var p = Proxy.create({getPropertyDescriptor: function() { gc() }});
+var o = Object.create(p);
+assertSame(23, o.x = 23);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2225.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2225.js
new file mode 100644
index 0000000..9957d8d
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2225.js
@@ -0,0 +1,65 @@
+// 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: --harmony-proxies
+
+var proxy_has_x = false;
+var proxy = Proxy.create({ getPropertyDescriptor:function(key) {
+ assertSame('x', key);
+ if (proxy_has_x) {
+ return { configurable:true, writable:false, value:19 };
+ }
+}});
+
+// Test __lookupGetter__/__lookupSetter__ with proxy.
+assertSame(undefined, Object.prototype.__lookupGetter__.call(proxy, 'foo'));
+assertSame(undefined, Object.prototype.__lookupSetter__.call(proxy, 'bar'));
+assertSame(undefined, Object.prototype.__lookupGetter__.call(proxy, '123'));
+assertSame(undefined, Object.prototype.__lookupSetter__.call(proxy, '456'));
+
+// Test __lookupGetter__/__lookupSetter__ with proxy in prototype chain.
+var object = Object.create(proxy);
+assertSame(undefined, Object.prototype.__lookupGetter__.call(object, 'foo'));
+assertSame(undefined, Object.prototype.__lookupSetter__.call(object, 'bar'));
+assertSame(undefined, Object.prototype.__lookupGetter__.call(object, '123'));
+assertSame(undefined, Object.prototype.__lookupSetter__.call(object, '456'));
+
+// Test inline constructors with proxy as prototype.
+function f() { this.x = 23; }
+f.prototype = proxy;
+proxy_has_x = false;
+assertSame(23, new f().x);
+proxy_has_x = true;
+assertSame(19, new f().x);
+
+// Test inline constructors with proxy in prototype chain.
+function g() { this.x = 42; }
+g.prototype.__proto__ = proxy;
+proxy_has_x = false;
+assertSame(42, new g().x);
+proxy_has_x = true;
+assertSame(19, new g().x);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2226.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2226.js
new file mode 100644
index 0000000..1ac3d30
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2226.js
@@ -0,0 +1,36 @@
+// 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.
+
+var foo = function() { 0; /* foo function */ };
+var bar = function() { 1; /* bar function */ };
+var baz = function() { 2; /* baz function */ };
+
+var test = foo.test = bar.test = baz;
+
+assertEquals(baz, test);
+assertEquals(baz, foo.test);
+assertEquals(baz, bar.test);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2234.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2234.js
new file mode 100644
index 0000000..8da513e
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2234.js
@@ -0,0 +1,41 @@
+// 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
+
+function test(i) {
+ // Overwrite random parts of the transcendental cache.
+ Math.sin(i / 1779 * Math.PI);
+ // Check whether the first cache line has been accidentally overwritten
+ // with incorrect key.
+ assertEquals(0, Math.sin(0));
+}
+
+for (i = 0; i < 10000; ++i) {
+ test(i);
+ if (i == 0) %OptimizeFunctionOnNextCall(test);
+}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2249.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2249.js
new file mode 100644
index 0000000..07d687d
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2249.js
@@ -0,0 +1,33 @@
+// 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: --gc-interval=10 --stress-compaction
+
+var o = {};
+o[Math.pow(2,30)-1] = 0;
+o[Math.pow(2,31)-1] = 0;
+o[1] = 0;
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2250.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2250.js
new file mode 100644
index 0000000..b3b0db3
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2250.js
@@ -0,0 +1,68 @@
+// 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
+
+// The original problem from the bug: In the example below SMI check for b
+// generated for inlining of equals invocation (marked with (*)) will be hoisted
+// out of the loop across the typeof b === "object" condition and cause an
+// immediate deopt. Another problem here is that no matter how many time we
+// deopt and reopt we will continue to produce the wrong code.
+//
+// The fix is to notice when a deopt and subsequent reopt doesn't find
+// additional type information, indicating that optimistic LICM should be
+// disabled during compilation.
+
+function eq(a, b) {
+ if (typeof b === "object") {
+ return b.equals(a); // (*)
+ }
+ return a === b;
+}
+
+Object.prototype.equals = function (other) {
+ return (this === other);
+};
+
+function test() {
+ for (var i = 0; !eq(i, 10); i++)
+ ;
+}
+
+eq({}, {});
+eq({}, {});
+eq(1, 1);
+eq(1, 1);
+test();
+%OptimizeFunctionOnNextCall(test);
+test();
+%OptimizeFunctionOnNextCall(test);
+// Second compilation should have noticed that LICM wasn't a good idea, and now
+// function should no longer deopt when called.
+test();
+assertTrue(2 != %GetOptimizationStatus(test));
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2261.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2261.js
new file mode 100644
index 0000000..000e07d
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2261.js
@@ -0,0 +1,113 @@
+// 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 materialization of the arguments object when deoptimizing a
+// strict mode closure after modifying an argument.
+
+(function () {
+ var forceDeopt = 0;
+ function inner(x) {
+ "use strict";
+ x = 2;
+ // Do not remove this %DebugPrint as it makes sure the deopt happens
+ // after the assignment and is not hoisted above the assignment.
+ %DebugPrint(arguments[0]);
+ forceDeopt + 1;
+ return arguments[0];
+ }
+
+ assertEquals(1, inner(1));
+ assertEquals(1, inner(1));
+ %OptimizeFunctionOnNextCall(inner);
+ assertEquals(1, inner(1));
+ forceDeopt = "not a number";
+ assertEquals(1, inner(1));
+})();
+
+
+// Test materialization of the arguments object when deoptimizing an
+// inlined strict mode closure after modifying an argument.
+
+(function () {
+ var forceDeopt = 0;
+ function inner(x) {
+ "use strict";
+ x = 2;
+ // Do not remove this %DebugPrint as it makes sure the deopt happens
+ // after the assignment and is not hoisted above the assignment.
+ %DebugPrint(arguments[0]);
+ forceDeopt + 1;
+ return arguments[0];
+ }
+
+ function outer(x) {
+ return inner(x);
+ }
+
+ assertEquals(1, outer(1));
+ assertEquals(1, outer(1));
+ %OptimizeFunctionOnNextCall(outer);
+ assertEquals(1, outer(1));
+ forceDeopt = "not a number";
+ assertEquals(1, outer(1));
+})();
+
+
+// Test materialization of the multiple arguments objects when
+// deoptimizing several inlined closure after modifying an argument.
+
+(function () {
+ var forceDeopt = 0;
+ function inner(x,y,z) {
+ "use strict";
+ x = 3;
+ // Do not remove this %DebugPrint as it makes sure the deopt happens
+ // after the assignment and is not hoisted above the assignment.
+ %DebugPrint(arguments[0]);
+ forceDeopt + 1;
+ return arguments[0];
+ }
+
+ function middle(x) {
+ "use strict";
+ x = 2;
+ return inner(10*x, 20*x, 30*x) + arguments[0];
+ }
+
+ function outer(x) {
+ return middle(x);
+ }
+
+ assertEquals(21, outer(1));
+ assertEquals(21, outer(1));
+ %OptimizeFunctionOnNextCall(outer);
+ assertEquals(21, outer(1));
+ forceDeopt = "not a number";
+ assertEquals(21, outer(1));
+})();
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2284.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2284.js
new file mode 100644
index 0000000..5614019
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2284.js
@@ -0,0 +1,32 @@
+// 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
+
+assertThrows("%foobar();", TypeError);
+assertThrows("%constructor();", TypeError);
+assertThrows("%constructor(23);", TypeError);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2285.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2285.js
new file mode 100644
index 0000000..efda4cd
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2285.js
@@ -0,0 +1,32 @@
+// 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
+
+assertThrows(function() { %_CallFunction(null, 0, ""); });
+assertThrows(function() { %_CallFunction(null, 0, 1); });
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2286.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2286.js
new file mode 100644
index 0000000..372451e
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2286.js
@@ -0,0 +1,32 @@
+// 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
+
+assertThrows("f()", ReferenceError);
+assertThrows("%f()", TypeError);
+assertThrows("%_f()", SyntaxError);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2289.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2289.js
new file mode 100644
index 0000000..e89ec6e
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2289.js
@@ -0,0 +1,34 @@
+// 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.
+
+var foo = "a";
+for (var i = 0; i < 12; i++) foo += foo;
+foo = foo + 'b' + foo;
+
+foo.replace(/b/, "a");
+
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2291.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2291.js
new file mode 100644
index 0000000..96627fc
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2291.js
@@ -0,0 +1,36 @@
+// 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.
+
+function StrictCompare(x) { return x === Object(x); }
+
+var obj = new Object();
+var obj2 = new Object();
+obj == obj; // Populate IC cache with non-strict comparison.
+
+StrictCompare(obj); // Set IC in StrictCompare from IC cache.
+
+assertFalse(StrictCompare('foo')); // Use == stub for === operation.
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2294.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2294.js
new file mode 100644
index 0000000..43ba10d
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2294.js
@@ -0,0 +1,70 @@
+// 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
+
+var clampedArray = new Uint8ClampedArray(10);
+
+function test() {
+ clampedArray[0] = 0.499;
+ assertEquals(0, clampedArray[0]);
+ clampedArray[0] = 0.5;
+ assertEquals(0, clampedArray[0]);
+ clampedArray[0] = 0.501;
+ assertEquals(1, clampedArray[0]);
+ clampedArray[0] = 1.499;
+ assertEquals(1, clampedArray[0]);
+ clampedArray[0] = 1.5;
+ assertEquals(2, clampedArray[0]);
+ clampedArray[0] = 1.501;
+ assertEquals(2, clampedArray[0]);
+ clampedArray[0] = 2.5;
+ assertEquals(2, clampedArray[0]);
+ clampedArray[0] = 3.5;
+ assertEquals(4, clampedArray[0]);
+ clampedArray[0] = 252.5;
+ assertEquals(252, clampedArray[0]);
+ clampedArray[0] = 253.5;
+ assertEquals(254, clampedArray[0]);
+ clampedArray[0] = 254.5;
+ assertEquals(254, clampedArray[0]);
+ clampedArray[0] = 256.5;
+ assertEquals(255, clampedArray[0]);
+ clampedArray[0] = -0.5;
+ assertEquals(0, clampedArray[0]);
+ clampedArray[0] = -1.5;
+ assertEquals(0, clampedArray[0]);
+ clampedArray[0] = 1000000000000;
+ assertEquals(255, clampedArray[0]);
+ clampedArray[0] = -1000000000000;
+ assertEquals(0, clampedArray[0]);
+}
+
+test();
+test();
+%OptimizeFunctionOnNextCall(test);
+test();
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2296.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2296.js
new file mode 100644
index 0000000..c00f14f
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2296.js
@@ -0,0 +1,40 @@
+// 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: --expose-debug-as debug
+
+Debug = debug.Debug
+
+function listener(event, exec_state, event_data, data) {
+ event_data.script().setSource(1);
+};
+
+Debug.setListener(listener);
+
+eval('0');
+
+Debug.setListener(null);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2318.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2318.js
new file mode 100644
index 0000000..ca67ab2
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2318.js
@@ -0,0 +1,66 @@
+// 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: --expose-debug-as debug --nostack-trace-on-abort
+
+function f() {
+ var i = 0;
+
+ // Stack-allocate to reach the end of stack quickly.
+ var _A0 = 00; var _A1 = 01; var _A2 = 02; var _A3 = 03; var _A4 = 04;
+ var _B0 = 05; var _B1 = 06; var _B2 = 07; var _B3 = 08; var _B4 = 09;
+ var _C0 = 10; var _C1 = 11; var _C2 = 12; var _C3 = 13; var _C4 = 14;
+ var _D0 = 15; var _D1 = 16; var _D2 = 17; var _D3 = 18; var _D4 = 19;
+ var _E0 = 20; var _E1 = 21; var _E2 = 22; var _E3 = 23; var _E4 = 24;
+ var _F0 = 25; var _F1 = 26; var _F2 = 27; var _F3 = 28; var _F4 = 29;
+ var _G0 = 30; var _G1 = 31; var _G2 = 32; var _G3 = 33; var _G4 = 34;
+ var _H0 = 35; var _H1 = 36; var _H2 = 37; var _H3 = 38; var _H4 = 39;
+ var _I0 = 40; var _I1 = 41; var _I2 = 42; var _I3 = 43; var _I4 = 44;
+ var _J0 = 45; var _J1 = 46; var _J2 = 47; var _J3 = 48; var _J4 = 49;
+ var _K0 = 50; var _K1 = 51; var _K2 = 52; var _K3 = 53; var _K4 = 54;
+ var _L0 = 55; var _L1 = 56; var _L2 = 57; var _L3 = 58; var _L4 = 59;
+ var _M0 = 60; var _M1 = 61; var _M2 = 62; var _M3 = 63; var _M4 = 64;
+ var _N0 = 65; var _N1 = 66; var _N2 = 67; var _N3 = 68; var _N4 = 69;
+ var _O0 = 70; var _O1 = 71; var _O2 = 72; var _O3 = 73; var _O4 = 74;
+ var _P0 = 75; var _P1 = 76; var _P2 = 77; var _P3 = 78; var _P4 = 79;
+ var _Q0 = 80; var _Q1 = 81; var _Q2 = 82; var _Q3 = 83; var _Q4 = 84;
+ var _R0 = 85; var _R1 = 86; var _R2 = 87; var _R3 = 88; var _R4 = 89;
+ var _S0 = 90; var _S1 = 91; var _S2 = 92; var _S3 = 93; var _S4 = 94;
+ var _T0 = 95; var _T1 = 96; var _T2 = 97; var _T3 = 98; var _T4 = 99;
+
+ f();
+};
+
+Debug = debug.Debug;
+var bp = Debug.setBreakPoint(f, 0);
+
+function listener(event, exec_state, event_data, data) {
+ result = exec_state.frame().evaluate("i").value();
+};
+
+Debug.setListener(listener);
+assertThrows(function() { f(); }, RangeError);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2322.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2322.js
new file mode 100644
index 0000000..1195bab
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2322.js
@@ -0,0 +1,36 @@
+// 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: --harmony-scoping
+
+"use strict";
+
+assertThrows("'use strict'; for (let x in x);", ReferenceError);
+
+let s;
+for (let pppp in {}) {};
+assertThrows(function() { pppp = true }, ReferenceError);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2326.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2326.js
new file mode 100644
index 0000000..d2edf2b
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2326.js
@@ -0,0 +1,54 @@
+// 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.
+
+// This tests that we do not share optimized code across closures that
+// were optimized using OSR (for a particular OSR entry AST id) even if
+// caching of optimized code kicks in.
+
+function makeClosure() {
+ function f(mode, iterations) {
+ var accumulator = 0;
+ if (mode == 1) {
+ while (--iterations > 0) accumulator = Math.ceil(accumulator);
+ return 1;
+ } else {
+ while (--iterations > 0) accumulator = Math.floor(accumulator);
+ return 2;
+ }
+ }
+ return f;
+}
+
+// Generate two closures sharing the same underlying function literal.
+var f1 = makeClosure();
+var f2 = makeClosure();
+
+// This function should be optimized via OSR in the first tight loop.
+assertSame(1, f1(1, 100000));
+
+// This function should be optimized via OSR in the second tight loop.
+assertSame(2, f2(2, 100000));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2336.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2336.js
new file mode 100644
index 0000000..edfff60
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2336.js
@@ -0,0 +1,53 @@
+// 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: --expose-debug-as debug --expose-gc
+
+// Check that we can cope with a debug listener that runs in the
+// GC epilogue and causes enough allocation to trigger a new GC during
+// the epilogue.
+
+var f = eval("(function f() { return 42; })");
+
+Debug = debug.Debug;
+
+var called = false;
+
+function listener(event, exec_state, event_data, data) {
+ if (event == Debug.DebugEvent.ScriptCollected) {
+ if (!called) {
+ called = true;
+ gc();
+ }
+ }
+};
+
+Debug.scripts();
+Debug.setListener(listener);
+f = void 0;
+gc();
+assertTrue(called);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2339.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2339.js
new file mode 100644
index 0000000..b16821d
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2339.js
@@ -0,0 +1,59 @@
+// 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
+
+/**
+ * The possible optimization states of a function. Must be in sync with the
+ * return values of Runtime_GetOptimizationStatus() in runtime.cc!
+ */
+
+var OptimizationState = {
+ YES: 1,
+ NO: 2,
+ ALWAYS: 3,
+ NEVER: 4
+};
+
+function simple() {
+ return simple_two_args(0, undefined);
+}
+
+function simple_two_args(always_zero, always_undefined) {
+ var always_five = always_undefined || 5;
+ return always_zero * always_five * .5;
+}
+
+
+simple();
+simple();
+%OptimizeFunctionOnNextCall(simple);
+simple();
+var raw_optimized = %GetOptimizationStatus(simple);
+assertFalse(raw_optimized == OptimizationState.NO);
+gc();
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2346.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2346.js
new file mode 100644
index 0000000..4c88b3e
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2346.js
@@ -0,0 +1,123 @@
+// 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:
+//
+// * 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.
+
+// This file only tests very simple descriptors that always have
+// configurable, enumerable, and writable set to true.
+// A range of more elaborate tests are performed in
+// object-define-property.js
+
+// Flags: --stress-runs=5
+
+function get() { return x; }
+function set(x) { this.x = x; }
+
+var obj = {x: 1};
+obj.__defineGetter__("accessor", get);
+obj.__defineSetter__("accessor", set);
+var a = new Array();
+a[1] = 42;
+obj[1] = 42;
+
+var descIsData = Object.getOwnPropertyDescriptor(obj, 'x');
+assertTrue(descIsData.enumerable);
+assertTrue(descIsData.writable);
+assertTrue(descIsData.configurable);
+
+var descIsAccessor = Object.getOwnPropertyDescriptor(obj, 'accessor');
+assertTrue(descIsAccessor.enumerable);
+assertTrue(descIsAccessor.configurable);
+assertTrue(descIsAccessor.get == get);
+assertTrue(descIsAccessor.set == set);
+
+var descIsNotData = Object.getOwnPropertyDescriptor(obj, 'not-x');
+assertTrue(descIsNotData == undefined);
+
+var descIsNotAccessor = Object.getOwnPropertyDescriptor(obj, 'not-accessor');
+assertTrue(descIsNotAccessor == undefined);
+
+var descArray = Object.getOwnPropertyDescriptor(a, '1');
+assertTrue(descArray.enumerable);
+assertTrue(descArray.configurable);
+assertTrue(descArray.writable);
+assertEquals(descArray.value, 42);
+
+var descObjectElement = Object.getOwnPropertyDescriptor(obj, '1');
+assertTrue(descObjectElement.enumerable);
+assertTrue(descObjectElement.configurable);
+assertTrue(descObjectElement.writable);
+assertEquals(descObjectElement.value, 42);
+
+// String objects.
+var a = new String('foobar');
+for (var i = 0; i < a.length; i++) {
+ var descStringObject = Object.getOwnPropertyDescriptor(a, i);
+ assertTrue(descStringObject.enumerable);
+ assertFalse(descStringObject.configurable);
+ assertFalse(descStringObject.writable);
+ assertEquals(descStringObject.value, a.substring(i, i+1));
+}
+
+// Support for additional attributes on string objects.
+a.x = 42;
+a[10] = 'foo';
+var descStringProperty = Object.getOwnPropertyDescriptor(a, 'x');
+assertTrue(descStringProperty.enumerable);
+assertTrue(descStringProperty.configurable);
+assertTrue(descStringProperty.writable);
+assertEquals(descStringProperty.value, 42);
+
+var descStringElement = Object.getOwnPropertyDescriptor(a, '10');
+assertTrue(descStringElement.enumerable);
+assertTrue(descStringElement.configurable);
+assertTrue(descStringElement.writable);
+assertEquals(descStringElement.value, 'foo');
+
+// Test that elements in the prototype chain is not returned.
+var proto = {};
+proto[10] = 42;
+
+var objWithProto = new Array();
+objWithProto.prototype = proto;
+objWithProto[0] = 'bar';
+var descWithProto = Object.getOwnPropertyDescriptor(objWithProto, '10');
+assertEquals(undefined, descWithProto);
+
+// Test elements on global proxy object.
+var global = (function() { return this; })();
+
+global[42] = 42;
+
+function el_getter() { return 239; };
+function el_setter() {};
+Object.defineProperty(global, '239', {get: el_getter, set: el_setter});
+
+var descRegularElement = Object.getOwnPropertyDescriptor(global, '42');
+assertEquals(42, descRegularElement.value);
+
+var descAccessorElement = Object.getOwnPropertyDescriptor(global, '239');
+assertEquals(el_getter, descAccessorElement.get);
+assertEquals(el_setter, descAccessorElement.set);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2373.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2373.js
new file mode 100644
index 0000000..16a87ec
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2373.js
@@ -0,0 +1,29 @@
+// 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.
+
+var o = JSON.parse('{"a":2600753951}');
+assertEquals(2600753951, o.a);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2374.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2374.js
new file mode 100644
index 0000000..b12e5f2
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2374.js
@@ -0,0 +1,33 @@
+// 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.
+
+var msg = '{"result":{"profile":{"head":{"functionName":"(root)","url":"","lineNumber":0,"totalTime":495.7243772462511,"selfTime":0,"numberOfCalls":0,"visible":true,"callUID":2771605942,"children":[{"functionName":"(program)","url":"","lineNumber":0,"totalTime":495.7243772462511,"selfTime":495.7243772462511,"numberOfCalls":0,"visible":true,"callUID":1902715303,"children":[]}]},"bottomUpHead":{"functionName":"(root)","url":"","lineNumber":0,"totalTime":495.7243772462511,"selfTime":0,"numberOfCalls":0,"visible":true,"callUID":2771605942,"children":[{"functionName":"(program)","url":"","lineNumber":0,"totalTime":495.7243772462511,"selfTime":495.7243772462511,"numberOfCalls":0,"visible":true,"callUID":1902715303,"children":[]}]}}},"id":41}';
+
+var obj = JSON.parse(msg);
+var obj2 = JSON.parse(msg);
+
+assertEquals(JSON.stringify(obj), JSON.stringify(obj2));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-2398.js b/src/3rdparty/v8/test/mjsunit/regress/regress-2398.js
new file mode 100644
index 0000000..1c66e7f
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-2398.js
@@ -0,0 +1,41 @@
+// 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.
+
+"use strict";
+
+var observed = false;
+
+var object = { get toString() { observed = true; } };
+Object.defineProperty(object, "ro", { value: 1 });
+
+try {
+ object.ro = 2; // TypeError caused by trying to write to read-only.
+} catch (e) {
+ e.message; // Forces formatting of the message object.
+}
+
+assertFalse(observed);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-334.js b/src/3rdparty/v8/test/mjsunit/regress/regress-334.js
index 024fc9e..37dd299 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-334.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-334.js
@@ -40,7 +40,7 @@ var object = {__proto__:{}};
%SetProperty(object, "foo", func1, DONT_ENUM | DONT_DELETE);
%SetProperty(object, "bar", func1, DONT_ENUM | READ_ONLY);
%SetProperty(object, "baz", func1, DONT_DELETE | READ_ONLY);
-%SetProperty(object.__proto__, "bif", func1, DONT_ENUM | DONT_DELETE | READ_ONLY);
+%SetProperty(object.__proto__, "bif", func1, DONT_ENUM | DONT_DELETE);
object.bif = func2;
function enumerable(obj) {
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-builtin-array-op.js b/src/3rdparty/v8/test/mjsunit/regress/regress-builtin-array-op.js
new file mode 100644
index 0000000..1e37af3
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-builtin-array-op.js
@@ -0,0 +1,38 @@
+// 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.
+
+// Test that we invoke the correct sort function in
+// array operations.
+
+var foo = "hest";
+Array.prototype.sort = function(fn) { foo = "fisk"; };
+Function.prototype.call = function() { foo = "caramel"; };
+var a = [2,3,1];
+a[100000] = 0;
+a.join();
+assertEquals("hest", foo);
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-cnlt-elements.js b/src/3rdparty/v8/test/mjsunit/regress/regress-cnlt-elements.js
new file mode 100644
index 0000000..634534c
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-cnlt-elements.js
@@ -0,0 +1,43 @@
+// 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: --expose-gc
+
+var a = JSON.parse('{"b":1,"c":2,"d":3,"e":4}');
+var b = JSON.parse('{"12040200":1, "a":2, "b":2}');
+var c = JSON.parse('{"24050300":1}');
+b = null;
+gc();
+gc();
+c.a1 = 2;
+c.a2 = 2;
+c.a3 = 2;
+c.a4 = 2;
+c.a5 = 2;
+c.a6 = 2;
+c.a7 = 2;
+c.a8 = 2;
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-cnlt-enum-indices.js b/src/3rdparty/v8/test/mjsunit/regress/regress-cnlt-enum-indices.js
new file mode 100644
index 0000000..03582bb
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-cnlt-enum-indices.js
@@ -0,0 +1,45 @@
+// 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
+
+var o = {};
+var o2 = {};
+
+o.a = 1;
+o2.a = 1;
+function f() { return 10; }
+// Adds a non-field enumerable property.
+Object.defineProperty(o, "b", { get: f, enumerable: true });
+Object.defineProperty(o2, "b", { get: f, enumerable: true });
+assertTrue(%HaveSameMap(o, o2));
+o.c = 2;
+
+for (var x in o) { }
+o = null;
+
+gc();
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-cntl-descriptors-enum.js b/src/3rdparty/v8/test/mjsunit/regress/regress-cntl-descriptors-enum.js
new file mode 100644
index 0000000..ee72faf
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-cntl-descriptors-enum.js
@@ -0,0 +1,46 @@
+// 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
+
+DontEnum = 2;
+
+var o = {};
+%SetProperty(o, "a", 0, DontEnum);
+
+var o2 = {};
+%SetProperty(o2, "a", 0, DontEnum);
+
+assertTrue(%HaveSameMap(o, o2));
+
+o.y = 2;
+
+for (var v in o) { print(v); }
+o = {};
+gc();
+
+for (var v in o2) { print(v); }
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-convert-enum.js b/src/3rdparty/v8/test/mjsunit/regress/regress-convert-enum.js
new file mode 100644
index 0000000..c624cad
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-convert-enum.js
@@ -0,0 +1,60 @@
+// 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: --expose-gc
+
+// Create a transition tree A (no descriptors) -> B (descriptor for a) -> C
+// (descriptor for a and c), that all share the descriptor array [a,c]. C is the
+// owner of the descriptor array.
+var o = {};
+o.a = 1;
+o.c = 2;
+
+// Add a transition B -> D where D has its own descriptor array [a,b] where b is
+// a constant function.
+var o1 = {};
+o1.a = 1;
+
+// Install an enumeration cache in the descriptor array [a,c] at map B.
+for (var x in o1) { }
+o1.b = function() { return 1; };
+
+// Return ownership of the descriptor array [a,c] to B and trim it to [a].
+o = null;
+gc();
+
+// Convert the transition B -> D into a transition to B -> E so that E uses the
+// instance descriptors [a,b] with b being a field.
+var o2 = {};
+o2.a = 1;
+o2.b = 10;
+
+// Create an object with map B and iterate over it.
+var o3 = {};
+o3.a = 1;
+
+for (var y in o3) { }
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-convert-enum2.js b/src/3rdparty/v8/test/mjsunit/regress/regress-convert-enum2.js
new file mode 100644
index 0000000..cdc7fbe
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-convert-enum2.js
@@ -0,0 +1,46 @@
+// 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.
+
+var o = {};
+o.a = 1;
+o.b = function() { return 1; };
+o.d = 2;
+
+for (var x in o) { }
+
+var o1 = {};
+o1.a = 1;
+o1.b = 10;
+o1.c = 20;
+
+var keys = ["a", "b", "c"];
+
+var i = 0;
+for (var y in o1) {
+ assertEquals(keys[i], y);
+ i += 1;
+}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-convert-transition.js b/src/3rdparty/v8/test/mjsunit/regress/regress-convert-transition.js
new file mode 100644
index 0000000..057dc80
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-convert-transition.js
@@ -0,0 +1,40 @@
+// 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.
+
+var input = '{ "a1":1, "a2":1, "a3":1, "a4":1, "a5":1, "a6":1, "a7":1,\
+ "a8":1, "a9":1, "a10":1, "a11":1, "a12":1, "a13":1}';
+var a = JSON.parse(input);
+a.a = function() { return 10; };
+
+// Force conversion of field to slow mode.
+var b = JSON.parse(input);
+b.a = 10;
+
+// Add another property to the object that would transition to a.
+var c = JSON.parse(input);
+c.x = 10;
+assertEquals(undefined, c.a);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-119926.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-119926.js
index 26b84fa..1ad250a 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-119926.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-119926.js
@@ -25,9 +25,11 @@
// (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: --gc-global
+
// Test that array elements don't break upon garbage collection.
var a = new Array(500);
-for (var i = 0; i < 500000; i++) {
+for (var i = 0; i < 100000; i++) {
a[i] = new Object();
}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-122271.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-122271.js
index 3a99a7f..8ae91e8 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-122271.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-122271.js
@@ -39,11 +39,11 @@ function foo(array) {
array.foo = "bar";
}
-assertTrue(%HasFastSmiOnlyElements(a));
-assertTrue(%HasFastElements(b));
+assertTrue(%HasFastSmiElements(a));
+assertTrue(%HasFastObjectElements(b));
foo(a);
foo(b);
-assertTrue(%HasFastSmiOnlyElements(a));
-assertTrue(%HasFastElements(b));
+assertTrue(%HasFastSmiElements(a));
+assertTrue(%HasFastObjectElements(b));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-125148.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-125148.js
new file mode 100644
index 0000000..0f7bcd8
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-125148.js
@@ -0,0 +1,90 @@
+// 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
+
+function ToDictionaryMode(x) {
+ %OptimizeObjectForAddingMultipleProperties(x, 100);
+}
+
+var A, B, C;
+
+// The initial bug report was about calling a know function...
+A = {};
+Object.defineProperty(A, "foo", { value: function() { assertUnreachable(); }});
+
+B = Object.create(A);
+Object.defineProperty(B, "foo", { value: function() { return 111; }});
+
+C = Object.create(B);
+
+function bar(x) { return x.foo(); }
+
+assertEquals(111, bar(C));
+assertEquals(111, bar(C));
+ToDictionaryMode(B);
+%OptimizeFunctionOnNextCall(bar);
+assertEquals(111, bar(C));
+
+// Although this was not in the initial bug report: The same for getters...
+A = {};
+Object.defineProperty(A, "baz", { get: function() { assertUnreachable(); }});
+
+B = Object.create(A);
+Object.defineProperty(B, "baz", { get: function() { return 111; }});
+
+C = Object.create(B);
+
+function boo(x) { return x.baz; }
+
+assertEquals(111, boo(C));
+assertEquals(111, boo(C));
+ToDictionaryMode(B);
+%OptimizeFunctionOnNextCall(boo);
+assertEquals(111, boo(C));
+
+// And once more for setters...
+A = {};
+Object.defineProperty(A, "huh", { set: function(x) { assertUnreachable(); }});
+
+B = Object.create(A);
+var setterValue;
+Object.defineProperty(B, "huh", { set: function(x) { setterValue = x; }});
+
+C = Object.create(B);
+
+function fuu(x) {
+ setterValue = 222;
+ x.huh = 111;
+ return setterValue;
+}
+
+assertEquals(111, fuu(C));
+assertEquals(111, fuu(C));
+ToDictionaryMode(B);
+%OptimizeFunctionOnNextCall(fuu);
+assertEquals(111, fuu(C));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-134055.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-134055.js
new file mode 100644
index 0000000..9b658fb
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-134055.js
@@ -0,0 +1,63 @@
+// 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
+
+function crash(obj) {
+ return obj.foo;
+}
+
+function base(number_of_properties) {
+ var result = new Array();
+ for (var i = 0; i < number_of_properties; i++) {
+ result["property" + i] = "value" + i;
+ }
+ result.foo = number_of_properties;
+ return result;
+}
+
+var a = base(12);
+var b = base(13);
+var c = base(14);
+var d = base(15);
+
+crash(a); // Premonomorphic.
+crash(a);
+crash(b);
+crash(c);
+crash(d); // Polymorphic, degree 4.
+
+//Prepare ElementsKind transition map chain.
+var x = base(13);
+x[0] = "object";
+x = base(14);
+x[0] = "object";
+x = base(15);
+x[0] = "object";
+
+%OptimizeFunctionOnNextCall(crash);
+crash(a);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-134609.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-134609.js
new file mode 100644
index 0000000..da7d85d
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-134609.js
@@ -0,0 +1,59 @@
+// 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-accessors
+
+var forceDeopt = {x:0};
+
+var objectWithGetterProperty = (function (value) {
+ var obj = {};
+ Object.defineProperty(obj, "getterProperty", {
+ get: function foo() {
+ forceDeopt.x;
+ return value;
+ },
+ });
+ return obj;
+})("bad");
+
+function test() {
+ var iAmContextAllocated = "good";
+ objectWithGetterProperty.getterProperty;
+ return iAmContextAllocated;
+
+ // Make sure that the local variable is context allocated.
+ function unused() { iAmContextAllocated; }
+}
+
+assertEquals("good", test());
+assertEquals("good", test());
+%OptimizeFunctionOnNextCall(test);
+assertEquals("good", test());
+
+// At this point, foo should have been inlined into test. Let's deopt...
+delete forceDeopt.x;
+assertEquals("good", test());
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-135008.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-135008.js
new file mode 100644
index 0000000..2be396e
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-135008.js
@@ -0,0 +1,45 @@
+// 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.
+
+// Filler long enough to trigger lazy parsing.
+var filler = "//" + new Array(1024).join('x');
+
+var scope = { x:23 };
+
+with(scope) {
+ eval(
+ "scope.f = (function outer() {" +
+ " function inner() {" +
+ " return x;" +
+ " }" +
+ " return inner;" +
+ "})();" +
+ filler
+ );
+};
+
+assertSame(23, scope.f());
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-135066.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-135066.js
new file mode 100644
index 0000000..1aeca8b
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-135066.js
@@ -0,0 +1,53 @@
+// 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.
+
+// Filler long enough to trigger lazy parsing.
+var filler = "//" + new Array(1024).join('x');
+
+// Test strict eval in global context.
+eval(
+ "'use strict';" +
+ "var x = 23;" +
+ "var f = function bozo1() {" +
+ " return x;" +
+ "};" +
+ "assertSame(23, f());" +
+ filler
+);
+
+// Test default eval in strict context.
+(function() {
+ "use strict";
+ eval(
+ "var y = 42;" +
+ "var g = function bozo2() {" +
+ " return y;" +
+ "};" +
+ "assertSame(42, g());" +
+ filler
+ );
+})();
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-137689.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-137689.js
new file mode 100644
index 0000000..ef79d24
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-137689.js
@@ -0,0 +1,47 @@
+// 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
+
+function getter() { return 10; }
+function setter(v) { }
+function getter2() { return 20; }
+
+var o = {};
+var o2 = {};
+
+Object.defineProperty(o, "foo", { get: getter, configurable: true });
+Object.defineProperty(o2, "foo", { get: getter, configurable: true });
+assertTrue(%HaveSameMap(o, o2));
+
+Object.defineProperty(o, "bar", { get: getter2 });
+Object.defineProperty(o2, "bar", { get: getter2 });
+assertTrue(%HaveSameMap(o, o2));
+
+Object.defineProperty(o, "foo", { set: setter, configurable: true });
+Object.defineProperty(o2, "foo", { set: setter, configurable: true });
+assertTrue(%HaveSameMap(o, o2));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-138887.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-138887.js
new file mode 100644
index 0000000..8d8e169
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-138887.js
@@ -0,0 +1,48 @@
+// 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
+
+function worker1(ignored) {
+ return 100;
+}
+
+function factory(worker) {
+ return function(call_depth) {
+ if (call_depth == 0) return 10;
+ return 1 + worker(call_depth - 1);
+ }
+}
+
+var f1 = factory(worker1);
+var f2 = factory(f1);
+assertEquals(11, f2(1)); // Result: 1 + f1(0) == 1 + 10.
+assertEquals(11, f2(1));
+%OptimizeFunctionOnNextCall(f1);
+assertEquals(10, f1(0)); // Terminates immediately -> returns 10.
+%OptimizeFunctionOnNextCall(f2);
+assertEquals(102, f2(1000)); // 1 + f1(999) == 1 + 1 + worker1(998) == 102
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-140083.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-140083.js
new file mode 100644
index 0000000..e38192c
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-140083.js
@@ -0,0 +1,44 @@
+// 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 the absence of a setter in a compound/count operation works.
+
+Object.defineProperty(Object.prototype, "foo",
+ { get: function() { return 123; } });
+
+function bar(o) {
+ o.foo += 42;
+ o.foo++;
+}
+
+var baz = {};
+bar(baz);
+bar(baz);
+%OptimizeFunctionOnNextCall(bar)
+bar(baz);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-142087.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-142087.js
new file mode 100644
index 0000000..881ca60
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-142087.js
@@ -0,0 +1,38 @@
+// 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.
+
+var string = "What are you looking for?";
+
+var expected_match = [""];
+for (var i = 0; i < string.length; i++) {
+ expected_match.push("");
+}
+
+string.replace(/(_)|(_|)/g, "");
+assertArrayEquals(expected_match, string.match(/(_)|(_|)/g, ""));
+
+'***************************************'.match(/((\\)|(\*)|(\$))/g, ".");
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-142218.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-142218.js
new file mode 100644
index 0000000..373f83b
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-142218.js
@@ -0,0 +1,44 @@
+// 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
+
+length = 1 << 16;
+a = new Array(length);
+
+function insert_element(key) {
+ a[key] = 42;
+}
+
+insert_element(1);
+%OptimizeFunctionOnNextCall(insert_element);
+insert_element(new Object());
+count = 0;
+for (var i = 0; i < length; i++) {
+ if (a[i] != undefined) count++;
+}
+assertEquals(1, count);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-145961.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-145961.js
new file mode 100644
index 0000000..eb88945
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-145961.js
@@ -0,0 +1,39 @@
+// 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.
+
+// This test causes the operands to be passed in as Integer32 registers.
+// Flags: --allow-natives-syntax
+function test() {
+ var a = new Int32Array(2);
+ var x = a[0];
+ return Math.min(x, x);
+}
+
+assertEquals(0, test());
+assertEquals(0, test());
+%OptimizeFunctionOnNextCall(test);
+assertEquals(0, test());
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-146910.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-146910.js
new file mode 100644
index 0000000..120f809
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-146910.js
@@ -0,0 +1,38 @@
+// 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.
+
+var x = [];
+assertSame(0, x.length);
+assertSame(undefined, x[0]);
+
+Object.defineProperty(x, '0', { value: 7, configurable: false });
+assertSame(1, x.length);
+assertSame(7, x[0]);
+
+x.length = 0;
+assertSame(1, x.length);
+assertSame(7, x[0]);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-147475.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-147475.js
new file mode 100644
index 0000000..180744c
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-147475.js
@@ -0,0 +1,48 @@
+// 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
+
+function worker1(ignored) {
+ return 100;
+}
+
+function factory(worker) {
+ return function(call_depth) {
+ if (call_depth == 0) return 10;
+ return 1 + worker(call_depth - 1);
+ }
+}
+
+var f1 = factory(worker1);
+var f2 = factory(f1);
+assertEquals(11, f2(1));
+%OptimizeFunctionOnNextCall(f1);
+assertEquals(10, f1(0));
+%OptimizeFunctionOnNextCall(f2);
+assertEquals(102, f2(2));
+assertEquals(102, f2(2));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-148376.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-148376.js
new file mode 100644
index 0000000..55bb5f1
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-148376.js
@@ -0,0 +1,35 @@
+// 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.
+
+function defineSetter(o) {
+ o.__defineSetter__('property', function() {});
+}
+
+defineSetter(Object.prototype);
+property = 0;
+defineSetter(this);
+var keys = Object.keys(this);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-150545.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-150545.js
new file mode 100644
index 0000000..68efdbf
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-150545.js
@@ -0,0 +1,53 @@
+// 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 do not generate OSR entry points that have an arguments
+// stack height different from zero. The OSR machinery cannot generate
+// frames for that.
+
+(function() {
+ "use strict";
+
+ var instantReturn = false;
+ function inner() {
+ if (instantReturn) return;
+ assertSame(3, arguments.length);
+ assertSame(1, arguments[0]);
+ assertSame(2, arguments[1]);
+ assertSame(3, arguments[2]);
+ }
+
+ function outer() {
+ inner(1,2,3);
+ // Trigger OSR.
+ while (%GetOptimizationStatus(outer) == 2) {}
+ }
+
+ outer();
+})();
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-150729.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-150729.js
new file mode 100644
index 0000000..15aa587
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-150729.js
@@ -0,0 +1,39 @@
+// 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
+
+var t = 0;
+function burn() {
+ i = [t, 1];
+ var M = [i[0], Math.cos(t) + i[7074959]];
+ t += .05;
+}
+for (var j = 0; j < 5; j++) {
+ if (j == 2) %OptimizeFunctionOnNextCall(burn);
+ burn();
+}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-157019.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-157019.js
new file mode 100644
index 0000000..1c54089
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-157019.js
@@ -0,0 +1,54 @@
+// 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 --nocrankshaft
+
+function makeConstructor() {
+ return function() {
+ this.a = 1;
+ this.b = 2;
+ };
+}
+
+var c1 = makeConstructor();
+var o1 = new c1();
+
+c1.prototype = {};
+
+for (var i = 0; i < 10; i++) {
+ var o = new c1();
+ for (var j = 0; j < 8; j++) {
+ o["x" + j] = 0;
+ }
+}
+
+var c2 = makeConstructor();
+var o2 = new c2();
+
+for (var i = 0; i < 50000; i++) {
+ new c2();
+}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-157520.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-157520.js
new file mode 100644
index 0000000..17081df
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-157520.js
@@ -0,0 +1,38 @@
+// 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: --nocrankshaft
+
+(function(){
+ var f = function(arg) {
+ arg = 2;
+ return arguments[0];
+ };
+ for (var i = 0; i < 50000; i++) {
+ assertSame(2, f(1));
+ }
+})();
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-158185.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-158185.js
new file mode 100644
index 0000000..99f19c7
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-158185.js
@@ -0,0 +1,39 @@
+// 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.
+
+assertEquals("0023456",
+ Object.keys(JSON.parse('{"0023456": 1}'))[0]);
+assertEquals("1234567890123",
+ Object.keys(JSON.parse('{"1234567890123": 1}'))[0]);
+assertEquals("123456789ABCD",
+ Object.keys(JSON.parse('{"123456789ABCD": 1}'))[0]);
+assertEquals("12A",
+ Object.keys(JSON.parse('{"12A": 1}'))[0]);
+
+assertEquals(1, JSON.parse('{"0":1}')[0]);
+assertEquals(undefined, JSON.parse('{"00":1}')[0]);
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-160010.js b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-160010.js
new file mode 100644
index 0000000..266e545
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-crbug-160010.js
@@ -0,0 +1,33 @@
+// 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.
+
+var str = "a";
+for (var i = 0; i < 28; i++) {
+ str += str;
+}
+JSON.stringify(str);
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-debug-code-recompilation.js b/src/3rdparty/v8/test/mjsunit/regress/regress-debug-code-recompilation.js
index 1a608b1..4723ec1 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-debug-code-recompilation.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-debug-code-recompilation.js
@@ -25,7 +25,8 @@
// (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 --hydrogen-filter=Debug.setBreakPoint --expose-debug-as debug
+// Flags: --allow-natives-syntax --hydrogen-filter=Debug.setBreakPoint
+// Flags: --expose-debug-as debug
Debug = debug.Debug
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-deep-proto.js b/src/3rdparty/v8/test/mjsunit/regress/regress-deep-proto.js
new file mode 100644
index 0000000..5d2758c
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-deep-proto.js
@@ -0,0 +1,45 @@
+// 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.
+
+function poly(x) {
+ return x.foo;
+}
+
+var one = {foo: 0};
+var two = {foo: 0, bar: 1};
+var three = {bar: 0};
+three.__proto__ = {};
+three.__proto__.__proto__ = {};
+three.__proto__.__proto__.__proto__ = {};
+three.__proto__.__proto__.__proto__.__proto__ = {};
+three.__proto__.__proto__.__proto__.__proto__.__proto__ = {};
+
+for (var i = 0; i < 1e6; i++) {
+ poly(one);
+ poly(two);
+ poly(three);
+}
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-delete-empty-double.js b/src/3rdparty/v8/test/mjsunit/regress/regress-delete-empty-double.js
new file mode 100644
index 0000000..f7af2b1
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-delete-empty-double.js
@@ -0,0 +1,40 @@
+// 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
+
+a = [1.1,2.2,3.3];
+a.length = 1;
+delete a[1];
+
+assertTrue(%HasFastDoubleElements(a));
+assertFalse(%HasFastHoleyElements(a));
+
+delete a[0];
+
+assertTrue(%HasFastDoubleElements(a));
+assertTrue(%HasFastHoleyElements(a));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-iteration-order.js b/src/3rdparty/v8/test/mjsunit/regress/regress-iteration-order.js
new file mode 100644
index 0000000..76f5c3f
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-iteration-order.js
@@ -0,0 +1,42 @@
+// 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.
+
+var x = {a: 1, b: 2, c: 3};
+
+x.__proto__ = {};
+
+delete x.b;
+
+x.d = 4;
+
+s = "";
+
+for (key in x) {
+ s += x[key];
+}
+
+assertEquals("134", s);
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-json-stringify-gc.js b/src/3rdparty/v8/test/mjsunit/regress/regress-json-stringify-gc.js
new file mode 100644
index 0000000..d732ebc
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-json-stringify-gc.js
@@ -0,0 +1,41 @@
+// 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.
+
+var a = [];
+var new_space_string = "";
+for (var i = 0; i < 128; i++) {
+ new_space_string += String.fromCharCode((Math.random() * 26 + 65) | 0);
+}
+for (var i = 0; i < 10000; i++) a.push(new_space_string);
+
+// At some point during the first stringify, allocation causes a GC and
+// new_space_string is moved to old space. Make sure that this does not
+// screw up reading from the correct location.
+json1 = JSON.stringify(a);
+json2 = JSON.stringify(a);
+assertEquals(json1, json2, "GC caused JSON.stringify to fail.");
+
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-load-elements.js b/src/3rdparty/v8/test/mjsunit/regress/regress-load-elements.js
new file mode 100644
index 0000000..68cdc8e
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-load-elements.js
@@ -0,0 +1,49 @@
+// 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
+
+function bad_func(o,a) {
+ for (var i = 0; i < 1; ++i) {
+ o.prop = 0;
+ var x = a[0];
+ }
+}
+
+o = new Object();
+a = {};
+a[0] = 1;
+bad_func(o, a);
+
+o = new Object();
+bad_func(o, a);
+
+// Optimize. Before the fix, the elements-load and subsequent fixed-array-length
+// were hoisted above the map check. This is invalid since not all types
+// necessarily have elements.
+%OptimizeFunctionOnNextCall(bad_func);
+bad_func(o, "");
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-smi-only-concat.js b/src/3rdparty/v8/test/mjsunit/regress/regress-smi-only-concat.js
index a9a6d89..55ca299 100644
--- a/src/3rdparty/v8/test/mjsunit/regress/regress-smi-only-concat.js
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-smi-only-concat.js
@@ -33,5 +33,5 @@
var fast_array = ['a', 'b'];
var array = fast_array.concat(fast_array);
-assertTrue(%HasFastElements(fast_array));
-assertTrue(%HasFastElements(array)); \ No newline at end of file
+assertTrue(%HasFastObjectElements(fast_array));
+assertTrue(%HasFastObjectElements(array));
diff --git a/src/3rdparty/v8/test/mjsunit/regress/regress-undefined-store-keyed-fast-element.js b/src/3rdparty/v8/test/mjsunit/regress/regress-undefined-store-keyed-fast-element.js
new file mode 100644
index 0000000..9e6ec9d
--- /dev/null
+++ b/src/3rdparty/v8/test/mjsunit/regress/regress-undefined-store-keyed-fast-element.js
@@ -0,0 +1,37 @@
+// 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
+
+function f(v) {
+ return [0.0, 0.1, 0.2, v];
+}
+
+assertEquals([0.0, 0.1, 0.2, NaN], f(NaN));
+assertEquals([0.0, 0.1, 0.2, NaN], f(NaN));
+%OptimizeFunctionOnNextCall(f);
+assertEquals([0.0, 0.1, 0.2, undefined], f(undefined));