Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 997e074bb35ed07b69c9b821141c91dd548e0d02
      
https://github.com/WebKit/WebKit/commit/997e074bb35ed07b69c9b821141c91dd548e0d02
  Author: Keith Miller <keith_mil...@apple.com>
  Date:   2023-08-17 (Thu, 17 Aug 2023)

  Changed paths:
    A JSTests/stress/captureStackTrace-on-error-object.js
    A JSTests/stress/captureStackTrace.js
    M LayoutTests/js/Object-getOwnPropertyNames-expected.txt
    M LayoutTests/js/script-tests/Object-getOwnPropertyNames.js
    M Source/JavaScriptCore/interpreter/Interpreter.cpp
    M Source/JavaScriptCore/interpreter/Interpreter.h
    M Source/JavaScriptCore/runtime/CommonIdentifiers.h
    M Source/JavaScriptCore/runtime/Error.cpp
    M Source/JavaScriptCore/runtime/ErrorConstructor.cpp

  Log Message:
  -----------
  Add support for Error.captureStackTrace
https://bugs.webkit.org/show_bug.cgi?id=260326
rdar://113767788

Reviewed by Yusuke Suzuki.

This change adds support for the Error.captureStackTrace extension. We mostly 
want it because web tooling benchamrk
uses it in the hot path of the chai-wtb test, where having native 
Error.captureStackTrace is a 5% progression over the polyfill.

Error.captureStackTrace(obj[, caller]) sets the "stack" property on obj with a 
string of the current callstack. If caller is provided
then any frames above (textually, below in the machine stack) or at the first 
reference to caller are omitted from the trace.

Our implementation should behave the same as v8's with two exceptions:
1) The stack trace is formatted the same as our Error.stack, not v8's.
2) v8 makes the stack property a getter/setter whereas we make it a data 
property, like our Error object.

* Source/JavaScriptCore/interpreter/Interpreter.cpp:
(JSC::Interpreter::getStackTrace):
* Source/JavaScriptCore/interpreter/Interpreter.h:
* Source/JavaScriptCore/runtime/CommonIdentifiers.h:
* Source/JavaScriptCore/runtime/Error.cpp:
(JSC::getStackTrace):
* Source/JavaScriptCore/runtime/ErrorConstructor.cpp:
(JSC::ErrorConstructor::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

Canonical link: https://commits.webkit.org/267010@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to