<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[212365] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/212365">212365</a></dd>
<dt>Author</dt> <dd>utatane.tea@gmail.com</dd>
<dt>Date</dt> <dd>2017-02-15 09:09:22 -0800 (Wed, 15 Feb 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>[JSC] Drop PassRefPtr
https://bugs.webkit.org/show_bug.cgi?id=168320
Reviewed by Saam Barati.
Source/JavaScriptCore:
* API/JSContextRef.cpp:
(JSGlobalContextCreateInGroup):
Use Ref<VM> from the factory function.
* API/JSScriptRef.cpp:
(OpaqueJSScript::create):
Return Ref<> instead.
* API/tests/JSONParseTest.cpp:
(testJSONParse):
Use Ref<VM>.
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::finalizeCodeWithoutDisassembly):
Use reference since we already perform null check.
* assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
Take Ref<>&& instead of PassRefPtr<>.
* bytecode/CallLinkInfo.h:
(JSC::CallLinkInfo::setStub):
(JSC::CallLinkInfo::setSlowStub):
Take Ref<>&& instead of PassRefPtr<>.
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
Take RefPtr<SourceProvider>. Currently, the SourceProvider would be nullptr.
We will change it to Ref<SourceProvider> in https://bugs.webkit.org/show_bug.cgi?id=168325.
(JSC::CodeBlock::finishCreation):
Take Ref<TypeSet>&&.
* bytecode/CodeBlock.h:
(JSC::CodeBlock::setJITCode):
Take Ref<>&& instead.
(JSC::CodeBlock::jitCode):
Return RefPtr<> instead.
* bytecode/EvalCodeBlock.h:
(JSC::EvalCodeBlock::create):
Take RefPtr<>&& instead since SourceProvider woule be nullptr.
(JSC::EvalCodeBlock::EvalCodeBlock):
* bytecode/FunctionCodeBlock.h:
(JSC::FunctionCodeBlock::create):
(JSC::FunctionCodeBlock::FunctionCodeBlock):
Take RefPtr<>&& instead since SourceProvider woule be nullptr.
* bytecode/GlobalCodeBlock.h:
(JSC::GlobalCodeBlock::GlobalCodeBlock):
Take RefPtr<>&& instead since SourceProvider woule be nullptr.
* bytecode/ModuleProgramCodeBlock.h:
(JSC::ModuleProgramCodeBlock::create):
(JSC::ModuleProgramCodeBlock::ModuleProgramCodeBlock):
Take RefPtr<>&& instead since SourceProvider woule be nullptr.
* bytecode/ProgramCodeBlock.h:
(JSC::ProgramCodeBlock::create):
(JSC::ProgramCodeBlock::ProgramCodeBlock):
Take RefPtr<>&& instead since SourceProvider woule be nullptr.
* debugger/DebuggerParseData.cpp:
(JSC::gatherDebuggerParseDataForSource):
Ensure the provider is not nullptr. It is OK because we already
touch `provider->xxx` values.
* dfg/DFGBlockInsertionSet.cpp:
(JSC::DFG::BlockInsertionSet::insert):
Take Ref<>&& instead.
* dfg/DFGBlockInsertionSet.h:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::inlineCall):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::parseCodeBlock):
Pass Ref<>&& to appendBlock.
* dfg/DFGDriver.cpp:
(JSC::DFG::compileImpl):
(JSC::DFG::compile):
Pass Ref<Plan>&&. And take Ref<>&& callback.
* dfg/DFGDriver.h:
* dfg/DFGGraph.h:
appendBlock takes Ref<>&&.
(JSC::DFG::Graph::appendBlock):
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
* dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::jitCode):
* dfg/DFGJITFinalizer.cpp:
(JSC::DFG::JITFinalizer::JITFinalizer):
Take Ref<JITCode>&&.
(JSC::DFG::JITFinalizer::finalize):
(JSC::DFG::JITFinalizer::finalizeFunction):
(JSC::DFG::JITFinalizer::finalizeCommon):
Pass compilation reference since we already perform null check.
* dfg/DFGJITFinalizer.h:
* dfg/DFGWorklist.cpp:
(JSC::DFG::Worklist::enqueue):
Take Ref<Plan>&&.
* dfg/DFGWorklist.h:
* ftl/FTLJITFinalizer.cpp:
(JSC::FTL::JITFinalizer::finalizeFunction):
Dereference and pass jitCode & compilation references.
* jit/GCAwareJITStubRoutine.cpp:
(JSC::createJITStubRoutine):
Return Ref<> instead.
* jit/GCAwareJITStubRoutine.h:
(JSC::createJITStubRoutine):
* jit/JIT.cpp:
(JSC::JIT::link):
Pass compilation reference since we already perform null check.
* jit/JITStubRoutine.h:
(JSC::JITStubRoutine::asCodePtr):
Take Ref<>&& instead. And this drops unnecessary null check.
* jit/JITThunks.cpp:
(JSC::JITThunks::hostFunctionStub):
Pass Ref<> to NativeExecutable::create.
* llint/LLIntEntrypoint.cpp:
(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):
Use Ref<>&& instead.
* parser/SourceCode.h:
(JSC::SourceCode::SourceCode):
(JSC::SourceCode::subExpression):
Add constructors taking Ref<>&&.
We still have constructors that take RefPtr<>&&.
We will change it to Ref<SourceProvider>&& in https://bugs.webkit.org/show_bug.cgi?id=168325.
* parser/UnlinkedSourceCode.h:
(JSC::UnlinkedSourceCode::UnlinkedSourceCode):
Add constructors taking Ref<>&&.
We still have constructors that take RefPtr<>&&.
We will change it to Ref<SourceProvider>&& in https://bugs.webkit.org/show_bug.cgi?id=168325.
* profiler/ProfilerDatabase.cpp:
(JSC::Profiler::Database::addCompilation):
Take Ref<Compilation>&&.
* profiler/ProfilerDatabase.h:
Change data structures to hold Ref<> instead of RefPtr<>.
* runtime/EvalExecutable.h:
(JSC::EvalExecutable::generatedJITCode):
Return Ref<> instead.
* runtime/ExecutableBase.h:
(JSC::ExecutableBase::generatedJITCodeForCall):
(JSC::ExecutableBase::generatedJITCodeForConstruct):
(JSC::ExecutableBase::generatedJITCodeFor):
Return Ref<> instead.
* runtime/Identifier.cpp:
(JSC::Identifier::add):
(JSC::Identifier::add8):
* runtime/Identifier.h:
(JSC::Identifier::add):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::setInputCursor):
And take Ref<> in this method.
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::inputCursor):
Change m_inputCursor from RefPtr<> to Ref<>.
* runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::create):
(JSC::JSPropertyNameEnumerator::finishCreation):
Take Ref<PropertyNameArray>&&.
* runtime/JSPropertyNameEnumerator.h:
(JSC::propertyNameEnumerator):
* runtime/JSString.h:
(JSC::JSString::JSString):
Take Ref<StringImpl>&& since we do not allow nullptr in this constructor.
(JSC::JSString::create):
(JSC::JSString::createHasOtherOwner):
Take Ref<StringImpl>&& in these factory functions. And drop unnecessary assertions.
(JSC::jsSingleCharacterString):
Use StringImpl::create() which returns Ref<>.
(JSC::jsNontrivialString):
Dereference impl() since we ensure that `s.length() > 1`.
(JSC::jsString):
Use releaseNonNull() since we ensure that `s.length() > 1`.
(JSC::jsOwnedString):
Use releaseNonNull() since we ensure that `s.length() > 1`.
* runtime/ModuleProgramExecutable.h:
* runtime/NativeExecutable.cpp:
(JSC::NativeExecutable::create):
(JSC::NativeExecutable::finishCreation):
Take Ref<JITCode>&&.
* runtime/NativeExecutable.h:
* runtime/ProgramExecutable.h:
Return Ref<JITCode>.
* runtime/PropertyNameArray.h:
(JSC::PropertyNameArray::releaseData):
(JSC::PropertyNameArray::setData): Deleted.
This is not used.
* runtime/RegExpKey.h:
(JSC::RegExpKey::RegExpKey):
Take RefPtr<>&&.
* runtime/SmallStrings.cpp:
(JSC::SmallStringsStorage::rep):
Return StringImpl& since m_reps is already initialized in the constructor.
(JSC::SmallStrings::createEmptyString):
Dereference StringImpl::empty().
(JSC::SmallStrings::createSingleCharacterString):
Use StringImpl&.
(JSC::SmallStrings::singleCharacterStringRep):
Return StringImpl&.
(JSC::SmallStrings::initialize):
Use AtomicStringImpl::add instead.
* runtime/SmallStrings.h:
* runtime/Structure.cpp:
(JSC::Structure::toStructureShape):
Return Ref<>.
* runtime/Structure.h:
* runtime/TypeLocationCache.cpp:
(JSC::TypeLocationCache::getTypeLocation):
Take RefPtr<TypeSet>&&.
* runtime/TypeLocationCache.h:
* runtime/TypeProfilerLog.cpp:
Pass Ref<>&&.
(JSC::TypeProfilerLog::processLogEntries):
* runtime/TypeSet.cpp:
(JSC::TypeSet::addTypeInformation):
Take RefPtr<>&& since it can be nullptr.
And clean up "not found" code.
(JSC::TypeSet::allStructureRepresentations):
Use range based iteration.
(JSC::StructureShape::leastCommonAncestor):
We found that this method accidentally takes `const Vector<>` instead of `const Vector<>&`.
And internally, we just use raw pointers since these StructureShapes are owned by the m_proto trees which starts from the given Vector<>.
(JSC::StructureShape::hasSamePrototypeChain):
Take const reference instead. And use raw pointers internally.
(JSC::StructureShape::merge):
Take Ref<>&&.
* runtime/TypeSet.h:
(JSC::StructureShape::setProto):
Take Ref<>&&.
* runtime/VM.cpp:
(JSC::VM::getHostFunction):
Pass Ref<>&&.
(JSC::VM::queueMicrotask):
Take and pass Ref<>&&.
* runtime/VM.h:
(JSC::QueuedTask::QueuedTask):
Take Ref<>&&.
* tools/FunctionOverrides.cpp:
(JSC::initializeOverrideInfo):
We need this change due to Ref<>&& and RefPtr<>&& ambiguity of SourceCode constructors.
Once SourceCode is fixed to only take Ref<>&&, this change is unnecessary.
Source/WebCore:
* bindings/js/ScriptSourceCode.h:
(WebCore::ScriptSourceCode::ScriptSourceCode):
Use Ref and pass it to SourceCode.
* replay/ReplayController.cpp:
(WebCore::ReplayController::frameNavigated):
Pass reference.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSContextRefcpp">trunk/Source/JavaScriptCore/API/JSContextRef.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSScriptRefcpp">trunk/Source/JavaScriptCore/API/JSScriptRef.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPItestsJSONParseTestcpp">trunk/Source/JavaScriptCore/API/tests/JSONParseTest.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreassemblerLinkBuffercpp">trunk/Source/JavaScriptCore/assembler/LinkBuffer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreassemblerMacroAssemblerCodeRefh">trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCallLinkInfoh">trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockh">trunk/Source/JavaScriptCore/bytecode/CodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeEvalCodeBlockh">trunk/Source/JavaScriptCore/bytecode/EvalCodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeFunctionCodeBlockh">trunk/Source/JavaScriptCore/bytecode/FunctionCodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeGlobalCodeBlockh">trunk/Source/JavaScriptCore/bytecode/GlobalCodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeModuleProgramCodeBlockh">trunk/Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeProgramCodeBlockh">trunk/Source/JavaScriptCore/bytecode/ProgramCodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggerParseDatacpp">trunk/Source/JavaScriptCore/debugger/DebuggerParseData.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGBlockInsertionSetcpp">trunk/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGBlockInsertionSeth">trunk/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp">trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGDrivercpp">trunk/Source/JavaScriptCore/dfg/DFGDriver.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGDriverh">trunk/Source/JavaScriptCore/dfg/DFGDriver.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGGraphh">trunk/Source/JavaScriptCore/dfg/DFGGraph.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGJITCompilercpp">trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGJITFinalizercpp">trunk/Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGJITFinalizerh">trunk/Source/JavaScriptCore/dfg/DFGJITFinalizer.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGWorklistcpp">trunk/Source/JavaScriptCore/dfg/DFGWorklist.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGWorklisth">trunk/Source/JavaScriptCore/dfg/DFGWorklist.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLJITFinalizercpp">trunk/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitGCAwareJITStubRoutinecpp">trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitGCAwareJITStubRoutineh">trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITcpp">trunk/Source/JavaScriptCore/jit/JIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITStubRoutineh">trunk/Source/JavaScriptCore/jit/JITStubRoutine.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITThunkscpp">trunk/Source/JavaScriptCore/jit/JITThunks.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntEntrypointcpp">trunk/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserSourceCodeh">trunk/Source/JavaScriptCore/parser/SourceCode.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserUnlinkedSourceCodeh">trunk/Source/JavaScriptCore/parser/UnlinkedSourceCode.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfilerDatabasecpp">trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfilerDatabaseh">trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeEvalExecutableh">trunk/Source/JavaScriptCore/runtime/EvalExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutableBaseh">trunk/Source/JavaScriptCore/runtime/ExecutableBase.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIdentifiercpp">trunk/Source/JavaScriptCore/runtime/Identifier.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIdentifierh">trunk/Source/JavaScriptCore/runtime/Identifier.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjecth">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPropertyNameEnumeratorcpp">trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPropertyNameEnumeratorh">trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSStringh">trunk/Source/JavaScriptCore/runtime/JSString.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeModuleProgramExecutableh">trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNativeExecutablecpp">trunk/Source/JavaScriptCore/runtime/NativeExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNativeExecutableh">trunk/Source/JavaScriptCore/runtime/NativeExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeProgramExecutableh">trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertyNameArrayh">trunk/Source/JavaScriptCore/runtime/PropertyNameArray.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpKeyh">trunk/Source/JavaScriptCore/runtime/RegExpKey.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSmallStringscpp">trunk/Source/JavaScriptCore/runtime/SmallStrings.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSmallStringsh">trunk/Source/JavaScriptCore/runtime/SmallStrings.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructurecpp">trunk/Source/JavaScriptCore/runtime/Structure.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureh">trunk/Source/JavaScriptCore/runtime/Structure.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeLocationCachecpp">trunk/Source/JavaScriptCore/runtime/TypeLocationCache.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeLocationCacheh">trunk/Source/JavaScriptCore/runtime/TypeLocationCache.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeProfilerLogcpp">trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeSetcpp">trunk/Source/JavaScriptCore/runtime/TypeSet.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTypeSeth">trunk/Source/JavaScriptCore/runtime/TypeSet.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMh">trunk/Source/JavaScriptCore/runtime/VM.h</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsFunctionOverridescpp">trunk/Source/JavaScriptCore/tools/FunctionOverrides.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptSourceCodeh">trunk/Source/WebCore/bindings/js/ScriptSourceCode.h</a></li>
<li><a href="#trunkSourceWebCorereplayReplayControllercpp">trunk/Source/WebCore/replay/ReplayController.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSContextRefcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSContextRef.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSContextRef.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/API/JSContextRef.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -133,12 +133,12 @@
</span><span class="cx"> {
</span><span class="cx"> initializeThreading();
</span><span class="cx">
</span><del>- RefPtr<VM> vm = group ? PassRefPtr<VM>(toJS(group)) : VM::createContextGroup();
</del><ins>+ Ref<VM> vm = group ? Ref<VM>(*toJS(group)) : VM::createContextGroup();
</ins><span class="cx">
</span><del>- JSLockHolder locker(vm.get());
</del><ins>+ JSLockHolder locker(vm.ptr());
</ins><span class="cx">
</span><span class="cx"> if (!globalObjectClass) {
</span><del>- JSGlobalObject* globalObject = JSGlobalObject::create(*vm, JSGlobalObject::createStructure(*vm, jsNull()));
</del><ins>+ JSGlobalObject* globalObject = JSGlobalObject::create(vm.get(), JSGlobalObject::createStructure(vm.get(), jsNull()));
</ins><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span><span class="cx"> if (JSRemoteInspectorGetInspectionEnabledByDefault())
</span><span class="cx"> globalObject->setRemoteDebuggingEnabled(true);
</span><span class="lines">@@ -146,12 +146,12 @@
</span><span class="cx"> return JSGlobalContextRetain(toGlobalRef(globalObject->globalExec()));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JSGlobalObject* globalObject = JSCallbackObject<JSGlobalObject>::create(*vm, globalObjectClass, JSCallbackObject<JSGlobalObject>::createStructure(*vm, 0, jsNull()));
</del><ins>+ JSGlobalObject* globalObject = JSCallbackObject<JSGlobalObject>::create(vm.get(), globalObjectClass, JSCallbackObject<JSGlobalObject>::createStructure(vm.get(), 0, jsNull()));
</ins><span class="cx"> ExecState* exec = globalObject->globalExec();
</span><span class="cx"> JSValue prototype = globalObjectClass->prototype(exec);
</span><span class="cx"> if (!prototype)
</span><span class="cx"> prototype = jsNull();
</span><del>- globalObject->resetPrototype(*vm, prototype);
</del><ins>+ globalObject->resetPrototype(vm.get(), prototype);
</ins><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span><span class="cx"> if (JSRemoteInspectorGetInspectionEnabledByDefault())
</span><span class="cx"> globalObject->setRemoteDebuggingEnabled(true);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSScriptRefcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSScriptRef.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSScriptRef.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/API/JSScriptRef.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">
</span><span class="cx"> struct OpaqueJSScript : public SourceProvider {
</span><span class="cx"> public:
</span><del>- static WTF::RefPtr<OpaqueJSScript> create(VM& vm, const SourceOrigin& sourceOrigin, const String& url, int startingLineNumber, const String& source)
</del><ins>+ static WTF::Ref<OpaqueJSScript> create(VM& vm, const SourceOrigin& sourceOrigin, const String& url, int startingLineNumber, const String& source)
</ins><span class="cx"> {
</span><span class="cx"> return WTF::adoptRef(*new OpaqueJSScript(vm, sourceOrigin, url, startingLineNumber, source));
</span><span class="cx"> }
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx"> auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, sourceURLString, startingLineNumber, String(StringImpl::createFromLiteral(source, length)));
</span><span class="cx">
</span><span class="cx"> ParserError error;
</span><del>- if (!parseScript(vm, SourceCode(result), error)) {
</del><ins>+ if (!parseScript(vm, SourceCode(result.copyRef()), error)) {
</ins><span class="cx"> if (errorMessage)
</span><span class="cx"> *errorMessage = OpaqueJSString::create(error.message()).leakRef();
</span><span class="cx"> if (errorLine)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return result.leakRef();
</del><ins>+ return &result.leakRef();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSScriptRef JSScriptCreateFromString(JSContextGroupRef contextGroup, JSStringRef url, int startingLineNumber, JSStringRef source, JSStringRef* errorMessage, int* errorLine)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> auto result = OpaqueJSScript::create(vm, SourceOrigin { sourceURLString }, sourceURLString, startingLineNumber, source->string());
</span><span class="cx">
</span><span class="cx"> ParserError error;
</span><del>- if (!parseScript(vm, SourceCode(result), error)) {
</del><ins>+ if (!parseScript(vm, SourceCode(result.copyRef()), error)) {
</ins><span class="cx"> if (errorMessage)
</span><span class="cx"> *errorMessage = OpaqueJSString::create(error.message()).leakRef();
</span><span class="cx"> if (errorLine)
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return result.leakRef();
</del><ins>+ return &result.leakRef();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSScriptRetain(JSScriptRef script)
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx"> }
</span><span class="cx"> NakedPtr<Exception> internalException;
</span><span class="cx"> JSValue thisValue = thisValueRef ? toJS(exec, thisValueRef) : jsUndefined();
</span><del>- JSValue result = evaluate(exec, SourceCode(script), thisValue, internalException);
</del><ins>+ JSValue result = evaluate(exec, SourceCode(*script), thisValue, internalException);
</ins><span class="cx"> if (internalException) {
</span><span class="cx"> if (exception)
</span><span class="cx"> *exception = toRef(exec, internalException->value());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPItestsJSONParseTestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/tests/JSONParseTest.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/tests/JSONParseTest.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/API/tests/JSONParseTest.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -38,28 +38,28 @@
</span><span class="cx"> {
</span><span class="cx"> bool failed = false;
</span><span class="cx">
</span><del>- RefPtr<VM> vm = VM::create();
</del><ins>+ {
+ Ref<VM> vm = VM::create();
</ins><span class="cx">
</span><del>- JSLockHolder locker(vm.get());
- JSGlobalObject* globalObject = JSGlobalObject::create(*vm, JSGlobalObject::createStructure(*vm, jsNull()));
</del><ins>+ JSLockHolder locker(vm.ptr());
+ JSGlobalObject* globalObject = JSGlobalObject::create(vm.get(), JSGlobalObject::createStructure(vm.get(), jsNull()));
</ins><span class="cx">
</span><del>- ExecState* exec = globalObject->globalExec();
- JSValue v0 = JSONParse(exec, "");
- JSValue v1 = JSONParse(exec, "#$%^");
- JSValue v2 = JSONParse(exec, String());
- UChar emptyUCharArray[1] = { '\0' };
- JSValue v3 = JSONParse(exec, String(emptyUCharArray, 0));
- JSValue v4;
- JSValue v5 = JSONParse(exec, "123");
</del><ins>+ ExecState* exec = globalObject->globalExec();
+ JSValue v0 = JSONParse(exec, "");
+ JSValue v1 = JSONParse(exec, "#$%^");
+ JSValue v2 = JSONParse(exec, String());
+ UChar emptyUCharArray[1] = { '\0' };
+ JSValue v3 = JSONParse(exec, String(emptyUCharArray, 0));
+ JSValue v4;
+ JSValue v5 = JSONParse(exec, "123");
</ins><span class="cx">
</span><del>- failed = failed || (v0 != v1);
- failed = failed || (v1 != v2);
- failed = failed || (v2 != v3);
- failed = failed || (v3 != v4);
- failed = failed || (v4 == v5);
</del><ins>+ failed = failed || (v0 != v1);
+ failed = failed || (v1 != v2);
+ failed = failed || (v2 != v3);
+ failed = failed || (v3 != v4);
+ failed = failed || (v4 == v5);
+ }
</ins><span class="cx">
</span><del>- vm = nullptr;
-
</del><span class="cx"> if (failed)
</span><span class="cx"> printf("FAIL: JSONParse String test.\n");
</span><span class="cx"> else
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/ChangeLog        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -1,3 +1,307 @@
</span><ins>+2017-02-15 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ [JSC] Drop PassRefPtr
+ https://bugs.webkit.org/show_bug.cgi?id=168320
+
+ Reviewed by Saam Barati.
+
+ * API/JSContextRef.cpp:
+ (JSGlobalContextCreateInGroup):
+ Use Ref<VM> from the factory function.
+
+ * API/JSScriptRef.cpp:
+ (OpaqueJSScript::create):
+ Return Ref<> instead.
+
+ * API/tests/JSONParseTest.cpp:
+ (testJSONParse):
+ Use Ref<VM>.
+
+ * assembler/LinkBuffer.cpp:
+ (JSC::LinkBuffer::finalizeCodeWithoutDisassembly):
+ Use reference since we already perform null check.
+
+ * assembler/MacroAssemblerCodeRef.h:
+ (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
+ Take Ref<>&& instead of PassRefPtr<>.
+
+ * bytecode/CallLinkInfo.h:
+ (JSC::CallLinkInfo::setStub):
+ (JSC::CallLinkInfo::setSlowStub):
+ Take Ref<>&& instead of PassRefPtr<>.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ Take RefPtr<SourceProvider>. Currently, the SourceProvider would be nullptr.
+ We will change it to Ref<SourceProvider> in https://bugs.webkit.org/show_bug.cgi?id=168325.
+
+ (JSC::CodeBlock::finishCreation):
+ Take Ref<TypeSet>&&.
+
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::setJITCode):
+ Take Ref<>&& instead.
+
+ (JSC::CodeBlock::jitCode):
+ Return RefPtr<> instead.
+
+ * bytecode/EvalCodeBlock.h:
+ (JSC::EvalCodeBlock::create):
+ Take RefPtr<>&& instead since SourceProvider woule be nullptr.
+
+ (JSC::EvalCodeBlock::EvalCodeBlock):
+ * bytecode/FunctionCodeBlock.h:
+ (JSC::FunctionCodeBlock::create):
+ (JSC::FunctionCodeBlock::FunctionCodeBlock):
+ Take RefPtr<>&& instead since SourceProvider woule be nullptr.
+
+ * bytecode/GlobalCodeBlock.h:
+ (JSC::GlobalCodeBlock::GlobalCodeBlock):
+ Take RefPtr<>&& instead since SourceProvider woule be nullptr.
+
+ * bytecode/ModuleProgramCodeBlock.h:
+ (JSC::ModuleProgramCodeBlock::create):
+ (JSC::ModuleProgramCodeBlock::ModuleProgramCodeBlock):
+ Take RefPtr<>&& instead since SourceProvider woule be nullptr.
+
+ * bytecode/ProgramCodeBlock.h:
+ (JSC::ProgramCodeBlock::create):
+ (JSC::ProgramCodeBlock::ProgramCodeBlock):
+ Take RefPtr<>&& instead since SourceProvider woule be nullptr.
+
+ * debugger/DebuggerParseData.cpp:
+ (JSC::gatherDebuggerParseDataForSource):
+ Ensure the provider is not nullptr. It is OK because we already
+ touch `provider->xxx` values.
+
+ * dfg/DFGBlockInsertionSet.cpp:
+ (JSC::DFG::BlockInsertionSet::insert):
+ Take Ref<>&& instead.
+
+ * dfg/DFGBlockInsertionSet.h:
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::inlineCall):
+ (JSC::DFG::ByteCodeParser::handleInlining):
+ (JSC::DFG::ByteCodeParser::parseCodeBlock):
+ Pass Ref<>&& to appendBlock.
+
+ * dfg/DFGDriver.cpp:
+ (JSC::DFG::compileImpl):
+ (JSC::DFG::compile):
+ Pass Ref<Plan>&&. And take Ref<>&& callback.
+
+ * dfg/DFGDriver.h:
+ * dfg/DFGGraph.h:
+ appendBlock takes Ref<>&&.
+
+ (JSC::DFG::Graph::appendBlock):
+ * dfg/DFGJITCompiler.cpp:
+ (JSC::DFG::JITCompiler::compile):
+ (JSC::DFG::JITCompiler::compileFunction):
+ * dfg/DFGJITCompiler.h:
+ (JSC::DFG::JITCompiler::jitCode):
+ * dfg/DFGJITFinalizer.cpp:
+ (JSC::DFG::JITFinalizer::JITFinalizer):
+ Take Ref<JITCode>&&.
+
+ (JSC::DFG::JITFinalizer::finalize):
+ (JSC::DFG::JITFinalizer::finalizeFunction):
+ (JSC::DFG::JITFinalizer::finalizeCommon):
+ Pass compilation reference since we already perform null check.
+
+ * dfg/DFGJITFinalizer.h:
+ * dfg/DFGWorklist.cpp:
+ (JSC::DFG::Worklist::enqueue):
+ Take Ref<Plan>&&.
+
+ * dfg/DFGWorklist.h:
+ * ftl/FTLJITFinalizer.cpp:
+ (JSC::FTL::JITFinalizer::finalizeFunction):
+ Dereference and pass jitCode & compilation references.
+
+ * jit/GCAwareJITStubRoutine.cpp:
+ (JSC::createJITStubRoutine):
+ Return Ref<> instead.
+
+ * jit/GCAwareJITStubRoutine.h:
+ (JSC::createJITStubRoutine):
+ * jit/JIT.cpp:
+ (JSC::JIT::link):
+ Pass compilation reference since we already perform null check.
+
+ * jit/JITStubRoutine.h:
+ (JSC::JITStubRoutine::asCodePtr):
+ Take Ref<>&& instead. And this drops unnecessary null check.
+
+ * jit/JITThunks.cpp:
+ (JSC::JITThunks::hostFunctionStub):
+ Pass Ref<> to NativeExecutable::create.
+
+ * llint/LLIntEntrypoint.cpp:
+ (JSC::LLInt::setFunctionEntrypoint):
+ (JSC::LLInt::setEvalEntrypoint):
+ (JSC::LLInt::setProgramEntrypoint):
+ (JSC::LLInt::setModuleProgramEntrypoint):
+ Use Ref<>&& instead.
+
+ * parser/SourceCode.h:
+ (JSC::SourceCode::SourceCode):
+ (JSC::SourceCode::subExpression):
+ Add constructors taking Ref<>&&.
+ We still have constructors that take RefPtr<>&&.
+ We will change it to Ref<SourceProvider>&& in https://bugs.webkit.org/show_bug.cgi?id=168325.
+
+ * parser/UnlinkedSourceCode.h:
+ (JSC::UnlinkedSourceCode::UnlinkedSourceCode):
+ Add constructors taking Ref<>&&.
+ We still have constructors that take RefPtr<>&&.
+ We will change it to Ref<SourceProvider>&& in https://bugs.webkit.org/show_bug.cgi?id=168325.
+
+ * profiler/ProfilerDatabase.cpp:
+ (JSC::Profiler::Database::addCompilation):
+ Take Ref<Compilation>&&.
+
+ * profiler/ProfilerDatabase.h:
+ Change data structures to hold Ref<> instead of RefPtr<>.
+
+ * runtime/EvalExecutable.h:
+ (JSC::EvalExecutable::generatedJITCode):
+ Return Ref<> instead.
+
+ * runtime/ExecutableBase.h:
+ (JSC::ExecutableBase::generatedJITCodeForCall):
+ (JSC::ExecutableBase::generatedJITCodeForConstruct):
+ (JSC::ExecutableBase::generatedJITCodeFor):
+ Return Ref<> instead.
+
+ * runtime/Identifier.cpp:
+ (JSC::Identifier::add):
+ (JSC::Identifier::add8):
+ * runtime/Identifier.h:
+ (JSC::Identifier::add):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::setInputCursor):
+ And take Ref<> in this method.
+
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::inputCursor):
+ Change m_inputCursor from RefPtr<> to Ref<>.
+
+ * runtime/JSPropertyNameEnumerator.cpp:
+ (JSC::JSPropertyNameEnumerator::create):
+ (JSC::JSPropertyNameEnumerator::finishCreation):
+ Take Ref<PropertyNameArray>&&.
+
+ * runtime/JSPropertyNameEnumerator.h:
+ (JSC::propertyNameEnumerator):
+ * runtime/JSString.h:
+ (JSC::JSString::JSString):
+ Take Ref<StringImpl>&& since we do not allow nullptr in this constructor.
+
+ (JSC::JSString::create):
+ (JSC::JSString::createHasOtherOwner):
+ Take Ref<StringImpl>&& in these factory functions. And drop unnecessary assertions.
+
+ (JSC::jsSingleCharacterString):
+ Use StringImpl::create() which returns Ref<>.
+
+ (JSC::jsNontrivialString):
+ Dereference impl() since we ensure that `s.length() > 1`.
+
+ (JSC::jsString):
+ Use releaseNonNull() since we ensure that `s.length() > 1`.
+
+ (JSC::jsOwnedString):
+ Use releaseNonNull() since we ensure that `s.length() > 1`.
+
+ * runtime/ModuleProgramExecutable.h:
+ * runtime/NativeExecutable.cpp:
+ (JSC::NativeExecutable::create):
+ (JSC::NativeExecutable::finishCreation):
+ Take Ref<JITCode>&&.
+
+ * runtime/NativeExecutable.h:
+ * runtime/ProgramExecutable.h:
+ Return Ref<JITCode>.
+
+ * runtime/PropertyNameArray.h:
+ (JSC::PropertyNameArray::releaseData):
+ (JSC::PropertyNameArray::setData): Deleted.
+ This is not used.
+
+ * runtime/RegExpKey.h:
+ (JSC::RegExpKey::RegExpKey):
+ Take RefPtr<>&&.
+
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStringsStorage::rep):
+ Return StringImpl& since m_reps is already initialized in the constructor.
+
+ (JSC::SmallStrings::createEmptyString):
+ Dereference StringImpl::empty().
+
+ (JSC::SmallStrings::createSingleCharacterString):
+ Use StringImpl&.
+
+ (JSC::SmallStrings::singleCharacterStringRep):
+ Return StringImpl&.
+
+ (JSC::SmallStrings::initialize):
+ Use AtomicStringImpl::add instead.
+
+ * runtime/SmallStrings.h:
+ * runtime/Structure.cpp:
+ (JSC::Structure::toStructureShape):
+ Return Ref<>.
+
+ * runtime/Structure.h:
+ * runtime/TypeLocationCache.cpp:
+ (JSC::TypeLocationCache::getTypeLocation):
+ Take RefPtr<TypeSet>&&.
+
+ * runtime/TypeLocationCache.h:
+ * runtime/TypeProfilerLog.cpp:
+ Pass Ref<>&&.
+
+ (JSC::TypeProfilerLog::processLogEntries):
+ * runtime/TypeSet.cpp:
+ (JSC::TypeSet::addTypeInformation):
+ Take RefPtr<>&& since it can be nullptr.
+ And clean up "not found" code.
+
+ (JSC::TypeSet::allStructureRepresentations):
+ Use range based iteration.
+
+ (JSC::StructureShape::leastCommonAncestor):
+ We found that this method accidentally takes `const Vector<>` instead of `const Vector<>&`.
+ And internally, we just use raw pointers since these StructureShapes are owned by the m_proto trees which starts from the given Vector<>.
+
+ (JSC::StructureShape::hasSamePrototypeChain):
+ Take const reference instead. And use raw pointers internally.
+
+ (JSC::StructureShape::merge):
+ Take Ref<>&&.
+
+ * runtime/TypeSet.h:
+ (JSC::StructureShape::setProto):
+ Take Ref<>&&.
+
+ * runtime/VM.cpp:
+ (JSC::VM::getHostFunction):
+ Pass Ref<>&&.
+
+ (JSC::VM::queueMicrotask):
+ Take and pass Ref<>&&.
+
+ * runtime/VM.h:
+ (JSC::QueuedTask::QueuedTask):
+ Take Ref<>&&.
+
+ * tools/FunctionOverrides.cpp:
+ (JSC::initializeOverrideInfo):
+ We need this change due to Ref<>&& and RefPtr<>&& ambiguity of SourceCode constructors.
+ Once SourceCode is fixed to only take Ref<>&&, this change is unnecessary.
+
</ins><span class="cx"> 2017-02-15 Csaba Osztrogonác <ossy@webkit.org>
</span><span class="cx">
</span><span class="cx"> [Mac][cmake] Unreviewed trivial buildfix after r212169.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreassemblerLinkBuffercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/assembler/LinkBuffer.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/assembler/LinkBuffer.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/assembler/LinkBuffer.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">
</span><span class="cx"> ASSERT(m_didAllocate);
</span><span class="cx"> if (m_executableMemory)
</span><del>- return CodeRef(m_executableMemory);
</del><ins>+ return CodeRef(*m_executableMemory);
</ins><span class="cx">
</span><span class="cx"> return CodeRef::createSelfManagedCodeRef(MacroAssemblerCodePtr(m_code));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreassemblerMacroAssemblerCodeRefh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx">
</span><span class="cx"> #include "ExecutableAllocator.h"
</span><span class="cx"> #include <wtf/DataLog.h>
</span><del>-#include <wtf/PassRefPtr.h>
</del><span class="cx"> #include <wtf/PrintStream.h>
</span><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx"> #include <wtf/text/CString.h>
</span><span class="lines">@@ -354,9 +353,9 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- MacroAssemblerCodeRef(PassRefPtr<ExecutableMemoryHandle> executableMemory)
</del><ins>+ MacroAssemblerCodeRef(Ref<ExecutableMemoryHandle>&& executableMemory)
</ins><span class="cx"> : m_codePtr(executableMemory->start())
</span><del>- , m_executableMemory(executableMemory)
</del><ins>+ , m_executableMemory(WTFMove(executableMemory))
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(m_executableMemory->isManaged());
</span><span class="cx"> ASSERT(m_executableMemory->start());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCallLinkInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -207,10 +207,10 @@
</span><span class="cx"> void setExecutableDuringCompilation(ExecutableBase*);
</span><span class="cx"> ExecutableBase* executable();
</span><span class="cx">
</span><del>- void setStub(PassRefPtr<PolymorphicCallStubRoutine> newStub)
</del><ins>+ void setStub(Ref<PolymorphicCallStubRoutine>&& newStub)
</ins><span class="cx"> {
</span><span class="cx"> clearStub();
</span><del>- m_stub = newStub;
</del><ins>+ m_stub = WTFMove(newStub);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void clearStub();
</span><span class="lines">@@ -220,9 +220,9 @@
</span><span class="cx"> return m_stub.get();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- void setSlowStub(PassRefPtr<JITStubRoutine> newSlowStub)
</del><ins>+ void setSlowStub(Ref<JITStubRoutine>&& newSlowStub)
</ins><span class="cx"> {
</span><del>- m_slowStub = newSlowStub;
</del><ins>+ m_slowStub = WTFMove(newSlowStub);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void clearSlowStub()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -1889,7 +1889,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> CodeBlock::CodeBlock(VM* vm, Structure* structure, ScriptExecutable* ownerExecutable, UnlinkedCodeBlock* unlinkedCodeBlock,
</span><del>- JSScope* scope, PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
</del><ins>+ JSScope* scope, RefPtr<SourceProvider>&& sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
</ins><span class="cx"> : JSCell(*vm, structure)
</span><span class="cx"> , m_globalObject(scope->globalObject()->vm(), this, scope->globalObject())
</span><span class="cx"> , m_numCalleeLocals(unlinkedCodeBlock->m_numCalleeLocals)
</span><span class="lines">@@ -1912,7 +1912,7 @@
</span><span class="cx"> , m_vm(unlinkedCodeBlock->vm())
</span><span class="cx"> , m_thisRegister(unlinkedCodeBlock->thisRegister())
</span><span class="cx"> , m_scopeRegister(unlinkedCodeBlock->scopeRegister())
</span><del>- , m_source(sourceProvider)
</del><ins>+ , m_source(WTFMove(sourceProvider))
</ins><span class="cx"> , m_sourceOffset(sourceOffset)
</span><span class="cx"> , m_firstLineColumnOffset(firstLineColumnOffset)
</span><span class="cx"> , m_osrExitCounter(0)
</span><span class="lines">@@ -2304,7 +2304,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> std::pair<TypeLocation*, bool> locationPair = vm.typeProfiler()->typeLocationCache()->getTypeLocation(globalVariableID,
</span><del>- ownerExecutable->sourceID(), divotStart, divotEnd, globalTypeSet, &vm);
</del><ins>+ ownerExecutable->sourceID(), divotStart, divotEnd, WTFMove(globalTypeSet), &vm);
</ins><span class="cx"> TypeLocation* location = locationPair.first;
</span><span class="cx"> bool isNewLocation = locationPair.second;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">
</span><span class="cx"> protected:
</span><span class="cx"> CodeBlock(VM*, Structure*, CopyParsedBlockTag, CodeBlock& other);
</span><del>- CodeBlock(VM*, Structure*, ScriptExecutable* ownerExecutable, UnlinkedCodeBlock*, JSScope*, PassRefPtr<SourceProvider>, unsigned sourceOffset, unsigned firstLineColumnOffset);
</del><ins>+ CodeBlock(VM*, Structure*, ScriptExecutable* ownerExecutable, UnlinkedCodeBlock*, JSScope*, RefPtr<SourceProvider>&&, unsigned sourceOffset, unsigned firstLineColumnOffset);
</ins><span class="cx">
</span><span class="cx"> void finishCreation(VM&, CopyParsedBlockTag, CodeBlock& other);
</span><span class="cx"> void finishCreation(VM&, ScriptExecutable* ownerExecutable, UnlinkedCodeBlock*, JSScope*);
</span><span class="lines">@@ -312,15 +312,15 @@
</span><span class="cx"> // Exactly equivalent to codeBlock->ownerExecutable()->newReplacementCodeBlockFor(codeBlock->specializationKind())
</span><span class="cx"> CodeBlock* newReplacement();
</span><span class="cx">
</span><del>- void setJITCode(PassRefPtr<JITCode> code)
</del><ins>+ void setJITCode(Ref<JITCode>&& code)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(heap()->isDeferred());
</span><span class="cx"> heap()->reportExtraMemoryAllocated(code->size());
</span><span class="cx"> ConcurrentJSLocker locker(m_lock);
</span><span class="cx"> WTF::storeStoreFence(); // This is probably not needed because the lock will also do something similar, but it's good to be paranoid.
</span><del>- m_jitCode = code;
</del><ins>+ m_jitCode = WTFMove(code);
</ins><span class="cx"> }
</span><del>- PassRefPtr<JITCode> jitCode() { return m_jitCode; }
</del><ins>+ RefPtr<JITCode> jitCode() { return m_jitCode; }
</ins><span class="cx"> static ptrdiff_t jitCodeOffset() { return OBJECT_OFFSETOF(CodeBlock, m_jitCode); }
</span><span class="cx"> JITCode::JITType jitType() const
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeEvalCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/EvalCodeBlock.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/EvalCodeBlock.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/bytecode/EvalCodeBlock.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -47,10 +47,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static EvalCodeBlock* create(VM* vm, EvalExecutable* ownerExecutable, UnlinkedEvalCodeBlock* unlinkedCodeBlock,
</span><del>- JSScope* scope, PassRefPtr<SourceProvider> sourceProvider)
</del><ins>+ JSScope* scope, RefPtr<SourceProvider>&& sourceProvider)
</ins><span class="cx"> {
</span><span class="cx"> EvalCodeBlock* instance = new (NotNull, allocateCell<EvalCodeBlock>(vm->heap))
</span><del>- EvalCodeBlock(vm, vm->evalCodeBlockStructure.get(), ownerExecutable, unlinkedCodeBlock, scope, sourceProvider);
</del><ins>+ EvalCodeBlock(vm, vm->evalCodeBlockStructure.get(), ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider));
</ins><span class="cx"> instance->finishCreation(*vm, ownerExecutable, unlinkedCodeBlock, scope);
</span><span class="cx"> return instance;
</span><span class="cx"> }
</span><span class="lines">@@ -70,8 +70,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EvalCodeBlock(VM* vm, Structure* structure, EvalExecutable* ownerExecutable, UnlinkedEvalCodeBlock* unlinkedCodeBlock,
</span><del>- JSScope* scope, PassRefPtr<SourceProvider> sourceProvider)
- : GlobalCodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, sourceProvider, 0, 1)
</del><ins>+ JSScope* scope, RefPtr<SourceProvider>&& sourceProvider)
+ : GlobalCodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider), 0, 1)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeFunctionCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/FunctionCodeBlock.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/FunctionCodeBlock.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/bytecode/FunctionCodeBlock.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -48,10 +48,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static FunctionCodeBlock* create(VM* vm, FunctionExecutable* ownerExecutable, UnlinkedFunctionCodeBlock* unlinkedCodeBlock, JSScope* scope,
</span><del>- PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
</del><ins>+ RefPtr<SourceProvider>&& sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
</ins><span class="cx"> {
</span><span class="cx"> FunctionCodeBlock* instance = new (NotNull, allocateCell<FunctionCodeBlock>(vm->heap))
</span><del>- FunctionCodeBlock(vm, vm->functionCodeBlockStructure.get(), ownerExecutable, unlinkedCodeBlock, scope, sourceProvider, sourceOffset, firstLineColumnOffset);
</del><ins>+ FunctionCodeBlock(vm, vm->functionCodeBlockStructure.get(), ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider), sourceOffset, firstLineColumnOffset);
</ins><span class="cx"> instance->finishCreation(*vm, ownerExecutable, unlinkedCodeBlock, scope);
</span><span class="cx"> return instance;
</span><span class="cx"> }
</span><span class="lines">@@ -68,8 +68,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> FunctionCodeBlock(VM* vm, Structure* structure, FunctionExecutable* ownerExecutable, UnlinkedFunctionCodeBlock* unlinkedCodeBlock, JSScope* scope,
</span><del>- PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
- : CodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, sourceProvider, sourceOffset, firstLineColumnOffset)
</del><ins>+ RefPtr<SourceProvider>&& sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
+ : CodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider), sourceOffset, firstLineColumnOffset)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeGlobalCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/GlobalCodeBlock.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/GlobalCodeBlock.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/bytecode/GlobalCodeBlock.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -45,8 +45,8 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- GlobalCodeBlock(VM* vm, Structure* structure, ScriptExecutable* ownerExecutable, UnlinkedCodeBlock* unlinkedCodeBlock, JSScope* scope, PassRefPtr<SourceProvider> sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
- : CodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, sourceProvider, sourceOffset, firstLineColumnOffset)
</del><ins>+ GlobalCodeBlock(VM* vm, Structure* structure, ScriptExecutable* ownerExecutable, UnlinkedCodeBlock* unlinkedCodeBlock, JSScope* scope, RefPtr<SourceProvider>&& sourceProvider, unsigned sourceOffset, unsigned firstLineColumnOffset)
+ : CodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider), sourceOffset, firstLineColumnOffset)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeModuleProgramCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -48,10 +48,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ModuleProgramCodeBlock* create(VM* vm, ModuleProgramExecutable* ownerExecutable, UnlinkedModuleProgramCodeBlock* unlinkedCodeBlock,
</span><del>- JSScope* scope, PassRefPtr<SourceProvider> sourceProvider, unsigned firstLineColumnOffset)
</del><ins>+ JSScope* scope, RefPtr<SourceProvider>&& sourceProvider, unsigned firstLineColumnOffset)
</ins><span class="cx"> {
</span><span class="cx"> ModuleProgramCodeBlock* instance = new (NotNull, allocateCell<ModuleProgramCodeBlock>(vm->heap))
</span><del>- ModuleProgramCodeBlock(vm, vm->moduleProgramCodeBlockStructure.get(), ownerExecutable, unlinkedCodeBlock, scope, sourceProvider, firstLineColumnOffset);
</del><ins>+ ModuleProgramCodeBlock(vm, vm->moduleProgramCodeBlockStructure.get(), ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider), firstLineColumnOffset);
</ins><span class="cx"> instance->finishCreation(*vm, ownerExecutable, unlinkedCodeBlock, scope);
</span><span class="cx"> return instance;
</span><span class="cx"> }
</span><span class="lines">@@ -68,8 +68,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ModuleProgramCodeBlock(VM* vm, Structure* structure, ModuleProgramExecutable* ownerExecutable, UnlinkedModuleProgramCodeBlock* unlinkedCodeBlock,
</span><del>- JSScope* scope, PassRefPtr<SourceProvider> sourceProvider, unsigned firstLineColumnOffset)
- : GlobalCodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, sourceProvider, 0, firstLineColumnOffset)
</del><ins>+ JSScope* scope, RefPtr<SourceProvider>&& sourceProvider, unsigned firstLineColumnOffset)
+ : GlobalCodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider), 0, firstLineColumnOffset)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeProgramCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/ProgramCodeBlock.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/ProgramCodeBlock.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/bytecode/ProgramCodeBlock.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -48,10 +48,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static ProgramCodeBlock* create(VM* vm, ProgramExecutable* ownerExecutable, UnlinkedProgramCodeBlock* unlinkedCodeBlock,
</span><del>- JSScope* scope, PassRefPtr<SourceProvider> sourceProvider, unsigned firstLineColumnOffset)
</del><ins>+ JSScope* scope, RefPtr<SourceProvider>&& sourceProvider, unsigned firstLineColumnOffset)
</ins><span class="cx"> {
</span><span class="cx"> ProgramCodeBlock* instance = new (NotNull, allocateCell<ProgramCodeBlock>(vm->heap))
</span><del>- ProgramCodeBlock(vm, vm->programCodeBlockStructure.get(), ownerExecutable, unlinkedCodeBlock, scope, sourceProvider, firstLineColumnOffset);
</del><ins>+ ProgramCodeBlock(vm, vm->programCodeBlockStructure.get(), ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider), firstLineColumnOffset);
</ins><span class="cx"> instance->finishCreation(*vm, ownerExecutable, unlinkedCodeBlock, scope);
</span><span class="cx"> return instance;
</span><span class="cx"> }
</span><span class="lines">@@ -68,8 +68,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ProgramCodeBlock(VM* vm, Structure* structure, ProgramExecutable* ownerExecutable, UnlinkedProgramCodeBlock* unlinkedCodeBlock,
</span><del>- JSScope* scope, PassRefPtr<SourceProvider> sourceProvider, unsigned firstLineColumnOffset)
- : GlobalCodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, sourceProvider, 0, firstLineColumnOffset)
</del><ins>+ JSScope* scope, RefPtr<SourceProvider>&& sourceProvider, unsigned firstLineColumnOffset)
+ : GlobalCodeBlock(vm, structure, ownerExecutable, unlinkedCodeBlock, scope, WTFMove(sourceProvider), 0, firstLineColumnOffset)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggerParseDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/DebuggerParseData.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/DebuggerParseData.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/debugger/DebuggerParseData.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -167,9 +167,10 @@
</span><span class="cx">
</span><span class="cx"> bool gatherDebuggerParseDataForSource(VM& vm, SourceProvider* provider, DebuggerParseData& debuggerParseData)
</span><span class="cx"> {
</span><ins>+ ASSERT(provider);
</ins><span class="cx"> int startLine = provider->startPosition().m_line.oneBasedInt();
</span><span class="cx"> int startColumn = provider->startPosition().m_column.oneBasedInt();
</span><del>- SourceCode completeSource(provider, startLine, startColumn);
</del><ins>+ SourceCode completeSource(*provider, startLine, startColumn);
</ins><span class="cx">
</span><span class="cx"> switch (provider->sourceType()) {
</span><span class="cx"> case SourceProviderSourceType::Program:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGBlockInsertionSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -44,21 +44,22 @@
</span><span class="cx"> m_insertions.append(insertion);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void BlockInsertionSet::insert(size_t index, PassRefPtr<BasicBlock> block)
</del><ins>+void BlockInsertionSet::insert(size_t index, Ref<BasicBlock>&& block)
</ins><span class="cx"> {
</span><del>- insert(BlockInsertion(index, block));
</del><ins>+ insert(BlockInsertion(index, WTFMove(block)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> BasicBlock* BlockInsertionSet::insert(size_t index, float executionCount)
</span><span class="cx"> {
</span><del>- RefPtr<BasicBlock> block = adoptRef(new BasicBlock(
</del><ins>+ Ref<BasicBlock> block = adoptRef(*new BasicBlock(
</ins><span class="cx"> UINT_MAX,
</span><span class="cx"> m_graph.block(0)->variablesAtHead.numberOfArguments(),
</span><span class="cx"> m_graph.block(0)->variablesAtHead.numberOfLocals(),
</span><span class="cx"> executionCount));
</span><span class="cx"> block->isReachable = true;
</span><del>- insert(index, block);
- return block.get();
</del><ins>+ auto* result = block.ptr();
+ insert(index, WTFMove(block));
+ return result;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> BasicBlock* BlockInsertionSet::insertBefore(BasicBlock* before, float executionCount)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGBlockInsertionSeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGBlockInsertionSet.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> ~BlockInsertionSet();
</span><span class="cx">
</span><span class="cx"> void insert(const BlockInsertion&);
</span><del>- void insert(size_t index, PassRefPtr<BasicBlock>);
</del><ins>+ void insert(size_t index, Ref<BasicBlock>&&);
</ins><span class="cx"> BasicBlock* insert(size_t index, float executionCount);
</span><span class="cx"> BasicBlock* insertBefore(BasicBlock* before, float executionCount);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -1629,7 +1629,7 @@
</span><span class="cx"> ASSERT(lastBlock->terminal());
</span><span class="cx">
</span><span class="cx"> // Need to create a new basic block for the continuation at the caller.
</span><del>- RefPtr<BasicBlock> block = adoptRef(new BasicBlock(nextOffset, m_numArguments, m_numLocals, 1));
</del><ins>+ Ref<BasicBlock> block = adoptRef(*new BasicBlock(nextOffset, m_numArguments, m_numLocals, 1));
</ins><span class="cx">
</span><span class="cx"> // Link the early returns to the basic block we're about to create.
</span><span class="cx"> for (size_t i = 0; i < inlineStackEntry.m_unlinkedBlocks.size(); ++i) {
</span><span class="lines">@@ -1640,7 +1640,7 @@
</span><span class="cx"> Node* node = blockToLink->terminal();
</span><span class="cx"> ASSERT(node->op() == Jump);
</span><span class="cx"> ASSERT(!node->targetBlock());
</span><del>- node->targetBlock() = block.get();
</del><ins>+ node->targetBlock() = block.ptr();
</ins><span class="cx"> inlineStackEntry.m_unlinkedBlocks[i].m_needsEarlyReturnLinking = false;
</span><span class="cx"> if (verbose)
</span><span class="cx"> dataLog("Marking ", RawPointer(blockToLink), " as linked (jumps to return)\n");
</span><span class="lines">@@ -1647,15 +1647,15 @@
</span><span class="cx"> blockToLink->didLink();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- m_currentBlock = block.get();
</del><ins>+ m_currentBlock = block.ptr();
</ins><span class="cx"> ASSERT(m_inlineStackTop->m_caller->m_blockLinkingTargets.isEmpty() || m_inlineStackTop->m_caller->m_blockLinkingTargets.last()->bytecodeBegin < nextOffset);
</span><span class="cx"> if (verbose)
</span><del>- dataLog("Adding unlinked block ", RawPointer(block.get()), " (many returns)\n");
</del><ins>+ dataLog("Adding unlinked block ", RawPointer(block.ptr()), " (many returns)\n");
</ins><span class="cx"> if (callerLinkability == CallerDoesNormalLinking) {
</span><del>- m_inlineStackTop->m_caller->m_unlinkedBlocks.append(UnlinkedBlock(block.get()));
- m_inlineStackTop->m_caller->m_blockLinkingTargets.append(block.get());
</del><ins>+ m_inlineStackTop->m_caller->m_unlinkedBlocks.append(UnlinkedBlock(block.ptr()));
+ m_inlineStackTop->m_caller->m_blockLinkingTargets.append(block.ptr());
</ins><span class="cx"> }
</span><del>- m_graph.appendBlock(block);
</del><ins>+ m_graph.appendBlock(WTFMove(block));
</ins><span class="cx"> prepareToParseBlock();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2002,9 +2002,9 @@
</span><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < callLinkStatus.size(); ++i) {
</span><span class="cx"> m_currentIndex = oldOffset;
</span><del>- RefPtr<BasicBlock> block = adoptRef(new BasicBlock(UINT_MAX, m_numArguments, m_numLocals, 1));
- m_currentBlock = block.get();
- m_graph.appendBlock(block);
</del><ins>+ Ref<BasicBlock> block = adoptRef(*new BasicBlock(UINT_MAX, m_numArguments, m_numLocals, 1));
+ m_currentBlock = block.ptr();
+ m_graph.appendBlock(block.copyRef());
</ins><span class="cx"> prepareToParseBlock();
</span><span class="cx">
</span><span class="cx"> Node* myCallTargetNode = getDirect(calleeReg);
</span><span class="lines">@@ -2017,9 +2017,9 @@
</span><span class="cx"> if (!inliningResult) {
</span><span class="cx"> // That failed so we let the block die. Nothing interesting should have been added to
</span><span class="cx"> // the block. We also give up on inlining any of the (less frequent) callees.
</span><del>- ASSERT(m_currentBlock == block.get());
- ASSERT(m_graph.m_blocks.last() == block);
- m_graph.killBlockAndItsContents(block.get());
</del><ins>+ ASSERT(m_currentBlock == block.ptr());
+ ASSERT(m_graph.m_blocks.last() == block.ptr());
+ m_graph.killBlockAndItsContents(block.ptr());
</ins><span class="cx"> m_graph.m_blocks.removeLast();
</span><span class="cx">
</span><span class="cx"> // The fact that inlining failed means we need a slow path.
</span><span class="lines">@@ -2034,7 +2034,7 @@
</span><span class="cx"> ASSERT(allAreClosureCalls);
</span><span class="cx"> thingToCaseOn = callLinkStatus[i].executable();
</span><span class="cx"> }
</span><del>- data.cases.append(SwitchCase(m_graph.freeze(thingToCaseOn), block.get()));
</del><ins>+ data.cases.append(SwitchCase(m_graph.freeze(thingToCaseOn), block.ptr()));
</ins><span class="cx"> m_currentIndex = nextOffset;
</span><span class="cx"> m_exitOK = true;
</span><span class="cx"> processSetLocalQueue(); // This only comes into play for intrinsics, since normal inlined code will leave an empty queue.
</span><span class="lines">@@ -2052,17 +2052,17 @@
</span><span class="cx"> dataLog("Finished inlining ", callLinkStatus[i], " at ", currentCodeOrigin(), ".\n");
</span><span class="cx"> }
</span><span class="cx">
</span><del>- RefPtr<BasicBlock> slowPathBlock = adoptRef(
- new BasicBlock(UINT_MAX, m_numArguments, m_numLocals, 1));
</del><ins>+ Ref<BasicBlock> slowPathBlock = adoptRef(
+ *new BasicBlock(UINT_MAX, m_numArguments, m_numLocals, 1));
</ins><span class="cx"> m_currentIndex = oldOffset;
</span><span class="cx"> m_exitOK = true;
</span><del>- data.fallThrough = BranchTarget(slowPathBlock.get());
- m_graph.appendBlock(slowPathBlock);
</del><ins>+ data.fallThrough = BranchTarget(slowPathBlock.ptr());
+ m_graph.appendBlock(slowPathBlock.copyRef());
</ins><span class="cx"> if (verbose)
</span><del>- dataLog("Marking ", RawPointer(slowPathBlock.get()), " as linked (slow path block)\n");
</del><ins>+ dataLog("Marking ", RawPointer(slowPathBlock.ptr()), " as linked (slow path block)\n");
</ins><span class="cx"> slowPathBlock->didLink();
</span><span class="cx"> prepareToParseBlock();
</span><del>- m_currentBlock = slowPathBlock.get();
</del><ins>+ m_currentBlock = slowPathBlock.ptr();
</ins><span class="cx"> Node* myCallTargetNode = getDirect(calleeReg);
</span><span class="cx"> if (couldTakeSlowPath) {
</span><span class="cx"> addCall(
</span><span class="lines">@@ -2086,17 +2086,17 @@
</span><span class="cx"> landingBlocks.append(m_currentBlock);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- RefPtr<BasicBlock> continuationBlock = adoptRef(
- new BasicBlock(UINT_MAX, m_numArguments, m_numLocals, 1));
- m_graph.appendBlock(continuationBlock);
</del><ins>+ Ref<BasicBlock> continuationBlock = adoptRef(
+ *new BasicBlock(UINT_MAX, m_numArguments, m_numLocals, 1));
+ m_graph.appendBlock(continuationBlock.copyRef());
</ins><span class="cx"> if (verbose)
</span><del>- dataLog("Adding unlinked block ", RawPointer(continuationBlock.get()), " (continuation)\n");
- m_inlineStackTop->m_unlinkedBlocks.append(UnlinkedBlock(continuationBlock.get()));
</del><ins>+ dataLog("Adding unlinked block ", RawPointer(continuationBlock.ptr()), " (continuation)\n");
+ m_inlineStackTop->m_unlinkedBlocks.append(UnlinkedBlock(continuationBlock.ptr()));
</ins><span class="cx"> prepareToParseBlock();
</span><del>- m_currentBlock = continuationBlock.get();
</del><ins>+ m_currentBlock = continuationBlock.ptr();
</ins><span class="cx">
</span><span class="cx"> for (unsigned i = landingBlocks.size(); i--;)
</span><del>- landingBlocks[i]->terminal()->targetBlock() = continuationBlock.get();
</del><ins>+ landingBlocks[i]->terminal()->targetBlock() = continuationBlock.ptr();
</ins><span class="cx">
</span><span class="cx"> m_currentIndex = oldOffset;
</span><span class="cx"> m_exitOK = true;
</span><span class="lines">@@ -5817,8 +5817,8 @@
</span><span class="cx"> m_currentBlock = m_graph.lastBlock();
</span><span class="cx"> m_currentBlock->bytecodeBegin = m_currentIndex;
</span><span class="cx"> } else {
</span><del>- RefPtr<BasicBlock> block = adoptRef(new BasicBlock(m_currentIndex, m_numArguments, m_numLocals, 1));
- m_currentBlock = block.get();
</del><ins>+ Ref<BasicBlock> block = adoptRef(*new BasicBlock(m_currentIndex, m_numArguments, m_numLocals, 1));
+ m_currentBlock = block.ptr();
</ins><span class="cx"> // This assertion checks two things:
</span><span class="cx"> // 1) If the bytecodeBegin is greater than currentIndex, then something has gone
</span><span class="cx"> // horribly wrong. So, we're probably generating incorrect code.
</span><span class="lines">@@ -5831,12 +5831,12 @@
</span><span class="cx"> ASSERT_UNUSED(
</span><span class="cx"> lastBegin, lastBegin == UINT_MAX || lastBegin < m_currentIndex);
</span><span class="cx"> }
</span><del>- m_inlineStackTop->m_unlinkedBlocks.append(UnlinkedBlock(block.get()));
- m_inlineStackTop->m_blockLinkingTargets.append(block.get());
</del><ins>+ m_inlineStackTop->m_unlinkedBlocks.append(UnlinkedBlock(block.ptr()));
+ m_inlineStackTop->m_blockLinkingTargets.append(block.ptr());
</ins><span class="cx"> // The first block is definitely an OSR target.
</span><span class="cx"> if (!m_graph.numBlocks())
</span><span class="cx"> block->isOSRTarget = true;
</span><del>- m_graph.appendBlock(block);
</del><ins>+ m_graph.appendBlock(WTFMove(block));
</ins><span class="cx"> prepareToParseBlock();
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGDrivercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGDriver.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGDriver.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGDriver.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx"> static CompilationResult compileImpl(
</span><span class="cx"> VM& vm, CodeBlock* codeBlock, CodeBlock* profiledDFGCodeBlock, CompilationMode mode,
</span><span class="cx"> unsigned osrEntryBytecodeIndex, const Operands<JSValue>& mustHandleValues,
</span><del>- PassRefPtr<DeferredCompilationCallback> callback)
</del><ins>+ Ref<DeferredCompilationCallback>&& callback)
</ins><span class="cx"> {
</span><span class="cx"> if (!Options::bytecodeRangeToDFGCompile().isInRange(codeBlock->instructionCount())
</span><span class="cx"> || !ensureGlobalDFGWhitelist().contains(codeBlock))
</span><span class="lines">@@ -96,15 +96,15 @@
</span><span class="cx"> if (vm.typeProfiler())
</span><span class="cx"> vm.typeProfilerLog()->processLogEntries(ASCIILiteral("Preparing for DFG compilation."));
</span><span class="cx">
</span><del>- RefPtr<Plan> plan = adoptRef(
- new Plan(codeBlock, profiledDFGCodeBlock, mode, osrEntryBytecodeIndex, mustHandleValues));
</del><ins>+ Ref<Plan> plan = adoptRef(
+ *new Plan(codeBlock, profiledDFGCodeBlock, mode, osrEntryBytecodeIndex, mustHandleValues));
</ins><span class="cx">
</span><del>- plan->callback = callback;
</del><ins>+ plan->callback = WTFMove(callback);
</ins><span class="cx"> if (Options::useConcurrentJIT()) {
</span><span class="cx"> Worklist& worklist = ensureGlobalWorklistFor(mode);
</span><span class="cx"> if (logCompilationChanges(mode))
</span><span class="cx"> dataLog("Deferring DFG compilation of ", *codeBlock, " with queue length ", worklist.queueLength(), ".\n");
</span><del>- worklist.enqueue(plan);
</del><ins>+ worklist.enqueue(WTFMove(plan));
</ins><span class="cx"> return CompilationDeferred;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx"> #else // ENABLE(DFG_JIT)
</span><span class="cx"> static CompilationResult compileImpl(
</span><span class="cx"> VM&, CodeBlock*, CodeBlock*, CompilationMode, unsigned, const Operands<JSValue>&,
</span><del>- PassRefPtr<DeferredCompilationCallback>)
</del><ins>+ Ref<DeferredCompilationCallback>&&)
</ins><span class="cx"> {
</span><span class="cx"> return CompilationFailed;
</span><span class="cx"> }
</span><span class="lines">@@ -123,12 +123,11 @@
</span><span class="cx"> CompilationResult compile(
</span><span class="cx"> VM& vm, CodeBlock* codeBlock, CodeBlock* profiledDFGCodeBlock, CompilationMode mode,
</span><span class="cx"> unsigned osrEntryBytecodeIndex, const Operands<JSValue>& mustHandleValues,
</span><del>- PassRefPtr<DeferredCompilationCallback> passedCallback)
</del><ins>+ Ref<DeferredCompilationCallback>&& callback)
</ins><span class="cx"> {
</span><del>- RefPtr<DeferredCompilationCallback> callback = passedCallback;
</del><span class="cx"> CompilationResult result = compileImpl(
</span><span class="cx"> vm, codeBlock, profiledDFGCodeBlock, mode, osrEntryBytecodeIndex, mustHandleValues,
</span><del>- callback);
</del><ins>+ callback.copyRef());
</ins><span class="cx"> if (result != CompilationDeferred)
</span><span class="cx"> callback->compilationDidComplete(codeBlock, profiledDFGCodeBlock, result);
</span><span class="cx"> return result;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGDriverh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGDriver.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGDriver.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGDriver.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -45,6 +45,6 @@
</span><span class="cx"> CompilationResult compile(
</span><span class="cx"> VM&, CodeBlock*, CodeBlock* profiledDFGCodeBlock, CompilationMode,
</span><span class="cx"> unsigned osrEntryBytecodeIndex, const Operands<JSValue>& mustHandleValues,
</span><del>- PassRefPtr<DeferredCompilationCallback>);
</del><ins>+ Ref<DeferredCompilationCallback>&&);
</ins><span class="cx">
</span><span class="cx"> } } // namespace JSC::DFG
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGGraphh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGGraph.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGGraph.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGGraph.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -442,10 +442,10 @@
</span><span class="cx"> BasicBlock* block(BlockIndex blockIndex) const { return m_blocks[blockIndex].get(); }
</span><span class="cx"> BasicBlock* lastBlock() const { return block(numBlocks() - 1); }
</span><span class="cx">
</span><del>- void appendBlock(PassRefPtr<BasicBlock> basicBlock)
</del><ins>+ void appendBlock(Ref<BasicBlock>&& basicBlock)
</ins><span class="cx"> {
</span><span class="cx"> basicBlock->index = m_blocks.size();
</span><del>- m_blocks.append(basicBlock);
</del><ins>+ m_blocks.append(WTFMove(basicBlock));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void killBlock(BlockIndex blockIndex)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGJITCompilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -407,7 +407,7 @@
</span><span class="cx"> disassemble(*linkBuffer);
</span><span class="cx">
</span><span class="cx"> m_graph.m_plan.finalizer = std::make_unique<JITFinalizer>(
</span><del>- m_graph.m_plan, WTFMove(m_jitCode), WTFMove(linkBuffer));
</del><ins>+ m_graph.m_plan, m_jitCode.releaseNonNull(), WTFMove(linkBuffer));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JITCompiler::compileFunction()
</span><span class="lines">@@ -504,7 +504,7 @@
</span><span class="cx"> MacroAssemblerCodePtr withArityCheck = linkBuffer->locationOf(m_arityCheck);
</span><span class="cx">
</span><span class="cx"> m_graph.m_plan.finalizer = std::make_unique<JITFinalizer>(
</span><del>- m_graph.m_plan, WTFMove(m_jitCode), WTFMove(linkBuffer), withArityCheck);
</del><ins>+ m_graph.m_plan, m_jitCode.releaseNonNull(), WTFMove(linkBuffer), withArityCheck);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JITCompiler::disassemble(LinkBuffer& linkBuffer)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGJITFinalizercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -37,9 +37,9 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC { namespace DFG {
</span><span class="cx">
</span><del>-JITFinalizer::JITFinalizer(Plan& plan, PassRefPtr<JITCode> jitCode, std::unique_ptr<LinkBuffer> linkBuffer, MacroAssemblerCodePtr withArityCheck)
</del><ins>+JITFinalizer::JITFinalizer(Plan& plan, Ref<JITCode>&& jitCode, std::unique_ptr<LinkBuffer> linkBuffer, MacroAssemblerCodePtr withArityCheck)
</ins><span class="cx"> : Finalizer(plan)
</span><del>- , m_jitCode(jitCode)
</del><ins>+ , m_jitCode(WTFMove(jitCode))
</ins><span class="cx"> , m_linkBuffer(WTFMove(linkBuffer))
</span><span class="cx"> , m_withArityCheck(withArityCheck)
</span><span class="cx"> {
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> FINALIZE_DFG_CODE(*m_linkBuffer, ("DFG JIT code for %s", toCString(CodeBlockWithJITType(m_plan.codeBlock, JITCode::DFGJIT)).data())),
</span><span class="cx"> MacroAssemblerCodePtr());
</span><span class="cx">
</span><del>- m_plan.codeBlock->setJITCode(m_jitCode);
</del><ins>+ m_plan.codeBlock->setJITCode(m_jitCode.copyRef());
</ins><span class="cx">
</span><span class="cx"> finalizeCommon();
</span><span class="cx">
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> m_jitCode->initializeCodeRef(
</span><span class="cx"> FINALIZE_DFG_CODE(*m_linkBuffer, ("DFG JIT code for %s", toCString(CodeBlockWithJITType(m_plan.codeBlock, JITCode::DFGJIT)).data())),
</span><span class="cx"> m_withArityCheck);
</span><del>- m_plan.codeBlock->setJITCode(m_jitCode);
</del><ins>+ m_plan.codeBlock->setJITCode(m_jitCode.copyRef());
</ins><span class="cx">
</span><span class="cx"> finalizeCommon();
</span><span class="cx">
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx"> #endif // ENABLE(FTL_JIT)
</span><span class="cx">
</span><span class="cx"> if (m_plan.compilation)
</span><del>- m_plan.vm->m_perBytecodeProfiler->addCompilation(m_plan.codeBlock, m_plan.compilation);
</del><ins>+ m_plan.vm->m_perBytecodeProfiler->addCompilation(m_plan.codeBlock, *m_plan.compilation);
</ins><span class="cx">
</span><span class="cx"> if (!m_plan.willTryToTierUp)
</span><span class="cx"> m_plan.codeBlock->baselineVersion()->m_didFailFTLCompilation = true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGJITFinalizerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGJITFinalizer.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGJITFinalizer.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGJITFinalizer.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx">
</span><span class="cx"> class JITFinalizer : public Finalizer {
</span><span class="cx"> public:
</span><del>- JITFinalizer(Plan&, PassRefPtr<JITCode>, std::unique_ptr<LinkBuffer>, MacroAssemblerCodePtr withArityCheck = MacroAssemblerCodePtr(MacroAssemblerCodePtr::EmptyValue));
</del><ins>+ JITFinalizer(Plan&, Ref<JITCode>&&, std::unique_ptr<LinkBuffer>, MacroAssemblerCodePtr withArityCheck = MacroAssemblerCodePtr(MacroAssemblerCodePtr::EmptyValue));
</ins><span class="cx"> virtual ~JITFinalizer();
</span><span class="cx">
</span><span class="cx"> size_t codeSize() override;
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> private:
</span><span class="cx"> void finalizeCommon();
</span><span class="cx">
</span><del>- RefPtr<JITCode> m_jitCode;
</del><ins>+ Ref<JITCode> m_jitCode;
</ins><span class="cx"> std::unique_ptr<LinkBuffer> m_linkBuffer;
</span><span class="cx"> MacroAssemblerCodePtr m_withArityCheck;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGWorklistcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGWorklist.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGWorklist.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGWorklist.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -223,9 +223,8 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void Worklist::enqueue(PassRefPtr<Plan> passedPlan)
</del><ins>+void Worklist::enqueue(Ref<Plan>&& plan)
</ins><span class="cx"> {
</span><del>- RefPtr<Plan> plan = passedPlan;
</del><span class="cx"> LockHolder locker(*m_lock);
</span><span class="cx"> if (Options::verboseCompilationQueue()) {
</span><span class="cx"> dump(locker, WTF::dataFile());
</span><span class="lines">@@ -232,8 +231,8 @@
</span><span class="cx"> dataLog(": Enqueueing plan to optimize ", plan->key(), "\n");
</span><span class="cx"> }
</span><span class="cx"> ASSERT(m_plans.find(plan->key()) == m_plans.end());
</span><del>- m_plans.add(plan->key(), plan);
- m_queue.append(plan);
</del><ins>+ m_plans.add(plan->key(), plan.copyRef());
+ m_queue.append(WTFMove(plan));
</ins><span class="cx"> m_planEnqueued->notifyOne(locker);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGWorklisth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGWorklist.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGWorklist.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/dfg/DFGWorklist.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">
</span><span class="cx"> static Ref<Worklist> create(CString worklistName, unsigned numberOfThreads, int relativePriority = 0);
</span><span class="cx">
</span><del>- void enqueue(PassRefPtr<Plan>);
</del><ins>+ void enqueue(Ref<Plan>&&);
</ins><span class="cx">
</span><span class="cx"> // This is equivalent to:
</span><span class="cx"> // worklist->waitUntilAllPlansForVMAreReady(vm);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLJITFinalizercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -81,10 +81,10 @@
</span><span class="cx"> dumpDisassembly, *entrypointLinkBuffer,
</span><span class="cx"> ("FTL entrypoint thunk for %s with B3 generated code at %p", toCString(CodeBlockWithJITType(m_plan.codeBlock, JITCode::FTLJIT)).data(), function)));
</span><span class="cx">
</span><del>- m_plan.codeBlock->setJITCode(jitCode);
</del><ins>+ m_plan.codeBlock->setJITCode(*jitCode);
</ins><span class="cx">
</span><span class="cx"> if (m_plan.compilation)
</span><del>- m_plan.vm->m_perBytecodeProfiler->addCompilation(m_plan.codeBlock, m_plan.compilation);
</del><ins>+ m_plan.vm->m_perBytecodeProfiler->addCompilation(m_plan.codeBlock, *m_plan.compilation);
</ins><span class="cx">
</span><span class="cx"> return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitGCAwareJITStubRoutinecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><del>-PassRefPtr<JITStubRoutine> createJITStubRoutine(
</del><ins>+Ref<JITStubRoutine> createJITStubRoutine(
</ins><span class="cx"> const MacroAssemblerCodeRef& code,
</span><span class="cx"> VM& vm,
</span><span class="cx"> const JSCell* owner,
</span><span class="lines">@@ -142,17 +142,17 @@
</span><span class="cx"> CallSiteIndex exceptionHandlerCallSiteIndex)
</span><span class="cx"> {
</span><span class="cx"> if (!makesCalls)
</span><del>- return adoptRef(new JITStubRoutine(code));
</del><ins>+ return adoptRef(*new JITStubRoutine(code));
</ins><span class="cx">
</span><span class="cx"> if (codeBlockForExceptionHandlers) {
</span><span class="cx"> RELEASE_ASSERT(JITCode::isOptimizingJIT(codeBlockForExceptionHandlers->jitType()));
</span><del>- return adoptRef(new GCAwareJITStubRoutineWithExceptionHandler(code, vm, owner, cells, codeBlockForExceptionHandlers, exceptionHandlerCallSiteIndex));
</del><ins>+ return adoptRef(*new GCAwareJITStubRoutineWithExceptionHandler(code, vm, owner, cells, codeBlockForExceptionHandlers, exceptionHandlerCallSiteIndex));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (cells.isEmpty())
</span><del>- return adoptRef(new GCAwareJITStubRoutine(code, vm));
</del><ins>+ return adoptRef(*new GCAwareJITStubRoutine(code, vm));
</ins><span class="cx">
</span><del>- return adoptRef(new MarkingGCAwareJITStubRoutine(code, vm, owner, cells));
</del><ins>+ return adoptRef(*new MarkingGCAwareJITStubRoutine(code, vm, owner, cells));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitGCAwareJITStubRoutineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -111,7 +111,7 @@
</span><span class="cx"> // appropriate. Generally you only need to pass pointers that will be used
</span><span class="cx"> // after the first call to C++ or JS.
</span><span class="cx"> //
</span><del>-// PassRefPtr<JITStubRoutine> createJITStubRoutine(
</del><ins>+// Ref<JITStubRoutine> createJITStubRoutine(
</ins><span class="cx"> // const MacroAssemblerCodeRef& code,
</span><span class="cx"> // VM& vm,
</span><span class="cx"> // const JSCell* owner,
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx"> // this function using varargs, I ended up with more code than this simple
</span><span class="cx"> // way.
</span><span class="cx">
</span><del>-PassRefPtr<JITStubRoutine> createJITStubRoutine(
</del><ins>+Ref<JITStubRoutine> createJITStubRoutine(
</ins><span class="cx"> const MacroAssemblerCodeRef&, VM&, const JSCell* owner, bool makesCalls,
</span><span class="cx"> const Vector<JSCell*>& = { },
</span><span class="cx"> CodeBlock* codeBlockForExceptionHandlers = nullptr, CallSiteIndex exceptionHandlingCallSiteIndex = CallSiteIndex(std::numeric_limits<unsigned>::max()));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/jit/JIT.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -829,7 +829,7 @@
</span><span class="cx"> if (m_compilation) {
</span><span class="cx"> if (Options::disassembleBaselineForProfiler())
</span><span class="cx"> m_disassembler->reportToProfiler(m_compilation.get(), patchBuffer);
</span><del>- m_vm->m_perBytecodeProfiler->addCompilation(m_codeBlock, m_compilation);
</del><ins>+ m_vm->m_perBytecodeProfiler->addCompilation(m_codeBlock, *m_compilation);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (m_pcToCodeOriginMapBuilder.didBuildMapping())
</span><span class="lines">@@ -845,7 +845,7 @@
</span><span class="cx">
</span><span class="cx"> m_codeBlock->shrinkToFit(CodeBlock::LateShrink);
</span><span class="cx"> m_codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(result, withArityCheck, JITCode::BaselineJIT)));
</del><ins>+ adoptRef(*new DirectJITCode(result, withArityCheck, JITCode::BaselineJIT)));
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(JIT_VERBOSE)
</span><span class="cx"> dataLogF("JIT generated code for %p at [%p, %p).\n", m_codeBlock, result.executableMemory()->start(), result.executableMemory()->end());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITStubRoutineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITStubRoutine.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITStubRoutine.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/jit/JITStubRoutine.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -70,11 +70,8 @@
</span><span class="cx"> // the churn.
</span><span class="cx"> const MacroAssemblerCodeRef& code() const { return m_code; }
</span><span class="cx">
</span><del>- static MacroAssemblerCodePtr asCodePtr(PassRefPtr<JITStubRoutine> stubRoutine)
</del><ins>+ static MacroAssemblerCodePtr asCodePtr(Ref<JITStubRoutine>&& stubRoutine)
</ins><span class="cx"> {
</span><del>- if (!stubRoutine)
- return MacroAssemblerCodePtr();
-
</del><span class="cx"> MacroAssemblerCodePtr result = stubRoutine->code().code();
</span><span class="cx"> ASSERT(!!result);
</span><span class="cx"> return result;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITThunkscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITThunks.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITThunks.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/jit/JITThunks.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -108,9 +108,9 @@
</span><span class="cx"> } else
</span><span class="cx"> forCall = adoptRef(new NativeJITCode(JIT::compileCTINativeCall(vm, function), JITCode::HostCallThunk));
</span><span class="cx">
</span><del>- RefPtr<JITCode> forConstruct = adoptRef(new NativeJITCode(MacroAssemblerCodeRef::createSelfManagedCodeRef(ctiNativeConstruct(vm)), JITCode::HostCallThunk));
</del><ins>+ Ref<JITCode> forConstruct = adoptRef(*new NativeJITCode(MacroAssemblerCodeRef::createSelfManagedCodeRef(ctiNativeConstruct(vm)), JITCode::HostCallThunk));
</ins><span class="cx">
</span><del>- NativeExecutable* nativeExecutable = NativeExecutable::create(*vm, forCall, function, forConstruct, constructor, intrinsic, signature, name);
</del><ins>+ NativeExecutable* nativeExecutable = NativeExecutable::create(*vm, forCall.releaseNonNull(), function, WTFMove(forConstruct), constructor, intrinsic, signature, name);
</ins><span class="cx"> weakAdd(*m_hostFunctionStubMap, std::make_tuple(function, constructor, name), Weak<NativeExecutable>(nativeExecutable, this));
</span><span class="cx"> return nativeExecutable;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntEntrypointcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -46,12 +46,12 @@
</span><span class="cx"> if (vm.canUseJIT()) {
</span><span class="cx"> if (kind == CodeForCall) {
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(vm.getCTIStub(functionForCallEntryThunkGenerator), vm.getCTIStub(functionForCallArityCheckThunkGenerator).code(), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(vm.getCTIStub(functionForCallEntryThunkGenerator), vm.getCTIStub(functionForCallArityCheckThunkGenerator).code(), JITCode::InterpreterThunk)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> ASSERT(kind == CodeForConstruct);
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(vm.getCTIStub(functionForConstructEntryThunkGenerator), vm.getCTIStub(functionForConstructArityCheckThunkGenerator).code(), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(vm.getCTIStub(functionForConstructEntryThunkGenerator), vm.getCTIStub(functionForConstructArityCheckThunkGenerator).code(), JITCode::InterpreterThunk)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(JIT)
</span><span class="lines">@@ -59,12 +59,12 @@
</span><span class="cx"> UNUSED_PARAM(vm);
</span><span class="cx"> if (kind == CodeForCall) {
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_function_for_call_prologue), MacroAssemblerCodePtr::createLLIntCodePtr(llint_function_for_call_arity_check), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_function_for_call_prologue), MacroAssemblerCodePtr::createLLIntCodePtr(llint_function_for_call_arity_check), JITCode::InterpreterThunk)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> ASSERT(kind == CodeForConstruct);
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_function_for_construct_prologue), MacroAssemblerCodePtr::createLLIntCodePtr(llint_function_for_construct_arity_check), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_function_for_construct_prologue), MacroAssemblerCodePtr::createLLIntCodePtr(llint_function_for_construct_arity_check), JITCode::InterpreterThunk)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void setEvalEntrypoint(VM& vm, CodeBlock* codeBlock)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> if (vm.canUseJIT()) {
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(vm.getCTIStub(evalEntryThunkGenerator), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(vm.getCTIStub(evalEntryThunkGenerator), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(JIT)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">
</span><span class="cx"> UNUSED_PARAM(vm);
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_eval_prologue), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_eval_prologue), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void setProgramEntrypoint(VM& vm, CodeBlock* codeBlock)
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> if (vm.canUseJIT()) {
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(vm.getCTIStub(programEntryThunkGenerator), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(vm.getCTIStub(programEntryThunkGenerator), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(JIT)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx">
</span><span class="cx"> UNUSED_PARAM(vm);
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_program_prologue), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_program_prologue), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static void setModuleProgramEntrypoint(VM& vm, CodeBlock* codeBlock)
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> if (vm.canUseJIT()) {
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(vm.getCTIStub(moduleProgramEntryThunkGenerator), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(vm.getCTIStub(moduleProgramEntryThunkGenerator), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(JIT)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">
</span><span class="cx"> UNUSED_PARAM(vm);
</span><span class="cx"> codeBlock->setJITCode(
</span><del>- adoptRef(new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_module_program_prologue), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</del><ins>+ adoptRef(*new DirectJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_module_program_prologue), MacroAssemblerCodePtr(), JITCode::InterpreterThunk)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void setEntrypoint(VM& vm, CodeBlock* codeBlock)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserSourceCodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/SourceCode.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/SourceCode.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/parser/SourceCode.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -41,25 +41,32 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SourceCode(PassRefPtr<SourceProvider> provider)
- : UnlinkedSourceCode(provider)
</del><ins>+ SourceCode(Ref<SourceProvider>&& provider)
+ : UnlinkedSourceCode(WTFMove(provider))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SourceCode(PassRefPtr<SourceProvider> provider, int firstLine, int startColumn)
- : UnlinkedSourceCode(provider)
</del><ins>+ SourceCode(Ref<SourceProvider>&& provider, int firstLine, int startColumn)
+ : UnlinkedSourceCode(WTFMove(provider))
</ins><span class="cx"> , m_firstLine(OrdinalNumber::fromOneBasedInt(std::max(firstLine, 1)))
</span><span class="cx"> , m_startColumn(OrdinalNumber::fromOneBasedInt(std::max(startColumn, 1)))
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SourceCode(PassRefPtr<SourceProvider> provider, int startOffset, int endOffset, int firstLine, int startColumn)
- : UnlinkedSourceCode(provider, startOffset, endOffset)
</del><ins>+ SourceCode(Ref<SourceProvider>&& provider, int startOffset, int endOffset, int firstLine, int startColumn)
+ : UnlinkedSourceCode(WTFMove(provider), startOffset, endOffset)
</ins><span class="cx"> , m_firstLine(OrdinalNumber::fromOneBasedInt(std::max(firstLine, 1)))
</span><span class="cx"> , m_startColumn(OrdinalNumber::fromOneBasedInt(std::max(startColumn, 1)))
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ SourceCode(RefPtr<SourceProvider>&& provider, int startOffset, int endOffset, int firstLine, int startColumn)
+ : UnlinkedSourceCode(WTFMove(provider), startOffset, endOffset)
+ , m_firstLine(OrdinalNumber::fromOneBasedInt(std::max(firstLine, 1)))
+ , m_startColumn(OrdinalNumber::fromOneBasedInt(std::max(startColumn, 1)))
+ {
+ }
+
</ins><span class="cx"> OrdinalNumber firstLine() const { return m_firstLine; }
</span><span class="cx"> OrdinalNumber startColumn() const { return m_startColumn; }
</span><span class="cx">
</span><span class="lines">@@ -87,7 +94,7 @@
</span><span class="cx"> inline SourceCode SourceCode::subExpression(unsigned openBrace, unsigned closeBrace, int firstLine, int startColumn)
</span><span class="cx"> {
</span><span class="cx"> startColumn += 1; // Convert to base 1.
</span><del>- return SourceCode(provider(), openBrace, closeBrace + 1, firstLine, startColumn);
</del><ins>+ return SourceCode(RefPtr<SourceProvider> { provider() }, openBrace, closeBrace + 1, firstLine, startColumn);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserUnlinkedSourceCodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/UnlinkedSourceCode.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/UnlinkedSourceCode.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/parser/UnlinkedSourceCode.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -47,20 +47,27 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- UnlinkedSourceCode(PassRefPtr<SourceProvider> provider)
- : m_provider(provider)
</del><ins>+ UnlinkedSourceCode(Ref<SourceProvider>&& provider)
+ : m_provider(WTFMove(provider))
</ins><span class="cx"> , m_startOffset(0)
</span><span class="cx"> , m_endOffset(m_provider->source().length())
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- UnlinkedSourceCode(PassRefPtr<SourceProvider> provider, int startOffset, int endOffset)
- : m_provider(provider)
</del><ins>+ UnlinkedSourceCode(Ref<SourceProvider>&& provider, int startOffset, int endOffset)
+ : m_provider(WTFMove(provider))
</ins><span class="cx"> , m_startOffset(startOffset)
</span><span class="cx"> , m_endOffset(endOffset)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ UnlinkedSourceCode(RefPtr<SourceProvider>&& provider, int startOffset, int endOffset)
+ : m_provider(WTFMove(provider))
+ , m_startOffset(startOffset)
+ , m_endOffset(endOffset)
+ {
+ }
+
</ins><span class="cx"> UnlinkedSourceCode(const UnlinkedSourceCode& other)
</span><span class="cx"> : m_provider(other.m_provider)
</span><span class="cx"> , m_startOffset(other.m_startOffset)
</span><span class="lines">@@ -91,6 +98,8 @@
</span><span class="cx"> int length() const { return m_endOffset - m_startOffset; }
</span><span class="cx">
</span><span class="cx"> protected:
</span><ins>+ // FIXME: Make it Ref<SourceProvidier>.
+ // https://bugs.webkit.org/show_bug.cgi?id=168325
</ins><span class="cx"> RefPtr<SourceProvider> m_provider;
</span><span class="cx"> int m_startOffset;
</span><span class="cx"> int m_endOffset;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilerDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -86,15 +86,13 @@
</span><span class="cx"> m_compilationMap.remove(codeBlock);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void Database::addCompilation(CodeBlock* codeBlock, PassRefPtr<Compilation> passedCompilation)
</del><ins>+void Database::addCompilation(CodeBlock* codeBlock, Ref<Compilation>&& compilation)
</ins><span class="cx"> {
</span><span class="cx"> LockHolder locker(m_lock);
</span><span class="cx"> ASSERT(!isCompilationThread());
</span><span class="cx">
</span><del>- RefPtr<Compilation> compilation = passedCompilation;
-
- m_compilations.append(compilation);
- m_compilationMap.set(codeBlock, compilation);
</del><ins>+ m_compilations.append(compilation.copyRef());
+ m_compilationMap.set(codeBlock, WTFMove(compilation));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue Database::toJS(ExecState* exec) const
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilerDatabaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/Lock.h>
</span><span class="cx"> #include <wtf/Noncopyable.h>
</span><del>-#include <wtf/PassRefPtr.h>
</del><span class="cx"> #include <wtf/SegmentedVector.h>
</span><span class="cx"> #include <wtf/ThreadingPrimitives.h>
</span><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="lines">@@ -52,7 +51,7 @@
</span><span class="cx"> Bytecodes* ensureBytecodesFor(CodeBlock*);
</span><span class="cx"> void notifyDestruction(CodeBlock*);
</span><span class="cx">
</span><del>- void addCompilation(CodeBlock*, PassRefPtr<Compilation>);
</del><ins>+ void addCompilation(CodeBlock*, Ref<Compilation>&&);
</ins><span class="cx">
</span><span class="cx"> // Converts the database to a JavaScript object that is suitable for JSON stringification.
</span><span class="cx"> // Note that it's probably a good idea to use an ExecState* associated with a global
</span><span class="lines">@@ -85,8 +84,8 @@
</span><span class="cx"> VM& m_vm;
</span><span class="cx"> SegmentedVector<Bytecodes> m_bytecodes;
</span><span class="cx"> HashMap<CodeBlock*, Bytecodes*> m_bytecodesMap;
</span><del>- Vector<RefPtr<Compilation>> m_compilations;
- HashMap<CodeBlock*, RefPtr<Compilation>> m_compilationMap;
</del><ins>+ Vector<Ref<Compilation>> m_compilations;
+ HashMap<CodeBlock*, Ref<Compilation>> m_compilationMap;
</ins><span class="cx"> Vector<Event> m_events;
</span><span class="cx"> bool m_shouldSaveAtExit;
</span><span class="cx"> CString m_atExitSaveFilename;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeEvalExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/EvalExecutable.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/EvalExecutable.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/EvalExecutable.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> return m_evalCodeBlock.get();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- PassRefPtr<JITCode> generatedJITCode()
</del><ins>+ Ref<JITCode> generatedJITCode()
</ins><span class="cx"> {
</span><span class="cx"> return generatedJITCodeForCall();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutableBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ExecutableBase.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ExecutableBase.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/ExecutableBase.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -125,19 +125,19 @@
</span><span class="cx"> int m_numParametersForConstruct;
</span><span class="cx">
</span><span class="cx"> public:
</span><del>- PassRefPtr<JITCode> generatedJITCodeForCall()
</del><ins>+ Ref<JITCode> generatedJITCodeForCall()
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(m_jitCodeForCall);
</span><del>- return m_jitCodeForCall;
</del><ins>+ return *m_jitCodeForCall;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- PassRefPtr<JITCode> generatedJITCodeForConstruct()
</del><ins>+ Ref<JITCode> generatedJITCodeForConstruct()
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(m_jitCodeForConstruct);
</span><del>- return m_jitCodeForConstruct;
</del><ins>+ return *m_jitCodeForConstruct;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- PassRefPtr<JITCode> generatedJITCodeFor(CodeSpecializationKind kind)
</del><ins>+ Ref<JITCode> generatedJITCodeFor(CodeSpecializationKind kind)
</ins><span class="cx"> {
</span><span class="cx"> if (kind == CodeForCall)
</span><span class="cx"> return generatedJITCodeForCall();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Identifier.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Identifier.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/Identifier.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> ASSERT(c);
</span><span class="cx"> ASSERT(c[0]);
</span><span class="cx"> if (!c[1])
</span><del>- return *vm->smallStrings.singleCharacterStringRep(c[0]);
</del><ins>+ return vm->smallStrings.singleCharacterStringRep(c[0]);
</ins><span class="cx">
</span><span class="cx"> return *AtomicStringImpl::add(c);
</span><span class="cx"> }
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> UChar c = s[0];
</span><span class="cx"> ASSERT(c <= 0xff);
</span><span class="cx"> if (canUseSingleCharacterString(c))
</span><del>- return *vm->smallStrings.singleCharacterStringRep(c);
</del><ins>+ return vm->smallStrings.singleCharacterStringRep(c);
</ins><span class="cx"> }
</span><span class="cx"> if (!length)
</span><span class="cx"> return *StringImpl::empty();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIdentifierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Identifier.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Identifier.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/Identifier.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -218,7 +218,7 @@
</span><span class="cx"> if (length == 1) {
</span><span class="cx"> T c = s[0];
</span><span class="cx"> if (canUseSingleCharacterString(c))
</span><del>- return *vm->smallStrings.singleCharacterStringRep(c);
</del><ins>+ return vm->smallStrings.singleCharacterStringRep(c);
</ins><span class="cx"> }
</span><span class="cx"> if (!length)
</span><span class="cx"> return *StringImpl::empty();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -1362,18 +1362,15 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><del>-void JSGlobalObject::setInputCursor(PassRefPtr<InputCursor> prpCursor)
</del><ins>+void JSGlobalObject::setInputCursor(Ref<InputCursor>&& cursor)
</ins><span class="cx"> {
</span><del>- m_inputCursor = prpCursor;
- ASSERT(m_inputCursor);
-
- InputCursor& cursor = inputCursor();
</del><ins>+ m_inputCursor = WTFMove(cursor);
</ins><span class="cx"> // Save or set the random seed. This performed here rather than the constructor
</span><span class="cx"> // to avoid threading the input cursor through all the abstraction layers.
</span><del>- if (cursor.isCapturing())
- cursor.appendInput<SetRandomSeed>(m_weakRandom.seed());
- else if (cursor.isReplaying()) {
- if (SetRandomSeed* input = cursor.fetchInput<SetRandomSeed>())
</del><ins>+ if (m_inputCursor->isCapturing())
+ m_inputCursor->appendInput<SetRandomSeed>(m_weakRandom.seed());
+ else if (m_inputCursor->isReplaying()) {
+ if (SetRandomSeed* input = m_inputCursor->fetchInput<SetRandomSeed>())
</ins><span class="cx"> m_weakRandom.setSeed(static_cast<unsigned>(input->randomSeed()));
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -44,7 +44,6 @@
</span><span class="cx"> #include <JavaScriptCore/JSBase.h>
</span><span class="cx"> #include <array>
</span><span class="cx"> #include <wtf/HashSet.h>
</span><del>-#include <wtf/PassRefPtr.h>
</del><span class="cx">
</span><span class="cx"> struct OpaqueJSClass;
</span><span class="cx"> struct OpaqueJSClassContextData;
</span><span class="lines">@@ -379,7 +378,7 @@
</span><span class="cx"> VM& m_vm;
</span><span class="cx">
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><del>- RefPtr<InputCursor> m_inputCursor;
</del><ins>+ Ref<InputCursor> m_inputCursor;
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span><span class="lines">@@ -617,8 +616,8 @@
</span><span class="cx"> JS_EXPORT_PRIVATE bool remoteDebuggingEnabled() const;
</span><span class="cx">
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><del>- JS_EXPORT_PRIVATE void setInputCursor(PassRefPtr<InputCursor>);
- InputCursor& inputCursor() const { return *m_inputCursor; }
</del><ins>+ JS_EXPORT_PRIVATE void setInputCursor(Ref<InputCursor>&&);
+ InputCursor& inputCursor() const { return m_inputCursor.get(); }
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPropertyNameEnumeratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -38,18 +38,18 @@
</span><span class="cx"> {
</span><span class="cx"> if (!vm.emptyPropertyNameEnumerator.get()) {
</span><span class="cx"> PropertyNameArray propertyNames(&vm, PropertyNameMode::Strings);
</span><del>- vm.emptyPropertyNameEnumerator = Strong<JSCell>(vm, create(vm, 0, 0, 0, propertyNames));
</del><ins>+ vm.emptyPropertyNameEnumerator = Strong<JSCell>(vm, create(vm, 0, 0, 0, WTFMove(propertyNames)));
</ins><span class="cx"> }
</span><span class="cx"> return jsCast<JSPropertyNameEnumerator*>(vm.emptyPropertyNameEnumerator.get());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSPropertyNameEnumerator* JSPropertyNameEnumerator::create(VM& vm, Structure* structure, uint32_t indexedLength, uint32_t numberStructureProperties, PropertyNameArray& propertyNames)
</del><ins>+JSPropertyNameEnumerator* JSPropertyNameEnumerator::create(VM& vm, Structure* structure, uint32_t indexedLength, uint32_t numberStructureProperties, PropertyNameArray&& propertyNames)
</ins><span class="cx"> {
</span><span class="cx"> StructureID structureID = structure ? structure->id() : 0;
</span><span class="cx"> uint32_t inlineCapacity = structure ? structure->inlineCapacity() : 0;
</span><span class="cx"> JSPropertyNameEnumerator* enumerator = new (NotNull,
</span><span class="cx"> allocateCell<JSPropertyNameEnumerator>(vm.heap)) JSPropertyNameEnumerator(vm, structureID, inlineCapacity);
</span><del>- enumerator->finishCreation(vm, indexedLength, numberStructureProperties, propertyNames.data());
</del><ins>+ enumerator->finishCreation(vm, indexedLength, numberStructureProperties, propertyNames.releaseData());
</ins><span class="cx"> return enumerator;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -60,11 +60,10 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void JSPropertyNameEnumerator::finishCreation(VM& vm, uint32_t indexedLength, uint32_t endStructurePropertyIndex, PassRefPtr<PropertyNameArrayData> idents)
</del><ins>+void JSPropertyNameEnumerator::finishCreation(VM& vm, uint32_t indexedLength, uint32_t endStructurePropertyIndex, RefPtr<PropertyNameArrayData>&& identifiers)
</ins><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx">
</span><del>- RefPtr<PropertyNameArrayData> identifiers = idents;
</del><span class="cx"> PropertyNameArrayData::PropertyNameVector& vector = identifiers->propertyNameVector();
</span><span class="cx">
</span><span class="cx"> m_indexedLength = indexedLength;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPropertyNameEnumeratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
</span><span class="cx">
</span><span class="cx"> static JSPropertyNameEnumerator* create(VM&);
</span><del>- static JSPropertyNameEnumerator* create(VM&, Structure*, uint32_t, uint32_t, PropertyNameArray&);
</del><ins>+ static JSPropertyNameEnumerator* create(VM&, Structure*, uint32_t, uint32_t, PropertyNameArray&&);
</ins><span class="cx">
</span><span class="cx"> static const bool needsDestruction = true;
</span><span class="cx"> static void destroy(JSCell*);
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> JSPropertyNameEnumerator(VM&, StructureID, uint32_t);
</span><del>- void finishCreation(VM&, uint32_t, uint32_t, PassRefPtr<PropertyNameArrayData>);
</del><ins>+ void finishCreation(VM&, uint32_t, uint32_t, RefPtr<PropertyNameArrayData>&&);
</ins><span class="cx">
</span><span class="cx"> Vector<WriteBarrier<JSString>> m_propertyNames;
</span><span class="cx"> StructureID m_cachedStructureID;
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx">
</span><span class="cx"> normalizePrototypeChain(exec, structure);
</span><span class="cx">
</span><del>- enumerator = JSPropertyNameEnumerator::create(vm, structure, indexedLength, numberStructureProperties, propertyNames);
</del><ins>+ enumerator = JSPropertyNameEnumerator::create(vm, structure, indexedLength, numberStructureProperties, WTFMove(propertyNames));
</ins><span class="cx"> enumerator->setCachedPrototypeChain(vm, structure->prototypeChain(exec));
</span><span class="cx"> if (!indexedLength && structure->canCachePropertyNameEnumerator())
</span><span class="cx"> structure->setCachedPropertyNameEnumerator(vm, enumerator);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSStringh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSString.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSString.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/JSString.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -97,10 +97,10 @@
</span><span class="cx"> static const unsigned MaxLength = std::numeric_limits<int32_t>::max();
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- JSString(VM& vm, PassRefPtr<StringImpl> value)
</del><ins>+ JSString(VM& vm, Ref<StringImpl>&& value)
</ins><span class="cx"> : JSCell(vm, vm.stringStructure.get())
</span><span class="cx"> , m_flags(0)
</span><del>- , m_value(RefPtr<StringImpl>(value))
</del><ins>+ , m_value(WTFMove(value))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -136,20 +136,18 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> public:
</span><del>- static JSString* create(VM& vm, PassRefPtr<StringImpl> value)
</del><ins>+ static JSString* create(VM& vm, Ref<StringImpl>&& value)
</ins><span class="cx"> {
</span><del>- ASSERT(value);
</del><span class="cx"> unsigned length = value->length();
</span><span class="cx"> size_t cost = value->cost();
</span><del>- JSString* newString = new (NotNull, allocateCell<JSString>(vm.heap)) JSString(vm, value);
</del><ins>+ JSString* newString = new (NotNull, allocateCell<JSString>(vm.heap)) JSString(vm, WTFMove(value));
</ins><span class="cx"> newString->finishCreation(vm, length, cost);
</span><span class="cx"> return newString;
</span><span class="cx"> }
</span><del>- static JSString* createHasOtherOwner(VM& vm, PassRefPtr<StringImpl> value)
</del><ins>+ static JSString* createHasOtherOwner(VM& vm, Ref<StringImpl>&& value)
</ins><span class="cx"> {
</span><del>- ASSERT(value);
</del><span class="cx"> size_t length = value->length();
</span><del>- JSString* newString = new (NotNull, allocateCell<JSString>(vm.heap)) JSString(vm, value);
</del><ins>+ JSString* newString = new (NotNull, allocateCell<JSString>(vm.heap)) JSString(vm, WTFMove(value));
</ins><span class="cx"> newString->finishCreation(vm, length);
</span><span class="cx"> return newString;
</span><span class="cx"> }
</span><span class="lines">@@ -506,19 +504,19 @@
</span><span class="cx"> {
</span><span class="cx"> if (c <= maxSingleCharacterString)
</span><span class="cx"> return vm->smallStrings.singleCharacterString(c);
</span><del>- return JSString::create(*vm, String(&c, 1).impl());
</del><ins>+ return JSString::create(*vm, StringImpl::create(&c, 1));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline JSString* jsNontrivialString(VM* vm, const String& s)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(s.length() > 1);
</span><del>- return JSString::create(*vm, s.impl());
</del><ins>+ return JSString::create(*vm, *s.impl());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline JSString* jsNontrivialString(VM* vm, String&& s)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(s.length() > 1);
</span><del>- return JSString::create(*vm, s.releaseImpl());
</del><ins>+ return JSString::create(*vm, s.releaseImpl().releaseNonNull());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ALWAYS_INLINE Identifier JSString::toIdentifier(ExecState* exec) const
</span><span class="lines">@@ -572,7 +570,7 @@
</span><span class="cx"> if (c <= maxSingleCharacterString)
</span><span class="cx"> return vm->smallStrings.singleCharacterString(c);
</span><span class="cx"> }
</span><del>- return JSString::create(*vm, s.impl());
</del><ins>+ return JSString::create(*vm, *s.impl());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline JSString* jsSubstring(VM& vm, ExecState* exec, JSString* s, unsigned offset, unsigned length)
</span><span class="lines">@@ -634,7 +632,7 @@
</span><span class="cx"> if (c <= maxSingleCharacterString)
</span><span class="cx"> return vm->smallStrings.singleCharacterString(c);
</span><span class="cx"> }
</span><del>- return JSString::createHasOtherOwner(*vm, s.impl());
</del><ins>+ return JSString::createHasOtherOwner(*vm, *s.impl());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline JSRopeString* jsStringBuilder(VM* vm)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeModuleProgramExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> return m_moduleProgramCodeBlock.get();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- PassRefPtr<JITCode> generatedJITCode()
</del><ins>+ Ref<JITCode> generatedJITCode()
</ins><span class="cx"> {
</span><span class="cx"> return generatedJITCodeForCall();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNativeExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NativeExecutable.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NativeExecutable.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/NativeExecutable.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -40,11 +40,11 @@
</span><span class="cx">
</span><span class="cx"> const ClassInfo NativeExecutable::s_info = { "NativeExecutable", &ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(NativeExecutable) };
</span><span class="cx">
</span><del>-NativeExecutable* NativeExecutable::create(VM& vm, PassRefPtr<JITCode> callThunk, NativeFunction function, PassRefPtr<JITCode> constructThunk, NativeFunction constructor, Intrinsic intrinsic, const DOMJIT::Signature* signature, const String& name)
</del><ins>+NativeExecutable* NativeExecutable::create(VM& vm, Ref<JITCode>&& callThunk, NativeFunction function, Ref<JITCode>&& constructThunk, NativeFunction constructor, Intrinsic intrinsic, const DOMJIT::Signature* signature, const String& name)
</ins><span class="cx"> {
</span><span class="cx"> NativeExecutable* executable;
</span><span class="cx"> executable = new (NotNull, allocateCell<NativeExecutable>(vm.heap)) NativeExecutable(vm, function, constructor, intrinsic, signature);
</span><del>- executable->finishCreation(vm, callThunk, constructThunk, name);
</del><ins>+ executable->finishCreation(vm, WTFMove(callThunk), WTFMove(constructThunk), name);
</ins><span class="cx"> return executable;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -58,11 +58,11 @@
</span><span class="cx"> return Structure::create(vm, globalObject, proto, TypeInfo(CellType, StructureFlags), info());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void NativeExecutable::finishCreation(VM& vm, PassRefPtr<JITCode> callThunk, PassRefPtr<JITCode> constructThunk, const String& name)
</del><ins>+void NativeExecutable::finishCreation(VM& vm, Ref<JITCode>&& callThunk, Ref<JITCode>&& constructThunk, const String& name)
</ins><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- m_jitCodeForCall = callThunk;
- m_jitCodeForConstruct = constructThunk;
</del><ins>+ m_jitCodeForCall = WTFMove(callThunk);
+ m_jitCodeForConstruct = WTFMove(constructThunk);
</ins><span class="cx"> m_jitCodeForCallWithArityCheck = m_jitCodeForCall->addressForCall(MustCheckArity);
</span><span class="cx"> m_jitCodeForConstructWithArityCheck = m_jitCodeForConstruct->addressForCall(MustCheckArity);
</span><span class="cx"> m_name = name;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNativeExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NativeExecutable.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NativeExecutable.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/NativeExecutable.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> typedef ExecutableBase Base;
</span><span class="cx"> static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
</span><span class="cx">
</span><del>- static NativeExecutable* create(VM&, PassRefPtr<JITCode> callThunk, NativeFunction function, PassRefPtr<JITCode> constructThunk, NativeFunction constructor, Intrinsic, const DOMJIT::Signature*, const String& name);
</del><ins>+ static NativeExecutable* create(VM&, Ref<JITCode>&& callThunk, NativeFunction function, Ref<JITCode>&& constructThunk, NativeFunction constructor, Intrinsic, const DOMJIT::Signature*, const String& name);
</ins><span class="cx">
</span><span class="cx"> static void destroy(JSCell*);
</span><span class="cx">
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> protected:
</span><del>- void finishCreation(VM&, PassRefPtr<JITCode> callThunk, PassRefPtr<JITCode> constructThunk, const String& name);
</del><ins>+ void finishCreation(VM&, Ref<JITCode>&& callThunk, Ref<JITCode>&& constructThunk, const String& name);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> friend class ExecutableBase;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeProgramExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">
</span><span class="cx"> JSObject* checkSyntax(ExecState*);
</span><span class="cx">
</span><del>- PassRefPtr<JITCode> generatedJITCode()
</del><ins>+ Ref<JITCode> generatedJITCode()
</ins><span class="cx"> {
</span><span class="cx"> return generatedJITCodeForCall();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertyNameArrayh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertyNameArray.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertyNameArray.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/PropertyNameArray.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -73,9 +73,8 @@
</span><span class="cx"> Identifier& operator[](unsigned i) { return m_data->propertyNameVector()[i]; }
</span><span class="cx"> const Identifier& operator[](unsigned i) const { return m_data->propertyNameVector()[i]; }
</span><span class="cx">
</span><del>- void setData(PassRefPtr<PropertyNameArrayData> data) { m_data = data; }
</del><span class="cx"> PropertyNameArrayData* data() { return m_data.get(); }
</span><del>- PassRefPtr<PropertyNameArrayData> releaseData() { return WTFMove(m_data); }
</del><ins>+ RefPtr<PropertyNameArrayData> releaseData() { return WTFMove(m_data); }
</ins><span class="cx">
</span><span class="cx"> // FIXME: Remove these functions.
</span><span class="cx"> bool canAddKnownUniqueForStructure() const { return m_data->propertyNameVector().isEmpty(); }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpKeyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpKey.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpKey.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/RegExpKey.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -63,9 +63,9 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- RegExpKey(RegExpFlags flags, const PassRefPtr<StringImpl> pattern)
</del><ins>+ RegExpKey(RegExpFlags flags, RefPtr<StringImpl>&& pattern)
</ins><span class="cx"> : flagsValue(flags)
</span><del>- , pattern(pattern)
</del><ins>+ , pattern(WTFMove(pattern))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSmallStringscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SmallStrings.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SmallStrings.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/SmallStrings.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -39,9 +39,9 @@
</span><span class="cx"> public:
</span><span class="cx"> SmallStringsStorage();
</span><span class="cx">
</span><del>- StringImpl* rep(unsigned char character)
</del><ins>+ StringImpl& rep(unsigned char character)
</ins><span class="cx"> {
</span><del>- return m_reps[character].get();
</del><ins>+ return *m_reps[character].get();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> void SmallStrings::createEmptyString(VM* vm)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(!m_emptyString);
</span><del>- m_emptyString = JSString::createHasOtherOwner(*vm, StringImpl::empty());
</del><ins>+ m_emptyString = JSString::createHasOtherOwner(*vm, *StringImpl::empty());
</ins><span class="cx"> ASSERT(m_needsToBeVisited);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -119,11 +119,11 @@
</span><span class="cx"> if (!m_storage)
</span><span class="cx"> m_storage = std::make_unique<SmallStringsStorage>();
</span><span class="cx"> ASSERT(!m_singleCharacterStrings[character]);
</span><del>- m_singleCharacterStrings[character] = JSString::createHasOtherOwner(*vm, PassRefPtr<StringImpl>(m_storage->rep(character)));
</del><ins>+ m_singleCharacterStrings[character] = JSString::createHasOtherOwner(*vm, m_storage->rep(character));
</ins><span class="cx"> ASSERT(m_needsToBeVisited);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-StringImpl* SmallStrings::singleCharacterStringRep(unsigned char character)
</del><ins>+StringImpl& SmallStrings::singleCharacterStringRep(unsigned char character)
</ins><span class="cx"> {
</span><span class="cx"> if (!m_storage)
</span><span class="cx"> m_storage = std::make_unique<SmallStringsStorage>();
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx">
</span><span class="cx"> void SmallStrings::initialize(VM* vm, JSString*& string, const char* value)
</span><span class="cx"> {
</span><del>- string = JSString::create(*vm, Identifier::fromString(vm, value).impl());
</del><ins>+ string = JSString::create(*vm, AtomicStringImpl::add(value).releaseNonNull());
</ins><span class="cx"> ASSERT(m_needsToBeVisited);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSmallStringsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SmallStrings.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SmallStrings.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/SmallStrings.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> return m_singleCharacterStrings[character];
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JS_EXPORT_PRIVATE WTF::StringImpl* singleCharacterStringRep(unsigned char character);
</del><ins>+ JS_EXPORT_PRIVATE WTF::StringImpl& singleCharacterStringRep(unsigned char character);
</ins><span class="cx">
</span><span class="cx"> JSString** singleCharacterStrings() { return &m_singleCharacterStrings[0]; }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructurecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/Structure.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -1143,10 +1143,10 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-PassRefPtr<StructureShape> Structure::toStructureShape(JSValue value)
</del><ins>+Ref<StructureShape> Structure::toStructureShape(JSValue value)
</ins><span class="cx"> {
</span><del>- RefPtr<StructureShape> baseShape = StructureShape::create();
- RefPtr<StructureShape> curShape = baseShape;
</del><ins>+ Ref<StructureShape> baseShape = StructureShape::create();
+ RefPtr<StructureShape> curShape = baseShape.ptr();
</ins><span class="cx"> Structure* curStructure = this;
</span><span class="cx"> JSValue curValue = value;
</span><span class="cx"> while (curStructure) {
</span><span class="lines">@@ -1168,7 +1168,7 @@
</span><span class="cx">
</span><span class="cx"> if (curStructure->storedPrototypeStructure()) {
</span><span class="cx"> auto newShape = StructureShape::create();
</span><del>- curShape->setProto(newShape.ptr());
</del><ins>+ curShape->setProto(newShape.copyRef());
</ins><span class="cx"> curShape = WTFMove(newShape);
</span><span class="cx"> curValue = curStructure->storedPrototype();
</span><span class="cx"> }
</span><span class="lines">@@ -1176,7 +1176,7 @@
</span><span class="cx"> curStructure = curStructure->storedPrototypeStructure();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return WTFMove(baseShape);
</del><ins>+ return baseShape;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool Structure::canUseForAllocationsOf(Structure* other)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/Structure.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -46,7 +46,6 @@
</span><span class="cx"> #include "Weak.h"
</span><span class="cx"> #include "WriteBarrierInlines.h"
</span><span class="cx"> #include <wtf/CompilationThread.h>
</span><del>-#include <wtf/PassRefPtr.h>
</del><span class="cx"> #include <wtf/PrintStream.h>
</span><span class="cx">
</span><span class="cx"> namespace WTF {
</span><span class="lines">@@ -592,7 +591,7 @@
</span><span class="cx"> willStoreValueSlow(vm, propertyName, value, shouldOptimize, InferredTypeTable::OldProperty);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- PassRefPtr<StructureShape> toStructureShape(JSValue);
</del><ins>+ Ref<StructureShape> toStructureShape(JSValue);
</ins><span class="cx">
</span><span class="cx"> // Determines if the two structures match enough that this one could be used for allocations
</span><span class="cx"> // of the other one.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeLocationCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TypeLocationCache.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeLocationCache.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/TypeLocationCache.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><del>-std::pair<TypeLocation*, bool> TypeLocationCache::getTypeLocation(GlobalVariableID globalVariableID, intptr_t sourceID, unsigned start, unsigned end, PassRefPtr<TypeSet> globalTypeSet, VM* vm)
</del><ins>+std::pair<TypeLocation*, bool> TypeLocationCache::getTypeLocation(GlobalVariableID globalVariableID, intptr_t sourceID, unsigned start, unsigned end, RefPtr<TypeSet>&& globalTypeSet, VM* vm)
</ins><span class="cx"> {
</span><span class="cx"> LocationKey key;
</span><span class="cx"> key.m_globalVariableID = globalVariableID;
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> location->m_sourceID = sourceID;
</span><span class="cx"> location->m_divotStart = start;
</span><span class="cx"> location->m_divotEnd = end;
</span><del>- location->m_globalTypeSet = globalTypeSet;
</del><ins>+ location->m_globalTypeSet = WTFMove(globalTypeSet);
</ins><span class="cx">
</span><span class="cx"> m_locationMap[key] = location;
</span><span class="cx"> isNewLocation = true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeLocationCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TypeLocationCache.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeLocationCache.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/TypeLocationCache.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> unsigned m_end;
</span><span class="cx"> };
</span><span class="cx">
</span><del>- std::pair<TypeLocation*, bool> getTypeLocation(GlobalVariableID, intptr_t, unsigned start, unsigned end, PassRefPtr<TypeSet>, VM*);
</del><ins>+ std::pair<TypeLocation*, bool> getTypeLocation(GlobalVariableID, intptr_t, unsigned start, unsigned end, RefPtr<TypeSet>&&, VM*);
</ins><span class="cx"> private:
</span><span class="cx"> typedef std::unordered_map<LocationKey, TypeLocation*, HashMethod<LocationKey>> LocationMap;
</span><span class="cx"> LocationMap m_locationMap;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeProfilerLogcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/TypeProfilerLog.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -82,8 +82,8 @@
</span><span class="cx"> TypeLocation* location = entry->location;
</span><span class="cx"> location->m_lastSeenType = type;
</span><span class="cx"> if (location->m_globalTypeSet)
</span><del>- location->m_globalTypeSet->addTypeInformation(type, shape, structure);
- location->m_instructionTypeSet->addTypeInformation(type, shape, structure);
</del><ins>+ location->m_globalTypeSet->addTypeInformation(type, shape.copyRef(), structure);
+ location->m_instructionTypeSet->addTypeInformation(type, WTFMove(shape), structure);
</ins><span class="cx">
</span><span class="cx"> entry++;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TypeSet.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeSet.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/TypeSet.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -41,12 +41,12 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void TypeSet::addTypeInformation(RuntimeType type, PassRefPtr<StructureShape> prpNewShape, Structure* structure)
</del><ins>+void TypeSet::addTypeInformation(RuntimeType type, RefPtr<StructureShape>&& passedNewShape, Structure* structure)
</ins><span class="cx"> {
</span><del>- RefPtr<StructureShape> newShape = prpNewShape;
</del><span class="cx"> m_seenTypes = m_seenTypes | type;
</span><span class="cx">
</span><del>- if (structure && newShape && !runtimeTypeIsPrimitive(type)) {
</del><ins>+ if (structure && passedNewShape && !runtimeTypeIsPrimitive(type)) {
+ Ref<StructureShape> newShape = passedNewShape.releaseNonNull();
</ins><span class="cx"> if (!m_structureSet.contains(structure)) {
</span><span class="cx"> {
</span><span class="cx"> ConcurrentJSLocker locker(m_lock);
</span><span class="lines">@@ -56,26 +56,22 @@
</span><span class="cx"> // - We don't have two instances of the same shape. (Same shapes may have different Structures).
</span><span class="cx"> // - We don't have two shapes that share the same prototype chain. If these shapes share the same
</span><span class="cx"> // prototype chain, they will be merged into one shape.
</span><del>- bool found = false;
</del><span class="cx"> String hash = newShape->propertyHash();
</span><span class="cx"> for (auto& seenShape : m_structureHistory) {
</span><del>- if (seenShape->propertyHash() == hash) {
- found = true;
- break;
- }
- if (seenShape->hasSamePrototypeChain(newShape)) {
- seenShape = StructureShape::merge(seenShape, newShape);
- found = true;
- break;
</del><ins>+ if (seenShape->propertyHash() == hash)
+ return;
+ if (seenShape->hasSamePrototypeChain(newShape.get())) {
+ seenShape = StructureShape::merge(seenShape.copyRef(), WTFMove(newShape));
+ return;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (!found) {
- if (m_structureHistory.size() < 100)
- m_structureHistory.append(newShape);
- else if (!m_isOverflown)
- m_isOverflown = true;
</del><ins>+ if (m_structureHistory.size() < 100) {
+ m_structureHistory.append(WTFMove(newShape));
+ return;
</ins><span class="cx"> }
</span><ins>+ if (!m_isOverflown)
+ m_isOverflown = true;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -222,8 +218,8 @@
</span><span class="cx"> {
</span><span class="cx"> auto description = Inspector::Protocol::Array<Inspector::Protocol::Runtime::StructureDescription>::create();
</span><span class="cx">
</span><del>- for (size_t i = 0; i < m_structureHistory.size(); i++)
- description->addItem(m_structureHistory.at(i)->inspectorRepresentation());
</del><ins>+ for (auto& shape : m_structureHistory)
+ description->addItem(shape->inspectorRepresentation());
</ins><span class="cx">
</span><span class="cx"> return description;
</span><span class="cx"> }
</span><span class="lines">@@ -367,16 +363,16 @@
</span><span class="cx"> return *m_propertyHash;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-String StructureShape::leastCommonAncestor(const Vector<RefPtr<StructureShape>> shapes)
</del><ins>+String StructureShape::leastCommonAncestor(const Vector<Ref<StructureShape>>& shapes)
</ins><span class="cx"> {
</span><del>- if (!shapes.size())
</del><ins>+ if (shapes.isEmpty())
</ins><span class="cx"> return emptyString();
</span><span class="cx">
</span><del>- RefPtr<StructureShape> origin = shapes.at(0);
</del><ins>+ StructureShape* origin = shapes[0].ptr();
</ins><span class="cx"> for (size_t i = 1; i < shapes.size(); i++) {
</span><span class="cx"> bool foundLUB = false;
</span><span class="cx"> while (!foundLUB) {
</span><del>- RefPtr<StructureShape> check = shapes.at(i);
</del><ins>+ StructureShape* check = shapes[i].ptr();
</ins><span class="cx"> String curCtorName = origin->m_constructorName;
</span><span class="cx"> while (check) {
</span><span class="cx"> if (check->m_constructorName == curCtorName) {
</span><span class="lines">@@ -383,14 +379,14 @@
</span><span class="cx"> foundLUB = true;
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- check = check->m_proto;
</del><ins>+ check = check->m_proto.get();
</ins><span class="cx"> }
</span><span class="cx"> if (!foundLUB) {
</span><del>- origin = origin->m_proto;
</del><span class="cx"> // This is unlikely to happen, because we usually bottom out at "Object", but there are some sets of Objects
</span><span class="cx"> // that may cause this behavior. We fall back to "Object" because it's our version of Top.
</span><del>- if (!origin)
</del><ins>+ if (!origin->m_proto)
</ins><span class="cx"> return ASCIILiteral("Object");
</span><ins>+ origin = origin->m_proto.get();
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -529,25 +525,23 @@
</span><span class="cx"> return base;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool StructureShape::hasSamePrototypeChain(PassRefPtr<StructureShape> prpOther)
</del><ins>+bool StructureShape::hasSamePrototypeChain(const StructureShape& otherRef)
</ins><span class="cx"> {
</span><del>- RefPtr<StructureShape> self = this;
- RefPtr<StructureShape> other = prpOther;
</del><ins>+ const StructureShape* self = this;
+ const StructureShape* other = &otherRef;
</ins><span class="cx"> while (self && other) {
</span><span class="cx"> if (self->m_constructorName != other->m_constructorName)
</span><span class="cx"> return false;
</span><del>- self = self->m_proto;
- other = other->m_proto;
</del><ins>+ self = self->m_proto.get();
+ other = other->m_proto.get();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return !self && !other;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-PassRefPtr<StructureShape> StructureShape::merge(const PassRefPtr<StructureShape> prpA, const PassRefPtr<StructureShape> prpB)
</del><ins>+Ref<StructureShape> StructureShape::merge(Ref<StructureShape>&& a, Ref<StructureShape>&& b)
</ins><span class="cx"> {
</span><del>- RefPtr<StructureShape> a = prpA;
- RefPtr<StructureShape> b = prpB;
- ASSERT(a->hasSamePrototypeChain(b));
</del><ins>+ ASSERT(a->hasSamePrototypeChain(b.get()));
</ins><span class="cx">
</span><span class="cx"> auto merged = StructureShape::create();
</span><span class="cx"> for (auto field : a->m_fields) {
</span><span class="lines">@@ -574,12 +568,12 @@
</span><span class="cx">
</span><span class="cx"> if (a->m_proto) {
</span><span class="cx"> RELEASE_ASSERT(b->m_proto);
</span><del>- merged->setProto(StructureShape::merge(a->m_proto, b->m_proto));
</del><ins>+ merged->setProto(StructureShape::merge(*a->m_proto, *b->m_proto));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> merged->markAsFinal();
</span><span class="cx">
</span><del>- return WTFMove(merged);
</del><ins>+ return merged;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void StructureShape::enterDictionaryMode()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTypeSeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TypeSet.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TypeSet.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/TypeSet.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -63,13 +63,13 @@
</span><span class="cx"> Ref<Inspector::Protocol::Runtime::StructureDescription> inspectorRepresentation();
</span><span class="cx"> void setConstructorName(String name) { m_constructorName = (name.isEmpty() ? ASCIILiteral("Object") : name); }
</span><span class="cx"> String constructorName() { return m_constructorName; }
</span><del>- void setProto(PassRefPtr<StructureShape> shape) { m_proto = shape; }
</del><ins>+ void setProto(Ref<StructureShape>&& shape) { m_proto = WTFMove(shape); }
</ins><span class="cx"> void enterDictionaryMode();
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- static String leastCommonAncestor(const Vector<RefPtr<StructureShape>>);
- static PassRefPtr<StructureShape> merge(const PassRefPtr<StructureShape>, const PassRefPtr<StructureShape>);
- bool hasSamePrototypeChain(PassRefPtr<StructureShape>);
</del><ins>+ static String leastCommonAncestor(const Vector<Ref<StructureShape>>&);
+ static Ref<StructureShape> merge(Ref<StructureShape>&&, Ref<StructureShape>&&);
+ bool hasSamePrototypeChain(const StructureShape&);
</ins><span class="cx">
</span><span class="cx"> HashSet<RefPtr<UniquedStringImpl>, IdentifierRepHash> m_fields;
</span><span class="cx"> HashSet<RefPtr<UniquedStringImpl>, IdentifierRepHash> m_optionalFields;
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx"> public:
</span><span class="cx"> static Ref<TypeSet> create() { return adoptRef(*new TypeSet); }
</span><span class="cx"> TypeSet();
</span><del>- void addTypeInformation(RuntimeType, PassRefPtr<StructureShape>, Structure*);
</del><ins>+ void addTypeInformation(RuntimeType, RefPtr<StructureShape>&&, Structure*);
</ins><span class="cx"> void invalidateCache();
</span><span class="cx"> String dumpTypes() const;
</span><span class="cx"> String displayName() const;
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> private:
</span><span class="cx"> bool m_isOverflown;
</span><span class="cx"> RuntimeTypeMask m_seenTypes;
</span><del>- Vector<RefPtr<StructureShape>> m_structureHistory;
</del><ins>+ Vector<Ref<StructureShape>> m_structureHistory;
</ins><span class="cx"> StructureSet m_structureSet;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -549,8 +549,8 @@
</span><span class="cx"> UNUSED_PARAM(intrinsic);
</span><span class="cx"> #endif // ENABLE(JIT)
</span><span class="cx"> return NativeExecutable::create(*this,
</span><del>- adoptRef(new NativeJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_native_call_trampoline), JITCode::HostCallThunk)), function,
- adoptRef(new NativeJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_native_construct_trampoline), JITCode::HostCallThunk)), constructor,
</del><ins>+ adoptRef(*new NativeJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_native_call_trampoline), JITCode::HostCallThunk)), function,
+ adoptRef(*new NativeJITCode(MacroAssemblerCodeRef::createLLIntCodeRef(llint_native_construct_trampoline), JITCode::HostCallThunk)), constructor,
</ins><span class="cx"> NoIntrinsic, signature, name);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -868,9 +868,9 @@
</span><span class="cx"> typeProfiler()->dumpTypeProfilerData(*this);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void VM::queueMicrotask(JSGlobalObject* globalObject, PassRefPtr<Microtask> task)
</del><ins>+void VM::queueMicrotask(JSGlobalObject* globalObject, Ref<Microtask>&& task)
</ins><span class="cx"> {
</span><del>- m_microtaskQueue.append(std::make_unique<QueuedTask>(*this, globalObject, task));
</del><ins>+ m_microtaskQueue.append(std::make_unique<QueuedTask>(*this, globalObject, WTFMove(task)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void VM::drainMicrotasks()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/runtime/VM.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -192,15 +192,15 @@
</span><span class="cx"> public:
</span><span class="cx"> void run();
</span><span class="cx">
</span><del>- QueuedTask(VM& vm, JSGlobalObject* globalObject, PassRefPtr<Microtask> microtask)
</del><ins>+ QueuedTask(VM& vm, JSGlobalObject* globalObject, Ref<Microtask>&& microtask)
</ins><span class="cx"> : m_globalObject(vm, globalObject)
</span><del>- , m_microtask(microtask)
</del><ins>+ , m_microtask(WTFMove(microtask))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> Strong<JSGlobalObject> m_globalObject;
</span><del>- RefPtr<Microtask> m_microtask;
</del><ins>+ Ref<Microtask> m_microtask;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> class ConservativeRoots;
</span><span class="lines">@@ -659,7 +659,7 @@
</span><span class="cx"> bool enableControlFlowProfiler();
</span><span class="cx"> bool disableControlFlowProfiler();
</span><span class="cx">
</span><del>- JS_EXPORT_PRIVATE void queueMicrotask(JSGlobalObject*, PassRefPtr<Microtask>);
</del><ins>+ JS_EXPORT_PRIVATE void queueMicrotask(JSGlobalObject*, Ref<Microtask>&&);
</ins><span class="cx"> JS_EXPORT_PRIVATE void drainMicrotasks();
</span><span class="cx"> void setGlobalConstRedeclarationShouldThrow(bool globalConstRedeclarationThrow) { m_globalConstRedeclarationShouldThrow = globalConstRedeclarationThrow; }
</span><span class="cx"> ALWAYS_INLINE bool globalConstRedeclarationShouldThrow() const { return m_globalConstRedeclarationShouldThrow; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsFunctionOverridescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/FunctionOverrides.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/FunctionOverrides.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/JavaScriptCore/tools/FunctionOverrides.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> newProviderStr.append(origHeader);
</span><span class="cx"> newProviderStr.append(newBody);
</span><span class="cx">
</span><del>- auto newProvider = StringSourceProvider::create(newProviderStr, SourceOrigin { "<overridden>" }, "<overridden>");
</del><ins>+ Ref<SourceProvider> newProvider = StringSourceProvider::create(newProviderStr, SourceOrigin { "<overridden>" }, "<overridden>");
</ins><span class="cx">
</span><span class="cx"> info.firstLine = 1;
</span><span class="cx"> info.lineCount = 1; // Faking it. This doesn't really matter for now.
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/WebCore/ChangeLog        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2017-02-15 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ [JSC] Drop PassRefPtr
+ https://bugs.webkit.org/show_bug.cgi?id=168320
+
+ Reviewed by Saam Barati.
+
+ * bindings/js/ScriptSourceCode.h:
+ (WebCore::ScriptSourceCode::ScriptSourceCode):
+ Use Ref and pass it to SourceCode.
+
+ * replay/ReplayController.cpp:
+ (WebCore::ReplayController::frameNavigated):
+ Pass reference.
+
</ins><span class="cx"> 2017-02-15 Xabier Rodriguez Calvar <calvaris@igalia.com>
</span><span class="cx">
</span><span class="cx"> [GStreamer][MSE][EME] Handle protection event also at decryptor level
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptSourceCodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptSourceCode.h (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptSourceCode.h        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/WebCore/bindings/js/ScriptSourceCode.h        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> public:
</span><span class="cx"> ScriptSourceCode(const String& source, const URL& url = URL(), const TextPosition& startPosition = TextPosition(), JSC::SourceProviderSourceType sourceType = JSC::SourceProviderSourceType::Program)
</span><span class="cx"> : m_provider(JSC::StringSourceProvider::create(source, JSC::SourceOrigin { url.string() }, url.string(), startPosition, sourceType))
</span><del>- , m_code(m_provider, startPosition.m_line.oneBasedInt(), startPosition.m_column.oneBasedInt())
</del><ins>+ , m_code(m_provider.copyRef(), startPosition.m_line.oneBasedInt(), startPosition.m_column.oneBasedInt())
</ins><span class="cx"> , m_url(url)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">
</span><span class="cx"> ScriptSourceCode(CachedScript* cachedScript, JSC::SourceProviderSourceType sourceType, Ref<CachedScriptFetcher>&& scriptFetcher)
</span><span class="cx"> : m_provider(CachedScriptSourceProvider::create(cachedScript, sourceType, WTFMove(scriptFetcher)))
</span><del>- , m_code(m_provider)
</del><ins>+ , m_code(m_provider.copyRef())
</ins><span class="cx"> , m_cachedScript(cachedScript)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">
</span><span class="cx"> ScriptSourceCode(const String& source, const URL& url, const TextPosition& startPosition, JSC::SourceProviderSourceType sourceType, Ref<CachedScriptFetcher>&& scriptFetcher)
</span><span class="cx"> : m_provider(JSC::StringSourceProvider::create(source, JSC::SourceOrigin { url.string(), WTFMove(scriptFetcher) }, url.string(), startPosition, sourceType))
</span><del>- , m_code(m_provider, startPosition.m_line.oneBasedInt(), startPosition.m_column.oneBasedInt())
</del><ins>+ , m_code(m_provider.copyRef(), startPosition.m_line.oneBasedInt(), startPosition.m_column.oneBasedInt())
</ins><span class="cx"> , m_url(url)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> const URL& url() const { return m_url; }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- RefPtr<JSC::SourceProvider> m_provider;
</del><ins>+ Ref<JSC::SourceProvider> m_provider;
</ins><span class="cx"> JSC::SourceCode m_code;
</span><span class="cx"> CachedResourceHandle<CachedScript> m_cachedScript;
</span><span class="cx"> URL m_url;
</span></span></pre></div>
<a id="trunkSourceWebCorereplayReplayControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/replay/ReplayController.cpp (212364 => 212365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/replay/ReplayController.cpp        2017-02-15 16:35:39 UTC (rev 212364)
+++ trunk/Source/WebCore/replay/ReplayController.cpp        2017-02-15 17:09:22 UTC (rev 212365)
</span><span class="lines">@@ -421,7 +421,7 @@
</span><span class="cx"> // We store the input cursor in both Document and JSDOMWindow, so that
</span><span class="cx"> // replay state is accessible from JavaScriptCore and script-free layout code.
</span><span class="cx"> frame.document()->setInputCursor(*m_activeCursor);
</span><del>- frame.script().globalObject(mainThreadNormalWorld())->setInputCursor(m_activeCursor.get());
</del><ins>+ frame.script().globalObject(mainThreadNormalWorld())->setInputCursor(*m_activeCursor);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void ReplayController::frameDetached(Frame& frame)
</span></span></pre>
</div>
</div>
</body>
</html>