• Simon Zünd's avatar
    [stack-trace] Use ErrorStack accessor for formatted stack traces · c8206043
    Simon Zünd authored
    When a stack trace is captured, it is stored in a private symbol on
    the respective Error object. The first access to "Error.stack"  will
    then format the stack trace, with a possible call into user JS via
    the Error.prepareStackTrace callback.
    
    Until now, the accessor converted ".stack" to a normal data
    property containing the formatted stack trace. This causes a new Map
    with a new DescriptorArray to be created, which will not be shared
    with anything else (also not other error objects with formated
    stack traces).
    
    This CL changes the accessor to store the formatted stack trace in
    the same symbol (stack_trace_symbol) as the structured data. The
    result is that an error object will have the same Map before and
    after "Error.stack" is accessed.
    
    Bug: v8:9115
    Change-Id: I7d6bf49be76d63b57fbbaf904cc6ed7dbdbfb96b
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1564061
    Commit-Queue: Simon Zünd <szuend@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#60865}
    c8206043
accessors.cc 30.8 KB