[webkit-changes] [WebKit/WebKit] 5a241c: Destructuring exception shouldn't crash

Keith Miller noreply at github.com
Wed Feb 7 06:16:07 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5a241c1e2822e6ad1b32aca9db53babb28e0b375
      https://github.com/WebKit/WebKit/commit/5a241c1e2822e6ad1b32aca9db53babb28e0b375
  Author: Keith Miller <keith_miller at apple.com>
  Date:   2024-02-07 (Wed, 07 Feb 2024)

  Changed paths:
    A JSTests/stress/destructuring-class-in-constructor-exception.js
    M Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
    M Source/JavaScriptCore/parser/ASTBuilder.h
    M Source/JavaScriptCore/parser/Parser.cpp
    M Source/JavaScriptCore/parser/ParserTokens.h
    M Source/JavaScriptCore/parser/SyntaxChecker.h

  Log Message:
  -----------
  Destructuring exception shouldn't crash
https://bugs.webkit.org/show_bug.cgi?id=268849
rdar://121869296

Reviewed by Yusuke Suzuki.

We recently changed how we saved expression info for exceptions, which saved a bunch of memory.
The new system exposed some places where we were not setting JSTextPositions properly. This
patch fixes that and adds some asserts that the expression info is initialized. We also now
return early rather than emit bad expression info if not all parts are initialized in production.
This means users will see the wrong expression in their stack trace but we won't crash.

* JSTests/stress/destructuring-class-in-constructor-exception.js: Added.
(try.C0):
* Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitExpressionInfo):
* Source/JavaScriptCore/parser/ASTBuilder.h:
(JSC::ASTBuilder::finishObjectPattern):
(JSC::ASTBuilder::setExceptionLocation):
* Source/JavaScriptCore/parser/Parser.cpp:
(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseForStatement):
* Source/JavaScriptCore/parser/ParserTokens.h:
(JSC::JSTextPosition::operator bool const):
* Source/JavaScriptCore/parser/SyntaxChecker.h:
(JSC::SyntaxChecker::operatorStackPop):

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




More information about the webkit-changes mailing list