⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Sep 9, 2017:

5:21 PM Changeset in webkit [221832] by mark.lam@apple.com
  • 39 edits
    1 copy in trunk

[Re-landing] Use JIT probes for DFG OSR exit.
https://bugs.webkit.org/show_bug.cgi?id=175144
<rdar://problem/33437050>

Not reviewed. Original patch reviewed by Saam Barati.

JSTests:

Disable these tests for debug builds because they run too slow with the new OSR exit.

  • stress/op_mod-ConstVar.js:
  • stress/op_mod-VarConst.js:
  • stress/op_mod-VarVar.js:

Source/JavaScriptCore:

Relanding r221774.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssembler.cpp:

(JSC::stdFunctionCallback):

  • assembler/MacroAssemblerPrinter.cpp:

(JSC::Printer::printCallback):

  • assembler/ProbeContext.h:

(JSC::Probe::CPUState::gpr const):
(JSC::Probe::CPUState::spr const):
(JSC::Probe::Context::Context):
(JSC::Probe::Context::arg):
(JSC::Probe::Context::gpr):
(JSC::Probe::Context::spr):
(JSC::Probe::Context::fpr):
(JSC::Probe::Context::gprName):
(JSC::Probe::Context::sprName):
(JSC::Probe::Context::fprName):
(JSC::Probe::Context::gpr const):
(JSC::Probe::Context::spr const):
(JSC::Probe::Context::fpr const):
(JSC::Probe::Context::pc):
(JSC::Probe::Context::fp):
(JSC::Probe::Context::sp):
(JSC::Probe:: const): Deleted.

  • assembler/ProbeFrame.h: Copied from Source/JavaScriptCore/assembler/ProbeFrame.h.
  • assembler/ProbeStack.cpp:

(JSC::Probe::Page::Page):

  • assembler/ProbeStack.h:

(JSC::Probe::Page::get):
(JSC::Probe::Page::set):
(JSC::Probe::Page::physicalAddressFor):
(JSC::Probe::Stack::lowWatermark):
(JSC::Probe::Stack::get):
(JSC::Probe::Stack::set):

  • bytecode/ArithProfile.cpp:
  • bytecode/ArithProfile.h:
  • bytecode/ArrayProfile.h:

(JSC::ArrayProfile::observeArrayMode):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::updateOSRExitCounterAndCheckIfNeedToReoptimize):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addressOfOSRExitCounter): Deleted.

  • bytecode/ExecutionCounter.h:

(JSC::ExecutionCounter::hasCrossedThreshold const):
(JSC::ExecutionCounter::setNewThresholdForOSRExit):

  • bytecode/MethodOfGettingAValueProfile.cpp:

(JSC::MethodOfGettingAValueProfile::reportValue):

  • bytecode/MethodOfGettingAValueProfile.h:
  • dfg/DFGDriver.cpp:

(JSC::DFG::compileImpl):

  • dfg/DFGJITCode.cpp:

(JSC::DFG::JITCode::findPC): Deleted.

  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::linkOSRExits):
(JSC::DFG::JITCompiler::link):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::jsValueFor):
(JSC::DFG::restoreCalleeSavesFor):
(JSC::DFG::saveCalleeSavesFor):
(JSC::DFG::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::saveOrCopyCalleeSavesFor):
(JSC::DFG::createDirectArgumentsDuringExit):
(JSC::DFG::createClonedArgumentsDuringExit):
(JSC::DFG::OSRExit::OSRExit):
(JSC::DFG::emitRestoreArguments):
(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):
(JSC::DFG::printOSRExit):
(JSC::DFG::OSRExit::setPatchableCodeOffset): Deleted.
(JSC::DFG::OSRExit::getPatchableCodeOffsetAsJump const): Deleted.
(JSC::DFG::OSRExit::codeLocationForRepatch const): Deleted.
(JSC::DFG::OSRExit::correctJump): Deleted.
(JSC::DFG::OSRExit::emitRestoreArguments): Deleted.
(JSC::DFG::OSRExit::compileOSRExit): Deleted.
(JSC::DFG::OSRExit::compileExit): Deleted.
(JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure): Deleted.

  • dfg/DFGOSRExit.h:

(JSC::DFG::OSRExitState::OSRExitState):
(JSC::DFG::OSRExit::considerAddingAsFrequentExitSite):

  • dfg/DFGOSRExitCompilerCommon.cpp:
  • dfg/DFGOSRExitCompilerCommon.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGThunks.cpp:

(JSC::DFG::osrExitThunkGenerator):
(JSC::DFG::osrExitGenerationThunkGenerator): Deleted.

  • dfg/DFGThunks.h:
  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::debugCall): Deleted.

  • jit/AssemblyHelpers.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • profiler/ProfilerOSRExit.h:

(JSC::Profiler::OSRExit::incCount):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:
  • runtime/VM.h:
3:54 PM Changeset in webkit [221831] by dino@apple.com
  • 4 edits
    2 adds in trunk

gl.detachShader breaks shader program
https://bugs.webkit.org/show_bug.cgi?id=137689
<rdar://problem/34025056>

Reviewed by Sam Weinig.

Source/WebCore:

It should be possible to compile shaders, attach them to a program,
link the program, detach the shaders, delete the shaders, and then
ask for the uniform and attribute locations. That is, once you've
linked, the shaders can be thrown away.

We were using the attached shaders to look up uniform locations, so
we now keep around a separate map that remembers what shaders were
attached when the program links.

This fixes the bug, but the whole area is still a bit messy. For one,
we're keeping around all the shader information even after it is
no longer used.
See https://bugs.webkit.org/show_bug.cgi?id=98204

Test: fast/canvas/webgl/detachShader-before-accessing-uniform.html

  • platform/graphics/GraphicsContext3D.h: Add another map to remember

what shaders were used when a program was linked.

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::mappedSymbolInShaderSourceMap): New helper
to look up a name in our source maps.
(WebCore::GraphicsContext3D::mappedSymbolName): Use the helper, and look
at linked shaders if there are no attached shaders.
(WebCore::GraphicsContext3D::originalSymbolInShaderSourceMap): Does the
reverse of the above.
(WebCore::GraphicsContext3D::originalSymbolName):
(WebCore::GraphicsContext3D::linkProgram): Add to the new map.
(WebCore::GraphicsContext3D::deleteProgram): Delete the program from
our shader entries.

LayoutTests:

Test that detaches and deletes shaders after linking, but before
asking for uniform locations.

  • fast/canvas/webgl/detachShader-before-accessing-uniform-expected.txt: Added.
  • fast/canvas/webgl/detachShader-before-accessing-uniform.html: Added.
3:35 PM Changeset in webkit [221830] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm as flaky.
https://bugs.webkit.org/show_bug.cgi?id=176661

Unreviewed test gardening.

  • platform/win/TestExpectations:
3:07 PM Changeset in webkit [221829] by fpizlo@apple.com
  • 13 edits
    1 add in trunk/Tools

Add "if" statements to WSL
https://bugs.webkit.org/show_bug.cgi?id=176294

Patch by Myles C. Maxfield <mmaxfield@apple.com> on 2017-09-07
Reviewed by Filip Pizlo.

Rolling back in after skipping Test.js on debug.

Fairly straightforward implementation. ReturnChecker only returns true iff there is an else block,
and both the if body and the else body recursively return true.

In order to accept both syntaxes:
if (foo)

bar;

