Unreviewed, land some overrides for Chromium for the tests I just added, since
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 3 Aug 2012 03:38:55 +0000 (03:38 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 3 Aug 2012 03:38:55 +0000 (03:38 +0000)
V8 attachs a slightly different (but equally valid) string for the exception we
expect to see.

* platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt: Added.
* platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt: Added.
* platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt: Added.
* platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@124557 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt [new file with mode: 0644]
LayoutTests/platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt [new file with mode: 0644]
LayoutTests/platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt [new file with mode: 0644]
LayoutTests/platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt [new file with mode: 0644]
PerformanceTests/SunSpider/tests/v8-v6/v8-crypto.js

index 0f547c4b2877f848e5b26af95e6ab54561a45deb..e7e2959088884e13922676e8ed356572c099c80e 100644 (file)
@@ -1,3 +1,14 @@
+2012-08-02  Filip Pizlo  <fpizlo@apple.com>
+
+        Unreviewed, land some overrides for Chromium for the tests I just added, since
+        V8 attachs a slightly different (but equally valid) string for the exception we
+        expect to see.
+
+        * platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt: Added.
+        * platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt: Added.
+        * platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt: Added.
+        * platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt: Added.
+
 2012-08-02  Kent Tamura  <tkent@chromium.org>
 
         Fix crashes for <input> and <textarea> with display:run-in.
diff --git a/LayoutTests/platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt b/LayoutTests/platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt
new file mode 100644 (file)
index 0000000..7356e70
--- /dev/null
@@ -0,0 +1,109 @@
+Tests that the CompareEq optimization for the case where one side is predicted final object and the other side is predicted either final object or other (i.e. null or undefined) doesn't assert when both sides are also proven final object.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt b/LayoutTests/platform/chromium/fast/js/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt
new file mode 100644 (file)
index 0000000..178628e
--- /dev/null
@@ -0,0 +1,109 @@
+Tests that the CompareEq optimization for the case where one side is predicted final object and the other side is predicted either final object or other (i.e. null or undefined) doesn't assert when the other side is also proven final object.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt b/LayoutTests/platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt
new file mode 100644 (file)
index 0000000..543d374
--- /dev/null
@@ -0,0 +1,109 @@
+Tests that the peephole CompareEq optimization for the case where one side is predicted final object and the other side is predicted either final object or other (i.e. null or undefined) doesn't assert when both sides are also proven final object.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, 42, true]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt b/LayoutTests/platform/chromium/fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt
new file mode 100644 (file)
index 0000000..86d5f77
--- /dev/null
@@ -0,0 +1,109 @@
+Tests that the peephole CompareEq optimization for the case where one side is predicted final object and the other side is predicted either final object or other (i.e. null or undefined) doesn't assert when the other side is also proven final object.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS foo({f:42}, null) threw exception TypeError: Cannot read property 'f' of null.
+PASS foo(o, o) is [42, true]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
index 98e171d4aa5d335b6a76be0e2ce022518d7b269c..a1d9eb8d0b53d61c0e74e8e456e4cc93dbb03b66 100644 (file)
@@ -66,10 +66,12 @@ function nbi() { return new BigInteger(null); }
 // am1: use a single mult and divide to get the high bits,
 // max digit bits should be 26 because
 // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
+var am1_count = 0;
 function am1(i,x,w,j,c,n) {
   var this_array = this.array;
   var w_array    = w.array;
   while(--n >= 0) {
+    am1_count++;
     var v = x*this_array[i++]+w_array[j]+c;
     c = Math.floor(v/0x4000000);
     w_array[j++] = v&0x3ffffff;
@@ -80,11 +82,13 @@ function am1(i,x,w,j,c,n) {
 // am2 avoids a big mult-and-extract completely.
 // Max digit bits should be <= 30 because we do bitwise ops
 // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
+var am2_count = 0;
 function am2(i,x,w,j,c,n) {
   var this_array = this.array;
   var w_array    = w.array;
   var xl = x&0x7fff, xh = x>>15;
   while(--n >= 0) {
+      am2_count++;
     var l = this_array[i]&0x7fff;
     var h = this_array[i++]>>15;
     var m = xh*l+h*xl;
@@ -97,12 +101,14 @@ function am2(i,x,w,j,c,n) {
 
 // Alternately, set max digit bits to 28 since some
 // browsers slow down when dealing with 32-bit numbers.
+var am3_count = 0;
 function am3(i,x,w,j,c,n) {
   var this_array = this.array;
   var w_array    = w.array;
 
   var xl = x&0x3fff, xh = x>>14;
   while(--n >= 0) {
+      am3_count++;
     var l = this_array[i]&0x3fff;
     var h = this_array[i++]>>14;
     var m = xh*l+h*xl;
@@ -115,12 +121,14 @@ function am3(i,x,w,j,c,n) {
 
 // This is tailored to VMs with 2-bit tagging. It makes sure
 // that all the computations stay within the 29 bits available.
+var am4_count = 0;
 function am4(i,x,w,j,c,n) {
   var this_array = this.array;
   var w_array    = w.array;
 
   var xl = x&0x1fff, xh = x>>13;
   while(--n >= 0) {
+      am4_count++;
     var l = this_array[i]&0x1fff;
     var h = this_array[i++]>>13;
     var m = xh*l+h*xl;
@@ -169,11 +177,15 @@ function intAt(s,i) {
 }
 
 // (protected) copy this to r
+var bnpCopyTo_count = 0;
 function bnpCopyTo(r) {
   var this_array = this.array;
   var r_array    = r.array;
 
-  for(var i = this.t-1; i >= 0; --i) r_array[i] = this_array[i];
+  for(var i = this.t-1; i >= 0; --i) {
+      bnpCopyTo_count++;
+      r_array[i] = this_array[i];
+  }
   r.t = this.t;
   r.s = this.s;
 }
@@ -192,6 +204,7 @@ function bnpFromInt(x) {
 function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
 
 // (protected) set from string and radix
+var bnpFromString_count = 0;
 function bnpFromString(s,b) {
   var this_array = this.array;
   var k;
@@ -206,6 +219,7 @@ function bnpFromString(s,b) {
   this.s = 0;
   var i = s.length, mi = false, sh = 0;
   while(--i >= 0) {
+      bnpFromString_count++;
     var x = (k==8)?s[i]&0xff:intAt(s,i);
     if(x < 0) {
       if(s.charAt(i) == "-") mi = true;
@@ -232,13 +246,18 @@ function bnpFromString(s,b) {
 }
 
 // (protected) clamp off excess high words
+var bnpClamp_count = 0;
 function bnpClamp() {
   var this_array = this.array;
   var c = this.s&BI_DM;
-  while(this.t > 0 && this_array[this.t-1] == c) --this.t;
+  while(this.t > 0 && this_array[this.t-1] == c) {
+      bnpClamp_count++;
+      --this.t;
+  }
 }
 
 // (public) return string representation in given radix
+var bnToString_count = 0;
 function bnToString(b) {
   var this_array = this.array;
   if(this.s < 0) return "-"+this.negate().toString(b);