[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 17:50:36 PDT 2012


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


Gavin Barraclough <barraclough at apple.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |barraclough at apple.com




--- Comment #12 from Gavin Barraclough <barraclough at apple.com>  2012-10-26 17:51:46 PST ---
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.

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

I won't r+ for now, since I'd rather see the fix I've described, but if you don't feel like taking this on we could take your patch as is & revisit – would just be unfortunate since some of this change would be redundant & end up being reverted.

-- 
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