... and ...
if (foo) {

bar;

}
This patch lets parseStatement() call parseBlock(). This means that the following is valid:
int x = 7;
if (foo) {

int x = 8;
x is 8 here!

}
x is 7 here!

This production means that these blocks don't require "if" statements, so you can just have:
int foo() {

int x = 7;
{

int x = 8;
x is 8 here!

}
x is 7 here!

}

However, this patch doesn't touch the following use-case:
if (int x = bar()) {

use x here

}

  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/Checker.js:
  • WebGPUShadingLanguageRI/Evaluator.js:

(Evaluator.prototype.visitIfStatement):

  • WebGPUShadingLanguageRI/IfStatement.js: Copied from Tools/WebGPUShadingLanguageRI/TypeDef.js.

(IfStatement):
(IfStatement.prototype.get origin):
(IfStatement.prototype.get conditional):
(IfStatement.prototype.get body):
(IfStatement.prototype.get elseBody):
(IfStatement.prototype.toString):

  • WebGPUShadingLanguageRI/NameResolver.js:

(NameResolver.prototype.visitIfStatement):

  • WebGPUShadingLanguageRI/Parse.js:

(parseTypeParameters):
(parseIfStatement):
(parseStatement):

  • WebGPUShadingLanguageRI/ReturnChecker.js:

(ReturnChecker.prototype.visitIfStatement):

  • WebGPUShadingLanguageRI/Rewriter.js:

(Rewriter.prototype.visitIfStatement):
(Rewriter):

  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js:

(TEST_variableShadowing):
(TEST_ifStatement):
(TEST_ifElseStatement):
(TEST_ifElseIfStatement):
(TEST_ifElseIfElseStatement):
(TEST_returnIf):
(TEST_protocolMonoPolySigDoublePolyDefExplicit): Deleted.

  • WebGPUShadingLanguageRI/TypeDef.js:

(TypeDef.prototype.toString):
(TypeDef):

  • WebGPUShadingLanguageRI/Visitor.js:

(Visitor.prototype.visitIfStatement):

2:35 PM Changeset in webkit [221828] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark svg/animations/animations-paused-in-background-page-iframe.html as a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=176660

Unreviewed test gardening.

  • platform/win/TestExpectations:
12:26 PM Changeset in webkit [221827] by Michael Catanzaro
  • 2 edits in trunk/Tools

[GTK] Unreviewed, fix typo forwad -> forward

  • MiniBrowser/gtk/BrowserWindow.c:

(browserWindowUpdateNavigationActions):
(backForwardlistChanged):
(browserWindowSwitchTab):
(backForwadlistChanged): Deleted.

11:06 AM Changeset in webkit [221826] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Skip web platform tests on Windows since many of them are very slow.
https://bugs.webkit.org/show_bug.cgi?id=176657

Unreviewed test gardening.

  • platform/win/TestExpectations:
9:58 AM Changeset in webkit [221825] by Ryan Haddad
  • 4 edits in trunk/Tools

Unreviewed, rolling out r221801.

This change introduced a webkitpy test failure.

Reverted changeset:

"bisect-builds doesn't work due to missing requests module"
https://bugs.webkit.org/show_bug.cgi?id=175709
http://trac.webkit.org/changeset/221801

9:56 AM Changeset in webkit [221824] by Ryan Haddad
  • 12 edits
    1 delete in trunk/Tools

Unreviewed, rolling out r221776.

This change caused wsl-tests.yaml/Test.js to time out on Debug
JSC bots.

Reverted changeset:

"Add "if" statements to WSL"
https://bugs.webkit.org/show_bug.cgi?id=176294
http://trac.webkit.org/changeset/221776

9:54 AM Changeset in webkit [221823] by Ryan Haddad
  • 35 edits
    1 delete in trunk/Source/JavaScriptCore

Unreviewed, rolling out r221774.

This change introduced three debug JSC test timeouts.

Reverted changeset:

"Use JIT probes for DFG OSR exit."
https://bugs.webkit.org/show_bug.cgi?id=175144
http://trac.webkit.org/changeset/221774

9:21 AM Changeset in webkit [221822] by mark.lam@apple.com
  • 191 edits in trunk/Source

Avoid duplicate computations of ExecState::vm().
https://bugs.webkit.org/show_bug.cgi?id=176647

Reviewed by Saam Barati.

Source/JavaScriptCore:

Because while computing ExecState::vm() is cheap, it is not free.

This patch also:

  1. gets rids of some convenience methods in CallFrame that implicitly does a ExecState::vm() computation. This minimizes the chance of us accidentally computing ExecState::vm() more than necessary.
  2. passes vm (when available) to methodTable().
  3. passes vm (when available) to JSLockHolder.
  • API/JSBase.cpp:

(JSCheckScriptSyntax):
(JSGarbageCollect):
(JSReportExtraMemoryCost):
(JSSynchronousGarbageCollectForDebugging):
(JSSynchronousEdenCollectForDebugging):

  • API/JSCallbackConstructor.h:

(JSC::JSCallbackConstructor::create):

  • API/JSCallbackObject.h:

(JSC::JSCallbackObject::create):

  • API/JSContext.mm:

(-[JSContext setException:]):

  • API/JSContextRef.cpp:

(JSContextGetGlobalObject):
(JSContextCreateBacktrace):

  • API/JSManagedValue.mm:

(-[JSManagedValue value]):

  • API/JSObjectRef.cpp:

(JSObjectMake):
(JSObjectMakeFunctionWithCallback):
(JSObjectMakeConstructor):
(JSObjectMakeFunction):
(JSObjectSetPrototype):
(JSObjectHasProperty):
(JSObjectGetProperty):
(JSObjectSetProperty):
(JSObjectSetPropertyAtIndex):
(JSObjectDeleteProperty):
(JSObjectGetPrivateProperty):
(JSObjectSetPrivateProperty):
(JSObjectDeletePrivateProperty):
(JSObjectIsFunction):
(JSObjectCallAsFunction):
(JSObjectCallAsConstructor):
(JSObjectCopyPropertyNames):
(JSPropertyNameAccumulatorAddName):

  • API/JSScriptRef.cpp:
  • API/JSTypedArray.cpp:

(JSValueGetTypedArrayType):
(JSObjectMakeTypedArrayWithArrayBuffer):
(JSObjectMakeTypedArrayWithArrayBufferAndOffset):
(JSObjectGetTypedArrayBytesPtr):
(JSObjectGetTypedArrayBuffer):
(JSObjectMakeArrayBufferWithBytesNoCopy):
(JSObjectGetArrayBufferBytesPtr):

  • API/JSWeakObjectMapRefPrivate.cpp:
  • API/JSWrapperMap.mm:

(constructorHasInstance):
(makeWrapper):

  • API/ObjCCallbackFunction.mm:

(objCCallbackFunctionForInvocation):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::jettison):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addConstant):
(JSC::CodeBlock::replaceConstant):

  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::computeFromLLInt):
(JSC::PutByIdStatus::computeFor):

  • dfg/DFGDesiredWatchpoints.cpp:

(JSC::DFG::ArrayBufferViewWatchpointAdaptor::add):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::globalThisObjectFor):

  • dfg/DFGOperations.cpp:
  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileFTLOSRExit):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationPopulateObjectInOSR):
(JSC::FTL::operationMaterializeObjectInOSR):

  • heap/GCAssertions.h:
  • inspector/InjectedScriptHost.cpp:

