• Benedikt Meurer's avatar
    [builtins] Port Map and Set iterators to CodeStubAssembler. · 3f22832b
    Benedikt Meurer authored
    This is the next step towards faster Map and Set iteration. It
    introduces the appropriate instance types for Map and Set
    iterators (following the pattern for Array iterators) and migrates
    the following builtins to the CodeStubAssembler:
    
      - Set.prototype.entries
      - Set.prototype.values
      - Map.prototype.entries
      - Map.prototype.keys
      - Map.prototype.values
      - %SetIteratorPrototype%.next
      - %MapIteratorPrototype%.next
    
    This already provides a significant performance boost for regular
    for-of iteration of Sets and Maps, by a factor of 5-10 depending
    on the input. The final step will be to inline some fast-paths
    into TurboFan.
    
    Drive-by-fix: Remove obsolete %IsJSSetIterator and %IsJSMapIterator
    intrinsics and runtime functions.
    
    Bug: v8:6571, chromium:740122
    Change-Id: Iad7a7dec643d8f8b5799327f89a351108ae856bf
    Reviewed-on: https://chromium-review.googlesource.com/563399
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#46492}
    3f22832b
js-intrinsic-lowering.cc 19.4 KB