Reviewers: ulan,
Message:
With this change, the OOL constant pool regressions go away, so I should be
able
to finally be able to enable that. I'll update other architectures if you
think
the Arm changes look ok.
Ulan, PTAL, thanks.
Description:
Avoid flushing the icache unecessarily 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 is unecessary or going to be batched up
later. Two operations can take advantage of this optimization:
- Code::CopyFrom is updated to avoid individual icache flushes since the
whole code area will be flushed after the reloc info is updated.
- The IC transition from UNINITIALIZED to PREMONOMORPHIC does not require
an
icache flush, since running either the initialize or premonomorphic stub
does the same thing, with the target address only acting as a marker.
These changes avoid 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 to Code::CopyFrom: 2827
- OOL CP enabled, the full CL and OOL: 3528
Please review this at https://codereview.chromium.org/284153004/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+81, -36 lines):
M src/arm/assembler-arm.h
M src/arm/assembler-arm-inl.h
M src/assembler.h
M src/ic.h
M src/ic.cc
M src/ic-inl.h
M src/objects.cc
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.