RESOLVED FIXED 122170
FTL: split overflow checks into non-overflow arithmetic and an additional call to the overflow intrinsic check.
https://bugs.webkit.org/show_bug.cgi?id=122170
Summary FTL: split overflow checks into non-overflow arithmetic and an additional cal...
Nadav Rotem
Reported 2013-10-01 12:35:39 PDT
FTL: split overflow checks into non-overflow arithmetic and an additional call to the overflow intrinsic check.
Attachments
Patch (7.96 KB, patch)
2013-10-01 12:41 PDT, Nadav Rotem
no flags
Patch (7.96 KB, patch)
2013-10-01 13:43 PDT, Nadav Rotem
no flags
Patch (7.99 KB, patch)
2013-10-01 15:05 PDT, Nadav Rotem
no flags
Nadav Rotem
Comment 1 2013-10-01 12:41:51 PDT
Geoffrey Garen
Comment 2 2013-10-01 12:58:39 PDT
Comment on attachment 213113 [details] Patch r=me Does SelectionDAG also catch the multiply case?
Geoffrey Garen
Comment 3 2013-10-01 13:00:18 PDT
Comment on attachment 213113 [details] Patch Sorry, one style nit: The "Reviewed by" line needs to be right under the bug name/URL pair. I think some of our automated tools expect to find it there.
Nadav Rotem
Comment 4 2013-10-01 13:04:01 PDT
Okay. Should I resubmit ?
Nadav Rotem
Comment 5 2013-10-01 13:17:11 PDT
Yes. It works with Mul, Add and Inc. I am sure that we are missing some patterns but we can fix them as we go. This: function foo() { var sum = 1 while (sum < 100000000) sum *= 10 } Becomes this: LBB0_1: ## =>This Inner Loop Header: Depth=1 imull $10, %eax, %ecx jo LBB0_7 ## BB#2: ## %OSR exit continuation for @11<Int32> ## in Loop: Header=BB0_1 Depth=1 testl %ecx, %ecx je LBB0_3 LBB0_4: ## %ArithMul continuation ## in Loop: Header=BB0_1 Depth=1 cmpl $100000000, %ecx ## imm = 0x5F5E100 movl %ecx, %eax jl LBB0_1 jmp LBB0_5
Geoffrey Garen
Comment 6 2013-10-01 13:36:54 PDT
> Okay. Should I resubmit ? Yes please.
Nadav Rotem
Comment 7 2013-10-01 13:43:59 PDT
Nadav Rotem
Comment 8 2013-10-01 14:05:22 PDT
Added commit-queue=?.
Filip Pizlo
Comment 9 2013-10-01 14:09:21 PDT
Comment on attachment 213117 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=213117&action=review Looks great! > Source/JavaScriptCore/ChangeLog:36 > +LBB0_1: ## %OSR exit continuation for @24<Int32> > + ## =>This Inner Loop Header: Depth=1 > + movl %ecx, %esi > + incl %esi > + jo LBB0_4 I would indent this.
Nadav Rotem
Comment 10 2013-10-01 14:37:04 PDT
Indent the commit message ? In what way ?
Filip Pizlo
Comment 11 2013-10-01 14:39:54 PDT
(In reply to comment #10) > Indent the commit message ? In what way ? The ChangeLog messages should have at least eight-space indent except for the header ("2013-10-01 Nadav Rotem <nrotem@apple.com>"). So this part of your patch: +LBB0_1: ## %OSR exit continuation for @24<Int32> + ## =>This Inner Loop Header: Depth=1 + movl %ecx, %esi + incl %esi + jo LBB0_4 Should be: + LBB0_1: ## %OSR exit continuation for @24<Int32> + ## =>This Inner Loop Header: Depth=1 + movl %ecx, %esi + incl %esi + jo LBB0_4 We have some scripts that try to parse changelog's, so sticking to the format is usually a good idea.
Nadav Rotem
Comment 12 2013-10-01 15:05:00 PDT
WebKit Commit Bot
Comment 13 2013-10-01 16:17:31 PDT
Comment on attachment 213124 [details] Patch Clearing flags on attachment: 213124 Committed r156746: <http://trac.webkit.org/changeset/156746>
WebKit Commit Bot
Comment 14 2013-10-01 16:17:33 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.