[webkit-changes] [WebKit/WebKit] a9319f: Introducing LineColumn.
Commit Queue
noreply at github.com
Sat Jan 13 11:28:08 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a9319f524ab7a73affd9e90d36048e46924b0a21
https://github.com/WebKit/WebKit/commit/a9319f524ab7a73affd9e90d36048e46924b0a21
Author: Mark Lam <mark.lam at apple.com>
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
More information about the webkit-changes
mailing list