Add (incomplete) support to YARR for running with the jit enabled
on Arm thumb2 platforms. Adds new Assembler/MacroAssembler classes,
along with cache flushing support, tweaks to MacroAssemblerCodePtr
to support decorated thumb code pointers, and new enter/exit code
to YARR jit for the platform.
Add better ASSERT.
(JSC::ReturnAddressPtr::ReturnAddressPtr):
Add better ASSERT.
(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
On ARMv7, MacroAssemblerCodePtr's mush be 'decorated' with a low bit set,
to indicate to the processor that the code is thumb code, not traditional
32-bit ARM.
(JSC::MacroAssemblerCodePtr::dataLocation):
On ARMv7, decoration must be removed.
Reformatted, no change.
(JSC::ExecutableAllocator::makeExecutable):
When marking code executable also cache flush it, where necessary.
(JSC::ExecutableAllocator::MakeWritable::MakeWritable):
Only use the null implementation of this class if both !ASSEMBLER_WX_EXCLUSIVE
and running on x86(_64) - on other platforms we may also need ensure that
makeExecutable is called at the end to flush caches.
(JSC::ExecutableAllocator::reprotectRegion):
Reformatted, no change.
(JSC::ExecutableAllocator::cacheFlush):
Cache flush a region of memory, or platforms where this is necessary.