(Inspector::InjectedScriptHost::wrapper):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::subtype):
(Inspector::constructInternalProperty):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • inspector/JSJavaScriptCallFrame.cpp:

(Inspector::valueForScopeLocation):
(Inspector::JSJavaScriptCallFrame::scopeDescriptions):
(Inspector::toJS):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::extractSourceInformationFromException):
(Inspector::createScriptArguments):

  • interpreter/CachedCall.h:

(JSC::CachedCall::CachedCall):

  • interpreter/CallFrame.h:

(JSC::ExecState::atomicStringTable const): Deleted.
(JSC::ExecState::propertyNames const): Deleted.
(JSC::ExecState::emptyList const): Deleted.
(JSC::ExecState::interpreter): Deleted.
(JSC::ExecState::heap): Deleted.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JITOperations.cpp:
  • jit/JITWorklist.cpp:

(JSC::JITWorklist::compileNow):

  • jsc.cpp:

(WTF::RuntimeArray::create):
(WTF::RuntimeArray::getOwnPropertySlot):
(WTF::DOMJITGetter::DOMJITAttribute::slowCall):
(WTF::DOMJITFunctionObject::unsafeFunction):
(WTF::DOMJITCheckSubClassObject::unsafeFunction):
(GlobalObject::moduleLoaderFetch):
(functionDumpCallFrame):
(functionCreateRoot):
(functionGetElement):
(functionSetElementRoot):
(functionCreateSimpleObject):
(functionSetHiddenValue):
(functionCreateProxy):
(functionCreateImpureGetter):
(functionCreateCustomGetterObject):
(functionCreateDOMJITNodeObject):
(functionCreateDOMJITGetterObject):
(functionCreateDOMJITGetterComplexObject):
(functionCreateDOMJITFunctionObject):
(functionCreateDOMJITCheckSubClassObject):
(functionGCAndSweep):
(functionFullGC):
(functionEdenGC):
(functionHeapSize):
(functionShadowChickenFunctionsOnStack):
(functionSetGlobalConstRedeclarationShouldNotThrow):
(functionJSCOptions):
(functionFailNextNewCodeBlock):
(functionMakeMasquerader):
(functionDumpTypesForAllVariables):
(functionFindTypeForExpression):
(functionReturnTypeFor):
(functionDumpBasicBlockExecutionRanges):
(functionBasicBlockExecutionCount):
(functionDrainMicrotasks):
(functionGenerateHeapSnapshot):
(functionEnsureArrayStorage):
(functionStartSamplingProfiler):
(runInteractive):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • parser/ModuleAnalyzer.cpp:

(JSC::ModuleAnalyzer::ModuleAnalyzer):

  • profiler/ProfilerBytecode.cpp:

(JSC::Profiler::Bytecode::toJS const):

  • profiler/ProfilerBytecodeSequence.cpp:

(JSC::Profiler::BytecodeSequence::addSequenceProperties const):

  • profiler/ProfilerBytecodes.cpp:

(JSC::Profiler::Bytecodes::toJS const):

  • profiler/ProfilerCompilation.cpp:

(JSC::Profiler::Compilation::toJS const):

  • profiler/ProfilerCompiledBytecode.cpp:

(JSC::Profiler::CompiledBytecode::toJS const):

  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::toJS const):

  • profiler/ProfilerEvent.cpp:

(JSC::Profiler::Event::toJS const):

  • profiler/ProfilerOSRExit.cpp:

(JSC::Profiler::OSRExit::toJS const):

  • profiler/ProfilerOrigin.cpp:

(JSC::Profiler::Origin::toJS const):

  • profiler/ProfilerProfiledBytecodes.cpp:

(JSC::Profiler::ProfiledBytecodes::toJS const):

  • runtime/AbstractModuleRecord.cpp:

(JSC::identifierToJSValue):
(JSC::AbstractModuleRecord::resolveExportImpl):
(JSC::getExportedNames):

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):

  • runtime/BooleanConstructor.cpp:

(JSC::constructBooleanFromImmediateBoolean):

  • runtime/CallData.cpp:

(JSC::call):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:

(JSC::CommonSlowPaths::tryCachePutToScopeGlobal):
(JSC::CommonSlowPaths::tryCacheGetFromScopeGlobal):

  • runtime/Completion.cpp:

(JSC::checkSyntax):
(JSC::evaluate):
(JSC::loadAndEvaluateModule):
(JSC::loadModule):
(JSC::linkAndEvaluateModule):
(JSC::importModule):

  • runtime/ConstructData.cpp:

(JSC::construct):

  • runtime/DatePrototype.cpp:

(JSC::dateProtoFuncToJSON):

  • runtime/DirectArguments.h:

(JSC::DirectArguments::length const):

  • runtime/DirectEvalExecutable.cpp:

(JSC::DirectEvalExecutable::create):

  • runtime/ErrorPrototype.cpp:

(JSC::errorProtoFuncToString):

  • runtime/ExceptionHelpers.cpp:

(JSC::createUndefinedVariableError):
(JSC::errorDescriptionForValue):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunction):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertyNames):

  • runtime/IdentifierInlines.h:

(JSC::Identifier::add):

  • runtime/IndirectEvalExecutable.cpp:

(JSC::IndirectEvalExecutable::create):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::finishCreation):
(JSC::InternalFunction::createSubclassStructureSlow):

  • runtime/JSArray.cpp:

(JSC::JSArray::getOwnPropertySlot):
(JSC::JSArray::put):
(JSC::JSArray::deleteProperty):
(JSC::JSArray::getOwnNonIndexPropertyNames):
(JSC::JSArray::isIteratorProtocolFastAndNonObservable):

  • runtime/JSArray.h:

(JSC::JSArray::shiftCountForShift):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::dumpForBacktrace const):

  • runtime/JSDataView.cpp:

(JSC::JSDataView::getOwnPropertySlot):
(JSC::JSDataView::deleteProperty):
(JSC::JSDataView::getOwnNonIndexPropertyNames):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::getOwnPropertySlot):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::reifyName):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • runtime/JSInternalPromise.cpp:

(JSC::JSInternalPromise::then):

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::deleteProperty):

  • runtime/JSMap.cpp:

(JSC::JSMap::isIteratorProtocolFastAndNonObservable):

  • runtime/JSMapIterator.h:

(JSC::JSMapIterator::advanceIter):

  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::getOwnNonIndexPropertyNames):

  • runtime/JSModuleLoader.cpp:

(JSC::printableModuleKey):
(JSC::JSModuleLoader::provide):
(JSC::JSModuleLoader::loadAndEvaluateModule):
(JSC::JSModuleLoader::loadModule):
(JSC::JSModuleLoader::linkAndEvaluateModule):
(JSC::JSModuleLoader::requestImportModule):

  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::evaluate):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Stringifier):
(JSC::Stringifier::appendStringifiedValue):
(JSC::Stringifier::Holder::appendNextProperty):

  • runtime/JSObject.cpp:

(JSC::JSObject::calculatedClassName):
(JSC::JSObject::putByIndex):
(JSC::JSObject::ordinaryToPrimitive const):
(JSC::JSObject::toPrimitive const):
(JSC::JSObject::hasInstance):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::putDirectIndexSlowOrBeyondVectorLength):
(JSC::getCustomGetterSetterFunctionForGetterSetter):
(JSC::JSObject::getOwnPropertyDescriptor):
(JSC::JSObject::getMethod):

  • runtime/JSObject.h:

