• bmeurer's avatar
    [turbofan] Use unreliable LOAD_IC feedback for Array.prototype.push. · 1fceaf9f
    bmeurer authored
    Add the notion of reliable vs. unreliable receiver map information to
    the NodeProperties::InferReceiverMaps machinery. The information is
    considered reliable here if the maps are known to be valid based on the
    effect chain, and unreliable if there was a side-effect in between that
    might have changed the receiver map.
    
    Use this unreliable information for Array.prototype.push, guarded by
    either stability dependencies or map checks, which might present a
    potential deoptimization loop, which is very unlikely, but still needs
    fixing in the future. This is important to optimize calls to push even
    in cases like this
    
      array.push(something.func());
    
    where we have a side-effect (the call to something.func) between the
    load of array.push and the actual call.
    
    R=jarin@chromium.org
    BUG=v8:5267,v8:6241
    
    Review-Url: https://codereview.chromium.org/2812233002
    Cr-Commit-Position: refs/heads/master@{#44595}
    1fceaf9f
js-call-reducer.cc 34.6 KB