Fix performance regression in HTML5 canvas stroke()

To solve corner case of stroking intersecting path with a transparent
color we switched the strokePath implementation to using QPainterPathStroker
in Qt 5. Unfortunately this appears to be 100-1000x slower than using
QPainter::strokePath.

This patch partially reverts the change and now only use QPainterPathStroker
when stroking a transparent outline.

Task-number: QTBUG-34855
Change-Id: I9f5c593b9093a8eb94a76081bbc2e7565c306afd
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
[sh4] Refactor jumps in baseline JIT to return label after the jump.

https://bugs.webkit.org/show_bug.cgi?id=123734

Patch by Julien Brianceau <jbriance@cisco.com> on 2013-11-04
Reviewed by Michael Saboff.

Current implementation of jumps in sh4 baseline JIT returns a label on the jump itself
and not after it. This is not correct and leads to issues like infinite loop the DFG
(https://bugs.webkit.org/show_bug.cgi?id=122597 for instance). This refactor fixes this
and also simplifies the link and relink procedures for sh4 jumps.

* assembler/MacroAssemblerSH4.h:
(JSC::MacroAssemblerSH4::branchDouble):
(JSC::MacroAssemblerSH4::branchTrue):
(JSC::MacroAssemblerSH4::branchFalse):
* assembler/SH4Assembler.h:
(JSC::SH4Assembler::jmp):
(JSC::SH4Assembler::extraInstrForBranch):
(JSC::SH4Assembler::jne):
(JSC::SH4Assembler::je):
(JSC::SH4Assembler::bra):
(JSC::SH4Assembler::linkJump):
(JSC::SH4Assembler::relinkJump):

Change-Id: Ia31b326a1f3c41e9c913e513563ff1e6b8f8e55e
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158580 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
[sh4] Fix load32WithUnalignedHalfWords function in baseline JIT.

https://bugs.webkit.org/show_bug.cgi?id=124233

Patch by Julien Brianceau <jbriance@cisco.com> on 2013-11-12
Reviewed by Michael Saboff.

* assembler/MacroAssemblerSH4.h:
(JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords): Do not claim scratch register too early.
Test already covered by fast/regex/pcre-test-1.

Change-Id: Ib783d70723754e80d961ade9463d7dc85ccb83f0
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159153 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
[sh4] Protect repatchCompact from flushConstantPool.

https://bugs.webkit.org/show_bug.cgi?id=124278

Patch by Julien Brianceau <jbriance@cisco.com> on 2013-11-13
Reviewed by Michael Saboff.

Random crashes may occur with sh4 architecture, when a flushConstantPool occurs in
movlMemRegCompact. As in this case a branch opcode and the constant pool are put
before the movlMemRegCompact, the branch itself is patched when calling repatchCompact
instead of the mov instruction, which is really bad.

* assembler/SH4Assembler.h:
(JSC::SH4Assembler::repatchCompact): Handle this specific case and add an ASSERT.

Change-Id: I9c0e78cade4d20d0d83d683ffe6a499cee63bdbb
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159203 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
[sh4] Fix revertJumpReplacementToBranchPtrWithPatch in MacroAssembler.

https://bugs.webkit.org/show_bug.cgi?id=124468

Patch by Julien Brianceau <jbriance@cisco.com> on 2013-11-17
Reviewed by Michael Saboff.

Current implementation of revertJumpReplacementToBranchPtrWithPatch is wrong in
the sh4 MacroAssembler part, leading to random instabilities. This patch fixes it
and also renames the bad-named revertJumpToMove to revertJumpReplacementToBranchPtrWithPatch
in the SH4Assembler.

* assembler/MacroAssemblerSH4.h:
(JSC::MacroAssemblerSH4::revertJumpReplacementToBranchPtrWithPatch):
* assembler/SH4Assembler.h:
(JSC::SH4Assembler::replaceWithJump):
(JSC::SH4Assembler::revertJumpReplacementToBranchPtrWithPatch):

Change-Id: Ifbc6851f506a1303c85cff3a47c23e932fad033c
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159400 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>