(JSC::JSObject::createRawObject):
(JSC::JSFinalObject::create):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::canPerformFastPutInline):
(JSC::JSObject::putInlineForJSObject):
(JSC::JSObject::hasOwnProperty const):

  • runtime/JSScope.cpp:

(JSC::isUnscopable):
(JSC::JSScope::resolveScopeForHoistingFuncDeclInEval):

  • runtime/JSSet.cpp:

(JSC::JSSet::isIteratorProtocolFastAndNonObservable):

  • runtime/JSSetIterator.h:

(JSC::JSSetIterator::advanceIter):

  • runtime/JSString.cpp:

(JSC::JSString::getStringPropertyDescriptor):

  • runtime/JSString.h:

(JSC::JSString::getStringPropertySlot):

  • runtime/MapConstructor.cpp:

(JSC::constructMap):

  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::create):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncToLocaleString):

  • runtime/ProgramExecutable.h:
  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::getOwnPropertySlot):
(JSC::RegExpObject::deleteProperty):
(JSC::RegExpObject::getOwnNonIndexPropertyNames):
(JSC::RegExpObject::getPropertyNames):
(JSC::RegExpObject::getGenericPropertyNames):
(JSC::RegExpObject::put):

  • runtime/ScopedArguments.h:

(JSC::ScopedArguments::length const):

  • runtime/StrictEvalActivation.h:

(JSC::StrictEvalActivation::create):

  • runtime/StringObject.cpp:

(JSC::isStringOwnProperty):
(JSC::StringObject::deleteProperty):
(JSC::StringObject::getOwnNonIndexPropertyNames):

  • tools/JSDollarVMPrototype.cpp:

(JSC::JSDollarVMPrototype::gc):
(JSC::JSDollarVMPrototype::edenGC):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::evaluate):

Source/WebCore:

No new tests because this is only a refactoring patch. There is no
significant behavior change.

  • Modules/mediastream/SDPProcessor.cpp:

(WebCore::SDPProcessor::callScript const):

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::QuickTimePluginReplacement::installReplacement):

  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackData::invokeCallback):

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
(WebCore::JSCustomElementInterface::invokeCallback):

  • bindings/js/JSDOMConvertRecord.h:
  • bindings/js/JSDOMMapLike.h:

(WebCore::forwardSizeToMapLike):
(WebCore::forwardEntriesToMapLike):
(WebCore::forwardKeysToMapLike):
(WebCore::forwardValuesToMapLike):
(WebCore::forwardGetToMapLike):
(WebCore::forwardHasToMapLike):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
(WebCore::addCrossOriginWindowOwnPropertyNames):

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::reportMemoryForDocumentIfFrameless):

  • bindings/js/JSErrorHandler.cpp:

(WebCore::JSErrorHandler::handleEvent):

  • bindings/js/JSImageDataCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::getOwnPropertySlotCommon):
(WebCore::putCommon):
(WebCore::addCrossOriginLocationPropertyNames):
(WebCore::addCrossOriginLocationOwnPropertyNames):
(WebCore::JSLocation::defineOwnProperty):
(WebCore::JSLocationPrototype::put):
(WebCore::JSLocationPrototype::defineOwnProperty):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/JSInterfaceName.cpp:

(WebCore::setJSInterfaceNameConstructor):

  • bindings/scripts/test/JS/JSMapLike.cpp:

(WebCore::setJSMapLikeConstructor):

  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:

(WebCore::setJSReadOnlyMapLikeConstructor):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::setJSTestActiveDOMObjectConstructor):

  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::setJSTestCEReactionsConstructor):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:

(WebCore::setJSTestCEReactionsStringifierConstructor):

  • bindings/scripts/test/JS/JSTestCallTracer.cpp:

(WebCore::setJSTestCallTracerConstructor):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:

(WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):

  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:

(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):

  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:

(WebCore::setJSTestDOMJITConstructor):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::setJSTestEnabledBySettingConstructor):

  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::setJSTestEventConstructorConstructor):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::setJSTestEventTargetConstructor):

  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::setJSTestExceptionConstructor):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::setJSTestGenerateIsReachableConstructor):

  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::setJSTestGlobalObjectConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:

