DescriptionPreserve exception message in iterator finalization.
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
Committed: https://crrev.com/f70b3d3b2c482e8a9918202e358c929852861e07
Cr-Commit-Position: refs/heads/master@{#35226}
Patch Set 1 #
Total comments: 1
Patch Set 2 : Test and cosmetics #Patch Set 3 : Turbofan #
Total comments: 1
Messages
Total messages: 26 (11 generated)
|