[Webkit-unassigned] [Bug 99213] [ARMv7] Neither linkCall() nor linkPointer() should flush code

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Oct 26 21:14:36 PDT 2012


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





--- Comment #14 from Yong Li <yoli at rim.com>  2012-10-26 21:15:45 PST ---
(In reply to comment #12)
> Hi Yong,
> 
> Nice catch – but I think there's a slightly better fix if you feel like taking it on.
> 
> Your patch fixes the problem that we'll flush ints/pointers more than once during the link phase, but there is a related issue that we sometimes flush the same cache line more than once when repatching code.  I'd suggest changing the MacroAssembler::repatch* etc methods in all assemblers to return the range of code modified (start address & end/size as a pair), and have the RepatchBuffer cache all required flushes & only perform them once all modifications have been performed.  When buffering up the flushes, we can round to cache line size, then ditch redundant flushes & coalesce flushes to adjacent cache lines.

Actually I did try a very similar solution with RepatchBuffer. However it didn't show any boost on benchmarks. I could try improving that patch when time allowing. But I think the bug should be separated as this one is only an issue in ARMv7Assembler, and repatching is generic. Even now I had a ready patch for the repatching one, I still think it should be a separate bug.

> 
> (minor detail: JITWriteBarrier & JumpReplacementWatchpoint currently aren't using RepatchBuffer & should be – that will also need to be fixed).

Thanks. Very helpful info :)

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list