• Jaroslav Sevcik's avatar
    Revert "[deoptimizer] Staged materialization of objects." · 104a2db3
    Jaroslav Sevcik authored
    This reverts commit e71b8022.
    
    Reason for revert: Need to have a back-mergeable fix.
    
    Original change's description:
    > [deoptimizer] Staged materialization of objects.
    > 
    > The existing object materialization in the deoptimizer has the following problems:
    > 
    > - Objects do not necessarily verify during materialization (because during the
    >   depth first walk we might have inconsistent objects).
    > 
    > - Stack can overflow (because we just materialize using recursive calls).
    > 
    > - We generalize object fields.
    > 
    > 
    > This CL re-implements the materialization algorithm to solve this problem. The
    > new implementation creates the objects in two steps:
    > 
    > 1. We allocate space for all the objects. In general, we allocate ByteArrays
    >    of the right size. For leaf objects that cannot participate in cycles,
    >    we build and initialize the materialized objects completely.
    > 
    >    For JS objects, we insert markers into the byte array at the positions
    >    where unboxed doubles are expected.
    > 
    > 2. We initialize all the objects with the proper field values and change the
    >    map from the ByteArray map to the correct map. This requires some sync
    >    with the concurrent marker (Heap::NotifyObjectLayoutChange).
    > 
    >    When initializing the JS object fields, we make sure that we respect
    >    the unboxed double marker.
    > 
    > Bug: chromium:770106, v8:3836
    > Change-Id: I1ec466a9d19db9538df4ba915516d4c3ca825632
    > Reviewed-on: https://chromium-review.googlesource.com/777559
    > Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
    > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
    > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#49821}
    
    TBR=ulan@chromium.org,mstarzinger@chromium.org,jarin@chromium.org
    
    Change-Id: I0657fb75330700dd7883c600dacb25676ebb47f9
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Bug: chromium:770106, v8:3836
    Reviewed-on: https://chromium-review.googlesource.com/806160Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#49834}
    104a2db3
deoptimizer.h 31.3 KB