• Benedikt Meurer's avatar
    [map] Properly share the map for builtin iterator result objects. · d2ea316f
    Benedikt Meurer authored
    Previously we had a special, unshared map on the native context that was
    used for results of builtin iterators, which was different from the map
    that is created from an object literal like `{value, done}`. This not
    only leads to unnecessary polymorphism, but also makes it impossible
    for user defined iterators to take the fast-paths that we have in
    various places (i.e. in collections or promises).
    
    With this change we now properly share the map for `{value, done}` and
    use that for the builtin iterator result objects, as well as the
    fast-paths.
    
    Drive-by-fix: Remove the restrictions on map caching and transition
    caching during bootstrapping. This no longer makes sense.
    
    Bug: v8:9114, v8:9243
    Change-Id: I19eb9071f7ec0ed58f8a6f87eed781bc790174b7
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1609794
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#61488}
    d2ea316f
map.cc 103 KB