• Caitlin Potter's avatar
    [CloneObjectIC] add CSA implementation of slow case · fbcf0221
    Caitlin Potter authored
    The CSA implementation is a separate handler so that TF has the
    opportunity to reduce to a direct call, skipping some of the dispatching
    in the CloneObjectIC stub.
    
    This patch moves the looping over a source object's keys and values into the
    base CodeStubAssembler, so that it can be shared between ObjectAssignFast
    and CloneObjectIC_Slow.
    
    During each step of the loop, storing is delegated to a new SetPropertyInLiteral
    helper in KeyedStoreGenericGenerator, which performs a store without consulting
    the prototype chain, and automatically reconfigures accessors into data
    properties regardless of their attributes.
    
    BUG=v8:8067, v8:7611
    R=ishell@chromium.org, jkummerow@chromium.org
    
    Change-Id: I06ae89f37e9b4265aab67389cf68a96529f90578
    Reviewed-on: https://chromium-review.googlesource.com/1182122
    Commit-Queue: Caitlin Potter <caitp@igalia.com>
    Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#55806}
    fbcf0221
object-spread-ic-multiple-transitions.js 541 Bytes