(WebCore::setJSTestIndexedSetterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:

(WebCore::setJSTestIndexedSetterThrowingExceptionConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:

(WebCore::setJSTestIndexedSetterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::setJSTestInterfaceConstructor):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:

(WebCore::setJSTestInterfaceLeadingUnderscoreConstructor):

  • bindings/scripts/test/JS/JSTestIterable.cpp:

(WebCore::setJSTestIterableConstructor):

  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:

(WebCore::setJSTestJSBuiltinConstructorConstructor):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:

(WebCore::setJSTestMediaQueryListListenerConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:

(WebCore::setJSTestNamedAndIndexedSetterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:

(WebCore::setJSTestNamedAndIndexedSetterThrowingExceptionConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:

(WebCore::setJSTestNamedAndIndexedSetterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:

(WebCore::setJSTestNamedConstructorConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:

(WebCore::setJSTestNamedDeleterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:

(WebCore::setJSTestNamedDeleterThrowingExceptionConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:

(WebCore::setJSTestNamedDeleterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:

(WebCore::setJSTestNamedDeleterWithIndexedGetterConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:

(WebCore::setJSTestNamedGetterCallWithConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:

(WebCore::setJSTestNamedGetterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:

(WebCore::setJSTestNamedGetterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:

(WebCore::setJSTestNamedSetterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:

(WebCore::setJSTestNamedSetterThrowingExceptionConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:

(WebCore::setJSTestNamedSetterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:

(WebCore::setJSTestNamedSetterWithIndexedGetterConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:

(WebCore::setJSTestNamedSetterWithIndexedGetterAndSetterConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:

(WebCore::setJSTestNamedSetterWithOverrideBuiltinsConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:

(WebCore::setJSTestNamedSetterWithUnforgablePropertiesConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:

(WebCore::setJSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor):

  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::setJSTestNodeConstructor):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::setJSTestObjConstructor):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::setJSTestOverloadedConstructorsConstructor):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:

(WebCore::setJSTestOverrideBuiltinsConstructor):

  • bindings/scripts/test/JS/JSTestPluginInterface.cpp:

(WebCore::setJSTestPluginInterfaceConstructor):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:

(WebCore::setJSTestPromiseRejectionEventConstructor):

  • bindings/scripts/test/JS/JSTestSerialization.cpp:

(WebCore::setJSTestSerializationConstructor):

  • bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:

(WebCore::setJSTestSerializationIndirectInheritanceConstructor):

  • bindings/scripts/test/JS/JSTestSerializationInherit.cpp:

(WebCore::setJSTestSerializationInheritConstructor):

  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:

(WebCore::setJSTestSerializationInheritFinalConstructor):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::setJSTestSerializedScriptValueInterfaceConstructor):

  • bindings/scripts/test/JS/JSTestStringifier.cpp:

(WebCore::setJSTestStringifierConstructor):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:

(WebCore::setJSTestStringifierAnonymousOperationConstructor):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:

(WebCore::setJSTestStringifierNamedOperationConstructor):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:

(WebCore::setJSTestStringifierOperationImplementedAsConstructor):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:

(WebCore::setJSTestStringifierOperationNamedToStringConstructor):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:

(WebCore::setJSTestStringifierReadOnlyAttributeConstructor):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:

(WebCore::setJSTestStringifierReadWriteAttributeConstructor):

  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::setJSTestTypedefsConstructor):

  • bridge/NP_jsobject.cpp:

(_NPN_SetProperty):
(_NPN_RemoveProperty):
(_NPN_Enumerate):

  • bridge/c/c_instance.cpp:

(JSC::Bindings::CRuntimeMethod::create):

  • bridge/objc/WebScriptObject.mm:

(-[WebScriptObject setValue:forKey:]):
(-[WebScriptObject removeWebScriptKey:]):
(-[WebScriptObject setWebScriptValueAtIndex:value:]):

  • bridge/objc/objc_instance.mm:

(ObjCRuntimeMethod::create):

  • bridge/objc/objc_runtime.h:

(JSC::Bindings::ObjcFallbackObjectImp::create):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::getOwnPropertyNames):
(JSC::RuntimeArray::getOwnPropertySlot):
(JSC::RuntimeArray::put):

  • bridge/runtime_array.h:

(JSC::RuntimeArray::create):

  • bridge/runtime_method.cpp:

(JSC::RuntimeMethod::getOwnPropertySlot):

  • bridge/runtime_method.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::updateCaptionContainer):
(WebCore::HTMLMediaElement::setControllerJSProperty):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
(WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):

  • testing/Internals.cpp:

(WebCore::Internals::cloneArrayBuffer):

Source/WebKit:

  • WebProcess/Plugins/Netscape/JSNPMethod.h:

(WebKit::JSNPMethod::create):

  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::NPJSObject::setProperty):
(WebKit::NPJSObject::removeProperty):
(WebKit::NPJSObject::enumerate):

Source/WebKitLegacy/mac:

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::invokeDefault):
(WebKit::NetscapePluginInstanceProxy::construct):
(WebKit::NetscapePluginInstanceProxy::setProperty):
(WebKit::NetscapePluginInstanceProxy::removeProperty):
(WebKit::NetscapePluginInstanceProxy::enumerate):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyRuntimeMethod::create):

9:15 AM Changeset in webkit [221821] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/security/canvas-remote-read-remote-video-allowed-with-credentials.html as a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=176653

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:55 AM Changeset in webkit [221820] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark web platform tests as slow on Windows.

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:31 AM Changeset in webkit [221819] by Michael Catanzaro
  • 2 edits in trunk/Tools

MiniBrowser closes tab instead of window on close signal
https://bugs.webkit.org/show_bug.cgi?id=176587

Reviewed by Carlos Garcia Campos.

This has been broken since we added support for multiple tabs. We need to run try_close for
every open tab, not just the current one. If there are no onbeforeonload handlers then all
tabs will close; if there are some, then they'll be respected, but the remaining tabs will
be closed.

Note that we cannot simply iterate through the tabs of the GtkNotebook, as we'd be deleting
tabs as we go, so save all the tabs into a separate list and then try to close each in turn.

  • MiniBrowser/gtk/BrowserWindow.c:

(browserWindowTryClose):
(browserWindowDeleteEvent):

8:28 AM Changeset in webkit [221818] by zandobersek@gmail.com
  • 4 edits in trunk/LayoutTests

Unreviewed GTK+ gardening.

Added failure expectation for the HTTP test introduced in r221633,
and updated baselines for the editing/execCommand/print.html test.

  • platform/gtk/TestExpectations:
  • platform/gtk/editing/execCommand/print-expected.png:
  • platform/gtk/editing/execCommand/print-expected.txt:
8:02 AM Changeset in webkit [221817] by zandobersek@gmail.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Adding ImageOnlyFailure expectations
for reference tests failing after Freetype changes in r221670
and r221724.

  • platform/gtk/TestExpectations:
5:42 AM Changeset in webkit [221816] by zandobersek@gmail.com
  • 5 edits in trunk/Source/WebCore

[EME] MediaKeySession: handle MediaKeys association through a WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=176584

Reviewed by Xabier Rodriguez-Calvar.

Don't keep a raw pointer to the originating MediaKeys object in
MediaKeySession that gets nulled out once MediaKeys is destroyed.
Instead, make MediaKeys a WeakPtrFactory and use a WeakPtr<MediaKeys>
object to maintain the association between MediaKeySession and
MediaKeys.

  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::create):
(WebCore::MediaKeySession::MediaKeySession):
(WebCore::MediaKeySession::detachKeys): Deleted.

  • Modules/encryptedmedia/MediaKeySession.h:
  • Modules/encryptedmedia/MediaKeys.cpp:

(WebCore::MediaKeys::MediaKeys):
(WebCore::MediaKeys::createSession):
(WebCore::MediaKeys::~MediaKeys): Deleted.

  • Modules/encryptedmedia/MediaKeys.h:
5:38 AM Changeset in webkit [221815] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

[GStreamer] Missing GRefPtr adoptions in MediaPlayerPrivateGStreamerBase, PlaybackPipeline
https://bugs.webkit.org/show_bug.cgi?id=176646

Reviewed by Carlos Garcia Campos.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::registerWebKitGStreamerElements): Adopt the return value
of gst_element_factory_find(), which is transferred in full.

  • platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:

(WebCore::PlaybackPipeline::flush): Adopt the return values
of gst_element_get_static_pad() and gst_pad_get_peer(), both being
transferred in full.

5:29 AM Changeset in webkit [221814] by zandobersek@gmail.com
  • 2 edits in trunk/Tools

Unreviewed WPE build fix.

  • TestWebKitAPI/PlatformWPE.cmake:

Link WebCore archives into the TestWebCore binary as a group.

2:35 AM Changeset in webkit [221813] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Use RenderLayerBacking::renderer() when possible
https://bugs.webkit.org/show_bug.cgi?id=176585

The private member renderer() is a shorthand for m_owningLayer.renderer(). This patch uses
it in RenderLayerBacking when possible.

Patch by Frederic Wang <fwang@igalia.com> on 2017-09-09
Reviewed by Carlos Garcia Campos.

No new tests, behavior not changed.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::setContentsNeedDisplay):
(WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):

12:46 AM Changeset in webkit [221812] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r221808 - WebDriver: ensure we close all windows handles when closing the session
https://bugs.webkit.org/show_bug.cgi?id=176508

Reviewed by Brian Burg.

The spec says that when closing the session all top level browsing contexts should be closed. We are currently
checking if we have an active top level browsing context and then we try to close it before trying with the
rest. It can happen that we are in an inconsistent state, for example if the current top level browsing context
has been closed by JavaScript or another action and the user didn't switch to another one before closing the
session. In such case, closing the session will fail with NoSuchwindow and any other window open will not be
closed. It's safer to always ask for all window handles and close them, which is what the spec says too.

  • Session.cpp:

(WebDriver::firstWindowHandleInResult): Helper class to get the first window handle in the result array.
(WebDriver::Session::closeAllToplevelBrowsingContexts): Use firstWindowHandleInResult().
(WebDriver::Session::close): Close the current top level browsing context and get all window handles to close
them all if needed.

12:45 AM Changeset in webkit [221811] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebCore

Merge r221677 - Missing break in URLParser
https://bugs.webkit.org/show_bug.cgi?id=176357

Reviewed by Darin Adler.

Add a missing break so the currently set state is not overwritten
after the block. Found by Coverity scan.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

12:44 AM Changeset in webkit [221810] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebCore

Merge r221742 - [ARM] Building FELightningNEON.cpp fails due to missing {Point,Spot}LightSource declarations
https://bugs.webkit.org/show_bug.cgi?id=176531

Reviewed by Žan Doberšek.

The m_lightSource member is a Ref<LightSource>, and its get() method returns
a reference, therefore the casts have to be done to the corresponding reference
types.

  • platform/graphics/cpu/arm/filters/FELightingNEON.h:

(WebCore::FELighting::platformApplyNeon): Adjust casts and member accesses accordingly.

12:42 AM Changeset in webkit [221809] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/bmalloc

Merge r221588 - Unreviewed build fix for Clang with libc++

Fixes a build failure when building with Clang, -stdlib=libc++, and gigacage
support enabled, which resulted in "stderr" being undefined.

  • bmalloc/Gigacage.cpp: Add missing <ctsdio> include to pull the definition.
12:14 AM Changeset in webkit [221808] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebDriver

WebDriver: ensure we close all windows handles when closing the session
https://bugs.webkit.org/show_bug.cgi?id=176508

Reviewed by Brian Burg.

The spec says that when closing the session all top level browsing contexts should be closed. We are currently
checking if we have an active top level browsing context and then we try to close it before trying with the
rest. It can happen that we are in an inconsistent state, for example if the current top level browsing context
has been closed by JavaScript or another action and the user didn't switch to another one before closing the
session. In such case, closing the session will fail with NoSuchwindow and any other window open will not be
closed. It's safer to always ask for all window handles and close them, which is what the spec says too.

  • Session.cpp:

(WebDriver::firstWindowHandleInResult): Helper class to get the first window handle in the result array.
(WebDriver::Session::closeAllToplevelBrowsingContexts): Use firstWindowHandleInResult().
(WebDriver::Session::close): Close the current top level browsing context and get all window handles to close
them all if needed.

Sep 8, 2017:

10:19 PM Changeset in webkit [221807] by Yusuke Suzuki
  • 3 edits
    1 add in trunk

[DFG] NewArrayWithSize(size)'s size does not care negative zero
https://bugs.webkit.org/show_bug.cgi?id=176300

Reviewed by Saam Barati.

JSTests:

  • stress/new-array-with-size-div.js: Added.

(shouldBe):
(test):
(i.i):

Source/JavaScriptCore:

NewArrayWithSize(size)'s size does not care negative zero as
is the same to NewTypedArray. We propagate this information
in DFGBackwardsPropagationPhase. This removes negative zero
check in kraken fft's deinterleave function.

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::propagate):

8:32 PM Changeset in webkit [221806] by commit-queue@webkit.org
  • 13 edits
    2 deletes in trunk/Source/WebCore

Replace JS builtin implementation of the FetchResponse constructor with a C++ one
https://bugs.webkit.org/show_bug.cgi?id=176627

Patch by Sam Weinig <sam@webkit.org> on 2017-09-08
Reviewed by Alex Christensen.

Removes the last of the Fetch related JS builtin code.

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • Modules/fetch/FetchInternals.js: Removed.
  • Modules/fetch/FetchResponse.js: Removed.

Remove FetchInternals.js and FetchResponse.js.

  • Modules/fetch/FetchBody.idl:
  • Modules/fetch/FetchBodyConsumer.h:

Remove no longer correct FIXMEs.

  • Modules/fetch/FetchBodySource.cpp:

Add missing newline between functions.

  • Modules/fetch/FetchHeaders.idl:
  • Modules/fetch/FetchResponse.idl:

Remove builtin related operations and extended attributes.

  • Modules/fetch/FetchHeaders.h:

(WebCore::FetchHeaders::fastHas const):

  • Modules/fetch/FetchHeaders.cpp:

Added fastHas to allow checking for a header using a HTTPHeaderName. Remove
now unused filter function.

  • Modules/fetch/FetchResponse.cpp:

(WebCore::isNullBodyStatus):

Added helper predicate for 'null body status' concept.

(WebCore::FetchResponse::create):

Add spec defined constructor implementation.

(WebCore::FetchResponse::setBodyData):

Reformatted to match more common WTF::switchOn style.

(WebCore::FetchResponse::setStatus): Deleted.
(WebCore::FetchResponse::initializeWith): Deleted.

Removed now unused functions.

  • Modules/fetch/FetchResponse.h:

(WebCore::FetchResponse::create):

Move inline create out of the class definition to make things a bit less crowded.

8:09 PM Changeset in webkit [221805] by commit-queue@webkit.org
  • 10 edits
    10 adds in trunk

Implement HTMLImageElement.decoode() method
https://bugs.webkit.org/show_bug.cgi?id=176016

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-09-08
Reviewed by Simon Fraser.

Source/WebCore:

The specs is:
https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode.

-- img.decode() waits till loading the image finishes. Otherwise it starts
decoding the image immediately.
-- If the image frame is already decoded, the promise will be resolved
before return.
-- If an error happens in loading the image or decoding the image frame,
the promise will be rejected with 'EncodingError' exception.
-- Animated image resolves the promise when the next frame is decoded and
the animation is advanced it. If the image is not displayed, decode() will
request the decoding the first frame and start animating the image.

Tests: fast/images/decode-animated-image.html

fast/images/decode-render-animated-image.html
fast/images/decode-render-static-image.html
fast/images/decode-static-image-reject.html
fast/images/decode-static-image-resolve.html

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::decode):

  • html/HTMLImageElement.h:
  • html/HTMLImageElement.idl:
  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::notifyFinished):
(WebCore::ImageLoader::decode):
(WebCore::ImageLoader::decodeError):

  • loader/ImageLoader.h:

(WebCore::ImageLoader::hasPendingDecodePromise const):

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::internalStartAnimation):
(WebCore::BitmapImage::internalAdvanceAnimation):
(WebCore::BitmapImage::decode):
(WebCore::BitmapImage::imageFrameAvailableAtIndex):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::decode):

LayoutTests:

  • fast/images/decode-animated-image-expected.html: Added.
  • fast/images/decode-animated-image.html: Added.
  • fast/images/decode-render-animated-image-expected.html: Added.
  • fast/images/decode-render-animated-image.html: Added.
  • fast/images/decode-render-static-image-expected.html: Added.
  • fast/images/decode-render-static-image.html: Added.
  • fast/images/decode-static-image-reject-expected.txt: Added.
  • fast/images/decode-static-image-reject.html: Added.
  • fast/images/decode-static-image-resolve-expected.html: Added.
  • fast/images/decode-static-image-resolve.html: Added.
5:33 PM Changeset in webkit [221804] by commit-queue@webkit.org
  • 5 edits
    7 adds in trunk

Fetch's Response.statusText is unexpectedly the full http status line for HTTP/2 responses
https://bugs.webkit.org/show_bug.cgi?id=176479

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-09-08
Reviewed by Alex Christensen.

Source/WebCore:

Test: http/wpt/fetch/response-status-text.html

HTTP/2 doesn't include a status reason phrase. So the "status line"
ends up just being the version and status code. Fallback to the empty
string instead of the full line.

  • platform/network/HTTPParsers.cpp:

(WebCore::extractReasonPhraseFromHTTPStatusLine):

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
Initialize AtomicString statics like emptyAtom().

LayoutTests:

  • http/wpt/fetch/resources/status-garbage.asis: Added.
  • http/wpt/fetch/resources/status-normal.txt: Added.
  • http/wpt/fetch/resources/status-with-message.asis: Added.
  • http/wpt/fetch/resources/status-without-message.asis: Added.

Various text HTTP responses with different status lines.

  • http/wpt/fetch/response-status-text-expected.txt: Added.
  • http/wpt/fetch/response-status-text.html: Added.

Test the Fetch Response's status / statusText for different HTTP status lines.
The status without a message is similiar to HTTP/2 because HTTP/2 only
has a :status pseudo-header and lacks a reason phrase.

5:10 PM Changeset in webkit [221803] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

Implement the attribute HTMLImageElement.async
https://bugs.webkit.org/show_bug.cgi?id=176204

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-09-08
Reviewed by Darin Adler.

Source/WebCore:

Adding this attribute to the <img> element will force async decoding for
this image all the times. None of the heuristics, which prevents flickering
the image, will be checked.

Test: fast/images/async-attribute-with-small-image.html

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::parseAttribute):

  • html/HTMLImageElement.h:

(WebCore::HTMLImageElement::async const):

  • html/HTMLImageElement.idl:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::decodingModeForImageDraw const):

LayoutTests:

  • fast/images/async-attribute-with-small-image-expected.html: Added.
  • fast/images/async-attribute-with-small-image.html: Added.
4:11 PM Changeset in webkit [221802] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Fix duplicate entry warnings on Windows.

Unreviewed test gardening.

  • platform/win/TestExpectations:
4:00 PM Changeset in webkit [221801] by Lucas Forschler
  • 4 edits in trunk/Tools

bisect-builds doesn't work due to missing requests module
https://bugs.webkit.org/show_bug.cgi?id=175709

Reviewed by Ryosuke Niwa.

  • Scripts/bisect-builds: update import to webkitpy.thirdparty.autoinstalled
  • Scripts/webkitpy/thirdparty/init.py: add logic to install requests module.

(AutoinstallImportHook.find_module):
(AutoinstallImportHook):
(AutoinstallImportHook._install_requests):

  • Scripts/webkitpy/thirdparty/init_unittest.py:

(ThirdpartyTest.test_imports):

3:09 PM Changeset in webkit [221800] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Uncaught Exception: TypeError: this._heapSnapshot.addEventListener is not a function.
https://bugs.webkit.org/show_bug.cgi?id=176633

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-09-08
Reviewed by Michael Saboff.

  • UserInterface/Proxies/HeapSnapshotDiffProxy.js:

(WI.HeapSnapshotDiffProxy):
This class has listeners of another object's events. It should extend WI.Object.

2:27 PM Changeset in webkit [221799] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/websocket/tests/hybi/websocket-pending-activity.html as a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=176632

Unreviewed test gardening.

  • platform/win/TestExpectations:
1:37 PM Changeset in webkit [221798] by webkit@devinrousso.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas: changes to currentX/currentY aren't highlighted in the details sidebar
https://bugs.webkit.org/show_bug.cgi?id=176569

Reviewed by Matt Baker.

  • UserInterface/Models/RecordingAction.js:

Add entries to WI.RecordingAction._stateModifiers for each path function.

1:31 PM Changeset in webkit [221797] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Added timeout expectation to imported/w3c/web-platform-tests/IndexedDB/large-nested-cloning.html on mac.
https://bugs.webkit.org/show_bug.cgi?id=173487

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:24 PM Changeset in webkit [221796] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/security/canvas-remote-read-remote-video-allowed-anonymous.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=176626.

Unreviewed test gardening.

  • platform/win/TestExpectations:
12:30 PM Changeset in webkit [221795] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-element.html as slow.

Unreviewed test gardening.

  • platform/win/TestExpectations:
12:03 PM Changeset in webkit [221794] by commit-queue@webkit.org
  • 11 edits in trunk/Source

Unreviewed, rolling out r221773.
https://bugs.webkit.org/show_bug.cgi?id=176614

This caused build failures. (Requested by mlewis13 on
#webkit).

Reverted changeset:

"[Mac] Upstream QTKit-related WebKitSystemInterface functions"
https://bugs.webkit.org/show_bug.cgi?id=176472
http://trac.webkit.org/changeset/221773

11:58 AM Changeset in webkit [221793] by Yusuke Suzuki
  • 11 edits
    2 adds in trunk

[DFG] PutByVal with Array::Generic is too generic
https://bugs.webkit.org/show_bug.cgi?id=176345

Reviewed by Filip Pizlo.

JSTests:

  • stress/object-assign-symbols.js: Added.

(shouldBe):
(test):

  • stress/object-assign.js: Added.

(shouldBe):
(test):
(i.shouldBe.JSON.stringify.test):

Source/JavaScriptCore:

Our DFG/FTL's PutByVal with Array::Generic is too generic implementation.
We could have the case like,

dst[key] = src[key];

with string or symbol keys. But they are handled in slow path.
This patch adds PutByVal(CellUse, StringUse/SymbolUse, UntypedUse). They go
to optimized path that does not have generic checks like (isInt32() / isDouble() etc.).

This improves SixSpeed object-assign.es5 by 9.1%.

object-assign.es5 424.3159+-11.0471 388.8771+-10.9239 definitely 1.0911x faster

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGOperations.cpp:

(JSC::DFG::putByVal):
(JSC::DFG::putByValInternal):
(JSC::DFG::putByValCellInternal):
(JSC::DFG::putByValCellStringInternal):
(JSC::DFG::operationPutByValInternal): Deleted.

  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePutByValForCellWithString):
(JSC::DFG::SpeculativeJIT::compilePutByValForCellWithSymbol):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):

  • jit/JITOperations.h:
