• neis's avatar
    Preserve exception message in iterator finalization. · f70b3d3b
    neis authored
    The parser uses a try-catch in order to record when the client of an iterator
    throws.  The exception then used to get rethrown via 'throw', which
    unfortunately resulted in the original exception message object getting
    overwritten.
    
    This CL solves this as follows:
    - add a clear_pending_message flag to TryCatchStatement (set to true in normal
      cases),
    - set clear_pending_message to false for the TryCatchStatement used in iterator
      finalization
    - change full-codegen, turbofan, and the interpreter to emit the ClearPendingMessage call
      only when the flag is set,
    - replace 'throw' with '%ReThrow' in the iterator finalization code, thus
      reusing the (not-cleared) pending message
    
    R=littledan@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org
    BUG=v8:4875
    LOG=n
    
    Review URL: https://codereview.chromium.org/1842953003
    
    Cr-Commit-Position: refs/heads/master@{#35226}
    f70b3d3b
for-of-throw-in-body.out 251 Bytes