• bjaideep's avatar
    PPC/s390: [async-iteration] implement AsyncGenerator · a857e3d0
    bjaideep authored
    Port bf463c4d
    
    Original Commit Message:
    
        - Introduce new struct AsyncGeneratorRequest, which holds
          information pertinent to resuming execution of an
          AsyncGenerator, such as the Promise associated with the async
          generator request. It is intended to be used as a singly
          linked list, and holds a pointer to the next item in te queue.
    
        - Introduce JSAsyncGeneratorObject (subclass of
          JSGeneratorObject), which includes several new internal fields
          (`queue` which contains a singly linked list of
          AsyncGeneratorRequest objects, and `await_input` which
          contains the sent value from an Await expression (This is
          necessary to prevent function.sent (used by yield*) from
          having the sent value observably overwritten during
          execution).
    
        - Modify SuspendGenerator to accept a set of Flags, which
          indicate whether the suspend is for a Yield or Await, and
          whether it takes place on an async generator or ES6
          generator.
    
        - Introduce interpreter intrinsics and TF intrinsic lowering for
          accessing the await input of an async generator
    
        - Modify the JSGeneratorStore operator to understand whether or
          not it's suspending for a normal yield, or an AsyncGenerator
          Await. This ensures appropriate registers are stored.
    
        - Add versions of ResumeGeneratorTrampoline which store the
          input value in a different field depending on wether it's an
          AsyncGenerator Await resume, or an ordinary resume. Also modifies
          whether debug code will assert that the generator object is a
          JSGeneratorObject or a JSAsyncGeneratorObject depending on the
          resume type.
    
    R=caitp@igalia.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
    BUG=v8:5855
    LOG=N
    
    Review-Url: https://codereview.chromium.org/2780283002
    Cr-Commit-Position: refs/heads/master@{#44247}
    a857e3d0
builtins-ppc.cc 107 KB