11:55 AM Changeset in webkit [221792] by Lucas Forschler
  • 1 edit in trunk/Tools/ChangeLog

Test commit to verify trac sync is working.

11:46 AM Changeset in webkit [221791] by commit-queue@webkit.org
  • 2 edits
    5 adds in trunk/Source/WebKit

[WinCairo] Add Storage Process files for wincairo webkit
https://bugs.webkit.org/show_bug.cgi?id=176567

Patch by Stephan Szabo <stephan.szabo@am.sony.com> on 2017-09-08
Reviewed by Alex Christensen.

  • PlatformWin.cmake:
  • StorageProcess/EntryPoint/win/StorageProcessMain.cpp: Added.

(main):

  • StorageProcess/win/StorageProcessMainWin.cpp: Added.

(WebKit::StorageProcessMainWin):

  • StorageProcess/win/StorageProcessMainWin.h: Added.
11:45 AM Changeset in webkit [221790] by Lucas Forschler
  • 1 edit in trunk/Tools/ChangeLog

Test commit to verify git sync is working.

10:25 AM Changeset in webkit [221789] by Lucas Forschler
  • 2 edits in trunk/Tools

bisect-builds should not print out extracting command
https://bugs.webkit.org/show_bug.cgi?id=175632

Reviewed by Alexey Proskuryakov.

  • Scripts/bisect-builds:

