DescriptionAvoid flushing the icache unnecessarily when updating target addresses in code.
This CL updates RelocInfo update operations and set_target_address_at to enable
skipping of the icache flush if it going to be batched up later.
Code::CopyFrom and Code::Relocate are modified to avoid individual icache
flushes since the whole code area will be flushed after the reloc info is
updated.
These changes reduce a regression when enabling the OOL constant pool on Arm,
since this change can cause MovT/MovW instructions for relocatable targets
if the constant pool is full.
Scores for Mandreel latency on a Nexus 5:
- OOL CP disabled: 3533
- OOL CP enabled, without this CL: 1825
- OOL CP enabled, with change: 3015
R=rodolph.perfetta@arm.com, ulan@chromium.org
Committed: https://code.google.com/p/v8/source/detail?r=21380
Patch Set 1 #
Total comments: 3
Patch Set 2 : Only skip icache flush on IC updates which can be made atomically. #
Total comments: 3
Patch Set 3 : Update SKIP_ICACHE_FLUSH_IF_ATOMIC to only skip when patching a single instruction. #
Total comments: 2
Patch Set 4 : Remove IC atomic skipICache, and implement for other arches #
Total comments: 4
Patch Set 5 : Fix intenting #
Messages
Total messages: 15 (0 generated)
|