RESOLVED FIXED 90198
Port DFG JIT to traditional ARM
https://bugs.webkit.org/show_bug.cgi?id=90198
Summary Port DFG JIT to traditional ARM
Zoltan Herczeg
Reported 2012-06-28 12:52:15 PDT
Let's do it.
Attachments
first draft patch (68.26 KB, patch)
2012-06-28 12:54 PDT, Zoltan Herczeg
no flags
second draft patch (76.71 KB, patch)
2012-07-02 03:41 PDT, Zoltan Herczeg
no flags
working patch (77.03 KB, patch)
2012-07-02 08:11 PDT, Zoltan Herczeg
no flags
patch (85.61 KB, patch)
2012-07-03 05:26 PDT, Zoltan Herczeg
fpizlo: review+
latest patch (84.16 KB, patch)
2012-07-04 02:39 PDT, Zoltan Herczeg
no flags
Zoltan Herczeg
Comment 1 2012-06-28 12:54:30 PDT
Created attachment 149988 [details] first draft patch There is some progress on this porting work. Most of the JSCore tests are running now, but some runtime assertions are hit during the test.
WebKit Review Bot
Comment 2 2012-06-28 12:57:36 PDT
Attachment 149988 [details] did not pass style-queue: Source/JavaScriptCore/dfg/DFGOperations.cpp:146: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:157: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:178: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:189: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1384: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1393: The parameter name """" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.cpp:295: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/assembler/ARMAssembler.cpp:331: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:430: vmov_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:465: vabs_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:470: vneg_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:485: dtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:490: dtr_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:495: dtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:500: dtr_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:505: dtrh_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:510: dtrh_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:515: dtrh_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:520: dtrh_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:525: fdtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:532: fdtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:561: vmov_vfp64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:567: vmov_arm64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:573: vmov_vfp32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:579: vmov_arm32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:597: vcvt_u32_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:603: vcvt_f64_f32_r is incorrectly named. Don't use underscores in your identifieFailed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/assembler/ARMAssembl..." exit_code: 1 r names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:609: vcvt_f32_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:893: Extra space before last semicolon. If this should be an empty statement, use { } instead. [whitespace/semicolon] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:910: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:911: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:912: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:913: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:914: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:915: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 35 in 14 files If any of these errors are false positives, please file a bug against check-webkit-style.
Zoltan Herczeg
Comment 3 2012-07-02 03:41:34 PDT
Created attachment 150392 [details] second draft patch 3 regressions in jscore tests.
WebKit Review Bot
Comment 4 2012-07-02 03:43:33 PDT
Attachment 150392 [details] did not pass style-queue: Source/JavaScriptCore/assembler/MacroAssemblerARM.h:1205: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/dfg/DFGOperations.cpp:146: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:157: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:178: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:189: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1382: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1391: The parameter name """" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.cpp:295: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/assembler/ARMAssembler.cpp:331: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:433: vmov_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:468: vabs_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:473: vneg_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:488: dtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:493: dtr_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:498: dtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:503: dtr_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:508: dtrh_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:513: dtrh_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:518: dtrh_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:523: dtrh_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:528: fdtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:535: fdtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:564: vmov_vfp64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:570: vmov_arm64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:576: vmov_vfp32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:582: vmov_arm32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:600: vcvt_u32_f64_r is incorrectly named. DoFailed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/assembler/ARMAssembl..." exit_code: 1 n't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:606: vcvt_f64_f32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:612: vcvt_f32_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:932: Extra space before last semicolon. If this should be an empty statement, use { } instead. [whitespace/semicolon] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:949: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:950: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:951: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:952: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:953: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:954: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 36 in 17 files If any of these errors are false positives, please file a bug against check-webkit-style.
Zoltan Herczeg
Comment 5 2012-07-02 08:11:14 PDT
Created attachment 150423 [details] working patch The patch is working now. SunSpider: With DFG: 1910.2ms Without DFG 2062.6ms ChangeLog is missing but I think the patch is ready for a first round of review.
WebKit Review Bot
Comment 6 2012-07-02 08:13:14 PDT
Attachment 150423 [details] did not pass style-queue: Source/JavaScriptCore/assembler/MacroAssemblerARM.h:1205: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/dfg/DFGOperations.cpp:146: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:157: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:178: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:189: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1382: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1391: The parameter name """" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.cpp:295: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/assembler/ARMAssembler.cpp:331: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:433: vmov_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:468: vabs_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:473: vneg_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:488: dtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:493: dtr_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:498: dtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:503: dtr_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:508: dtrh_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:513: dtrh_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:518: dtrh_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:523: dtrh_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:528: fdtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:535: fdtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:564: vmov_vfp64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:570: vmov_arm64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:576: vmov_vfp32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:582: vmov_arm32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:600: vcvt_u32_f64_r is incorrectly named. DoFailed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/assembler/ARMAssembl..." exit_code: 1 n't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:606: vcvt_f64_f32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:612: vcvt_f32_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:932: Extra space before last semicolon. If this should be an empty statement, use { } instead. [whitespace/semicolon] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:949: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:950: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:951: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:952: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:953: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:954: The parameter name "type" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 36 in 17 files If any of these errors are false positives, please file a bug against check-webkit-style.
Zoltan Herczeg
Comment 7 2012-07-03 05:26:49 PDT
Created attachment 150590 [details] patch Some minor things were refactored and a changelog is added.
WebKit Review Bot
Comment 8 2012-07-03 05:29:27 PDT
Attachment 150590 [details] did not pass style-queue: Source/JavaScriptCore/assembler/MacroAssemblerARM.h:1195: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/dfg/DFGOperations.cpp:146: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:157: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:178: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:189: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1382: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1391: The parameter name """" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.cpp:295: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/assembler/ARMAssembler.cpp:331: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:433: vmov_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:468: vabs_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:473: vneg_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:488: dtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:493: dtr_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:498: dtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:503: dtr_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:508: dtrh_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:513: dtrh_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:518: dtrh_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:523: dtrh_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:528: fdtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:535: fdtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:564: vmov_vfp64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:570: vmov_arm64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:576: vmov_vfp32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:582: vmov_arm32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:600: vcvt_u32_f64_r is incorrectly named. DoFailed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source..." exit_code: 1 n't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:606: vcvt_f64_f32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:612: vcvt_f32_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:933: Extra space before last semicolon. If this should be an empty statement, use { } instead. [whitespace/semicolon] [5] Total errors found: 30 in 19 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 9 2012-07-03 08:57:11 PDT
Comment on attachment 150590 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=150590&action=review R=me. Please measure V8 and Kraken though. You should see big speed-ups there; if you don't then there's something wrong! > Source/JavaScriptCore/ChangeLog:13 > + Sunspider is improved by 8%. Affect on V8 performance? Kraken?
Gabor Loki
Comment 10 2012-07-04 01:20:36 PDT
Comment on attachment 150590 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=150590&action=review >> Source/JavaScriptCore/assembler/ARMAssembler.cpp:295 >> + if (offset == 0) { > > Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] You should refine this and other style errors below. ;) > Source/JavaScriptCore/assembler/ARMAssembler.h:-158 > -#if WTF_ARM_ARCH_AT_LEAST(5) || defined(__ARM_ARCH_4T__) Please mention in the ChangeLog that the support of ARMv4 and below is removed. Additionally you should check WTF_ARM_ARCH_AT_LEAST(4) and similar constructs and modify them in Platform.h and other files. > Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h:269 > +#if CPU(ARM_THUMB2) > m_assembler.vmov(payloadGPR, tagGPR, fpr); > +#else > + m_assembler.vmov_arm64_r(payloadGPR, tagGPR, fpr); > +#endif I suggest to define a common name or a wrapper function reducing #ifdef burden for the same logic. Apart from these, I really like your patch. ;)
Filip Pizlo
Comment 11 2012-07-04 01:24:52 PDT
(In reply to comment #10) > (From update of attachment 150590 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=150590&action=review > > >> Source/JavaScriptCore/assembler/ARMAssembler.cpp:295 > >> + if (offset == 0) { > > > > Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] > > You should refine this and other style errors below. ;) > > > Source/JavaScriptCore/assembler/ARMAssembler.h:-158 > > -#if WTF_ARM_ARCH_AT_LEAST(5) || defined(__ARM_ARCH_4T__) > > Please mention in the ChangeLog that the support of ARMv4 and below is removed. > > Additionally you should check WTF_ARM_ARCH_AT_LEAST(4) and similar constructs and modify them in Platform.h and other files. > > > Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h:269 > > +#if CPU(ARM_THUMB2) > > m_assembler.vmov(payloadGPR, tagGPR, fpr); > > +#else > > + m_assembler.vmov_arm64_r(payloadGPR, tagGPR, fpr); > > +#endif > > I suggest to define a common name or a wrapper function reducing #ifdef burden for the same logic. > > Apart from these, I really like your patch. ;) +1 I like the idea of wrapping the "m_assembler.vmov_blah" in something nicer. Perhaps you can add a method in DFGAssemblyHelpers.h like: void transferReturnValueToReturnValueFPR() { #if thumb2 the thumb2 thingy #else if arm the arm thingy #else do thing #endif } I think that would be useful in other places in the future, particularly since there are code paths in the DFG that make calls in a manner that bypasses the helper methods for a variety of reasons. Currently none of those deal with floating point returns, but that might change.
Zoltan Herczeg
Comment 12 2012-07-04 01:33:12 PDT
I finished the V8 measurements. Without DFG: 15372.2ms With DFG: 8010.5ms So there is a nice progression here.
Filip Pizlo
Comment 13 2012-07-04 01:33:41 PDT
(In reply to comment #12) > I finished the V8 measurements. > > Without DFG: 15372.2ms > With DFG: 8010.5ms > > So there is a nice progression here. Fantastic!
Zoltan Herczeg
Comment 14 2012-07-04 01:42:48 PDT
> Please mention in the ChangeLog that the support of ARMv4 and below is removed. It is already there :) Ok I will do the necessary style changes. I think further refactoring could be done in followup patches, but this patch is already big enough, so I focus on the DFG related changes.
Zoltan Herczeg
Comment 15 2012-07-04 02:39:27 PDT
Created attachment 150746 [details] latest patch
WebKit Review Bot
Comment 16 2012-07-04 02:41:32 PDT
Attachment 150746 [details] did not pass style-queue: Source/JavaScriptCore/assembler/MacroAssemblerARM.h:1195: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Source/JavaScriptCore/dfg/DFGOperations.cpp:146: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:157: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:178: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:189: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1382: Extra space before ( in function call [whitespace/parens] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:1391: The parameter name """" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/assembler/ARMAssembler.h:433: vmov_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:468: vabs_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:473: vneg_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:488: dtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:493: dtr_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:498: dtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:503: dtr_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:508: dtrh_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:513: dtrh_ur is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:518: dtrh_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:523: dtrh_dr is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:528: fdtr_u is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:535: fdtr_d is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:564: vmov_vfp64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:570: vmov_arm64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:576: vmov_vfp32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:582: vmov_arm32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:600: vcvt_u32_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:606: vcvt_f64_f32_r is incorrectly named. Don't use underscores in your identifier names. [readability/naming] [4] Source/JavaScriptCore/assembler/ARMAssembler.h:612: vcvt_f32_f64_r is incorrectly named. Don't use underscores in your identifier names. [readability/namingFailed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source..." exit_code: 1 ] [4] Total errors found: 27 in 19 files If any of these errors are false positives, please file a bug against check-webkit-style.
Zoltan Herczeg
Comment 17 2012-07-04 02:45:23 PDT
> void transferReturnValueToReturnValueFPR() > { > #if thumb2 > the thumb2 thingy > #else if arm > the arm thingy > #else > do thing > #endif > } I am not sure I understand this, but I added two vmov-s to the traditional assemblers, which wraps the "arm thingy" and this way I could remove all ifdefs from the code.
Filip Pizlo
Comment 18 2012-07-04 12:42:34 PDT
(In reply to comment #17) > > void transferReturnValueToReturnValueFPR() > > { > > #if thumb2 > > the thumb2 thingy > > #else if arm > > the arm thingy > > #else > > do thing > > #endif > > } > > I am not sure I understand this, but I added two vmov-s to the traditional assemblers, which wraps the "arm thingy" and this way I could remove all ifdefs from the code. Argh, sorry, I got confused by context. Never mind.
Zoltan Herczeg
Comment 19 2012-07-05 00:05:33 PDT
Filip Pizlo
Comment 20 2012-07-05 16:08:16 PDT
FYI, this appears to have broken the ARMv7 port. I'll fix it.
Filip Pizlo
Comment 21 2012-07-05 16:31:45 PDT
(In reply to comment #20) > FYI, this appears to have broken the ARMv7 port. I'll fix it. Fixed in http://trac.webkit.org/changeset/121927
Zoltan Herczeg
Comment 22 2012-07-06 00:20:40 PDT
> Fixed in http://trac.webkit.org/changeset/121927 This macro should only used by traditional arm, and as far as I see all of its uses are guarded by CPU(ARM_TRADITIONAL). How does it slip out?
Filip Pizlo
Comment 23 2012-07-06 00:25:19 PDT
(In reply to comment #22) > > Fixed in http://trac.webkit.org/changeset/121927 > > This macro should only used by traditional arm, and as far as I see all of its uses are guarded by CPU(ARM_TRADITIONAL). How does it slip out? Ah, interesting. Around line 1089 in JITStubs.cpp: #if CPU(ARM_THUMB2) && COMPILER(GCC) #define DEFINE_STUB_FUNCTION(rtype, op) \ extern "C" { \ rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \ }; \ asm ( \ ".text" "\n" \ ".align 2" "\n" \ ".globl " SYMBOL_STRING(cti_##op) "\n" \ HIDE_SYMBOL(cti_##op) "\n" \ INLINE_ARM_FUNCTION(cti_##op) \ SYMBOL_STRING(cti_##op) ":" "\n" \ "str lr, [sp, #" STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) "]" "\n" \ "bl " SYMBOL_STRING(JITStubThunked_##op) "\n" \ "ldr lr, [sp, #" STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) "]" "\n" \ "bx lr" "\n" \ ); \ rtype JITStubThunked_##op(STUB_ARGS_DECLARATION) \ Maybe you didn't mean to use INLINE_ARM_FUNCTION there?
Zoltan Herczeg
Comment 24 2012-07-06 00:50:24 PDT
That is my mistake. I accidentaly replaced that macro as well. I will revert it. - ".thumb" "\n" \ - ".thumb_func " THUMB_FUNC_PARAM(cti_##op) "\n" \ + INLINE_ARM_FUNCTION(cti_##op) \
Note You need to log in before you can comment on or make changes to this bug.