Diff
Modified: branches/safari-534.54-branch/LayoutTests/ChangeLog (104516 => 104517)
--- branches/safari-534.54-branch/LayoutTests/ChangeLog 2012-01-10 01:05:10 UTC (rev 104516)
+++ branches/safari-534.54-branch/LayoutTests/ChangeLog 2012-01-10 01:07:07 UTC (rev 104517)
@@ -1,5 +1,23 @@
2011-1-9 Lucas Forschler <[email protected]>
+ Merge 102509
+
+ 2011-12-09 Filip Pizlo <[email protected]>
+
+ DFG ArithMul power-of-two case does not check for overflow
+ https://bugs.webkit.org/show_bug.cgi?id=74230
+
+ Reviewed by Gavin Barraclough.
+
+ * fast/js/dfg-multiply-expected.txt: Added.
+ * fast/js/dfg-multiply.html: Added.
+ * fast/js/script-tests/dfg-multiply.js: Added.
+ (doMultiplyConstant2):
+ (doMultiplyConstant3):
+ (doMultiplyConstant4):
+
+2011-1-9 Lucas Forschler <[email protected]>
+
Merge 102263
2011-12-07 Ken Buchanan <[email protected]>
Copied: branches/safari-534.54-branch/LayoutTests/fast/js/dfg-multiply-expected.txt (from rev 102509, trunk/LayoutTests/fast/js/dfg-multiply-expected.txt) (0 => 104517)
--- branches/safari-534.54-branch/LayoutTests/fast/js/dfg-multiply-expected.txt (rev 0)
+++ branches/safari-534.54-branch/LayoutTests/fast/js/dfg-multiply-expected.txt 2012-01-10 01:07:07 UTC (rev 104517)
@@ -0,0 +1,1029 @@
+This tests that the DFG can multiply numbers correctly.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1) is 2
+PASS doMultiplyConstant2(2) is 4
+PASS doMultiplyConstant2(4) is 8
+PASS doMultiplyConstant3(1) is 3
+PASS doMultiplyConstant3(2) is 6
+PASS doMultiplyConstant3(4) is 12
+PASS doMultiplyConstant4(1) is 4
+PASS doMultiplyConstant4(2) is 8
+PASS doMultiplyConstant4(4) is 16
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS doMultiplyConstant2(1073741824) is 2147483648
+PASS doMultiplyConstant2(2147483648) is 4294967296
+PASS doMultiplyConstant3(1073741824) is 3221225472
+PASS doMultiplyConstant3(2147483648) is 6442450944
+PASS doMultiplyConstant4(1073741824) is 4294967296
+PASS doMultiplyConstant4(2147483648) is 8589934592
+PASS doMultiplyConstant2(-1073741824) is -2147483648
+PASS doMultiplyConstant2(-2147483648) is -4294967296
+PASS doMultiplyConstant3(-1073741824) is -3221225472
+PASS doMultiplyConstant3(-2147483648) is -6442450944
+PASS doMultiplyConstant4(-1073741824) is -4294967296
+PASS doMultiplyConstant4(-2147483648) is -8589934592
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Copied: branches/safari-534.54-branch/LayoutTests/fast/js/dfg-multiply.html (from rev 102509, trunk/LayoutTests/fast/js/dfg-multiply.html) (0 => 104517)
--- branches/safari-534.54-branch/LayoutTests/fast/js/dfg-multiply.html (rev 0)
+++ branches/safari-534.54-branch/LayoutTests/fast/js/dfg-multiply.html 2012-01-10 01:07:07 UTC (rev 104517)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script src=""
+<script src=""
+</body>
+</html>
Copied: branches/safari-534.54-branch/LayoutTests/fast/js/script-tests/dfg-multiply.js (from rev 102509, trunk/LayoutTests/fast/js/script-tests/dfg-multiply.js) (0 => 104517)
--- branches/safari-534.54-branch/LayoutTests/fast/js/script-tests/dfg-multiply.js (rev 0)
+++ branches/safari-534.54-branch/LayoutTests/fast/js/script-tests/dfg-multiply.js 2012-01-10 01:07:07 UTC (rev 104517)
@@ -0,0 +1,45 @@
+description(
+"This tests that the DFG can multiply numbers correctly."
+);
+
+function doMultiplyConstant2(a) {
+ return a * 2;
+}
+
+function doMultiplyConstant3(a) {
+ return a * 3;
+}
+
+function doMultiplyConstant4(a) {
+ return a * 4;
+}
+
+// Get it to compile.
+for (var i = 0; i < 100; ++i) {
+ shouldBe("doMultiplyConstant2(1)", "2");
+ shouldBe("doMultiplyConstant2(2)", "4");
+ shouldBe("doMultiplyConstant2(4)", "8");
+ shouldBe("doMultiplyConstant3(1)", "3");
+ shouldBe("doMultiplyConstant3(2)", "6");
+ shouldBe("doMultiplyConstant3(4)", "12");
+ shouldBe("doMultiplyConstant4(1)", "4");
+ shouldBe("doMultiplyConstant4(2)", "8");
+ shouldBe("doMultiplyConstant4(4)", "16");
+}
+
+// Now do evil.
+for (var i = 0; i < 10; ++i) {
+ shouldBe("doMultiplyConstant2(1073741824)", "2147483648");
+ shouldBe("doMultiplyConstant2(2147483648)", "4294967296");
+ shouldBe("doMultiplyConstant3(1073741824)", "3221225472");
+ shouldBe("doMultiplyConstant3(2147483648)", "6442450944");
+ shouldBe("doMultiplyConstant4(1073741824)", "4294967296");
+ shouldBe("doMultiplyConstant4(2147483648)", "8589934592");
+ shouldBe("doMultiplyConstant2(-1073741824)", "-2147483648");
+ shouldBe("doMultiplyConstant2(-2147483648)", "-4294967296");
+ shouldBe("doMultiplyConstant3(-1073741824)", "-3221225472");
+ shouldBe("doMultiplyConstant3(-2147483648)", "-6442450944");
+ shouldBe("doMultiplyConstant4(-1073741824)", "-4294967296");
+ shouldBe("doMultiplyConstant4(-2147483648)", "-8589934592");
+}
+
Modified: branches/safari-534.54-branch/Source/_javascript_Core/ChangeLog (104516 => 104517)
--- branches/safari-534.54-branch/Source/_javascript_Core/ChangeLog 2012-01-10 01:05:10 UTC (rev 104516)
+++ branches/safari-534.54-branch/Source/_javascript_Core/ChangeLog 2012-01-10 01:07:07 UTC (rev 104517)
@@ -1,3 +1,20 @@
+2011-1-9 Lucas Forschler <[email protected]>
+
+ Merge 102509
+
+ 2011-12-09 Filip Pizlo <[email protected]>
+
+ DFG ArithMul power-of-two case does not check for overflow
+ https://bugs.webkit.org/show_bug.cgi?id=74230
+
+ Reviewed by Gavin Barraclough.
+
+ Disabled power-of-2 peephole optimization for multiplication, because it was wrong,
+ and any attempt to fix it would likely introduce code bloat and register pressure.
+
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileArithMul):
+
2012-01-09 Lucas Forschler <[email protected]>
Windows Build fix.