(extract_archive):

9:35 AM Changeset in webkit [221788] by Antti Koivisto
  • 40 edits
    10 deletes in trunk

Remove support for >> descendant combinator syntax
https://bugs.webkit.org/show_bug.cgi?id=175765

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Tests for these have been removed in WPT master, just update expectations until new version is imported.

  • web-platform-tests/dom/nodes/Element-matches-expected.txt:
  • web-platform-tests/dom/nodes/Element-webkitMatchesSelector-expected.txt:
  • web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
  • web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt:

Source/WebCore:

This is an alternative syntax for the normal descendant combinator (just space) that was
advertised as being consistent with > (child combinator) and >>> (shadow piercing combinator).
The latter has been killed so it is not consistent with anything anymore.

No other engine besides WebKit has implemented this and the WPT tests have been removed
(in https://github.com/w3c/web-platform-tests/pull/6785). Full removal from spec is still
open (https://github.com/w3c/csswg-drafts/issues/641) but we shouldn't encourage adoption of
this pointless feature.

While this has shipped the compatibility risk is low as no other engine implemented it and
there were no incentives to use it over the standard syntax.

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • css/CSSSelector.h:

(WebCore::CSSSelector::hasDescendantRelation const):

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::matchRecursively const):

  • css/SelectorFilter.cpp:

(WebCore::SelectorFilter::collectIdentifierHashes):

  • css/parser/CSSParserSelector.cpp:

(WebCore::CSSParserSelector::appendTagHistory):

  • css/parser/CSSParserSelector.h:
  • css/parser/CSSSelectorParser.cpp:

(WebCore::isDescendantCombinator):
(WebCore::CSSSelectorParser::consumeCombinator):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::fragmentRelationForSelectorRelation):

