Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve Escape Analysis under OSR #5737

Merged
merged 2 commits into from
Sep 4, 2019

Commits on Aug 21, 2019

  1. Improve Escape Analysis under OSR

    The preEscapeAnalysis optimization, which was introduced in a previous
    change, looks for calls to OSRInductionHelper and adds a fake
    prepareForOSR call that references all live auto symrefs and pending
    pushes.  Any object that ends up as a candidate for stack allocation
    that appears to be used by such a fake prepareForOSR call can be
    heapified at that point by Escape Analysis.
    
    During EA itself, those references on prepareForOSR calls are marked
    as ignoreable for the purposes of determining whether an object can be
    stack allocated.
    
    Submitted on behalf of Andrew Craik <ajcraik@ca.ibm.com>
    
    Signed-off-by:  Henry Zongaro <zongaro@ca.ibm.com>
    hzongaro committed Aug 21, 2019
    Configuration menu
    Copy the full SHA
    55dd1b2 View commit details
    Browse the repository at this point in the history
  2. Use node global index to access entries in _ignoreableUses

    The code in findIgnoreableUses that populates the TR_BitVector,
    _ignoreableUses, uses the global indices of nodes to index the
    TR_BitVector.  Code in checkDefsAndUses was using the value numbers of
    nodes to check the entries in _ignoreableUses.
    
    Fixed checkDefsAndUses to use nodes' global indices instead.  Also,
    reorganized the code checking _ignoreableUses to pull the invariant
    check out of a loop.
    
    Signed-off-by:  Henry Zongaro <zongaro@ca.ibm.com>
    hzongaro committed Aug 21, 2019
    Configuration menu
    Copy the full SHA
    3fb2b2a View commit details
    Browse the repository at this point in the history