Add more JavaScript tests.
Rubber stampted by Geoffrey Garen.
This adds my JSRegress suite to LayoutTests. This includes silly microbenchmarks that I've
used to test JSC's performance on various interesting cases. But it's also good at catching
bugs, so we might as well be running it as part of regression testing. All of these tests
are short-running, so it shouldn't get in the way of anyone.
* fast/js/regress: Added.
* fast/js/regress/Float32Array-matrix-mult-expected.txt: Added.
* fast/js/regress/Float32Array-matrix-mult.html: Added.
* fast/js/regress/Int16Array-bubble-sort-expected.txt: Added.
* fast/js/regress/Int16Array-bubble-sort.html: Added.
* fast/js/regress/Int16Array-load-int-mul-expected.txt: Added.
* fast/js/regress/Int16Array-load-int-mul.html: Added.
* fast/js/regress/Int8Array-load-expected.txt: Added.
* fast/js/regress/Int8Array-load.html: Added.
* fast/js/regress/adapt-to-double-divide-expected.txt: Added.
* fast/js/regress/adapt-to-double-divide.html: Added.
* fast/js/regress/aliased-arguments-getbyval-expected.txt: Added.
* fast/js/regress/aliased-arguments-getbyval.html: Added.
* fast/js/regress/allocate-big-object-expected.txt: Added.
* fast/js/regress/allocate-big-object.html: Added.
* fast/js/regress/arity-mismatch-inlining-expected.txt: Added.
* fast/js/regress/arity-mismatch-inlining.html: Added.
* fast/js/regress/array-access-polymorphic-structure-expected.txt: Added.
* fast/js/regress/array-access-polymorphic-structure.html: Added.
* fast/js/regress/array-with-double-add-expected.txt: Added.
* fast/js/regress/array-with-double-add.html: Added.
* fast/js/regress/array-with-double-increment-expected.txt: Added.
* fast/js/regress/array-with-double-increment.html: Added.
* fast/js/regress/array-with-double-mul-add-expected.txt: Added.
* fast/js/regress/array-with-double-mul-add.html: Added.
* fast/js/regress/array-with-double-sum-expected.txt: Added.
* fast/js/regress/array-with-double-sum.html: Added.
* fast/js/regress/array-with-int32-add-sub-expected.txt: Added.
* fast/js/regress/array-with-int32-add-sub.html: Added.
* fast/js/regress/array-with-int32-or-double-sum-expected.txt: Added.
* fast/js/regress/array-with-int32-or-double-sum.html: Added.
* fast/js/regress/big-int-mul-expected.txt: Added.
* fast/js/regress/big-int-mul.html: Added.
* fast/js/regress/boolean-test-expected.txt: Added.
* fast/js/regress/boolean-test.html: Added.
* fast/js/regress/cast-int-to-double-expected.txt: Added.
* fast/js/regress/cast-int-to-double.html: Added.
* fast/js/regress/cell-argument-expected.txt: Added.
* fast/js/regress/cell-argument.html: Added.
* fast/js/regress/cfg-simplify-expected.txt: Added.
* fast/js/regress/cfg-simplify.html: Added.
* fast/js/regress/cmpeq-obj-to-obj-other-expected.txt: Added.
* fast/js/regress/cmpeq-obj-to-obj-other.html: Added.
* fast/js/regress/constant-test-expected.txt: Added.
* fast/js/regress/constant-test.html: Added.
* fast/js/regress/direct-arguments-getbyval-expected.txt: Added.
* fast/js/regress/direct-arguments-getbyval.html: Added.
* fast/js/regress/double-pollution-getbyval-expected.txt: Added.
* fast/js/regress/double-pollution-getbyval.html: Added.
* fast/js/regress/double-pollution-putbyoffset-expected.txt: Added.
* fast/js/regress/double-pollution-putbyoffset.html: Added.
* fast/js/regress/external-arguments-getbyval-expected.txt: Added.
* fast/js/regress/external-arguments-getbyval.html: Added.
* fast/js/regress/external-arguments-putbyval-expected.txt: Added.
* fast/js/regress/external-arguments-putbyval.html: Added.
* fast/js/regress/fold-double-to-int-expected.txt: Added.
* fast/js/regress/fold-double-to-int.html: Added.
* fast/js/regress/function-dot-apply-expected.txt: Added.
* fast/js/regress/function-dot-apply.html: Added.
* fast/js/regress/function-test-expected.txt: Added.
* fast/js/regress/function-test.html: Added.
* fast/js/regress/get-by-id-chain-from-try-block-expected.txt: Added.
* fast/js/regress/get-by-id-chain-from-try-block.html: Added.
* fast/js/regress/indexed-properties-in-objects-expected.txt: Added.
* fast/js/regress/indexed-properties-in-objects.html: Added.
* fast/js/regress/inline-arguments-access-expected.txt: Added.
* fast/js/regress/inline-arguments-access.html: Added.
* fast/js/regress/inline-arguments-local-escape-expected.txt: Added.
* fast/js/regress/inline-arguments-local-escape.html: Added.
* fast/js/regress/inline-get-scoped-var-expected.txt: Added.
* fast/js/regress/inline-get-scoped-var.html: Added.
* fast/js/regress/inlined-put-by-id-transition-expected.txt: Added.
* fast/js/regress/inlined-put-by-id-transition.html: Added.
* fast/js/regress/int-or-other-abs-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-abs-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-abs-zero-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-abs-zero-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-add-expected.txt: Added.
* fast/js/regress/int-or-other-add-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-add-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-add.html: Added.
* fast/js/regress/int-or-other-div-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-div-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-max-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-max-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-min-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-min-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-mod-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-mod-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-mul-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-mul-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-neg-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-neg-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-neg-zero-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-neg-zero-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-sub-expected.txt: Added.
* fast/js/regress/int-or-other-sub-then-get-by-val-expected.txt: Added.
* fast/js/regress/int-or-other-sub-then-get-by-val.html: Added.
* fast/js/regress/int-or-other-sub.html: Added.
* fast/js/regress/int-overflow-local-expected.txt: Added.
* fast/js/regress/int-overflow-local.html: Added.
* fast/js/regress/integer-divide-expected.txt: Added.
* fast/js/regress/integer-divide.html: Added.
* fast/js/regress/make-indexed-storage-expected.txt: Added.
* fast/js/regress/make-indexed-storage.html: Added.
* fast/js/regress/method-on-number-expected.txt: Added.
* fast/js/regress/method-on-number.html: Added.
* fast/js/regress/new-array-buffer-dead-expected.txt: Added.
* fast/js/regress/new-array-buffer-dead.html: Added.
* fast/js/regress/new-array-buffer-push-expected.txt: Added.
* fast/js/regress/new-array-buffer-push.html: Added.
* fast/js/regress/new-array-dead-expected.txt: Added.
* fast/js/regress/new-array-dead.html: Added.
* fast/js/regress/new-array-push-expected.txt: Added.
* fast/js/regress/new-array-push.html: Added.
* fast/js/regress/number-test-expected.txt: Added.
* fast/js/regress/number-test.html: Added.
* fast/js/regress/object-closure-call-expected.txt: Added.
* fast/js/regress/object-closure-call.html: Added.
* fast/js/regress/object-test-expected.txt: Added.
* fast/js/regress/object-test.html: Added.
* fast/js/regress/poly-stricteq-expected.txt: Added.
* fast/js/regress/poly-stricteq.html: Added.
* fast/js/regress/polymorphic-structure-expected.txt: Added.
* fast/js/regress/polymorphic-structure.html: Added.
* fast/js/regress/polyvariant-monomorphic-get-by-id-expected.txt: Added.
* fast/js/regress/polyvariant-monomorphic-get-by-id.html: Added.
* fast/js/regress/rare-osr-exit-on-local-expected.txt: Added.
* fast/js/regress/rare-osr-exit-on-local.html: Added.
* fast/js/regress/register-pressure-from-osr-expected.txt: Added.
* fast/js/regress/register-pressure-from-osr.html: Added.
* fast/js/regress/resources: Added.
* fast/js/regress/resources/regress-post.js: Added.
* fast/js/regress/resources/regress-pre.js: Added.
(window.onerror):
* fast/js/regress/script-tests: Added.
* fast/js/regress/script-tests/Float32Array-matrix-mult.js: Added.
(makeEmptyMatrix):
(multiplyMatrices):
(checkMatricesEqual):
(parseMatrix.string.split.forEach):
(parseMatrix):
(printMatrix.pad):
(printMatrix):
* fast/js/regress/script-tests/Int16Array-bubble-sort.js: Added.
(bubbleSort):
(myRandom):
(validateSort):
* fast/js/regress/script-tests/Int16Array-load-int-mul.js: Added.
(stringHash):
* fast/js/regress/script-tests/Int8Array-load.js: Added.
(adler32):
* fast/js/regress/script-tests/adapt-to-double-divide.js: Added.
(foo):
* fast/js/regress/script-tests/aliased-arguments-getbyval.js: Added.
(bar):
* fast/js/regress/script-tests/allocate-big-object.js: Added.
(foo):
* fast/js/regress/script-tests/arity-mismatch-inlining.js: Added.
(foo):
* fast/js/regress/script-tests/array-access-polymorphic-structure.js: Added.
(foo):
* fast/js/regress/script-tests/array-with-double-add.js: Added.
(foo):
* fast/js/regress/script-tests/array-with-double-increment.js: Added.
(foo):
* fast/js/regress/script-tests/array-with-double-mul-add.js: Added.
(foo):
* fast/js/regress/script-tests/array-with-double-sum.js: Added.
(foo):
* fast/js/regress/script-tests/array-with-int32-add-sub.js: Added.
(foo):
* fast/js/regress/script-tests/array-with-int32-or-double-sum.js: Added.
(foo):
* fast/js/regress/script-tests/big-int-mul.js: Added.
(stringHash):
* fast/js/regress/script-tests/boolean-test.js: Added.
(foo):
* fast/js/regress/script-tests/cast-int-to-double.js: Added.
(foo):
* fast/js/regress/script-tests/cell-argument.js: Added.
(foo):
* fast/js/regress/script-tests/cfg-simplify.js: Added.
(foo):
* fast/js/regress/script-tests/cmpeq-obj-to-obj-other.js: Added.
(foo):
(bar):
(baz):
(dostuff):
* fast/js/regress/script-tests/constant-test.js: Added.
(foo):
* fast/js/regress/script-tests/direct-arguments-getbyval.js: Added.
(bar):
* fast/js/regress/script-tests/double-pollution-getbyval.js: Added.
(foo):
* fast/js/regress/script-tests/double-pollution-putbyoffset.js: Added.
(foo):
* fast/js/regress/script-tests/external-arguments-getbyval.js: Added.
(foo):
(bar):
* fast/js/regress/script-tests/external-arguments-putbyval.js: Added.
(foo):
(bar):
* fast/js/regress/script-tests/fold-double-to-int.js: Added.
(Math.random):
* fast/js/regress/script-tests/function-dot-apply.js: Added.
(thingy):
(doCall):
(foo):
* fast/js/regress/script-tests/function-test.js: Added.
(foo):
* fast/js/regress/script-tests/get-by-id-chain-from-try-block.js: Added.
(A):
(B):
(C):
(D):
(E):
(F):
(G):
(foo):
* fast/js/regress/script-tests/indexed-properties-in-objects.js: Added.
* fast/js/regress/script-tests/inline-arguments-access.js: Added.
(foo):
(bar):
* fast/js/regress/script-tests/inline-arguments-local-escape.js: Added.
(foo):
(bar):
* fast/js/regress/script-tests/inline-get-scoped-var.js: Added.
(foo.bar):
(foo):
* fast/js/regress/script-tests/inlined-put-by-id-transition.js: Added.
(foo):
(Foo):
* fast/js/regress/script-tests/int-or-other-abs-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-abs-zero-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-add-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-add.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-div-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-max-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-min-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-mod-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-mul-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-neg-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-neg-zero-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-sub-then-get-by-val.js: Added.
(foo):
* fast/js/regress/script-tests/int-or-other-sub.js: Added.
(foo):
* fast/js/regress/script-tests/int-overflow-local.js: Added.
(foo):
* fast/js/regress/script-tests/integer-divide.js: Added.
(foo):
(bar):
* fast/js/regress/script-tests/make-indexed-storage.js: Added.
(foo):
(sum):
* fast/js/regress/script-tests/method-on-number.js: Added.
(foo):
* fast/js/regress/script-tests/new-array-buffer-dead.js: Added.
(foo):
(bar):
(baz):
(thingy):
* fast/js/regress/script-tests/new-array-buffer-push.js: Added.
(foo):
(bar):
(baz):
(thingy):
* fast/js/regress/script-tests/new-array-dead.js: Added.
(foo):
(bar):
* fast/js/regress/script-tests/new-array-push.js: Added.
(foo):
* fast/js/regress/script-tests/number-test.js: Added.
(foo):
* fast/js/regress/script-tests/object-closure-call.js: Added.
(makeObjectClosure.foo):
(makeObjectClosure):
* fast/js/regress/script-tests/object-test.js: Added.
(foo):
* fast/js/regress/script-tests/poly-stricteq.js: Added.
* fast/js/regress/script-tests/polymorphic-structure.js: Added.
(foo):
* fast/js/regress/script-tests/polyvariant-monomorphic-get-by-id.js: Added.
(foo):
(Foo):
(Bar):
(bar):
* fast/js/regress/script-tests/rare-osr-exit-on-local.js: Added.
(foo):
* fast/js/regress/script-tests/register-pressure-from-osr.js: Added.
(foo):
* fast/js/regress/script-tests/simple-activation-demo.js: Added.
(foo):
* fast/js/regress/script-tests/slow-array-profile-convergence.js: Added.
(foo):
(sum):
* fast/js/regress/script-tests/slow-convergence.js: Added.
(foo):
* fast/js/regress/script-tests/sparse-conditional.js: Added.
(foo):
* fast/js/regress/script-tests/splice-to-remove.js: Added.
* fast/js/regress/script-tests/string-hash.js: Added.
(stringHash):
* fast/js/regress/script-tests/string-repeat-arith.js: Added.
(foo):
* fast/js/regress/script-tests/string-sub.js: Added.
(foo):
* fast/js/regress/script-tests/string-test.js: Added.
(foo):
* fast/js/regress/script-tests/structure-hoist-over-transitions.js: Added.
(foo):
* fast/js/regress/script-tests/tear-off-arguments-simple.js: Added.
(bar):
* fast/js/regress/script-tests/tear-off-arguments.js: Added.
(bar):
* fast/js/regress/script-tests/temporal-structure.js: Added.
(foo):
* fast/js/regress/script-tests/to-int32-boolean.js: Added.
(foo):
* fast/js/regress/script-tests/undefined-test.js: Added.
(foo):
* fast/js/regress/simple-activation-demo-expected.txt: Added.
* fast/js/regress/simple-activation-demo.html: Added.
* fast/js/regress/slow-array-profile-convergence-expected.txt: Added.
* fast/js/regress/slow-array-profile-convergence.html: Added.
* fast/js/regress/slow-convergence-expected.txt: Added.
* fast/js/regress/slow-convergence.html: Added.
* fast/js/regress/sparse-conditional-expected.txt: Added.
* fast/js/regress/sparse-conditional.html: Added.
* fast/js/regress/splice-to-remove-expected.txt: Added.
* fast/js/regress/splice-to-remove.html: Added.
* fast/js/regress/string-hash-expected.txt: Added.
* fast/js/regress/string-hash.html: Added.
* fast/js/regress/string-repeat-arith-expected.txt: Added.
* fast/js/regress/string-repeat-arith.html: Added.
* fast/js/regress/string-sub-expected.txt: Added.
* fast/js/regress/string-sub.html: Added.
* fast/js/regress/string-test-expected.txt: Added.
* fast/js/regress/string-test.html: Added.
* fast/js/regress/structure-hoist-over-transitions-expected.txt: Added.
* fast/js/regress/structure-hoist-over-transitions.html: Added.
* fast/js/regress/tear-off-arguments-expected.txt: Added.
* fast/js/regress/tear-off-arguments-simple-expected.txt: Added.
* fast/js/regress/tear-off-arguments-simple.html: Added.
* fast/js/regress/tear-off-arguments.html: Added.
* fast/js/regress/temporal-structure-expected.txt: Added.
* fast/js/regress/temporal-structure.html: Added.
* fast/js/regress/to-int32-boolean-expected.txt: Added.
* fast/js/regress/to-int32-boolean.html: Added.
* fast/js/regress/undefined-test-expected.txt: Added.
* fast/js/regress/undefined-test.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@140276 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/fast/js/regress/Float32Array-matrix-mult-expected.txt b/LayoutTests/fast/js/regress/Float32Array-matrix-mult-expected.txt
new file mode 100644
index 0000000..813a3ee
--- /dev/null
+++ b/LayoutTests/fast/js/regress/Float32Array-matrix-mult-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/Float32Array-matrix-mult
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/Float32Array-matrix-mult.html b/LayoutTests/fast/js/regress/Float32Array-matrix-mult.html
new file mode 100644
index 0000000..e360f09
--- /dev/null
+++ b/LayoutTests/fast/js/regress/Float32Array-matrix-mult.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/Float32Array-matrix-mult.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/Int16Array-bubble-sort-expected.txt b/LayoutTests/fast/js/regress/Int16Array-bubble-sort-expected.txt
new file mode 100644
index 0000000..bf12e73
--- /dev/null
+++ b/LayoutTests/fast/js/regress/Int16Array-bubble-sort-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/Int16Array-bubble-sort
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/Int16Array-bubble-sort.html b/LayoutTests/fast/js/regress/Int16Array-bubble-sort.html
new file mode 100644
index 0000000..3ff3d0c
--- /dev/null
+++ b/LayoutTests/fast/js/regress/Int16Array-bubble-sort.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/Int16Array-bubble-sort.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/Int16Array-load-int-mul-expected.txt b/LayoutTests/fast/js/regress/Int16Array-load-int-mul-expected.txt
new file mode 100644
index 0000000..91fac85
--- /dev/null
+++ b/LayoutTests/fast/js/regress/Int16Array-load-int-mul-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/Int16Array-load-int-mul
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/Int16Array-load-int-mul.html b/LayoutTests/fast/js/regress/Int16Array-load-int-mul.html
new file mode 100644
index 0000000..a559b18
--- /dev/null
+++ b/LayoutTests/fast/js/regress/Int16Array-load-int-mul.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/Int16Array-load-int-mul.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/Int8Array-load-expected.txt b/LayoutTests/fast/js/regress/Int8Array-load-expected.txt
new file mode 100644
index 0000000..d2820de
--- /dev/null
+++ b/LayoutTests/fast/js/regress/Int8Array-load-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/Int8Array-load
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/Int8Array-load.html b/LayoutTests/fast/js/regress/Int8Array-load.html
new file mode 100644
index 0000000..17cec2e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/Int8Array-load.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/Int8Array-load.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/adapt-to-double-divide-expected.txt b/LayoutTests/fast/js/regress/adapt-to-double-divide-expected.txt
new file mode 100644
index 0000000..f038b68
--- /dev/null
+++ b/LayoutTests/fast/js/regress/adapt-to-double-divide-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/adapt-to-double-divide
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/adapt-to-double-divide.html b/LayoutTests/fast/js/regress/adapt-to-double-divide.html
new file mode 100644
index 0000000..6fd44ca
--- /dev/null
+++ b/LayoutTests/fast/js/regress/adapt-to-double-divide.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/adapt-to-double-divide.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/aliased-arguments-getbyval-expected.txt b/LayoutTests/fast/js/regress/aliased-arguments-getbyval-expected.txt
new file mode 100644
index 0000000..dfbb7d6
--- /dev/null
+++ b/LayoutTests/fast/js/regress/aliased-arguments-getbyval-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/aliased-arguments-getbyval
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/aliased-arguments-getbyval.html b/LayoutTests/fast/js/regress/aliased-arguments-getbyval.html
new file mode 100644
index 0000000..4c6cc07
--- /dev/null
+++ b/LayoutTests/fast/js/regress/aliased-arguments-getbyval.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/aliased-arguments-getbyval.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/allocate-big-object-expected.txt b/LayoutTests/fast/js/regress/allocate-big-object-expected.txt
new file mode 100644
index 0000000..a2bdd49
--- /dev/null
+++ b/LayoutTests/fast/js/regress/allocate-big-object-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/allocate-big-object
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/allocate-big-object.html b/LayoutTests/fast/js/regress/allocate-big-object.html
new file mode 100644
index 0000000..12176a9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/allocate-big-object.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/allocate-big-object.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/arity-mismatch-inlining-expected.txt b/LayoutTests/fast/js/regress/arity-mismatch-inlining-expected.txt
new file mode 100644
index 0000000..caa1cea
--- /dev/null
+++ b/LayoutTests/fast/js/regress/arity-mismatch-inlining-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/arity-mismatch-inlining
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/arity-mismatch-inlining.html b/LayoutTests/fast/js/regress/arity-mismatch-inlining.html
new file mode 100644
index 0000000..a690187
--- /dev/null
+++ b/LayoutTests/fast/js/regress/arity-mismatch-inlining.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/arity-mismatch-inlining.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/array-access-polymorphic-structure-expected.txt b/LayoutTests/fast/js/regress/array-access-polymorphic-structure-expected.txt
new file mode 100644
index 0000000..74df32e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-access-polymorphic-structure-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/array-access-polymorphic-structure
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/array-access-polymorphic-structure.html b/LayoutTests/fast/js/regress/array-access-polymorphic-structure.html
new file mode 100644
index 0000000..01f33a5
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-access-polymorphic-structure.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/array-access-polymorphic-structure.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/array-with-double-add-expected.txt b/LayoutTests/fast/js/regress/array-with-double-add-expected.txt
new file mode 100644
index 0000000..ec8816f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-double-add-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/array-with-double-add
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/array-with-double-add.html b/LayoutTests/fast/js/regress/array-with-double-add.html
new file mode 100644
index 0000000..2b64703
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-double-add.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/array-with-double-add.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/array-with-double-increment-expected.txt b/LayoutTests/fast/js/regress/array-with-double-increment-expected.txt
new file mode 100644
index 0000000..4e3a77e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-double-increment-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/array-with-double-increment
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/array-with-double-increment.html b/LayoutTests/fast/js/regress/array-with-double-increment.html
new file mode 100644
index 0000000..b520e19
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-double-increment.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/array-with-double-increment.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/array-with-double-mul-add-expected.txt b/LayoutTests/fast/js/regress/array-with-double-mul-add-expected.txt
new file mode 100644
index 0000000..cc8f33b
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-double-mul-add-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/array-with-double-mul-add
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/array-with-double-mul-add.html b/LayoutTests/fast/js/regress/array-with-double-mul-add.html
new file mode 100644
index 0000000..42e6a17
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-double-mul-add.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/array-with-double-mul-add.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/array-with-double-sum-expected.txt b/LayoutTests/fast/js/regress/array-with-double-sum-expected.txt
new file mode 100644
index 0000000..8e64ce7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-double-sum-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/array-with-double-sum
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/array-with-double-sum.html b/LayoutTests/fast/js/regress/array-with-double-sum.html
new file mode 100644
index 0000000..643be81
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-double-sum.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/array-with-double-sum.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/array-with-int32-add-sub-expected.txt b/LayoutTests/fast/js/regress/array-with-int32-add-sub-expected.txt
new file mode 100644
index 0000000..a1bb23c
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-int32-add-sub-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/array-with-int32-add-sub
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/array-with-int32-add-sub.html b/LayoutTests/fast/js/regress/array-with-int32-add-sub.html
new file mode 100644
index 0000000..f9aa3a4
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-int32-add-sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/array-with-int32-add-sub.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/array-with-int32-or-double-sum-expected.txt b/LayoutTests/fast/js/regress/array-with-int32-or-double-sum-expected.txt
new file mode 100644
index 0000000..2706154
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-int32-or-double-sum-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/array-with-int32-or-double-sum
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/array-with-int32-or-double-sum.html b/LayoutTests/fast/js/regress/array-with-int32-or-double-sum.html
new file mode 100644
index 0000000..7c6778f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/array-with-int32-or-double-sum.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/array-with-int32-or-double-sum.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/big-int-mul-expected.txt b/LayoutTests/fast/js/regress/big-int-mul-expected.txt
new file mode 100644
index 0000000..ab59f06
--- /dev/null
+++ b/LayoutTests/fast/js/regress/big-int-mul-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/big-int-mul
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/big-int-mul.html b/LayoutTests/fast/js/regress/big-int-mul.html
new file mode 100644
index 0000000..1ba8be0
--- /dev/null
+++ b/LayoutTests/fast/js/regress/big-int-mul.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/big-int-mul.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/boolean-test-expected.txt b/LayoutTests/fast/js/regress/boolean-test-expected.txt
new file mode 100644
index 0000000..180f16d
--- /dev/null
+++ b/LayoutTests/fast/js/regress/boolean-test-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/boolean-test
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/boolean-test.html b/LayoutTests/fast/js/regress/boolean-test.html
new file mode 100644
index 0000000..a9811bb
--- /dev/null
+++ b/LayoutTests/fast/js/regress/boolean-test.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/boolean-test.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/cast-int-to-double-expected.txt b/LayoutTests/fast/js/regress/cast-int-to-double-expected.txt
new file mode 100644
index 0000000..f97ef04
--- /dev/null
+++ b/LayoutTests/fast/js/regress/cast-int-to-double-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/cast-int-to-double
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/cast-int-to-double.html b/LayoutTests/fast/js/regress/cast-int-to-double.html
new file mode 100644
index 0000000..5c2a2ca
--- /dev/null
+++ b/LayoutTests/fast/js/regress/cast-int-to-double.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/cast-int-to-double.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/cell-argument-expected.txt b/LayoutTests/fast/js/regress/cell-argument-expected.txt
new file mode 100644
index 0000000..c44a486
--- /dev/null
+++ b/LayoutTests/fast/js/regress/cell-argument-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/cell-argument
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/cell-argument.html b/LayoutTests/fast/js/regress/cell-argument.html
new file mode 100644
index 0000000..dac516a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/cell-argument.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/cell-argument.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/cfg-simplify-expected.txt b/LayoutTests/fast/js/regress/cfg-simplify-expected.txt
new file mode 100644
index 0000000..c411187
--- /dev/null
+++ b/LayoutTests/fast/js/regress/cfg-simplify-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/cfg-simplify
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/cfg-simplify.html b/LayoutTests/fast/js/regress/cfg-simplify.html
new file mode 100644
index 0000000..e98dbaf
--- /dev/null
+++ b/LayoutTests/fast/js/regress/cfg-simplify.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/cfg-simplify.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/cmpeq-obj-to-obj-other-expected.txt b/LayoutTests/fast/js/regress/cmpeq-obj-to-obj-other-expected.txt
new file mode 100644
index 0000000..e121697
--- /dev/null
+++ b/LayoutTests/fast/js/regress/cmpeq-obj-to-obj-other-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/cmpeq-obj-to-obj-other
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/cmpeq-obj-to-obj-other.html b/LayoutTests/fast/js/regress/cmpeq-obj-to-obj-other.html
new file mode 100644
index 0000000..799ba8f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/cmpeq-obj-to-obj-other.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/cmpeq-obj-to-obj-other.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/constant-test-expected.txt b/LayoutTests/fast/js/regress/constant-test-expected.txt
new file mode 100644
index 0000000..ee62f07
--- /dev/null
+++ b/LayoutTests/fast/js/regress/constant-test-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/constant-test
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/constant-test.html b/LayoutTests/fast/js/regress/constant-test.html
new file mode 100644
index 0000000..d8ad3d7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/constant-test.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/constant-test.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/direct-arguments-getbyval-expected.txt b/LayoutTests/fast/js/regress/direct-arguments-getbyval-expected.txt
new file mode 100644
index 0000000..8b2e3b6
--- /dev/null
+++ b/LayoutTests/fast/js/regress/direct-arguments-getbyval-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/direct-arguments-getbyval
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/direct-arguments-getbyval.html b/LayoutTests/fast/js/regress/direct-arguments-getbyval.html
new file mode 100644
index 0000000..93f177b
--- /dev/null
+++ b/LayoutTests/fast/js/regress/direct-arguments-getbyval.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/direct-arguments-getbyval.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/double-pollution-getbyval-expected.txt b/LayoutTests/fast/js/regress/double-pollution-getbyval-expected.txt
new file mode 100644
index 0000000..c09fef7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/double-pollution-getbyval-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/double-pollution-getbyval
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/double-pollution-getbyval.html b/LayoutTests/fast/js/regress/double-pollution-getbyval.html
new file mode 100644
index 0000000..c7066dd
--- /dev/null
+++ b/LayoutTests/fast/js/regress/double-pollution-getbyval.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/double-pollution-getbyval.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/double-pollution-putbyoffset-expected.txt b/LayoutTests/fast/js/regress/double-pollution-putbyoffset-expected.txt
new file mode 100644
index 0000000..64af7dc
--- /dev/null
+++ b/LayoutTests/fast/js/regress/double-pollution-putbyoffset-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/double-pollution-putbyoffset
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/double-pollution-putbyoffset.html b/LayoutTests/fast/js/regress/double-pollution-putbyoffset.html
new file mode 100644
index 0000000..bcfd003
--- /dev/null
+++ b/LayoutTests/fast/js/regress/double-pollution-putbyoffset.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/double-pollution-putbyoffset.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/external-arguments-getbyval-expected.txt b/LayoutTests/fast/js/regress/external-arguments-getbyval-expected.txt
new file mode 100644
index 0000000..cdb59b9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/external-arguments-getbyval-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/external-arguments-getbyval
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/external-arguments-getbyval.html b/LayoutTests/fast/js/regress/external-arguments-getbyval.html
new file mode 100644
index 0000000..e290e28
--- /dev/null
+++ b/LayoutTests/fast/js/regress/external-arguments-getbyval.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/external-arguments-getbyval.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/external-arguments-putbyval-expected.txt b/LayoutTests/fast/js/regress/external-arguments-putbyval-expected.txt
new file mode 100644
index 0000000..2d3fa8b
--- /dev/null
+++ b/LayoutTests/fast/js/regress/external-arguments-putbyval-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/external-arguments-putbyval
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/external-arguments-putbyval.html b/LayoutTests/fast/js/regress/external-arguments-putbyval.html
new file mode 100644
index 0000000..bf3b29d
--- /dev/null
+++ b/LayoutTests/fast/js/regress/external-arguments-putbyval.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/external-arguments-putbyval.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/fold-double-to-int-expected.txt b/LayoutTests/fast/js/regress/fold-double-to-int-expected.txt
new file mode 100644
index 0000000..ed5fc55
--- /dev/null
+++ b/LayoutTests/fast/js/regress/fold-double-to-int-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/fold-double-to-int
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/fold-double-to-int.html b/LayoutTests/fast/js/regress/fold-double-to-int.html
new file mode 100644
index 0000000..a51bdb8ea
--- /dev/null
+++ b/LayoutTests/fast/js/regress/fold-double-to-int.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/fold-double-to-int.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/function-dot-apply-expected.txt b/LayoutTests/fast/js/regress/function-dot-apply-expected.txt
new file mode 100644
index 0000000..84c10c4
--- /dev/null
+++ b/LayoutTests/fast/js/regress/function-dot-apply-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/function-dot-apply
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/function-dot-apply.html b/LayoutTests/fast/js/regress/function-dot-apply.html
new file mode 100644
index 0000000..269ea55
--- /dev/null
+++ b/LayoutTests/fast/js/regress/function-dot-apply.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/function-dot-apply.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/function-test-expected.txt b/LayoutTests/fast/js/regress/function-test-expected.txt
new file mode 100644
index 0000000..4bf5901
--- /dev/null
+++ b/LayoutTests/fast/js/regress/function-test-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/function-test
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/function-test.html b/LayoutTests/fast/js/regress/function-test.html
new file mode 100644
index 0000000..9503eab
--- /dev/null
+++ b/LayoutTests/fast/js/regress/function-test.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/function-test.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/get-by-id-chain-from-try-block-expected.txt b/LayoutTests/fast/js/regress/get-by-id-chain-from-try-block-expected.txt
new file mode 100644
index 0000000..2e87d0e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/get-by-id-chain-from-try-block-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/get-by-id-chain-from-try-block
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/get-by-id-chain-from-try-block.html b/LayoutTests/fast/js/regress/get-by-id-chain-from-try-block.html
new file mode 100644
index 0000000..8653cbf
--- /dev/null
+++ b/LayoutTests/fast/js/regress/get-by-id-chain-from-try-block.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/get-by-id-chain-from-try-block.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/indexed-properties-in-objects-expected.txt b/LayoutTests/fast/js/regress/indexed-properties-in-objects-expected.txt
new file mode 100644
index 0000000..7d34dfd
--- /dev/null
+++ b/LayoutTests/fast/js/regress/indexed-properties-in-objects-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/indexed-properties-in-objects
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/indexed-properties-in-objects.html b/LayoutTests/fast/js/regress/indexed-properties-in-objects.html
new file mode 100644
index 0000000..aa8f6e0
--- /dev/null
+++ b/LayoutTests/fast/js/regress/indexed-properties-in-objects.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/indexed-properties-in-objects.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/inline-arguments-access-expected.txt b/LayoutTests/fast/js/regress/inline-arguments-access-expected.txt
new file mode 100644
index 0000000..40ccbbe
--- /dev/null
+++ b/LayoutTests/fast/js/regress/inline-arguments-access-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/inline-arguments-access
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/inline-arguments-access.html b/LayoutTests/fast/js/regress/inline-arguments-access.html
new file mode 100644
index 0000000..acd31a3
--- /dev/null
+++ b/LayoutTests/fast/js/regress/inline-arguments-access.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/inline-arguments-access.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/inline-arguments-local-escape-expected.txt b/LayoutTests/fast/js/regress/inline-arguments-local-escape-expected.txt
new file mode 100644
index 0000000..8d51eec
--- /dev/null
+++ b/LayoutTests/fast/js/regress/inline-arguments-local-escape-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/inline-arguments-local-escape
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/inline-arguments-local-escape.html b/LayoutTests/fast/js/regress/inline-arguments-local-escape.html
new file mode 100644
index 0000000..9a14ef4
--- /dev/null
+++ b/LayoutTests/fast/js/regress/inline-arguments-local-escape.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/inline-arguments-local-escape.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/inline-get-scoped-var-expected.txt b/LayoutTests/fast/js/regress/inline-get-scoped-var-expected.txt
new file mode 100644
index 0000000..f000049
--- /dev/null
+++ b/LayoutTests/fast/js/regress/inline-get-scoped-var-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/inline-get-scoped-var
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/inline-get-scoped-var.html b/LayoutTests/fast/js/regress/inline-get-scoped-var.html
new file mode 100644
index 0000000..c5baee8
--- /dev/null
+++ b/LayoutTests/fast/js/regress/inline-get-scoped-var.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/inline-get-scoped-var.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/inlined-put-by-id-transition-expected.txt b/LayoutTests/fast/js/regress/inlined-put-by-id-transition-expected.txt
new file mode 100644
index 0000000..8b954c6
--- /dev/null
+++ b/LayoutTests/fast/js/regress/inlined-put-by-id-transition-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/inlined-put-by-id-transition
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/inlined-put-by-id-transition.html b/LayoutTests/fast/js/regress/inlined-put-by-id-transition.html
new file mode 100644
index 0000000..a624089
--- /dev/null
+++ b/LayoutTests/fast/js/regress/inlined-put-by-id-transition.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/inlined-put-by-id-transition.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-abs-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-abs-then-get-by-val-expected.txt
new file mode 100644
index 0000000..68e6f97
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-abs-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-abs-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-abs-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-abs-then-get-by-val.html
new file mode 100644
index 0000000..728758c3
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-abs-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-abs-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-abs-zero-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-abs-zero-then-get-by-val-expected.txt
new file mode 100644
index 0000000..8c2170b
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-abs-zero-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-abs-zero-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-abs-zero-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-abs-zero-then-get-by-val.html
new file mode 100644
index 0000000..a1d800a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-abs-zero-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-abs-zero-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-add-expected.txt b/LayoutTests/fast/js/regress/int-or-other-add-expected.txt
new file mode 100644
index 0000000..1e563f1
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-add-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-add
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-add-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-add-then-get-by-val-expected.txt
new file mode 100644
index 0000000..94b5305
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-add-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-add-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-add-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-add-then-get-by-val.html
new file mode 100644
index 0000000..27138d8
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-add-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-add-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-add.html b/LayoutTests/fast/js/regress/int-or-other-add.html
new file mode 100644
index 0000000..5896200
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-add.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-add.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-div-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-div-then-get-by-val-expected.txt
new file mode 100644
index 0000000..59856a9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-div-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-div-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-div-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-div-then-get-by-val.html
new file mode 100644
index 0000000..b52983e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-div-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-div-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-max-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-max-then-get-by-val-expected.txt
new file mode 100644
index 0000000..f49be62
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-max-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-max-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-max-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-max-then-get-by-val.html
new file mode 100644
index 0000000..78bc302
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-max-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-max-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-min-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-min-then-get-by-val-expected.txt
new file mode 100644
index 0000000..175533e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-min-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-min-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-min-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-min-then-get-by-val.html
new file mode 100644
index 0000000..a69dbff
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-min-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-min-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-mod-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-mod-then-get-by-val-expected.txt
new file mode 100644
index 0000000..9bd5b8c
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-mod-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-mod-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-mod-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-mod-then-get-by-val.html
new file mode 100644
index 0000000..512f05c
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-mod-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-mod-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-mul-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-mul-then-get-by-val-expected.txt
new file mode 100644
index 0000000..fdde1bd
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-mul-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-mul-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-mul-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-mul-then-get-by-val.html
new file mode 100644
index 0000000..2941a66
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-mul-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-mul-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-neg-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-neg-then-get-by-val-expected.txt
new file mode 100644
index 0000000..f49bbac
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-neg-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-neg-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-neg-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-neg-then-get-by-val.html
new file mode 100644
index 0000000..869745f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-neg-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-neg-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-neg-zero-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-neg-zero-then-get-by-val-expected.txt
new file mode 100644
index 0000000..a32baac
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-neg-zero-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-neg-zero-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-neg-zero-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-neg-zero-then-get-by-val.html
new file mode 100644
index 0000000..cdc617f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-neg-zero-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-neg-zero-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-sub-expected.txt b/LayoutTests/fast/js/regress/int-or-other-sub-expected.txt
new file mode 100644
index 0000000..e074dbe
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-sub-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-sub
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-sub-then-get-by-val-expected.txt b/LayoutTests/fast/js/regress/int-or-other-sub-then-get-by-val-expected.txt
new file mode 100644
index 0000000..f857da1
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-sub-then-get-by-val-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-or-other-sub-then-get-by-val
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-or-other-sub-then-get-by-val.html b/LayoutTests/fast/js/regress/int-or-other-sub-then-get-by-val.html
new file mode 100644
index 0000000..cb1b300
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-sub-then-get-by-val.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-sub-then-get-by-val.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-or-other-sub.html b/LayoutTests/fast/js/regress/int-or-other-sub.html
new file mode 100644
index 0000000..a3604bf
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-or-other-sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-or-other-sub.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/int-overflow-local-expected.txt b/LayoutTests/fast/js/regress/int-overflow-local-expected.txt
new file mode 100644
index 0000000..e10955a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-overflow-local-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/int-overflow-local
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/int-overflow-local.html b/LayoutTests/fast/js/regress/int-overflow-local.html
new file mode 100644
index 0000000..5531de9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/int-overflow-local.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/int-overflow-local.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/integer-divide-expected.txt b/LayoutTests/fast/js/regress/integer-divide-expected.txt
new file mode 100644
index 0000000..2b0a086
--- /dev/null
+++ b/LayoutTests/fast/js/regress/integer-divide-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/integer-divide
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/integer-divide.html b/LayoutTests/fast/js/regress/integer-divide.html
new file mode 100644
index 0000000..533fc06
--- /dev/null
+++ b/LayoutTests/fast/js/regress/integer-divide.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/integer-divide.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/make-indexed-storage-expected.txt b/LayoutTests/fast/js/regress/make-indexed-storage-expected.txt
new file mode 100644
index 0000000..f89c89f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/make-indexed-storage-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/make-indexed-storage
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/make-indexed-storage.html b/LayoutTests/fast/js/regress/make-indexed-storage.html
new file mode 100644
index 0000000..17f87d2
--- /dev/null
+++ b/LayoutTests/fast/js/regress/make-indexed-storage.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/make-indexed-storage.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/method-on-number-expected.txt b/LayoutTests/fast/js/regress/method-on-number-expected.txt
new file mode 100644
index 0000000..ddd6a0f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/method-on-number-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/method-on-number
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/method-on-number.html b/LayoutTests/fast/js/regress/method-on-number.html
new file mode 100644
index 0000000..2916c81
--- /dev/null
+++ b/LayoutTests/fast/js/regress/method-on-number.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/method-on-number.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/new-array-buffer-dead-expected.txt b/LayoutTests/fast/js/regress/new-array-buffer-dead-expected.txt
new file mode 100644
index 0000000..36fd72a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/new-array-buffer-dead-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/new-array-buffer-dead
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/new-array-buffer-dead.html b/LayoutTests/fast/js/regress/new-array-buffer-dead.html
new file mode 100644
index 0000000..d440bf7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/new-array-buffer-dead.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/new-array-buffer-dead.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/new-array-buffer-push-expected.txt b/LayoutTests/fast/js/regress/new-array-buffer-push-expected.txt
new file mode 100644
index 0000000..476a773
--- /dev/null
+++ b/LayoutTests/fast/js/regress/new-array-buffer-push-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/new-array-buffer-push
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/new-array-buffer-push.html b/LayoutTests/fast/js/regress/new-array-buffer-push.html
new file mode 100644
index 0000000..31067ff
--- /dev/null
+++ b/LayoutTests/fast/js/regress/new-array-buffer-push.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/new-array-buffer-push.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/new-array-dead-expected.txt b/LayoutTests/fast/js/regress/new-array-dead-expected.txt
new file mode 100644
index 0000000..8e7eba2
--- /dev/null
+++ b/LayoutTests/fast/js/regress/new-array-dead-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/new-array-dead
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/new-array-dead.html b/LayoutTests/fast/js/regress/new-array-dead.html
new file mode 100644
index 0000000..fd894fa
--- /dev/null
+++ b/LayoutTests/fast/js/regress/new-array-dead.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/new-array-dead.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/new-array-push-expected.txt b/LayoutTests/fast/js/regress/new-array-push-expected.txt
new file mode 100644
index 0000000..89e6552
--- /dev/null
+++ b/LayoutTests/fast/js/regress/new-array-push-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/new-array-push
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/new-array-push.html b/LayoutTests/fast/js/regress/new-array-push.html
new file mode 100644
index 0000000..3cd3c45
--- /dev/null
+++ b/LayoutTests/fast/js/regress/new-array-push.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/new-array-push.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/number-test-expected.txt b/LayoutTests/fast/js/regress/number-test-expected.txt
new file mode 100644
index 0000000..1130037
--- /dev/null
+++ b/LayoutTests/fast/js/regress/number-test-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/number-test
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/number-test.html b/LayoutTests/fast/js/regress/number-test.html
new file mode 100644
index 0000000..66be598
--- /dev/null
+++ b/LayoutTests/fast/js/regress/number-test.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/number-test.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/object-closure-call-expected.txt b/LayoutTests/fast/js/regress/object-closure-call-expected.txt
new file mode 100644
index 0000000..0d1c200
--- /dev/null
+++ b/LayoutTests/fast/js/regress/object-closure-call-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/object-closure-call
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/object-closure-call.html b/LayoutTests/fast/js/regress/object-closure-call.html
new file mode 100644
index 0000000..206e460
--- /dev/null
+++ b/LayoutTests/fast/js/regress/object-closure-call.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/object-closure-call.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/object-test-expected.txt b/LayoutTests/fast/js/regress/object-test-expected.txt
new file mode 100644
index 0000000..0499494
--- /dev/null
+++ b/LayoutTests/fast/js/regress/object-test-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/object-test
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/object-test.html b/LayoutTests/fast/js/regress/object-test.html
new file mode 100644
index 0000000..49bac76
--- /dev/null
+++ b/LayoutTests/fast/js/regress/object-test.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/object-test.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/poly-stricteq-expected.txt b/LayoutTests/fast/js/regress/poly-stricteq-expected.txt
new file mode 100644
index 0000000..129a7ff
--- /dev/null
+++ b/LayoutTests/fast/js/regress/poly-stricteq-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/poly-stricteq
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/poly-stricteq.html b/LayoutTests/fast/js/regress/poly-stricteq.html
new file mode 100644
index 0000000..4512442
--- /dev/null
+++ b/LayoutTests/fast/js/regress/poly-stricteq.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/poly-stricteq.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/polymorphic-structure-expected.txt b/LayoutTests/fast/js/regress/polymorphic-structure-expected.txt
new file mode 100644
index 0000000..4274e1f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/polymorphic-structure-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/polymorphic-structure
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/polymorphic-structure.html b/LayoutTests/fast/js/regress/polymorphic-structure.html
new file mode 100644
index 0000000..67abce9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/polymorphic-structure.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/polymorphic-structure.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/polyvariant-monomorphic-get-by-id-expected.txt b/LayoutTests/fast/js/regress/polyvariant-monomorphic-get-by-id-expected.txt
new file mode 100644
index 0000000..733b996
--- /dev/null
+++ b/LayoutTests/fast/js/regress/polyvariant-monomorphic-get-by-id-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/polyvariant-monomorphic-get-by-id
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/polyvariant-monomorphic-get-by-id.html b/LayoutTests/fast/js/regress/polyvariant-monomorphic-get-by-id.html
new file mode 100644
index 0000000..24b194d9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/polyvariant-monomorphic-get-by-id.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/polyvariant-monomorphic-get-by-id.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/rare-osr-exit-on-local-expected.txt b/LayoutTests/fast/js/regress/rare-osr-exit-on-local-expected.txt
new file mode 100644
index 0000000..07ecf76
--- /dev/null
+++ b/LayoutTests/fast/js/regress/rare-osr-exit-on-local-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/rare-osr-exit-on-local
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/rare-osr-exit-on-local.html b/LayoutTests/fast/js/regress/rare-osr-exit-on-local.html
new file mode 100644
index 0000000..84f1537
--- /dev/null
+++ b/LayoutTests/fast/js/regress/rare-osr-exit-on-local.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/rare-osr-exit-on-local.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/register-pressure-from-osr-expected.txt b/LayoutTests/fast/js/regress/register-pressure-from-osr-expected.txt
new file mode 100644
index 0000000..8237ce5
--- /dev/null
+++ b/LayoutTests/fast/js/regress/register-pressure-from-osr-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/register-pressure-from-osr
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/register-pressure-from-osr.html b/LayoutTests/fast/js/regress/register-pressure-from-osr.html
new file mode 100644
index 0000000..3c8a581
--- /dev/null
+++ b/LayoutTests/fast/js/regress/register-pressure-from-osr.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/register-pressure-from-osr.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/resources/regress-post.js b/LayoutTests/fast/js/regress/resources/regress-post.js
new file mode 100644
index 0000000..a8b9191
--- /dev/null
+++ b/LayoutTests/fast/js/regress/resources/regress-post.js
@@ -0,0 +1,2 @@
+if (_JSRegress_didSucceed)
+ debug("PASS no exception thrown");
diff --git a/LayoutTests/fast/js/regress/resources/regress-pre.js b/LayoutTests/fast/js/regress/resources/regress-pre.js
new file mode 100644
index 0000000..c9b9f23
--- /dev/null
+++ b/LayoutTests/fast/js/regress/resources/regress-pre.js
@@ -0,0 +1,8 @@
+description("JSRegress/" + ("" + window.location).split('/').pop().split('.')[0]);
+_JSRegress_didSucceed = true;
+_JSRegress_oldOnError = window.onerror;
+window.onerror = function(message) {
+ debug("FAIL caught exception: " + message);
+ _JSRegress_didSucceed = false;
+ _JSRegress_oldOnError.apply(this, arguments);
+}
diff --git a/LayoutTests/fast/js/regress/script-tests/Float32Array-matrix-mult.js b/LayoutTests/fast/js/regress/script-tests/Float32Array-matrix-mult.js
new file mode 100644
index 0000000..ca486da
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/Float32Array-matrix-mult.js
@@ -0,0 +1,120 @@
+function makeEmptyMatrix(rows, columns)
+{
+ var result = new Array(rows);
+ for (var i = 0; i < rows; ++i)
+ result[i] = new Float32Array(columns);
+ result.rows = rows;
+ result.columns = columns;
+ return result;
+}
+
+function multiplyMatrices(left, right)
+{
+ if (left.columns != right.rows) {
+ throw new Error(
+ "Left matrix has " + left.columns + " columns while right matrix has " +
+ right.rows + " rows.");
+ }
+
+ var result = makeEmptyMatrix(left.rows, right.columns);
+
+ for (var row = 0; row < result.rows; ++row) {
+ for (var column = 0; column < result.columns; ++column) {
+ for (var i = 0; i < left.columns; ++i)
+ result[row][column] += left[row][i] * right[i][column];
+ }
+ }
+
+ return result;
+}
+
+function checkMatricesEqual(left, right)
+{
+ if (left.columns != right.columns) {
+ throw new Error(
+ "Left matrix has " + left.columns + " columns while right matrix has " +
+ right.columns + " columns");
+ }
+ if (left.rows != right.rows) {
+ throw new Error(
+ "Left matrix has " + left.rows + " rows while right matrix has " +
+ right.rows + " rows");
+ }
+
+ for (var row = 0; row < left.rows; ++row) {
+ for (var column = 0; column < left.columns; ++column) {
+ if (left[row][column] != right[row][column]) {
+ throw new Error(
+ "left[" + row + "][" + column + "] = " + left[row][column] +
+ " while right[" + row + "][" + column + "] = " + right[row][column]);
+ }
+ }
+ }
+}
+
+function parseMatrix(string)
+{
+ var columns = null;
+ var result = [];
+ string.split("\\").forEach(function(string){
+ var row = [];
+ string.split(" ").forEach(function(string){
+ if (string.match(/^ *$/))
+ return;
+ row.push(parseFloat(string));
+ });
+ if (columns) {
+ if (columns != row.length) {
+ throw new Error(
+ "Not all rows have the same number of columns. First row has " +
+ columns + " columns, while column #" + (result.length + 1) + " has " +
+ row.length + " columns.");
+ }
+ } else
+ columns = row.length;
+ var typedRow = new Float32Array(row.length);
+ for (var i = 0; i < columns; ++i)
+ typedRow[i] = row[i];
+ result.push(typedRow);
+ });
+ result.rows = result.length;
+ result.columns = columns;
+ return result;
+}
+
+function printMatrix(matrix)
+{
+ var maxCellSize = 0;
+
+ for (var row = 0; row < matrix.rows; ++row) {
+ for (var column = 0; column < matrix.columns; ++column)
+ maxCellSize = Math.max(maxCellSize, ("" + matrix[row][column]).length);
+ }
+
+ function pad(value)
+ {
+ var result = "" + value;
+ while (result.length < maxCellSize)
+ result = " " + result;
+ return result;
+ }
+
+ for (var row = 0; row < matrix.rows; ++row) {
+ var rowText = "";
+ for (var column = 0; column < matrix.columns; ++column) {
+ if (column)
+ rowText += " ";
+ rowText += pad(matrix[row][column]);
+ }
+ print(rowText);
+ }
+}
+
+var left = parseMatrix("1 2 3 4 5 \\ 6 7 8 9 10 \\ 21 22 23 24 25 \\ 26 27 28 29 30");
+var right = parseMatrix("11 12 31 32 \\ 13 14 33 34 \\ 15 16 35 36 \\ 17 18 37 38 \\ 19 20 39 40");
+var expectedResult = parseMatrix("245 260 545 560 \\ 620 660 1420 1460 \\ 1745 1860 4045 4160 \\ 2120 2260 4920 5060");
+
+for (var i = 0; i < 3000; ++i)
+ checkMatricesEqual(multiplyMatrices(left, right), expectedResult);
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/Int16Array-bubble-sort.js b/LayoutTests/fast/js/regress/script-tests/Int16Array-bubble-sort.js
new file mode 100644
index 0000000..577f686
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/Int16Array-bubble-sort.js
@@ -0,0 +1,89 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright (C) 2013 Apple Inc. 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 the performance of Int16Array by implementing a bubble sort.
+
+function bubbleSort(array)
+{
+ for (var i = 1; i < array.length; ++i) {
+ for (var j = 0; j < array.length - i; ++j) {
+ if (array[j + 1] < array[j]) {
+ var tmp = array[j];
+ array[j] = array[j + 1];
+ array[j + 1] = tmp;
+ }
+ }
+ }
+}
+
+// V8's random function.
+myRandom = (function() {
+ var seed = 49734321;
+ return function() {
+ // Robert Jenkins' 32 bit integer hash function.
+ seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;
+ seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;
+ seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;
+ seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;
+ seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;
+ seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;
+ return (seed & 0xfffffff) / 0x10000000;
+ };
+})();
+
+function arrayToString(array) {
+ var result = "[";
+ for (var i = 0; i < array.length; ++i) {
+ if (i)
+ result += ", ";
+ result += array[i];
+ }
+ return result + "]";
+}
+
+function validateSort(array) {
+ for (var i = 0; i < array.length - 1; ++i) {
+ if (array[i + 1] < array[i])
+ return false;
+ }
+ return true;
+}
+
+var array = new Int16Array(1000);
+for (var count = 0; count < 10; ++count) {
+ for (var i = 0; i < array.length; ++i) {
+ array[i] = myRandom() * 65535;
+ }
+
+ bubbleSort(array);
+
+ if (!validateSort(array))
+ throw "Bad result: " + arrayToString(array);
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/Int16Array-load-int-mul.js b/LayoutTests/fast/js/regress/script-tests/Int16Array-load-int-mul.js
new file mode 100644
index 0000000..1fa112b
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/Int16Array-load-int-mul.js
@@ -0,0 +1,24 @@
+// Test the performance of Int16Array by implementing a 16-bit string hash, and
+// test the performance of used-as-int multiplications.
+
+function stringHash(array)
+{
+ // source: http://en.wikipedia.org/wiki/Java_hashCode()#Sample_implementations_of_the_java.lang.String_algorithm
+ var h = 0;
+ var len = array.length;
+ for (var index = 0; index < len; index++) {
+ h = (((31 * h) | 0) + array[index]) | 0;
+ }
+ return h;
+}
+
+var array = new Int16Array(1000);
+for (var i = 0; i < array.length; ++i)
+ array[i] = i;
+
+var result = 0;
+for (var i = 0; i < 300; ++i)
+ result += stringHash(array);
+
+if (result != 168792418800)
+ throw "Bad result" + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/Int8Array-load.js b/LayoutTests/fast/js/regress/script-tests/Int8Array-load.js
new file mode 100644
index 0000000..c32663b
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/Int8Array-load.js
@@ -0,0 +1,29 @@
+// Test the performance of Int8Array by implementing Adler32.
+
+function adler32(array)
+{
+ var MOD_ADLER = 65521;
+ var a = 1;
+ var b = 0;
+ var index;
+
+ /* Process each byte of the data in order */
+ for (index = 0; index < array.length; ++index)
+ {
+ a = (a + array[index]) % MOD_ADLER;
+ b = (b + a) % MOD_ADLER;
+ }
+
+ return (b << 16) | a;
+}
+
+var array = new Int8Array(1000);
+for (var i = 0; i < array.length ; ++i)
+ array[i] = i;
+
+var result = 0;
+for (var i = 0; i < 300; ++i)
+ result += adler32(array);
+
+if (result != -63300)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/adapt-to-double-divide.js b/LayoutTests/fast/js/regress/script-tests/adapt-to-double-divide.js
new file mode 100644
index 0000000..d897fc1
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/adapt-to-double-divide.js
@@ -0,0 +1,22 @@
+function foo(a,b) {
+ var c = (a + b) / 2;
+ var d = a - b;
+ for (var i = 0; i < 100000; ++i) {
+ c *= d;
+ c += d;
+ c /= d;
+ }
+ return c - d;
+}
+
+var result = 0;
+for (var i = 0; i < 100; ++i) {
+ result += foo(5,6);
+}
+
+if (result != 10000650) {
+ print("Bad result: " + result);
+ throw "Bad result: " + result;
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/aliased-arguments-getbyval.js b/LayoutTests/fast/js/regress/script-tests/aliased-arguments-getbyval.js
new file mode 100644
index 0000000..0964ccc
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/aliased-arguments-getbyval.js
@@ -0,0 +1,15 @@
+function bar()
+{
+ var args = arguments;
+ var result = 0;
+ for (var i = 0; i < args.length; ++i)
+ result += args[i];
+ return result;
+}
+
+var result = 0;
+for (var i = 0; i < 10000; ++i)
+ result += bar(i, i + 1, i + 2, i + 3);
+
+if (result != 200040000)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/allocate-big-object.js b/LayoutTests/fast/js/regress/script-tests/allocate-big-object.js
new file mode 100644
index 0000000..86c6d5a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/allocate-big-object.js
@@ -0,0 +1,19 @@
+function foo() {
+ var o = {};
+ o.a = 1;
+ o.b = 2;
+ o.c = 3;
+ o.d = 4;
+ o.e = 5;
+ o.f = 6;
+ o.g = 7;
+ return o;
+}
+
+var result = 0;
+for (var i = 0; i < 100000; ++i)
+ result += foo().a;
+
+if (result != 100000)
+ throw "Error, bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/arity-mismatch-inlining.js b/LayoutTests/fast/js/regress/script-tests/arity-mismatch-inlining.js
new file mode 100644
index 0000000..88f3127
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/arity-mismatch-inlining.js
@@ -0,0 +1,10 @@
+function foo(a, b) {
+ return a + b;
+}
+
+for (var i = 0; i < 100000; ++i) {
+ var result = foo(1, 2, 3);
+ if (result != 3)
+ throw "Bad result: " + result;
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/array-access-polymorphic-structure.js b/LayoutTests/fast/js/regress/script-tests/array-access-polymorphic-structure.js
new file mode 100644
index 0000000..047579f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/array-access-polymorphic-structure.js
@@ -0,0 +1,24 @@
+function foo(a) {
+ var result = a[0];
+ if (result)
+ result += a[1];
+ if (result)
+ result += a[2];
+ if (result)
+ result += a[3];
+ if (result)
+ result += a[4];
+ return result;
+}
+
+var result = 0;
+
+for (var i = 0; i < 1000000; ++i) {
+ var array = [1, 2, 3, 4, 5];
+ if (i & 1)
+ array.f = 42;
+ result += foo(array);
+}
+
+if (result != 15000000)
+ throw "Error: bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/array-with-double-add.js b/LayoutTests/fast/js/regress/script-tests/array-with-double-add.js
new file mode 100644
index 0000000..82a40a7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/array-with-double-add.js
@@ -0,0 +1,25 @@
+function foo() {
+ var a = [];
+ var b = [];
+
+ for (var i = 0; i < 1000; ++i) {
+ a.push(i + 0.5);
+ b.push(i - 0.5);
+ }
+
+ for (var i = 0; i < 1000; ++i) {
+ for (var j = 0; j < a.length; ++j)
+ a[j] += b[j];
+ }
+
+ var result = 0;
+ for (var i = 0; i < a.length; ++i)
+ result += a[i];
+
+ return result;
+}
+
+var result = foo();
+if (result != 499500000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/array-with-double-increment.js b/LayoutTests/fast/js/regress/script-tests/array-with-double-increment.js
new file mode 100644
index 0000000..bec0dce
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/array-with-double-increment.js
@@ -0,0 +1,23 @@
+function foo() {
+ var array = [];
+
+ for (var i = 0; i < 1000; ++i)
+ array.push(i + 0.5);
+
+ for (var i = 0; i < 1000; ++i) {
+ for (var j = 0; j < array.length; ++j)
+ array[j]++;
+ }
+
+ var result = 0;
+ for (var i = 0; i < array.length; ++i)
+ result += array[i];
+
+ return result;
+}
+
+var result = foo();
+if (result != 1500000)
+ throw "Bad result: " + result;
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/array-with-double-mul-add.js b/LayoutTests/fast/js/regress/script-tests/array-with-double-mul-add.js
new file mode 100644
index 0000000..3157501
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/array-with-double-mul-add.js
@@ -0,0 +1,28 @@
+function foo() {
+ var a = [];
+ var b = [];
+ var c = [];
+
+ for (var i = 0; i < 1000; ++i) {
+ a.push(i + 0.5);
+ b.push(i - 0.5);
+ c.push((i % 2) ? 0.5 : -0.25);
+ }
+
+ for (var i = 0; i < 1000; ++i) {
+ for (var j = 0; j < a.length; ++j)
+ a[j] += b[j] * c[j];
+ }
+
+ var result = 0;
+ for (var i = 0; i < a.length; ++i)
+ result += a[i];
+
+ return result;
+}
+
+var result = foo();
+if (result != 63062500)
+ throw "Bad result: " + result;
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/array-with-double-sum.js b/LayoutTests/fast/js/regress/script-tests/array-with-double-sum.js
new file mode 100644
index 0000000..0eb3994
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/array-with-double-sum.js
@@ -0,0 +1,18 @@
+function foo() {
+ var array = [];
+
+ for (var i = 0; i < 1000; ++i)
+ array.push(i + 0.5);
+
+ var result = 0;
+ for (var i = 0; i < 1000; ++i) {
+ for (var j = 0; j < array.length; ++j)
+ result += array[j];
+ }
+
+ return result;
+}
+
+if (foo() != 500000000)
+ throw "ERROR";
+
diff --git a/LayoutTests/fast/js/regress/script-tests/array-with-int32-add-sub.js b/LayoutTests/fast/js/regress/script-tests/array-with-int32-add-sub.js
new file mode 100644
index 0000000..42cf2d9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/array-with-int32-add-sub.js
@@ -0,0 +1,27 @@
+function foo() {
+ var a = [];
+ var b = [];
+
+ for (var i = 0; i < 1000; ++i) {
+ a.push(i + 1);
+ b.push(i - 1);
+ }
+
+ for (var i = 0; i < 1000; ++i) {
+ for (var j = 0; j < a.length; ++j)
+ a[j] += b[j];
+ for (var j = 0; j < a.length; ++j)
+ a[j] -= b[j];
+ }
+
+ var result = 0;
+ for (var i = 0; i < a.length; ++i)
+ result += a[i];
+
+ return result;
+}
+
+if (foo() != 500500)
+ throw "ERROR";
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/array-with-int32-or-double-sum.js b/LayoutTests/fast/js/regress/script-tests/array-with-int32-or-double-sum.js
new file mode 100644
index 0000000..e8fb0ca
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/array-with-int32-or-double-sum.js
@@ -0,0 +1,19 @@
+function foo() {
+ var array = [];
+
+ for (var i = 0; i < 1000; ++i)
+ array.push(i + ((i % 2) ? 0.5 : 0));
+
+ var result = 0;
+ for (var i = 0; i < 1000; ++i) {
+ for (var j = 0; j < array.length; ++j)
+ result += array[j];
+ }
+
+ return result;
+}
+
+var result = foo();
+if (result != 499750000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/big-int-mul.js b/LayoutTests/fast/js/regress/script-tests/big-int-mul.js
new file mode 100644
index 0000000..e48d8e6
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/big-int-mul.js
@@ -0,0 +1,22 @@
+// Test the performance of integer multiplication by implementing a 16-bit
+// string hash.
+
+function stringHash(string)
+{
+ // source: http://en.wikipedia.org/wiki/Java_hashCode()#Sample_implementations_of_the_java.lang.String_algorithm
+ var h = 0;
+ var len = string.length;
+ for (var index = 0; index < len; index++) {
+ h = (((31 * h) | 0) + string.charCodeAt(index)) | 0;
+ }
+ return h;
+}
+
+for (var i = 0; i < 10000; ++i) {
+ var result =
+ (stringHash("The spirit is willing but the flesh is weak.") *
+ stringHash("The vodka is strong but the meat is rotten.")) | 0;
+ if (result != -1136304128)
+ throw "Bad result: " + result;
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/boolean-test.js b/LayoutTests/fast/js/regress/script-tests/boolean-test.js
new file mode 100644
index 0000000..43b58a7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/boolean-test.js
@@ -0,0 +1,15 @@
+function foo(a) {
+ return typeof(a) == "boolean";
+}
+
+var array = ["string", 5, 6.5, void(0), null, true, false, {f:42}, [1, 2, 3]];
+
+var result = 0;
+for (var i = 0; i < 100000; ++i) {
+ result *= 3;
+ result += foo(array[i % array.length]) | 0;
+ result |= 0;
+}
+
+if (result != 1113078940)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/cast-int-to-double.js b/LayoutTests/fast/js/regress/script-tests/cast-int-to-double.js
new file mode 100644
index 0000000..12a633a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/cast-int-to-double.js
@@ -0,0 +1,17 @@
+function foo(o, a, b) {
+ var x = o.f;
+ return (x + a) - (x * 0.5) + (x + b) - (x * 0.1) + (a + 1) - (b - 1) + (x + 1) - (x - 1);
+}
+
+var o = {f:5};
+var a = 0.2;
+var b = 0.4;
+
+var result = 0;
+for (var i = 0; i < 1000000; ++i)
+ result += foo(o, a, b);
+
+if (result != 11400000.00021128) {
+ print(result);
+ throw "Bad result";
+}
diff --git a/LayoutTests/fast/js/regress/script-tests/cell-argument.js b/LayoutTests/fast/js/regress/script-tests/cell-argument.js
new file mode 100644
index 0000000..a96768e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/cell-argument.js
@@ -0,0 +1,14 @@
+function foo(o) {
+ var result = 0;
+ for (var i = 0; i < 5000; ++i)
+ result += o.f;
+ return result;
+}
+
+var o = {f:42};
+var result = 0;
+for (var i = 0; i < 1000; ++i)
+ result += foo(o);
+
+print(result);
+
diff --git a/LayoutTests/fast/js/regress/script-tests/cfg-simplify.js b/LayoutTests/fast/js/regress/script-tests/cfg-simplify.js
new file mode 100644
index 0000000..2f88373
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/cfg-simplify.js
@@ -0,0 +1,12 @@
+function foo(a, b, c) {
+ if (a + b < c)
+ return a - b + c;
+ else
+ return a + b - c;
+}
+
+for (var i = 0; i < 1000000; ++i) {
+ if (foo(1, 2, 3) != 0)
+ throw new "Result not zero";
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/cmpeq-obj-to-obj-other.js b/LayoutTests/fast/js/regress/script-tests/cmpeq-obj-to-obj-other.js
new file mode 100644
index 0000000..de3ceca
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/cmpeq-obj-to-obj-other.js
@@ -0,0 +1,47 @@
+function foo(a, b) {
+ return a == b;
+}
+
+function bar(a, b) {
+ if (a == b)
+ return "yes";
+ else
+ return "no";
+}
+
+function baz(a, b) {
+ if (a != b)
+ return "no";
+ else
+ return "yes";
+}
+
+var o = {f:1};
+var p = {f:2};
+var q = {f:3};
+
+var array1 = [o, p, q];
+var array2 = [o, null];
+var expecteds = [true,"yes","yes",false,"no","no",false,"no","no",false,"no","no",false,"no","no",false,"no","no"];
+
+var expectedsIndex = 0;
+
+function dostuff(result) {
+ if (result == expecteds[expectedsIndex % expecteds.length]) {
+ expectedsIndex++;
+ return;
+ }
+
+ print("Bad result with a = " + a + ", b = " + b + ": wanted " + expecteds[expectedsIndex % expecteds.length] + " but got " + result);
+ throw "Error";
+}
+
+for (var i = 0; i < 100000; ++i) {
+ var a = array1[i % array1.length];
+ var b = array2[i % array2.length];
+ dostuff(foo(a, b));
+ dostuff(bar(a, b));
+ dostuff(baz(a, b));
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/constant-test.js b/LayoutTests/fast/js/regress/script-tests/constant-test.js
new file mode 100644
index 0000000..089681a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/constant-test.js
@@ -0,0 +1,13 @@
+function foo(a, b, c) {
+ return a * b / c + a - b * c / a % b + c;
+}
+
+var result = 0;
+
+for (var i = 0; i < 1000000; ++i)
+ result += foo(1.5, 2.4, 3.3);
+
+if (result != 5410909.091033336)
+ throw "Bad result: " + result;
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/direct-arguments-getbyval.js b/LayoutTests/fast/js/regress/script-tests/direct-arguments-getbyval.js
new file mode 100644
index 0000000..6014c91
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/direct-arguments-getbyval.js
@@ -0,0 +1,14 @@
+function bar()
+{
+ var result = 0;
+ for (var i = 0; i < arguments.length; ++i)
+ result += arguments[i];
+ return result;
+}
+
+var result = 0;
+for (var i = 0; i < 10000; ++i)
+ result += bar(i, i + 1, i + 2, i + 3);
+
+if (result != 200040000)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/double-pollution-getbyval.js b/LayoutTests/fast/js/regress/script-tests/double-pollution-getbyval.js
new file mode 100644
index 0000000..9dd13ef
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/double-pollution-getbyval.js
@@ -0,0 +1,23 @@
+function foo(a, b, array) {
+ var c = (a + b) / 2;
+ var d = a - b;
+ for (var i = 0; i < 100000; ++i) {
+ c *= d;
+ c += d;
+ c /= d;
+ c += array[d + 2];
+ }
+ return c - d;
+}
+
+var result = 0;
+var array = [7, 8];
+for (var i = 0; i < 10; ++i) {
+ result += foo(5, 6, array);
+}
+
+if (result != 9000065) {
+ print("Bad result: " + result);
+ throw "Bad result: " + result;
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/double-pollution-putbyoffset.js b/LayoutTests/fast/js/regress/script-tests/double-pollution-putbyoffset.js
new file mode 100644
index 0000000..b38acaa
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/double-pollution-putbyoffset.js
@@ -0,0 +1,24 @@
+function foo(a, b) {
+ var c = (a + b) / 2;
+ var d = a - b;
+ for (var i = 0; i < 2; ++i) {
+ c *= d;
+ c += d;
+ c /= d;
+ }
+ return {a:c - d, b:d};
+}
+
+var result = 0;
+var array = [7, 8];
+for (var i = 0; i < 100000; ++i) {
+ var thingy = foo(5, 6);
+ result += thingy.a + array[2 + thingy.b];
+}
+
+if (result != 1650000) {
+ print("Bac result: " + result);
+ throw "Bad result: " + result;
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/external-arguments-getbyval.js b/LayoutTests/fast/js/regress/script-tests/external-arguments-getbyval.js
new file mode 100644
index 0000000..f655bed
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/external-arguments-getbyval.js
@@ -0,0 +1,19 @@
+function foo(args)
+{
+ var result = 0;
+ for (var i = 0; i < args.length; ++i)
+ result += args[i];
+ return result;
+}
+
+function bar()
+{
+ return foo(arguments);
+}
+
+var result = 0;
+for (var i = 0; i < 10000; ++i)
+ result += bar(i, i + 1, i + 2, i + 3);
+
+if (result != 200040000)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/external-arguments-putbyval.js b/LayoutTests/fast/js/regress/script-tests/external-arguments-putbyval.js
new file mode 100644
index 0000000..df19a21
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/external-arguments-putbyval.js
@@ -0,0 +1,32 @@
+function foo(args)
+{
+ var result = 0;
+ for (var i = 0; i < args.length; ++i) {
+ result += args[i];
+ args[i] += i;
+ }
+ return result;
+}
+
+function bar(a, b, c, d)
+{
+ return [foo(arguments), a, b, c, d];
+}
+
+for (var i = 0; i < 10000; ++i) {
+ var result = bar(i, i + 1, i + 2, i + 3);
+ if (result.length != 5)
+ throw "Bad result length in " + result;
+ if (result[0] != i * 4 + 6)
+ throw "Bad first element in " + result + "; expected " + (i * 3 + 6);
+ if (result[1] != i)
+ throw "Bad second element in " + result + "; expected " + i;
+ if (result[2] != i + 1 + 1)
+ throw "Bad third element in " + result + "; expected " + (i + 1 + 1);
+ if (result[3] != i + 2 + 2)
+ throw "Bad fourth element in " + result + "; expected " + (i + 2 + 2);
+ if (result[4] != i + 3 + 3)
+ throw "Bad fifth element in " + result + "; expected " + (i + 3 + 3);
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/fold-double-to-int.js b/LayoutTests/fast/js/regress/script-tests/fold-double-to-int.js
new file mode 100644
index 0000000..9f7e458
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/fold-double-to-int.js
@@ -0,0 +1,53 @@
+// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright (C) 2013 Apple Inc. 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.
+
+// V8's random function.
+Math.random = (function() {
+ var seed = 49734321;
+ return function() {
+ // Robert Jenkins' 32 bit integer hash function.
+ seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;
+ seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;
+ seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;
+ seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;
+ seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;
+ seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;
+ return (seed & 0xfffffff) / 0x10000000;
+ };
+})();
+
+x = 0;
+
+for (var i = 0; i < 1000000; ++i)
+ x += Math.random();
+
+if (Math.round(x) != 499823) {
+ throw "Bad result from my random function: " + x;
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/function-dot-apply.js b/LayoutTests/fast/js/regress/script-tests/function-dot-apply.js
new file mode 100644
index 0000000..ba598c9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/function-dot-apply.js
@@ -0,0 +1,18 @@
+function thingy(a, b) {
+ return a + b;
+}
+
+function doCall() {
+ return thingy.apply(void 0, arguments);
+}
+
+function foo() {
+ return doCall(1, 2);
+}
+
+for (var i = 0; i < 200000; ++i) {
+ var result = foo();
+ if (result != 3)
+ throw "Bad result: " + result;
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/function-test.js b/LayoutTests/fast/js/regress/script-tests/function-test.js
new file mode 100644
index 0000000..31fbc51
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/function-test.js
@@ -0,0 +1,15 @@
+function foo(a) {
+ return typeof(a) == "function";
+}
+
+var array = ["string", 5, 6.5, foo, void(0), null, true, false, {f:42}, [1, 2, 3]];
+
+var result = 0;
+for (var i = 0; i < 100000; ++i) {
+ result *= 3;
+ result += foo(array[i % array.length]) | 0;
+ result |= 0;
+}
+
+if (result != -738097840)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/get-by-id-chain-from-try-block.js b/LayoutTests/fast/js/regress/script-tests/get-by-id-chain-from-try-block.js
new file mode 100644
index 0000000..475083f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/get-by-id-chain-from-try-block.js
@@ -0,0 +1,47 @@
+function A() { }
+
+A.prototype = {f:42};
+
+function B() { }
+
+B.prototype = new A();
+
+function C() { }
+
+C.prototype = new B();
+
+function D() { }
+
+D.prototype = new C();
+
+function E() { }
+
+E.prototype = new D();
+
+function F() { }
+
+F.prototype = new E();
+
+function G() { }
+
+G.prototype = new F();
+
+function foo(o) {
+ try {
+ var result = 0;
+ for (var i = 0; i < 1000; ++i)
+ result += o.f;
+ return result;
+ } catch (e) {
+ return 52;
+ }
+}
+
+var result = 0;
+
+for (var i = 0; i < 1000; ++i)
+ result += foo(new G());
+
+if (result != 42000000)
+ throw "Error: bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/indexed-properties-in-objects.js b/LayoutTests/fast/js/regress/script-tests/indexed-properties-in-objects.js
new file mode 100644
index 0000000..cf62cd9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/indexed-properties-in-objects.js
@@ -0,0 +1,19 @@
+var o = {};
+
+function foo(o) {
+ var result = 0;
+ for (var i = 0; i < o.length; ++i)
+ result += o[i];
+ return result;
+}
+
+o.length = 100;
+for (var i = 0; i < o.length; ++i)
+ o[i] = i;
+
+var result = 0;
+for (var i = 0; i < 10000; ++i)
+ result += foo(o);
+
+if (result != 49500000)
+ throw "Error: bad result " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/inline-arguments-access.js b/LayoutTests/fast/js/regress/script-tests/inline-arguments-access.js
new file mode 100644
index 0000000..2536d07
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/inline-arguments-access.js
@@ -0,0 +1,13 @@
+function foo() {
+ return arguments[0] + arguments[1] + arguments[2];
+}
+
+function bar(a, b, c) {
+ return foo(b, c, 42);
+}
+
+for (var i = 0; i < 200000; ++i) {
+ var result = bar(1, 2, 3);
+ if (result != 47)
+ throw "Bad result: " + result;
+}
diff --git a/LayoutTests/fast/js/regress/script-tests/inline-arguments-local-escape.js b/LayoutTests/fast/js/regress/script-tests/inline-arguments-local-escape.js
new file mode 100644
index 0000000..aa8913f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/inline-arguments-local-escape.js
@@ -0,0 +1,14 @@
+function foo() {
+ return arguments;
+}
+
+function bar(a, b, c) {
+ var thingy = foo(b, c, 42);
+ return thingy[0] + thingy[1] + thingy[2];
+}
+
+for (var i = 0; i < 200000; ++i) {
+ var result = bar(1, 2, 3);
+ if (result != 47)
+ throw "Bad result: " + result;
+}
diff --git a/LayoutTests/fast/js/regress/script-tests/inline-get-scoped-var.js b/LayoutTests/fast/js/regress/script-tests/inline-get-scoped-var.js
new file mode 100644
index 0000000..eeed516
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/inline-get-scoped-var.js
@@ -0,0 +1,15 @@
+function foo(x) {
+ function bar(y) {
+ return x + y;
+ }
+
+ var result = 0;
+ for (var i = 0; i < 2000000; ++i)
+ result = bar(1);
+
+ return result;
+}
+
+var result = foo(5);
+if (result != 6)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/inlined-put-by-id-transition.js b/LayoutTests/fast/js/regress/script-tests/inlined-put-by-id-transition.js
new file mode 100644
index 0000000..0e3e9f3
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/inlined-put-by-id-transition.js
@@ -0,0 +1,28 @@
+function foo(o) {
+ o.x = 1;
+ o.y = 2;
+ o.a = 3;
+ o.b = 4;
+ o.c = 5;
+ o.d = 6;
+ o.e = 7;
+ o.f = 8;
+ o.g = 9;
+ o.h = 10;
+ o.i = 11;
+}
+
+function Foo() {
+ foo(this);
+}
+
+var result = 0;
+
+for (var i = 0; i < 100000; ++i) {
+ foo({f:42});
+ result += (new Foo()).x;
+}
+
+if (result != 100000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-abs-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-abs-then-get-by-val.js
new file mode 100644
index 0000000..d258c5a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-abs-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[Math.abs(c)];
+}
+
+var result = 0;
+var array = [42, 43, 44, 45];
+for (var i = 0; i < 500000; ++i)
+ result += foo(-((i % 3) + 1), array);
+
+if (result != 21999999)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-abs-zero-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-abs-zero-then-get-by-val.js
new file mode 100644
index 0000000..817ec20
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-abs-zero-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[Math.abs(c)];
+}
+
+var result = 0;
+var array = [42, 43, 44];
+for (var i = 0; i < 1000000; ++i)
+ result += foo(-(i % 3), array);
+
+if (result != 42999999)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-add-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-add-then-get-by-val.js
new file mode 100644
index 0000000..6a9b35f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-add-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(a, b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[a + c];
+}
+
+var result = 0;
+var array = [42, 43, 44];
+for (var i = 0; i < 1000000; ++i)
+ result += foo(1 - i, i + 1, array);
+
+if (result != 44000000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-add.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-add.js
new file mode 100644
index 0000000..1cb48a9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-add.js
@@ -0,0 +1,16 @@
+var p = {f:true};
+
+function foo(a, b) {
+ var c;
+ if (p.f)
+ c = b;
+ return a + c;
+}
+
+var result = 0;
+for (var i = 0; i < 1000000; ++i)
+ result += foo(i, i + 1);
+
+if (result != 1000000000000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-div-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-div-then-get-by-val.js
new file mode 100644
index 0000000..8286d68
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-div-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(a, b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[a / c];
+}
+
+var result = 0;
+var array = [42, 43, 44, 45, 46];
+for (var i = 0; i < 300000; ++i)
+ result += foo((i % 3) * 2, (i % 2) + 1, array);
+
+if (result != 13050000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-max-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-max-then-get-by-val.js
new file mode 100644
index 0000000..815b754
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-max-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(a, b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[Math.max(a, c)];
+}
+
+var result = 0;
+var array = [42, 43, 44, 45, 46];
+for (var i = 0; i < 400000; ++i)
+ result += foo((i % 3) * 2, (i % 2) + 1, array);
+
+if (result != 17799999)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-min-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-min-then-get-by-val.js
new file mode 100644
index 0000000..86e4597
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-min-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(a, b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[Math.min(a, c)];
+}
+
+var result = 0;
+var array = [42, 43, 44];
+for (var i = 0; i < 400000; ++i)
+ result += foo((i % 3) * 2, (i % 2) + 1, array);
+
+if (result != 17199999)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-mod-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-mod-then-get-by-val.js
new file mode 100644
index 0000000..b5b1d40
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-mod-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(a, b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[a % c];
+}
+
+var result = 0;
+var array = [42, 43];
+for (var i = 0; i < 300000; ++i)
+ result += foo(i % 3, (i % 2) + 1, array);
+
+if (result != 12650000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-mul-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-mul-then-get-by-val.js
new file mode 100644
index 0000000..87ab8f7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-mul-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(a, b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[a * c];
+}
+
+var result = 0;
+var array = [42, 43, 44];
+for (var i = 0; i < 400000; ++i)
+ result += foo(i % 2, i % 3, array);
+
+if (result != 16999999)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-neg-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-neg-then-get-by-val.js
new file mode 100644
index 0000000..c606d3e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-neg-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[-c];
+}
+
+var result = 0;
+var array = [42, 43, 44, 45];
+for (var i = 0; i < 500000; ++i)
+ result += foo(-((i % 3) + 1), array);
+
+if (result != 21999999)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-neg-zero-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-neg-zero-then-get-by-val.js
new file mode 100644
index 0000000..1b69721
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-neg-zero-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[-c];
+}
+
+var result = 0;
+var array = [42, 43, 44];
+for (var i = 0; i < 1000000; ++i)
+ result += foo(-(i % 3), array);
+
+if (result != 42999999)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-sub-then-get-by-val.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-sub-then-get-by-val.js
new file mode 100644
index 0000000..6f38b01
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-sub-then-get-by-val.js
@@ -0,0 +1,17 @@
+var p = {f:true};
+
+function foo(a, b, d) {
+ var c;
+ if (p.f)
+ c = b;
+ return d[a - c];
+}
+
+var result = 0;
+var array = [42, 43, 44];
+for (var i = 0; i < 1000000; ++i)
+ result += foo(i + 1, i - 1, array);
+
+if (result != 44000000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-or-other-sub.js b/LayoutTests/fast/js/regress/script-tests/int-or-other-sub.js
new file mode 100644
index 0000000..b671a25
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-or-other-sub.js
@@ -0,0 +1,16 @@
+var p = {f:true};
+
+function foo(a, b) {
+ var c;
+ if (p.f)
+ c = b;
+ return a - c;
+}
+
+var result = 0;
+for (var i = 0; i < 1000000; ++i)
+ result += foo(i, i + 1);
+
+if (result != -1000000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/int-overflow-local.js b/LayoutTests/fast/js/regress/script-tests/int-overflow-local.js
new file mode 100644
index 0000000..e29fb6a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/int-overflow-local.js
@@ -0,0 +1,25 @@
+// This tests that we can correctly infer that a local variable is only
+// used as an integer even if its uses are not in the same basic block as
+// where it is defined.
+
+function foo(a, b, c) {
+ var x = 1 + a + b;
+ if (c)
+ x++;
+ else
+ x--;
+ return (x + a)|0;
+}
+
+var bigNumber = 2147483647;
+var result = 0;
+
+for (var i = 0; i < 10000000; ++i)
+ result = (result + foo(i, bigNumber - i, i%2)) | 0;
+
+if (result != -2014260032) {
+ print("Got a bad result: " + result);
+ throw "Bad result";
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/integer-divide.js b/LayoutTests/fast/js/regress/script-tests/integer-divide.js
new file mode 100644
index 0000000..24105b7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/integer-divide.js
@@ -0,0 +1,32 @@
+// This tests that integer divisions are appropriately optimized, while double
+// divisions are still kept the same as before.
+
+function foo(a, b) {
+ return a / b;
+}
+
+function bar(a, b) {
+ return (a / b) | 0;
+}
+
+var result = 0;
+
+for (var i = 0; i < 1000000; ++i) {
+ var a;
+ var b;
+ if (i < 500) {
+ a = i * 2;
+ b = 2;
+ } else {
+ a = i * 3;
+ b = 4;
+ }
+
+ result += foo(a, b) * 3 + bar(a, b);
+}
+
+if (result != 1499998249937.5) {
+ print("Bad result: " + result);
+ throw "Error";
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/make-indexed-storage.js b/LayoutTests/fast/js/regress/script-tests/make-indexed-storage.js
new file mode 100644
index 0000000..045fce7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/make-indexed-storage.js
@@ -0,0 +1,22 @@
+function foo(length) {
+ var o = {};
+ o.length = length;
+ for (var i = 0; i < o.length; ++i)
+ o[i] = i; // The first iteration is special as it makes indexed storage. If the DFG doesn't know how to optimize that and instead calls a C function, then this benchmark may not run so quickly.
+ return o;
+}
+
+function sum(o) {
+ var result = 0;
+ for (var i = 0; i < o.length; ++i)
+ result += o[i];
+ return result;
+}
+
+var result = 0;
+for (var i = 0; i < 2000; ++i)
+ result += sum(foo(100));
+
+if (result != 9900000)
+ throw "Error: bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/method-on-number.js b/LayoutTests/fast/js/regress/script-tests/method-on-number.js
new file mode 100644
index 0000000..9f8e9e7
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/method-on-number.js
@@ -0,0 +1,13 @@
+function foo(a) {
+ var result = 0;
+ for (var i = 0 ; i < 5000000; ++i)
+ result += a.valueOf();
+ return result;
+}
+
+var result = foo(5);
+
+if (result != 25000000) {
+ print("Bad result: " + result);
+ throw "Bad result: " + result;
+}
diff --git a/LayoutTests/fast/js/regress/script-tests/new-array-buffer-dead.js b/LayoutTests/fast/js/regress/script-tests/new-array-buffer-dead.js
new file mode 100644
index 0000000..5cbafed
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/new-array-buffer-dead.js
@@ -0,0 +1,18 @@
+function foo() {
+ return [[1,2,3], [5,6,6]];
+}
+
+function bar() {
+ return ["foo", "bar"];
+}
+
+function baz() {
+ return [foo(), bar(), foo(), bar()];
+}
+
+function thingy() {
+ for (var i = 0; i < 1000000; ++i)
+ baz();
+}
+
+thingy();
diff --git a/LayoutTests/fast/js/regress/script-tests/new-array-buffer-push.js b/LayoutTests/fast/js/regress/script-tests/new-array-buffer-push.js
new file mode 100644
index 0000000..3ed3e94
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/new-array-buffer-push.js
@@ -0,0 +1,22 @@
+function foo() {
+ return [[1,2,3], [5,6,6]];
+}
+
+function bar() {
+ return ["foo", "bar"];
+}
+
+function baz() {
+ return [foo(), bar(), foo(), bar()];
+}
+
+function thingy() {
+ var result = [];
+ for (var i = 0; i < 50000; ++i)
+ result.push(baz());
+ return result;
+}
+
+var size = thingy().length;
+if (size != 50000)
+ throw "Error: bad size: " + size;
diff --git a/LayoutTests/fast/js/regress/script-tests/new-array-dead.js b/LayoutTests/fast/js/regress/script-tests/new-array-dead.js
new file mode 100644
index 0000000..12f6366
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/new-array-dead.js
@@ -0,0 +1,12 @@
+function foo() {
+ return new Array();
+}
+
+function bar() {
+ for (var i = 0; i < 10000000; ++i)
+ foo();
+}
+
+bar();
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/new-array-push.js b/LayoutTests/fast/js/regress/script-tests/new-array-push.js
new file mode 100644
index 0000000..cccaf5d
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/new-array-push.js
@@ -0,0 +1,13 @@
+function foo() {
+ return new Array();
+}
+
+var arrays = [];
+
+for (var i = 0; i < 100000; ++i)
+ arrays.push(foo());
+
+for (var i = 0; i < 100000; ++i) {
+ if (arrays[i].length != 0)
+ throw "Error";
+}
diff --git a/LayoutTests/fast/js/regress/script-tests/number-test.js b/LayoutTests/fast/js/regress/script-tests/number-test.js
new file mode 100644
index 0000000..4ef7054
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/number-test.js
@@ -0,0 +1,15 @@
+function foo(a) {
+ return typeof(a) == "number";
+}
+
+var array = ["string", 5, 6.5, void(0), null, true, false, {f:42}, [1, 2, 3]];
+
+var result = 0;
+for (var i = 0; i < 100000; ++i) {
+ result *= 3;
+ result += foo(array[i % array.length]) | 0;
+ result |= 0;
+}
+
+if (result != -34919076)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/object-closure-call.js b/LayoutTests/fast/js/regress/script-tests/object-closure-call.js
new file mode 100644
index 0000000..e3132c6
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/object-closure-call.js
@@ -0,0 +1,15 @@
+function makeObjectClosure(value) {
+ function foo() {
+ return this.x;
+ }
+ return {foo:foo, x:value};
+}
+
+var result = 0;
+for (var i = 0; i < 10000; ++i) {
+ var o = makeObjectClosure(i);
+ for (var j = 0; j < 100; ++j)
+ result += o.foo();
+}
+
+print(result);
diff --git a/LayoutTests/fast/js/regress/script-tests/object-test.js b/LayoutTests/fast/js/regress/script-tests/object-test.js
new file mode 100644
index 0000000..1d09483
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/object-test.js
@@ -0,0 +1,15 @@
+function foo(a) {
+ return typeof(a) == "object";
+}
+
+var array = ["string", 5, 6.5, void(0), null, true, false, {f:42}, [1, 2, 3]];
+
+var result = 0;
+for (var i = 0; i < 100000; ++i) {
+ result *= 3;
+ result += foo(array[i % array.length]) | 0;
+ result |= 0;
+}
+
+if (result != 719228699)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/poly-stricteq.js b/LayoutTests/fast/js/regress/script-tests/poly-stricteq.js
new file mode 100644
index 0000000..40cfbbb
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/poly-stricteq.js
@@ -0,0 +1,26 @@
+// Tests the performance of completely polymorphic strict equality.
+
+var array = [];
+
+for (var i = 0; i < 1000; ++i) {
+ array.push(i);
+ array.push((i%2) == 0);
+ array.push("" + i);
+ var o = {};
+ o["a" + i] = i + 1;
+ array.push(o);
+}
+
+var numStrictEqual = 0;
+for (var i = 0; i < array.length; ++i) {
+ for (var j = i + 1; j < array.length; ++j) {
+ if (array[i] === array[j])
+ numStrictEqual++;
+ }
+}
+
+if (numStrictEqual != 249500)
+ throw "Incorrect result: " + numStrictEqual;
+
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/polymorphic-structure.js b/LayoutTests/fast/js/regress/script-tests/polymorphic-structure.js
new file mode 100644
index 0000000..a5bac80
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/polymorphic-structure.js
@@ -0,0 +1,17 @@
+function foo(o) {
+ return o.f;
+}
+
+var o = {f:42};
+var result = 0;
+for (var i = 0; i < 500; ++i) {
+ for (var j = 0; j < 10000; ++j)
+ result += foo(o);
+ if (o.g)
+ o = {f:42};
+ else
+ o.g = 43;
+}
+
+if (result != 210000000)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/polyvariant-monomorphic-get-by-id.js b/LayoutTests/fast/js/regress/script-tests/polyvariant-monomorphic-get-by-id.js
new file mode 100644
index 0000000..3918708
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/polyvariant-monomorphic-get-by-id.js
@@ -0,0 +1,27 @@
+function foo(o) {
+ return o.f;
+}
+
+function Foo() { }
+
+Foo.prototype.f = 1;
+
+function Bar() { }
+
+Bar.prototype.f = 2;
+
+function bar() {
+ var o = new Foo();
+ var p = new Bar();
+
+ var result = 0;
+ for (var i = 0; i < 2000000; ++i)
+ result += foo(o) + foo(p);
+
+ return result;
+}
+
+var result = bar();
+if (result != 6000000)
+ throw "Bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/rare-osr-exit-on-local.js b/LayoutTests/fast/js/regress/script-tests/rare-osr-exit-on-local.js
new file mode 100644
index 0000000..645f978
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/rare-osr-exit-on-local.js
@@ -0,0 +1,53 @@
+// This program attempts to relatively rare OSR exits due to mispredictions
+// on the value of a local variable, where the basic block in which the local
+// is assigned the offending value is different than the basic block in which
+// the misspeculation occurs. The occurrence of the value that causes
+// speculation failure is rare enough that the old JIT's value profiler is
+// unlikely to catch it, but common enough that recompilation will be
+// triggered.
+//
+// If the local was defined and used in the same basic block, then OSR exit
+// would update the value profile associated with the assignment, and
+// everything would be fine. But in this case OSR exit will see that the value
+// comes from a GetLocal. If our mechanisms for updating the type predictions
+// of local variables whose live ranges span basic blocks work, then it will
+// only take one recompile for the optimizing compiler to converge to an
+// optimal version of this code, where the variable is known to be one of two
+// types and we optimize for both.
+//
+// TL;DR: This tests that OSR exit updates type predictions on local variables.
+
+function foo(o,p) {
+ var x;
+ // Assign to the value on one of two basic blocks.
+ if (p)
+ x = o.f;
+ else
+ x = o.g;
+ var y = !x;
+ var z = o.h;
+ var w = 0;
+ for (var i = 0; i < 10000; ++i)
+ w += z[i%10];
+ return w + (y?1:0);
+}
+
+var array = [1,2,3,4,5,6,7,8,9,10];
+
+var result = 0;
+
+for (var i = 0; i < 3000; ++i) {
+ var v = i;
+ if (i <= 100 || (i%4))
+ v = {f:{h:v}, g:{h:v+1}, h:array};
+ else
+ v = {f:(i%3)==0, g:((i+1)%3)==0, h:array};
+ result += foo(v,(i%2)==0);
+}
+
+if (result != 165000483) {
+ print("Bad result: " + result);
+ throw "Bad result: " + result;
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/register-pressure-from-osr.js b/LayoutTests/fast/js/regress/script-tests/register-pressure-from-osr.js
new file mode 100644
index 0000000..809659a
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/register-pressure-from-osr.js
@@ -0,0 +1,44 @@
+function foo(o, p, q, r, s, t, u) {
+ var a = o.f;
+ var b = p.f;
+ var c = q.f;
+ var d = r.f;
+ var e = s.f;
+ var f = t.f;
+ var g = u.f;
+
+ a++;
+ b++;
+ c++;
+ d++;
+ e++;
+ f++;
+ g++;
+
+ var h = o.f;
+ var i = p.f;
+ var j = q.f;
+ var k = r.f;
+ var l = s.f;
+ var m = t.f;
+ var n = u.f;
+
+ return a + b + c + d + e + f + g + h + i + j + k + l + m + n;
+}
+
+var o = {a:1, b:2, c:3, d:4, e:5, g:7, h:8, i:9, f:6};
+var p = {a:1, b:2, c:3, d:4, e:5, g:7, h:8, i:9, f:6};
+var q = {a:1, b:2, c:3, d:4, e:5, g:7, h:8, i:9, f:6};
+var r = {a:1, b:2, c:3, d:4, e:5, g:7, h:8, i:9, f:6};
+var s = {a:1, b:2, c:3, d:4, e:5, g:7, h:8, i:9, f:6};
+var t = {a:1, b:2, c:3, d:4, e:5, g:7, h:8, i:9, f:6};
+var u = {a:1, b:2, c:3, d:4, e:5, g:7, h:8, i:9, f:6};
+
+var result = 0;
+for (var i = 0; i < 1000000; ++i)
+ result += foo(o, p, q, r, s, t, u);
+
+if (result != 91000000)
+ throw "Bad result: " + result;
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/simple-activation-demo.js b/LayoutTests/fast/js/regress/script-tests/simple-activation-demo.js
new file mode 100644
index 0000000..30f221c
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/simple-activation-demo.js
@@ -0,0 +1,106 @@
+// Simple demonstration of activations, which can be used to test the performance
+// of the following features:
+// - Optimization of functions that create activations.
+// - Optimization of accesses to captured variables (both in the function that
+// declared them and in nested functions).
+// - Optimization of allocation of function expressions.
+// - Optimization of calls that are monomorphic over the function executable but
+// polymorphic over scope.
+
+function foo(a, b) {
+ var x = 0;
+ for (var i = 0; i < a.length; ++i)
+ x += a[i];
+ return (function(c) {
+ x += c;
+ return b + c - x;
+ });
+}
+
+var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
+342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
+468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
+482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509,
+510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523,
+524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537,
+538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551,
+552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
+580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593,
+594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607,
+608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621,
+622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635,
+636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649,
+650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663,
+664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677,
+678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691,
+692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
+720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761,
+762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775,
+776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789,
+790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803,
+804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817,
+818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831,
+832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845,
+846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859,
+860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873,
+874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887,
+888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901,
+902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915,
+916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929,
+930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943,
+944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957,
+958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971,
+972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985,
+986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999,
+1000];
+
+var result = 0;
+
+for (var i = 0; i < 10000; ++i) {
+ var f = foo(array, i);
+ for (var j = 0; j < 10; ++j)
+ result += f(i + j);
+}
+
+if (result != -51801025000) {
+ str = "Bad result: " + result;
+ print(str);
+ throw str;
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/slow-array-profile-convergence.js b/LayoutTests/fast/js/regress/script-tests/slow-array-profile-convergence.js
new file mode 100644
index 0000000..cfd05ca
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/slow-array-profile-convergence.js
@@ -0,0 +1,26 @@
+function foo(length, value) {
+ var o = {};
+ o.length = length;
+ for (var i = 0; i < o.length; ++i)
+ o[i] = value; // If the array profile is too stochastic then we'll miss the fact that the first iteration has a different indexing type than the subsequent iterations.
+ for (var i = 0; i < o.length; ++i) {
+ for (var j = 0; j < o.length; ++j)
+ o[i] += o[j];
+ }
+ return o;
+}
+
+function sum(array) {
+ var result = 0;
+ for (var i = array.length; i--;)
+ result += array[i];
+ return result;
+}
+
+var result = 0;
+for (var i = 0; i < 10000; ++i)
+ result += sum(foo(5, i % 42));
+
+if (result != 136889232)
+ throw "Error: bad result: " + result;
+
diff --git a/LayoutTests/fast/js/regress/script-tests/slow-convergence.js b/LayoutTests/fast/js/regress/script-tests/slow-convergence.js
new file mode 100644
index 0000000..e3e14af
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/slow-convergence.js
@@ -0,0 +1,39 @@
+function foo(a, b, c, d) {
+ var result = a;
+ if (a < 0)
+ throw "what!";
+ else if (a < 1) {
+ for (var i = b; i < c; ++i)
+ result += d[i];
+ } else if (a < 2) {
+ for (var i = b + 1; i < c - 1; ++i)
+ result += d[i] * a;
+ } else if (a < 3) {
+ for (var i = b + 2; i < c - 2; ++i)
+ result += d[i] * b;
+ } else if (a < 4) {
+ for (var i = b + 3; i < c - 3; ++i)
+ result += d[i] * c;
+ } else
+ throw "huh?";
+ return result;
+}
+
+var array = [];
+for (var i = 0; i < 20; ++i)
+ array.push(i);
+
+var limit = 1000000;
+var phases = 4;
+var result = 0;
+for (var i = 0; i < limit; ++i) {
+ var phase = (i * phases / limit) | 0;
+ result += foo(i % (phase + 1), ((i % array.length) / 2) | 0, array.length - (((i % array.length) / 2) | 0), array);
+}
+
+if (result != 153620752) {
+ print(result);
+ throw "Bad result";
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/sparse-conditional.js b/LayoutTests/fast/js/regress/script-tests/sparse-conditional.js
new file mode 100644
index 0000000..4d3e47f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/sparse-conditional.js
@@ -0,0 +1,16 @@
+function foo() {
+ var result = 0;
+ for (var i = 0; i < 1; ++i)
+ result++;
+ return result;
+}
+
+var result = 0;
+for (var i = 0; i < 200000; ++i)
+ result += foo();
+
+if (result != 200000)
+ throw "Bad result: " + result;
+
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/splice-to-remove.js b/LayoutTests/fast/js/regress/script-tests/splice-to-remove.js
new file mode 100644
index 0000000..e7aff9e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/splice-to-remove.js
@@ -0,0 +1,8 @@
+for (var i = 0; i < 100; ++i) {
+ var array = [];
+ for (var j = 0; j < 1000; ++j)
+ array.push(j);
+ while (array.length)
+ array.splice(array.length / 2, 1);
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/string-hash.js b/LayoutTests/fast/js/regress/script-tests/string-hash.js
new file mode 100644
index 0000000..e1007ee
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/string-hash.js
@@ -0,0 +1,20 @@
+// Test the performance of integer multiplication by implementing a 16-bit
+// string hash.
+
+function stringHash(string)
+{
+ // source: http://en.wikipedia.org/wiki/Java_hashCode()#Sample_implementations_of_the_java.lang.String_algorithm
+ var h = 0;
+ var len = string.length;
+ for (var index = 0; index < len; index++) {
+ h = (((31 * h) | 0) + string.charCodeAt(index)) | 0;
+ }
+ return h;
+}
+
+for (var i = 0; i < 10000; ++i) {
+ var result = stringHash("The spirit is willing but the flesh is weak.");
+ if (result != -723065856)
+ throw "Bad result: " + result;
+}
+
diff --git a/LayoutTests/fast/js/regress/script-tests/string-repeat-arith.js b/LayoutTests/fast/js/regress/script-tests/string-repeat-arith.js
new file mode 100644
index 0000000..6ead301
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/string-repeat-arith.js
@@ -0,0 +1,16 @@
+function foo(a, b) {
+ var c = a - b;
+ var d = a * b;
+ var e = a / b;
+ var f = a | b;
+ var g = a ^ b;
+ var h = a & b;
+ return c + d - e + f - g + h;
+}
+
+var result = 0;
+for (var i = 0; i < 100000; ++i)
+ result ^= foo("42", i);
+
+if (result != 3472169)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/string-sub.js b/LayoutTests/fast/js/regress/script-tests/string-sub.js
new file mode 100644
index 0000000..ba7b247
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/string-sub.js
@@ -0,0 +1,10 @@
+function foo(a, b) {
+ return a - b;
+}
+
+var result = 0;
+for (var i = 0; i < 1000000; ++i)
+ result += foo("42", i);
+
+if (result != -499957500000)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/string-test.js b/LayoutTests/fast/js/regress/script-tests/string-test.js
new file mode 100644
index 0000000..7b9d091
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/string-test.js
@@ -0,0 +1,15 @@
+function foo(a) {
+ return typeof(a) == "string";
+}
+
+var array = ["string", 5, 6.5, void(0), null, true, false, {f:42}, [1, 2, 3]];
+
+var result = 0;
+for (var i = 0; i < 100000; ++i) {
+ result *= 3;
+ result += foo(array[i % array.length]) | 0;
+ result |= 0;
+}
+
+if (result != 995173904)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/structure-hoist-over-transitions.js b/LayoutTests/fast/js/regress/script-tests/structure-hoist-over-transitions.js
new file mode 100644
index 0000000..ff3b098
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/structure-hoist-over-transitions.js
@@ -0,0 +1,20 @@
+function foo() {
+ // If the structure check hoister is overzealous, it will hoist the structure check of
+ // S3 up to the assignment of o, where the structure is actually S1. Doing so will cause
+ // this function to OSR exit every time.
+
+ var o = {}; // This will create an object with structure S1.
+ o.f = 42; // This will check for S1, and then transition to S2.
+ o.g = 43; // This will check for S2, and then transition to S3.
+ for (var i = 0; i < 5; ++i)
+ o.g++; // This will have a structure check on structure S3, which the structure check hoister will want to hoist.
+ return o;
+}
+
+var result = 0;
+for (var i = 0; i < 100000; ++i)
+ result += foo().g;
+
+if (result != 4800000)
+ throw ("Error: bad result: " + result);
+
diff --git a/LayoutTests/fast/js/regress/script-tests/tear-off-arguments-simple.js b/LayoutTests/fast/js/regress/script-tests/tear-off-arguments-simple.js
new file mode 100644
index 0000000..b8b5e9c
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/tear-off-arguments-simple.js
@@ -0,0 +1,15 @@
+function bar(x)
+{
+ var args = arguments;
+ var result = 0;
+ for (var i = 1; i < args.length; ++i)
+ result += args[i];
+ return result;
+}
+
+var result = 0;
+for (var i = 0; i < 100000; ++i)
+ result += bar(i, i + 1);
+
+if (result != 5000050000)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/tear-off-arguments.js b/LayoutTests/fast/js/regress/script-tests/tear-off-arguments.js
new file mode 100644
index 0000000..b927dcb
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/tear-off-arguments.js
@@ -0,0 +1,15 @@
+function bar(x)
+{
+ var args = arguments;
+ var result = 0;
+ for (var i = 0; i < args.length; ++i)
+ result += args[i];
+ return result;
+}
+
+var result = 0;
+for (var i = 0; i < 100000; ++i)
+ result += bar(i, i + 1, i + 2, i + 3);
+
+if (result != 20000400000)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/temporal-structure.js b/LayoutTests/fast/js/regress/script-tests/temporal-structure.js
new file mode 100644
index 0000000..f2a82f1
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/temporal-structure.js
@@ -0,0 +1,14 @@
+function foo(o) {
+ return o.f;
+}
+
+var o = {f:42};
+var result = 0;
+for (var i = 0; i < 500; ++i) {
+ for (var j = 0; j < 10000; ++j)
+ result += foo(o);
+ o.g = 43;
+}
+
+if (result != 210000000)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/script-tests/to-int32-boolean.js b/LayoutTests/fast/js/regress/script-tests/to-int32-boolean.js
new file mode 100644
index 0000000..f4d3a71
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/to-int32-boolean.js
@@ -0,0 +1,20 @@
+// Tests that toInt32 conversion on a boolean does not trigger us to take
+// an unconditional OSR exit.
+
+function foo(a,b) {
+ return (a<b) | 0;
+}
+
+var result = 0;
+for (var i = 0; i < 1000000; ++i) {
+ result *= 2;
+ result += foo(i, i + ((i%2) * 2 - 1));
+ result |= 0;
+}
+
+if (result != 1431655765) {
+ print("Bad result: " + result);
+ throw "Error";
+}
+
+
diff --git a/LayoutTests/fast/js/regress/script-tests/undefined-test.js b/LayoutTests/fast/js/regress/script-tests/undefined-test.js
new file mode 100644
index 0000000..f145a02
--- /dev/null
+++ b/LayoutTests/fast/js/regress/script-tests/undefined-test.js
@@ -0,0 +1,15 @@
+function foo(a) {
+ return typeof(a) == "undefined";
+}
+
+var array = ["string", 5, 6.5, void(0), null, true, false, {f:42}, [1, 2, 3]];
+
+var result = 0;
+for (var i = 0; i < 100000; ++i) {
+ result *= 3;
+ result += foo(array[i % array.length]) | 0;
+ result |= 0;
+}
+
+if (result != -1076651747)
+ throw "Bad result: " + result;
diff --git a/LayoutTests/fast/js/regress/simple-activation-demo-expected.txt b/LayoutTests/fast/js/regress/simple-activation-demo-expected.txt
new file mode 100644
index 0000000..a9bf9a1
--- /dev/null
+++ b/LayoutTests/fast/js/regress/simple-activation-demo-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/simple-activation-demo
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/simple-activation-demo.html b/LayoutTests/fast/js/regress/simple-activation-demo.html
new file mode 100644
index 0000000..6bdd17c
--- /dev/null
+++ b/LayoutTests/fast/js/regress/simple-activation-demo.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/simple-activation-demo.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/slow-array-profile-convergence-expected.txt b/LayoutTests/fast/js/regress/slow-array-profile-convergence-expected.txt
new file mode 100644
index 0000000..7da4837
--- /dev/null
+++ b/LayoutTests/fast/js/regress/slow-array-profile-convergence-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/slow-array-profile-convergence
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/slow-array-profile-convergence.html b/LayoutTests/fast/js/regress/slow-array-profile-convergence.html
new file mode 100644
index 0000000..092dd06
--- /dev/null
+++ b/LayoutTests/fast/js/regress/slow-array-profile-convergence.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/slow-array-profile-convergence.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/slow-convergence-expected.txt b/LayoutTests/fast/js/regress/slow-convergence-expected.txt
new file mode 100644
index 0000000..6478cd9
--- /dev/null
+++ b/LayoutTests/fast/js/regress/slow-convergence-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/slow-convergence
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/slow-convergence.html b/LayoutTests/fast/js/regress/slow-convergence.html
new file mode 100644
index 0000000..5217f74
--- /dev/null
+++ b/LayoutTests/fast/js/regress/slow-convergence.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/slow-convergence.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/sparse-conditional-expected.txt b/LayoutTests/fast/js/regress/sparse-conditional-expected.txt
new file mode 100644
index 0000000..f39e173
--- /dev/null
+++ b/LayoutTests/fast/js/regress/sparse-conditional-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/sparse-conditional
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/sparse-conditional.html b/LayoutTests/fast/js/regress/sparse-conditional.html
new file mode 100644
index 0000000..bc76342
--- /dev/null
+++ b/LayoutTests/fast/js/regress/sparse-conditional.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/sparse-conditional.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/splice-to-remove-expected.txt b/LayoutTests/fast/js/regress/splice-to-remove-expected.txt
new file mode 100644
index 0000000..91e27ac
--- /dev/null
+++ b/LayoutTests/fast/js/regress/splice-to-remove-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/splice-to-remove
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/splice-to-remove.html b/LayoutTests/fast/js/regress/splice-to-remove.html
new file mode 100644
index 0000000..7a8db60
--- /dev/null
+++ b/LayoutTests/fast/js/regress/splice-to-remove.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/splice-to-remove.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/string-hash-expected.txt b/LayoutTests/fast/js/regress/string-hash-expected.txt
new file mode 100644
index 0000000..4bc4bc8
--- /dev/null
+++ b/LayoutTests/fast/js/regress/string-hash-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/string-hash
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/string-hash.html b/LayoutTests/fast/js/regress/string-hash.html
new file mode 100644
index 0000000..f1f7dc1
--- /dev/null
+++ b/LayoutTests/fast/js/regress/string-hash.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/string-hash.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/string-repeat-arith-expected.txt b/LayoutTests/fast/js/regress/string-repeat-arith-expected.txt
new file mode 100644
index 0000000..4a822e0
--- /dev/null
+++ b/LayoutTests/fast/js/regress/string-repeat-arith-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/string-repeat-arith
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/string-repeat-arith.html b/LayoutTests/fast/js/regress/string-repeat-arith.html
new file mode 100644
index 0000000..61cbea4
--- /dev/null
+++ b/LayoutTests/fast/js/regress/string-repeat-arith.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/string-repeat-arith.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/string-sub-expected.txt b/LayoutTests/fast/js/regress/string-sub-expected.txt
new file mode 100644
index 0000000..a0fa335
--- /dev/null
+++ b/LayoutTests/fast/js/regress/string-sub-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/string-sub
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/string-sub.html b/LayoutTests/fast/js/regress/string-sub.html
new file mode 100644
index 0000000..0357de1
--- /dev/null
+++ b/LayoutTests/fast/js/regress/string-sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/string-sub.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/string-test-expected.txt b/LayoutTests/fast/js/regress/string-test-expected.txt
new file mode 100644
index 0000000..80adf9f
--- /dev/null
+++ b/LayoutTests/fast/js/regress/string-test-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/string-test
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/string-test.html b/LayoutTests/fast/js/regress/string-test.html
new file mode 100644
index 0000000..b1dfe07
--- /dev/null
+++ b/LayoutTests/fast/js/regress/string-test.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/string-test.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/structure-hoist-over-transitions-expected.txt b/LayoutTests/fast/js/regress/structure-hoist-over-transitions-expected.txt
new file mode 100644
index 0000000..c1c5549
--- /dev/null
+++ b/LayoutTests/fast/js/regress/structure-hoist-over-transitions-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/structure-hoist-over-transitions
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/structure-hoist-over-transitions.html b/LayoutTests/fast/js/regress/structure-hoist-over-transitions.html
new file mode 100644
index 0000000..76541ef
--- /dev/null
+++ b/LayoutTests/fast/js/regress/structure-hoist-over-transitions.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/structure-hoist-over-transitions.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/tear-off-arguments-expected.txt b/LayoutTests/fast/js/regress/tear-off-arguments-expected.txt
new file mode 100644
index 0000000..03c66a1
--- /dev/null
+++ b/LayoutTests/fast/js/regress/tear-off-arguments-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/tear-off-arguments
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/tear-off-arguments-simple-expected.txt b/LayoutTests/fast/js/regress/tear-off-arguments-simple-expected.txt
new file mode 100644
index 0000000..6da132c
--- /dev/null
+++ b/LayoutTests/fast/js/regress/tear-off-arguments-simple-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/tear-off-arguments-simple
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/tear-off-arguments-simple.html b/LayoutTests/fast/js/regress/tear-off-arguments-simple.html
new file mode 100644
index 0000000..0816361
--- /dev/null
+++ b/LayoutTests/fast/js/regress/tear-off-arguments-simple.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/tear-off-arguments-simple.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/tear-off-arguments.html b/LayoutTests/fast/js/regress/tear-off-arguments.html
new file mode 100644
index 0000000..94c19c2
--- /dev/null
+++ b/LayoutTests/fast/js/regress/tear-off-arguments.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/tear-off-arguments.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/temporal-structure-expected.txt b/LayoutTests/fast/js/regress/temporal-structure-expected.txt
new file mode 100644
index 0000000..4a1bb75
--- /dev/null
+++ b/LayoutTests/fast/js/regress/temporal-structure-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/temporal-structure
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/temporal-structure.html b/LayoutTests/fast/js/regress/temporal-structure.html
new file mode 100644
index 0000000..2cfc26e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/temporal-structure.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/temporal-structure.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/to-int32-boolean-expected.txt b/LayoutTests/fast/js/regress/to-int32-boolean-expected.txt
new file mode 100644
index 0000000..5b09caf
--- /dev/null
+++ b/LayoutTests/fast/js/regress/to-int32-boolean-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/to-int32-boolean
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/to-int32-boolean.html b/LayoutTests/fast/js/regress/to-int32-boolean.html
new file mode 100644
index 0000000..a265e0e
--- /dev/null
+++ b/LayoutTests/fast/js/regress/to-int32-boolean.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/to-int32-boolean.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/js/regress/undefined-test-expected.txt b/LayoutTests/fast/js/regress/undefined-test-expected.txt
new file mode 100644
index 0000000..7226837
--- /dev/null
+++ b/LayoutTests/fast/js/regress/undefined-test-expected.txt
@@ -0,0 +1,10 @@
+JSRegress/undefined-test
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/js/regress/undefined-test.html b/LayoutTests/fast/js/regress/undefined-test.html
new file mode 100644
index 0000000..f532eed
--- /dev/null
+++ b/LayoutTests/fast/js/regress/undefined-test.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../resources/js-test-pre.js"></script>
+</head>
+<body>
+<script src="resources/regress-pre.js"></script>
+<script src="script-tests/undefined-test.js"></script>
+<script src="resources/regress-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
+</body>
+</html>