LayoutTests:

  • fast/css/ancestor-of-hovered-element-removed.html:
  • fast/css/css-selector-text-expected.txt:
  • fast/css/css-selector-text.html:
  • fast/css/css-set-selector-text-expected.txt:
  • fast/css/css-set-selector-text.html:
  • fast/css/currentColor-value-style-update.html:
  • fast/css/descendant-combinator-doubled-child-syntax-styling-expected.html: Removed.
  • fast/css/descendant-combinator-doubled-child-syntax-styling.html: Removed.
  • fast/css/parsing-css-attribute-case-insensitive-value-1-expected.txt:
  • fast/css/parsing-css-attribute-case-insensitive-value-1.html:
  • fast/css/parsing-css-attribute-case-insensitive-value-4-expected.txt:
  • fast/css/parsing-css-attribute-case-insensitive-value-4.html:
  • fast/css/parsing-css-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
  • fast/css/parsing-css-descendant-combinator-doubled-child-syntax.html: Removed.
  • fast/selectors/case-insensitive-attribute-register-requirement-2.html:
  • fast/selectors/element-closest-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
  • fast/selectors/element-closest-descendant-combinator-doubled-child-syntax.html: Removed.
  • fast/selectors/element-matches-attribute-ascii-case-insensitive-html.html:
  • fast/selectors/element-matches-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
  • fast/selectors/element-matches-descendant-combinator-doubled-child-syntax.html: Removed.
  • fast/selectors/id-attribute-querySelector-used-as-id-selector-quirks.html:
  • fast/selectors/id-attribute-querySelector-used-as-id-selector.html:
  • fast/selectors/nth-child-matching-first.html:
  • fast/selectors/nth-last-child-matching-first.html:
  • fast/selectors/querySelector-attribute-ascii-case-insensitive-html.html:
  • fast/selectors/querySelector-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
  • fast/selectors/querySelector-descendant-combinator-doubled-child-syntax.html: Removed.
9:19 AM Changeset in webkit [221787] by Ryan Haddad
  • 9 edits in trunk/Source/WebKit

Unreviewed, rolling out r221771.

This change caused two API tests to crash.

Reverted changeset:

"Clean up API::UIClient"
https://bugs.webkit.org/show_bug.cgi?id=176568
http://trac.webkit.org/changeset/221771

9:03 AM Changeset in webkit [221786] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/websocket/tests/hybi/close-code-and-reason.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=176609.

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:57 AM Changeset in webkit [221785] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/preload/single_download_preload_headers.php as flaky.
https://bugs.webkit.org/show_bug.cgi?id=176606.

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:43 AM Changeset in webkit [221784] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/security/contentSecurityPolicy/audio-redirect-allowed2.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=176598.

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:36 AM Changeset in webkit [221783] by Yusuke Suzuki
  • 10 edits
    4 adds in trunk

[DFG][FTL] GetByVal(ObjectUse with Array::Generic, StringUse/SymbolUse) should be supported
https://bugs.webkit.org/show_bug.cgi?id=176590

Reviewed by Saam Barati.

JSTests:

  • microbenchmarks/object-iterate-symbols.js: Added.

(test):

  • microbenchmarks/object-iterate.js: Added.

(test):

  • stress/object-iterate-symbols.js: Added.

(shouldBe):
(test):

  • stress/object-iterate.js: Added.

(shouldBe):
(test):

Source/JavaScriptCore:

We add fixup edges for GetByVal(Array::Generic) to call faster operation instead of generic operationGetByVal.

baseline patched

object-iterate 5.8531+-0.3029 5.7903+-0.2795 might be 1.0108x faster
object-iterate-symbols 7.4099+-0.3993 5.8254+-0.2276 definitely 1.2720x faster

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGOperations.cpp:

(JSC::DFG::getByValObject):

  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithString):
(JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithSymbol):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):

8:06 AM WebKitGTK/Gardening/Calendar edited by zandobersek@gmail.com
(diff)
3:57 AM Changeset in webkit [221782] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

[GStreamer] initializationDataEncountered() dispatch can outlive MediaPlayerPrivateGStreamerBase
https://bugs.webkit.org/show_bug.cgi?id=176544

Reviewed by Xabier Rodriguez-Calvar.

The RunLoop dispatch that invokes MediaPlayer::initializationDataEncountered()
can outlive the MediaPlayerPrivateGStreamerBase object that is referenced
from the dispatched functor. To avoid this, a WeakPtrFactory is placed onto
MediaPlayerPrivateGStreamerBase and a WeakPtr object is kept in the functor,
bailing during dispatch if the factory (along with MediaPlayerPrivateGStreamerBase)
has already been destroyed since the schedule of this dispatch.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::handleSyncMessage):
Also remove the unused sessionId string.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
3:55 AM Changeset in webkit [221781] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

[GStreamer] Add GRefPtr specializations for GstGLDisplay, GstGLContext
https://bugs.webkit.org/show_bug.cgi?id=176543

Reviewed by Xabier Rodriguez-Calvar.

Both GstGLDisplay and GstGLContext inherit from GstObject, meaning
gst_object_ref_sink() and gst_object_unref() should be used for
incrementing and decrementing reference count. Template specializations
for the adoptGRef(), refGPtr() and derefGPtr() are added for both types,
preventing GRefPtr<> from falling back to using g_object_ref() and
g_object_unref() for reference count modification purposes.

  • platform/graphics/gstreamer/GRefPtrGStreamer.cpp:

(WTF::adoptGRef):
(WTF::refGPtr<GstGLDisplay>):
(WTF::derefGPtr<GstGLDisplay>):
(WTF::refGPtr<GstGLContext>):
(WTF::derefGPtr<GstGLContext>):

  • platform/graphics/gstreamer/GRefPtrGStreamer.h:
3:54 AM Changeset in webkit [221780] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[GStreamer] Incorrect GstCaps unreffing in GStreamerEMEUtilities::createDecryptor()
https://bugs.webkit.org/show_bug.cgi?id=176540

Reviewed by Xabier Rodriguez-Calvar.

  • platform/graphics/gstreamer/eme/GStreamerEMEUtilities.cpp:

Include the GRefPtrGStreamer.h header in order to use specialized template
functions that correctly adopt and dereference GstCaps object that is
wrapped the GRefPtr<>.

Note: See TracTimeline for information about the timeline view.