Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a9319f524ab7a73affd9e90d36048e46924b0a21
https://github.com/WebKit/WebKit/commit/a9319f524ab7a73affd9e90d36048e46924b0a21
Author: Mark Lam <[email protected]>
Date: 2024-01-13 (Sat, 13 Jan 2024)
Changed paths:
M Source/JavaScriptCore/API/JSContextRef.cpp
M Source/JavaScriptCore/CMakeLists.txt
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
M Source/JavaScriptCore/bytecode/CodeBlock.cpp
M Source/JavaScriptCore/bytecode/CodeBlock.h
M Source/JavaScriptCore/bytecode/ExpressionRangeInfo.h
A Source/JavaScriptCore/bytecode/LineColumn.h
M Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp
M Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h
M Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp
M Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.h
M Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
M Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp
M Source/JavaScriptCore/inspector/InjectedScriptManager.cpp
M Source/JavaScriptCore/inspector/InjectedScriptModule.cpp
M Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp
M Source/JavaScriptCore/inspector/ScriptCallFrame.cpp
M Source/JavaScriptCore/inspector/ScriptCallFrame.h
M Source/JavaScriptCore/inspector/ScriptCallStackFactory.cpp
M Source/JavaScriptCore/interpreter/StackVisitor.cpp
M Source/JavaScriptCore/interpreter/StackVisitor.h
M Source/JavaScriptCore/runtime/Error.cpp
M Source/JavaScriptCore/runtime/Error.h
M Source/JavaScriptCore/runtime/ErrorInstance.cpp
M Source/JavaScriptCore/runtime/ErrorInstance.h
M Source/JavaScriptCore/runtime/FileBasedFuzzerAgent.cpp
M Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.cpp
M Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.h
M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
M Source/JavaScriptCore/runtime/SamplingProfiler.cpp
M Source/JavaScriptCore/runtime/SamplingProfiler.h
M Source/JavaScriptCore/runtime/StackFrame.cpp
M Source/JavaScriptCore/runtime/StackFrame.h
M Source/JavaScriptCore/tools/VMInspector.cpp
M Source/WebCore/bindings/js/SerializedScriptValue.cpp
Log Message:
-----------
Introducing LineColumn.
https://bugs.webkit.org/show_bug.cgi?id=267499
rdar://120949750
Reviewed by Justin Michaud.
In ExpressionRangeInfo code (and a lot of other places in JSC), we pass line
and column values
around as a pair. Sometimes, we have to pass these as references. Introducing
a LineColumn data
structure to pair the 2 values together. As a result, the code reads more
compact and concise.
We also get some minimal efficiency because we can now pass a single LineColumn
reference
instead of 2 unsigned references for the 2 values. We can also now return a
LineColumn value
Instead of have to pass in 2 unsigned references to getters that compute these
values.
Also applied the usage of LineColumn throughout JSC, with the exception of the
Parser and
Debugger where they use slightly "coordinate" systems for the encoding line and
column.
Changing them to use LineColumn may incur significant logic change. Since this
patch is
intended as a minimal refactoring patch, we'll leave those sub-systems alone
for now.
This change is a stepping stone towards an upcoming patch to compress the
encoding of
ExpressionRangeInfo for memory savings.
* Source/JavaScriptCore/API/JSContextRef.cpp:
(BacktraceFunctor::operator() const):
* Source/JavaScriptCore/CMakeLists.txt:
* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/bytecode/CodeBlock.cpp:
(JSC::CodeBlock::lineColumnForBytecodeIndex const):
(JSC::CodeBlock::expressionRangeForBytecodeIndex const):
(JSC::CodeBlock::hasOpDebugForLineAndColumn):
(JSC::CodeBlock::lineNumberForBytecodeIndex): Deleted.
(JSC::CodeBlock::columnNumberForBytecodeIndex): Deleted.
* Source/JavaScriptCore/bytecode/CodeBlock.h:
* Source/JavaScriptCore/bytecode/ExpressionRangeInfo.h:
(JSC::ExpressionRangeInfo::encodeFatLineMode):
(JSC::ExpressionRangeInfo::encodeFatColumnMode):
(JSC::ExpressionRangeInfo::decodeFatLineMode const):
(JSC::ExpressionRangeInfo::decodeFatColumnMode const):
* Source/JavaScriptCore/bytecode/LineColumn.h: Copied from
Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.h.
(JSC::LineColumn::operator== const):
* Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::lineColumnForBytecodeIndex):
(JSC::UnlinkedCodeBlock::getLineAndColumn const):
(JSC::dumpLineColumnEntry):
(JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo):
(JSC::UnlinkedCodeBlock::expressionRangeForBytecodeIndex const):
(JSC::UnlinkedCodeBlock::lineNumberForBytecodeIndex): Deleted.
* Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:
* Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp:
(JSC::UnlinkedCodeBlockGenerator::addExpressionInfo):
* Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.h:
* Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitExpressionInfo):
* Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:
(JSC::LineAndColumnFunctor::operator() const):
(JSC::LineAndColumnFunctor::line const):
(JSC::LineAndColumnFunctor::column const):
(JSC::DebuggerCallFrame::currentPosition):
(): Deleted.
* Source/JavaScriptCore/inspector/InjectedScriptManager.cpp:
(Inspector::InjectedScriptManager::injectedScriptFor):
* Source/JavaScriptCore/inspector/InjectedScriptModule.cpp:
(Inspector::InjectedScriptModule::ensureInjected):
* Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::appendAPIBacktrace):
* Source/JavaScriptCore/inspector/ScriptCallFrame.cpp:
(Inspector::ScriptCallFrame::ScriptCallFrame):
(Inspector::ScriptCallFrame::isEqual const):
(Inspector::ScriptCallFrame::buildInspectorObject const):
* Source/JavaScriptCore/inspector/ScriptCallFrame.h:
* Source/JavaScriptCore/inspector/ScriptCallStackFactory.cpp:
(Inspector::CreateScriptCallStackFunctor::operator() const):
(Inspector::extractSourceInformationFromException):
(Inspector::createScriptCallStackFromException):
* Source/JavaScriptCore/interpreter/StackVisitor.cpp:
(JSC::StackVisitor::Frame::toString const):
(JSC::StackVisitor::Frame::computeLineAndColumn const):
(JSC::StackVisitor::Frame::dump const):
(JSC::StackVisitor::Frame::retrieveExpressionInfo const): Deleted.
* Source/JavaScriptCore/interpreter/StackVisitor.h:
* Source/JavaScriptCore/runtime/Error.cpp:
(JSC::getLineColumnAndSource):
(JSC::addErrorInfo):
* Source/JavaScriptCore/runtime/Error.h:
* Source/JavaScriptCore/runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::create):
(JSC::appendSourceToErrorMessage):
(JSC::ErrorInstance::finishCreation):
(JSC::ErrorInstance::computeErrorInfo):
(JSC::ErrorInstance::materializeErrorInfoIfNeeded):
* Source/JavaScriptCore/runtime/ErrorInstance.h:
* Source/JavaScriptCore/runtime/FileBasedFuzzerAgent.cpp:
(JSC::FileBasedFuzzerAgent::getPredictionInternal):
* Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.cpp:
(JSC::FileBasedFuzzerAgentBase::getPrediction):
* Source/JavaScriptCore/runtime/FileBasedFuzzerAgentBase.h:
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::processUnverifiedStackTraces):
* Source/JavaScriptCore/runtime/SamplingProfiler.h:
(JSC::SamplingProfiler::StackFrame::CodeLocation::hasExpressionInfo const):
(JSC::SamplingProfiler::StackFrame::lineNumber const):
(JSC::SamplingProfiler::StackFrame::columnNumber const):
* Source/JavaScriptCore/runtime/StackFrame.cpp:
(JSC::StackFrame::computeLineAndColumn const):
(JSC::StackFrame::toString const):
* Source/JavaScriptCore/runtime/StackFrame.h:
* Source/JavaScriptCore/tools/VMInspector.cpp:
(JSC::VMInspector::dumpRegisters):
* Source/WebCore/bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneDeserializer::readTerminal):
Canonical link: https://commits.webkit.org/273012@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes