• 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
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
fuzzer Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
webkit Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
ignition.gyp Loading commit data...
ignition.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.gyp Loading commit data...
perf.isolate Loading commit data...