Ignore:
Timestamp:
Apr 16, 2012, 3:26:36 PM (13 years ago)
Author:
[email protected]
Message:

Exception stack traces aren't complete when the exception starts in native code
https://bugs.webkit.org/show_bug.cgi?id=84073

Reviewed by Gavin Barraclough.

Source/JavaScriptCore:

Refactored building the stack trace to so that we can construct
it earlier, and don't rely on any prior work performed in the
exception handling machinery. Also updated LLInt and the DFG to
completely initialise the callframes of host function calls.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::codeOriginIndexForReturn):
(CodeBlock):

  • dfg/DFGOperations.cpp:
  • interpreter/Interpreter.cpp:

(JSC::Interpreter::getStackTrace):
(JSC::Interpreter::addStackTraceIfNecessary):
(JSC):
(JSC::Interpreter::throwException):

  • interpreter/Interpreter.h:

(Interpreter):

  • jit/JITStubs.cpp:

(JSC::DEFINE_STUB_FUNCTION):

  • jsc.cpp:

(functionJSCStack):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::handleHostCall):

  • parser/Parser.h:

(JSC::::parse):

  • runtime/Error.cpp:

(JSC::addErrorInfo):
(JSC::throwError):

  • runtime/Error.h:

(JSC):

LayoutTests:

Update tests to include new exception property ordering, and new functions

  • fast/js/exception-properties-expected.txt:
  • fast/js/script-tests/exception-properties.js:
  • fast/js/script-tests/stack-trace.js:

(selfRecursive1): Modified slightly so that we produce consistent traces

  • fast/js/stack-trace-expected.txt:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp

    r113930 r114309  
    793793   
    794794        if (callType == CallTypeHost) {
     795            execCallee->setCallee(asObject(callee));
    795796            globalData->hostCallReturnValue = JSValue::decode(callData.native.function(execCallee));
    796797            if (globalData->exception)
     
    813814   
    814815    if (constructType == ConstructTypeHost) {
     816        execCallee->setCallee(asObject(callee));
    815817        globalData->hostCallReturnValue = JSValue::decode(constructData.native.function(execCallee));
    816818        if (globalData->exception)
Note: See TracChangeset for help on using the changeset viewer.