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.

Reply via email to