Timeline



Jan 10, 2016:

11:27 PM Changeset in webkit [194843] by bshafiei@apple.com
  • 7 edits in tags/Safari-601.5.8.2/Source/WebCore

Merged r194719. rdar://problem/23769758

11:22 PM Changeset in webkit [194842] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.5.8.2/Source

Versioning.

11:19 PM Changeset in webkit [194841] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.5.8.2

New tag.

10:49 PM Changeset in webkit [194840] by sbarati@apple.com
  • 34 edits
    9 adds in trunk

Implement a sampling profiler
https://bugs.webkit.org/show_bug.cgi?id=151713

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch implements a sampling profiler for JavaScriptCore
that will be used in the Inspector UI. The implementation works as follows:
We queue the sampling profiler to run a task on a background
thread every 1ms. When the queued task executes, the sampling profiler
will pause the JSC execution thread and attempt to take a stack trace.
The sampling profiler does everything it can to be very careful
while taking this stack trace. Because it's reading arbitrary memory,
the sampling profiler must validate every pointer it reads from.

The sampling profiler tries to get an ExecutableBase for every call frame
it reads. It first tries to read the CodeBlock slot. It does this because
it can be 100% certain that a pointer is a CodeBlock while it's taking a
stack trace. But, not every call frame will have a CodeBlock. So we must read
the call frame's callee. For these stack traces where we read the callee, we
must verify the callee pointer, and the pointer traversal to an ExecutableBase,
on the main JSC execution thread, and not on the thread taking the stack
trace. We do this verification either before we run the marking phase in
GC, or when somebody asks the SamplingProfiler to materialize its data.

The SamplingProfiler must also be careful to not grab any locks while the JSC execution
thread is paused (this means it can't do anything that mallocs) because
that could cause a deadlock. Therefore, the sampling profiler grabs
locks for all data structures it consults before it pauses the JSC
execution thread.

(JSC::CodeBlock::clearVisitWeaklyHasBeenCalled):
(JSC::CodeBlockSet::mark):

  • dfg/DFGNodeType.h:
  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::add):
(JSC::CodeBlockSet::promoteYoungCodeBlocks):
(JSC::CodeBlockSet::clearMarksForFullCollection):
(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):
(JSC::CodeBlockSet::contains):
(JSC::CodeBlockSet::writeBarrierCurrentlyExecutingCodeBlocks):
(JSC::CodeBlockSet::remove): Deleted.

  • heap/CodeBlockSet.h:

(JSC::CodeBlockSet::getLock):
(JSC::CodeBlockSet::iterate):
The sampling pofiler uses the heap's CodeBlockSet to validate
CodeBlock pointers. This data structure must now be under a lock
because we must be certain we're not pausing the JSC execution thread
while it's manipulating this data structure.

  • heap/ConservativeRoots.cpp:

(JSC::ConservativeRoots::ConservativeRoots):
(JSC::ConservativeRoots::grow):
(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::genericAddSpan):
(JSC::ConservativeRoots::add):
(JSC::CompositeMarkHook::CompositeMarkHook):
(JSC::CompositeMarkHook::mark):

  • heap/ConservativeRoots.h:
  • heap/Heap.cpp:

(JSC::Heap::markRoots):
(JSC::Heap::visitHandleStack):
(JSC::Heap::visitSamplingProfiler):
(JSC::Heap::traceCodeBlocksAndJITStubRoutines):
(JSC::Heap::snapshotMarkedSpace):

  • heap/Heap.h:

(JSC::Heap::structureIDTable):
(JSC::Heap::codeBlockSet):

  • heap/MachineStackMarker.cpp:

(pthreadSignalHandlerSuspendResume):
(JSC::getCurrentPlatformThread):
(JSC::MachineThreads::MachineThreads):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::Thread::createForCurrentThread):
(JSC::MachineThreads::Thread::operator==):
(JSC::isThreadInList):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::machineThreadForCurrentThread):
(JSC::MachineThreads::removeThread):
(JSC::MachineThreads::gatherFromCurrentThread):
(JSC::MachineThreads::Thread::Thread):
(JSC::MachineThreads::Thread::~Thread):
(JSC::MachineThreads::Thread::suspend):
(JSC::MachineThreads::Thread::resume):
(JSC::MachineThreads::Thread::getRegisters):
(JSC::MachineThreads::Thread::Registers::stackPointer):
(JSC::MachineThreads::Thread::Registers::framePointer):
(JSC::MachineThreads::Thread::Registers::instructionPointer):
(JSC::MachineThreads::Thread::freeRegisters):
(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::pthreadSignalHandlerSuspendResume): Deleted.
(JSC::MachineThreads::Thread::operator!=): Deleted.

  • heap/MachineStackMarker.h:

(JSC::MachineThreads::Thread::operator!=):
(JSC::MachineThreads::getLock):
(JSC::MachineThreads::threadsListHead):
We can now ask a MachineThreads::Thread for its frame pointer
and program counter on darwin and windows platforms. efl
and gtk implementations will happen in another patch.

  • heap/MarkedBlockSet.h:

(JSC::MarkedBlockSet::getLock):
(JSC::MarkedBlockSet::add):
(JSC::MarkedBlockSet::remove):
(JSC::MarkedBlockSet::recomputeFilter):
(JSC::MarkedBlockSet::filter):
(JSC::MarkedBlockSet::set):

  • heap/MarkedSpace.cpp:

(JSC::Free::Free):
(JSC::Free::operator()):
(JSC::FreeOrShrink::FreeOrShrink):
(JSC::FreeOrShrink::operator()):
(JSC::MarkedSpace::~MarkedSpace):
(JSC::MarkedSpace::isPagedOut):
(JSC::MarkedSpace::freeBlock):
(JSC::MarkedSpace::freeOrShrinkBlock):
(JSC::MarkedSpace::shrink):

  • heap/MarkedSpace.h:

(JSC::MarkedSpace::forEachLiveCell):
(JSC::MarkedSpace::forEachDeadCell):

  • interpreter/CallFrame.h:

(JSC::ExecState::calleeAsValue):
(JSC::ExecState::callee):
(JSC::ExecState::unsafeCallee):
(JSC::ExecState::codeBlock):
(JSC::ExecState::scope):

  • jit/ExecutableAllocator.cpp:

(JSC::ExecutableAllocator::dumpProfile):
(JSC::ExecutableAllocator::getLock):
(JSC::ExecutableAllocator::isValidExecutableMemory):

  • jit/ExecutableAllocator.h:
  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::isValidExecutableMemory):
(JSC::ExecutableAllocator::getLock):
(JSC::ExecutableAllocator::committedByteCount):
The sampling profiler consults the ExecutableAllocator to check
if the frame pointer it reads is in executable allocated memory.

  • jsc.cpp:

(GlobalObject::finishCreation):
(functionCheckModuleSyntax):
(functionStartSamplingProfiler):
(functionSamplingProfilerStackTraces):

  • llint/LLIntPCRanges.h: Added.

(JSC::LLInt::isLLIntPC):

  • offlineasm/asm.rb:

I added the ability to test whether the PC is executing
LLInt code because this code is not part of the memory
our executable allocator allocates.

  • runtime/Executable.h:

(JSC::ExecutableBase::isModuleProgramExecutable):
(JSC::ExecutableBase::isExecutableType):
(JSC::ExecutableBase::isHostFunction):

  • runtime/JSLock.cpp:

(JSC::JSLock::didAcquireLock):
(JSC::JSLock::unlock):

  • runtime/Options.h:
  • runtime/SamplingProfiler.cpp: Added.

(JSC::reportStats):
(JSC::FrameWalker::FrameWalker):
(JSC::FrameWalker::walk):
(JSC::FrameWalker::wasValidWalk):
(JSC::FrameWalker::advanceToParentFrame):
(JSC::FrameWalker::isAtTop):
(JSC::FrameWalker::resetAtMachineFrame):
(JSC::FrameWalker::isValidFramePointer):
(JSC::FrameWalker::isValidCodeBlock):
(JSC::FrameWalker::tryToGetExecutableFromCallee):
The FrameWalker class is used to walk the stack in a safe
manner. It doesn't do anything that would deadlock, and it
validates all pointers that it sees.

(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::~SamplingProfiler):
(JSC::SamplingProfiler::visit):
(JSC::SamplingProfiler::shutdown):
(JSC::SamplingProfiler::start):
(JSC::SamplingProfiler::stop):
(JSC::SamplingProfiler::pause):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
(JSC::SamplingProfiler::dispatchIfNecessary):
(JSC::SamplingProfiler::dispatchFunction):
(JSC::SamplingProfiler::noticeJSLockAcquisition):
(JSC::SamplingProfiler::noticeVMEntry):
(JSC::SamplingProfiler::observeStackTrace):
(JSC::SamplingProfiler::clearData):
(JSC::displayName):
(JSC::startLine):
(JSC::startColumn):
(JSC::sourceID):
(JSC::url):
(JSC::SamplingProfiler::stacktracesAsJSON):

  • runtime/SamplingProfiler.h: Added.

(JSC::SamplingProfiler::getLock):
(JSC::SamplingProfiler::setTimingInterval):
(JSC::SamplingProfiler::stackTraces):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::~VM):
(JSC::VM::setLastStackTop):
(JSC::VM::createContextGroup):
(JSC::VM::ensureWatchdog):
(JSC::VM::ensureSamplingProfiler):
(JSC::thunkGeneratorForIntrinsic):

  • runtime/VM.h:

(JSC::VM::watchdog):
(JSC::VM::isSafeToRecurse):
(JSC::VM::lastStackTop):
(JSC::VM::scratchBufferForSize):
(JSC::VM::samplingProfiler):
(JSC::VM::setShouldRewriteConstAsVar):
(JSC::VM::setLastStackTop): Deleted.

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):

  • tests/stress/sampling-profiler: Added.
  • tests/stress/sampling-profiler-anonymous-function.js: Added.

(foo):
(baz):

  • tests/stress/sampling-profiler-basic.js: Added.

(bar):
(foo):
(nothing):
(top):
(jaz):
(kaz):
(checkInlining):

  • tests/stress/sampling-profiler-deep-stack.js: Added.

(foo):
(hellaDeep):
(start):

  • tests/stress/sampling-profiler-microtasks.js: Added.

(testResults):
(loop.jaz):
(loop):

  • tests/stress/sampling-profiler/samplingProfiler.js: Added.

(assert):
(let.nodePrototype.makeChildIfNeeded):
(makeNode):
(updateCallingContextTree):
(doesTreeHaveStackTrace):
(makeTree):
(runTest):
(dumpTree):

  • tools/JSDollarVMPrototype.cpp:

(JSC::JSDollarVMPrototype::isInObjectSpace):
(JSC::JSDollarVMPrototype::isInStorageSpace):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::jitCompile):
We now have a boolean that's set to true when
we're executing a RegExp, and to false otherwise.
The boolean lives off of VM.

(JSC::CodeBlock::clearVisitWeaklyHasBeenCalled):
(JSC::CodeBlockSet::mark):

  • dfg/DFGNodeType.h:
  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::add):
(JSC::CodeBlockSet::promoteYoungCodeBlocks):
(JSC::CodeBlockSet::clearMarksForFullCollection):
(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):
(JSC::CodeBlockSet::contains):
(JSC::CodeBlockSet::writeBarrierCurrentlyExecutingCodeBlocks):
(JSC::CodeBlockSet::remove): Deleted.

  • heap/CodeBlockSet.h:

(JSC::CodeBlockSet::getLock):
(JSC::CodeBlockSet::iterate):

  • heap/ConservativeRoots.cpp:

(JSC::ConservativeRoots::ConservativeRoots):
(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::add):
(JSC::CompositeMarkHook::CompositeMarkHook):
(JSC::CompositeMarkHook::mark):

  • heap/ConservativeRoots.h:
  • heap/Heap.cpp:

(JSC::Heap::markRoots):
(JSC::Heap::visitHandleStack):
(JSC::Heap::visitSamplingProfiler):
(JSC::Heap::traceCodeBlocksAndJITStubRoutines):

  • heap/Heap.h:

(JSC::Heap::structureIDTable):
(JSC::Heap::codeBlockSet):

  • heap/HeapInlines.h:

(JSC::Heap::didFreeBlock):
(JSC::Heap::isPointerGCObject):
(JSC::Heap::isValueGCObject):

  • heap/MachineStackMarker.cpp:

(pthreadSignalHandlerSuspendResume):
(JSC::getCurrentPlatformThread):
(JSC::MachineThreads::MachineThreads):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::Thread::createForCurrentThread):
(JSC::MachineThreads::Thread::operator==):
(JSC::isThreadInList):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::machineThreadForCurrentThread):
(JSC::MachineThreads::removeThread):
(JSC::MachineThreads::gatherFromCurrentThread):
(JSC::MachineThreads::Thread::Thread):
(JSC::MachineThreads::Thread::~Thread):
(JSC::MachineThreads::Thread::suspend):
(JSC::MachineThreads::Thread::resume):
(JSC::MachineThreads::Thread::getRegisters):
(JSC::MachineThreads::Thread::Registers::stackPointer):
(JSC::MachineThreads::Thread::Registers::framePointer):
(JSC::MachineThreads::Thread::Registers::instructionPointer):
(JSC::MachineThreads::Thread::freeRegisters):
(JSC::pthreadSignalHandlerSuspendResume): Deleted.
(JSC::MachineThreads::Thread::operator!=): Deleted.

  • heap/MachineStackMarker.h:

(JSC::MachineThreads::Thread::operator!=):
(JSC::MachineThreads::getLock):
(JSC::MachineThreads::threadsListHead):

  • heap/MarkedBlockSet.h:
  • heap/MarkedSpace.cpp:

(JSC::Free::Free):
(JSC::Free::operator()):
(JSC::FreeOrShrink::FreeOrShrink):
(JSC::FreeOrShrink::operator()):

  • interpreter/CallFrame.h:

(JSC::ExecState::calleeAsValue):
(JSC::ExecState::callee):
(JSC::ExecState::unsafeCallee):
(JSC::ExecState::codeBlock):
(JSC::ExecState::scope):

  • jit/ExecutableAllocator.cpp:

(JSC::ExecutableAllocator::dumpProfile):
(JSC::ExecutableAllocator::getLock):
(JSC::ExecutableAllocator::isValidExecutableMemory):

  • jit/ExecutableAllocator.h:
  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::ExecutableAllocator::allocate):
(JSC::ExecutableAllocator::isValidExecutableMemory):
(JSC::ExecutableAllocator::getLock):
(JSC::ExecutableAllocator::committedByteCount):

  • jsc.cpp:

(GlobalObject::finishCreation):
(functionCheckModuleSyntax):
(functionPlatformSupportsSamplingProfiler):
(functionStartSamplingProfiler):
(functionSamplingProfilerStackTraces):

  • llint/LLIntPCRanges.h: Added.

(JSC::LLInt::isLLIntPC):

  • offlineasm/asm.rb:
  • runtime/Executable.h:

(JSC::ExecutableBase::isModuleProgramExecutable):
(JSC::ExecutableBase::isExecutableType):
(JSC::ExecutableBase::isHostFunction):

  • runtime/JSLock.cpp:

(JSC::JSLock::didAcquireLock):
(JSC::JSLock::unlock):

  • runtime/Options.h:
  • runtime/SamplingProfiler.cpp: Added.

(JSC::reportStats):
(JSC::FrameWalker::FrameWalker):
(JSC::FrameWalker::walk):
(JSC::FrameWalker::wasValidWalk):
(JSC::FrameWalker::advanceToParentFrame):
(JSC::FrameWalker::isAtTop):
(JSC::FrameWalker::resetAtMachineFrame):
(JSC::FrameWalker::isValidFramePointer):
(JSC::FrameWalker::isValidCodeBlock):
(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::~SamplingProfiler):
(JSC::SamplingProfiler::processUnverifiedStackTraces):
(JSC::SamplingProfiler::visit):
(JSC::SamplingProfiler::shutdown):
(JSC::SamplingProfiler::start):
(JSC::SamplingProfiler::stop):
(JSC::SamplingProfiler::pause):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
(JSC::SamplingProfiler::dispatchIfNecessary):
(JSC::SamplingProfiler::dispatchFunction):
(JSC::SamplingProfiler::noticeJSLockAcquisition):
(JSC::SamplingProfiler::noticeVMEntry):
(JSC::SamplingProfiler::clearData):
(JSC::displayName):
(JSC::SamplingProfiler::stacktracesAsJSON):
(WTF::printInternal):

  • runtime/SamplingProfiler.h: Added.

(JSC::SamplingProfiler::StackFrame::StackFrame):
(JSC::SamplingProfiler::getLock):
(JSC::SamplingProfiler::setTimingInterval):
(JSC::SamplingProfiler::stackTraces):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::~VM):
(JSC::VM::setLastStackTop):
(JSC::VM::createContextGroup):
(JSC::VM::ensureWatchdog):
(JSC::VM::ensureSamplingProfiler):
(JSC::thunkGeneratorForIntrinsic):

  • runtime/VM.h:

(JSC::VM::watchdog):
(JSC::VM::samplingProfiler):
(JSC::VM::isSafeToRecurse):
(JSC::VM::lastStackTop):
(JSC::VM::scratchBufferForSize):
(JSC::VM::setLastStackTop): Deleted.

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):

  • tests/stress/sampling-profiler: Added.
  • tests/stress/sampling-profiler-anonymous-function.js: Added.

(platformSupportsSamplingProfiler.foo):
(platformSupportsSamplingProfiler.baz):
(platformSupportsSamplingProfiler):

  • tests/stress/sampling-profiler-basic.js: Added.

(platformSupportsSamplingProfiler.bar):
(platformSupportsSamplingProfiler.foo):
(platformSupportsSamplingProfiler.nothing):
(platformSupportsSamplingProfiler.top):
(platformSupportsSamplingProfiler.jaz):
(platformSupportsSamplingProfiler.kaz):
(platformSupportsSamplingProfiler.checkInlining):
(platformSupportsSamplingProfiler):

  • tests/stress/sampling-profiler-deep-stack.js: Added.

(platformSupportsSamplingProfiler.foo):
(platformSupportsSamplingProfiler.let.hellaDeep):
(platformSupportsSamplingProfiler.let.start):
(platformSupportsSamplingProfiler):

  • tests/stress/sampling-profiler-microtasks.js: Added.

(platformSupportsSamplingProfiler.testResults):
(platformSupportsSamplingProfiler):
(platformSupportsSamplingProfiler.loop.jaz):
(platformSupportsSamplingProfiler.loop):

  • tests/stress/sampling-profiler/samplingProfiler.js: Added.

(assert):
(let.nodePrototype.makeChildIfNeeded):
(makeNode):
(updateCallingContextTree):
(doesTreeHaveStackTrace):
(makeTree):
(runTest):
(dumpTree):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::jitCompile):

Source/WTF:

  • wtf/MetaAllocator.cpp:

(WTF::MetaAllocator::decrementPageOccupancy):
(WTF::MetaAllocator::isInAllocatedMemory):
(WTF::MetaAllocator::roundUp):

  • wtf/MetaAllocator.h:

(WTF::MetaAllocator::getLock):

  • wtf/Platform.h:

Tools:

  • Scripts/run-jsc-stress-tests:
9:55 PM Changeset in webkit [194839] by mmaxfield@apple.com
  • 6 edits
    3 adds in trunk

[SVG -> OTF Converter] Parsing failures cause use of incomplete fonts
https://bugs.webkit.org/show_bug.cgi?id=152772
<rdar://problem/24043104>

Reviewed by Simon Fraser.

Source/WebCore:

Originally, if we fail to parse a glyph, we would simply skip the glyph. However, this means that
we will create an incomplete font without all the necessary glyphs. This causes very distressing
text where all the occurances of a particular letter are missing. Instead, we should treat the
entire font as invalid.

Test: fast/text/svg-font-invalid-glyph-path-failure.html

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::font):

  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::ensureCustomFontData):

  • svg/SVGToOTFFontConversion.cpp:

(WebCore::SVGToOTFFontConverter::error):
(WebCore::SVGToOTFFontConverter::transcodeGlyphPaths):
(WebCore::SVGToOTFFontConverter::processGlyphElement):
(WebCore::convertSVGToOTFFont):

  • svg/SVGToOTFFontConversion.h:

LayoutTests:

Make sure the font renders as if its invalid.

  • fast/text/resources/bustedfont.svg: Added.
  • fast/text/svg-font-invalid-glyph-path-failure-expected.html: Added.
  • fast/text/svg-font-invalid-glyph-path-failure.html: Added.
9:54 PM Changeset in webkit [194838] by Yusuke Suzuki
  • 16 edits
    2 copies
    12 adds in trunk

[JSC] Iterating over a Set/Map is too slow
https://bugs.webkit.org/show_bug.cgi?id=152691

Reviewed by Saam Barati.

Source/JavaScriptCore:

Set#forEach and Set & for-of are very slow. There are 2 reasons.

  1. forEach is implemented in C++. And typically, taking JS callback and calling it from C++.

C++ to JS transition seems costly. perf result in Linux machine shows this.

Samples: 23K of event 'cycles', Event count (approx.): 21446074385
34.04% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::Interpreter::execute(JSC::CallFrameClosure&)
20.48% jsc libjavascriptcoregtk-4.0.so.18.3.1 . vmEntryToJavaScript

9.80% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
7.95% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::setProtoFuncForEach(JSC::ExecState*)
5.65% jsc perf-22854.map . 0x00007f5d2c204a6f

Writing forEach in JS eliminates this.

Samples: 23K of event 'cycles', Event count (approx.): 21255691651
62.91% jsc perf-22890.map . 0x00007fd117c0a3b9
24.89% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::privateFuncSetIteratorNext(JSC::ExecState*)

0.29% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::CodeBlock::updateAllPredictionsAndCountLiveness(unsigned int&, unsigned int&)
0.24% jsc [vdso] . 0x00000000000008e8
0.22% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::CodeBlock::predictedMachineCodeSize()
0.16% jsc libjavascriptcoregtk-4.0.so.18.3.1 . WTF::MetaAllocator::currentStatistics()
0.15% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::Lexer<unsigned char>::lex(JSC::JSToken*, unsigned int, bool)

  1. Iterator result object allocation is costly.

Iterator result object allocation is costly. Even if the (1) is solved, when executing Set & for-of, perf result shows very slow performance due to (2).

Samples: 108K of event 'cycles', Event count (approx.): 95529273748
18.02% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::createIteratorResultObject(JSC::ExecState*, JSC::JSValue, bool)
15.68% jsc jsc . JSC::JSObject::putDirect(JSC::VM&, JSC::PropertyName, JSC::JSValue, unsigned int)
14.18% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::PrototypeMap::emptyObjectStructureForPrototype(JSC::JSObject*, unsigned int)
13.40% jsc perf-25420.map . 0x00007fce158006a1

6.79% jsc libjavascriptcoregtk-4.0.so.18.3.1 . JSC::StructureTransitionTable::get(WTF::UniquedStringImpl*, unsigned int) const

In the long term, we should implement SetIterator#next in JS and make the iterator result object allocation written in JS to encourage object allocation elimination in FTL.
But seeing the perf result, we can find the easy to fix bottleneck in the current implementation.
Every time createIteratorResultObject creates the empty object and use putDirect to store properties.
The pre-baked Structure* with done and value properties makes this implementation fast.

After these improvements, the micro benchmark[1] shows the following.

old:

Linked List x 212,776 ops/sec ±0.21% (162 runs sampled)
Array x 376,156 ops/sec ±0.20% (162 runs sampled)
Array forEach x 17,345 ops/sec ±0.99% (137 runs sampled)
Array for-of x 16,518 ops/sec ±0.58% (160 runs sampled)
Set forEach x 13,263 ops/sec ±0.20% (162 runs sampled)
Set for-of x 4,732 ops/sec ±0.34% (123 runs sampled)

new:

Linked List x 210,833 ops/sec ±0.28% (161 runs sampled)
Array x 371,347 ops/sec ±0.36% (162 runs sampled)
Array forEach x 17,460 ops/sec ±0.84% (136 runs sampled)
Array for-of x 16,188 ops/sec ±1.27% (158 runs sampled)
Set forEach x 23,684 ops/sec ±2.46% (139 runs sampled)
Set for-of x 12,176 ops/sec ±0.54% (157 runs sampled)

Set#forEach becomes comparable to Array#forEach. And Set#forEach and Set & for-of are improved (1.79x, and 2.57x).
After this optimizations, they are still much slower than linked list and array.
This should be optimized in the long term.

[1]: https://gist.github.com/Constellation/8db5f5b8f12fe7e283d0

  • CMakeLists.txt:
  • DerivedSources.make:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/MapPrototype.js: Copied from Source/JavaScriptCore/runtime/IteratorOperations.h.

(forEach):

  • builtins/SetPrototype.js: Copied from Source/JavaScriptCore/runtime/IteratorOperations.h.

(forEach):

  • runtime/CommonIdentifiers.h:
  • runtime/IteratorOperations.cpp:

(JSC::createIteratorResultObjectStructure):
(JSC::createIteratorResultObject):

  • runtime/IteratorOperations.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::iteratorResultObjectStructure):
(JSC::JSGlobalObject::iteratorResultStructure): Deleted.
(JSC::JSGlobalObject::iteratorResultStructureOffset): Deleted.

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::getOwnPropertySlot):
(JSC::privateFuncIsMap):
(JSC::privateFuncMapIterator):
(JSC::privateFuncMapIteratorNext):
(JSC::MapPrototype::finishCreation): Deleted.
(JSC::mapProtoFuncForEach): Deleted.

  • runtime/MapPrototype.h:
  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::getOwnPropertySlot):
(JSC::privateFuncIsSet):
(JSC::privateFuncSetIterator):
(JSC::privateFuncSetIteratorNext):
(JSC::SetPrototype::finishCreation): Deleted.
(JSC::setProtoFuncForEach): Deleted.

  • runtime/SetPrototype.h:

LayoutTests:

Add regress tests.

  • js/regress/map-for-each-expected.txt: Added.
  • js/regress/map-for-each.html: Added.
  • js/regress/map-for-of-expected.txt: Added.
  • js/regress/map-for-of.html: Added.
  • js/regress/script-tests/map-for-each.js: Added.

(createMap):
(i.map.forEach):

  • js/regress/script-tests/map-for-of.js: Added.

(createMap):

  • js/regress/script-tests/set-for-each.js: Added.

(set forEach):
(set createSet):

  • js/regress/script-tests/set-for-of.js: Added.
  • js/regress/set-for-each-expected.txt: Added.
  • js/regress/set-for-each.html: Added.
  • js/regress/set-for-of-expected.txt: Added.
  • js/regress/set-for-of.html: Added.
7:44 PM Changeset in webkit [194837] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix ARM64 build.

  • b3/air/AirOpcode.opcodes:
7:25 PM Changeset in webkit [194836] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

B3 should reduce Trunc(BitOr(value, constant)) where !(constant & 0xffffffff) to Trunc(value)
https://bugs.webkit.org/show_bug.cgi?id=152955

Reviewed by Saam Barati.

This happens when we box an int32 and then immediately unbox it.

This makes an enormous difference on AsmBench/FloatMM. It's a 2x speed-up on that
benchmark. It's neutral elsewhere.

  • b3/B3ReduceStrength.cpp:
  • b3/testb3.cpp:

(JSC::B3::testPowDoubleByIntegerLoop):
(JSC::B3::testTruncOrHigh):
(JSC::B3::testTruncOrLow):
(JSC::B3::testBitAndOrHigh):
(JSC::B3::testBitAndOrLow):
(JSC::B3::zero):
(JSC::B3::run):

5:38 PM Changeset in webkit [194835] by commit-queue@webkit.org
  • 21 edits
    2 deletes in trunk/Source/JavaScriptCore

[ES6] Arrow function syntax. Get rid of JSArrowFunction and use standard JSFunction class
https://bugs.webkit.org/show_bug.cgi?id=149855

Patch by Skachkov Oleksandr <gskachkov@gmail.com> on 2016-01-10
Reviewed by Saam Barati.

JSArrowFunction.h/cpp were removed from JavaScriptCore, because now is used new approach for storing
'this', 'arguments' and 'super'

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewFunction):

  • dfg/DFGStructureRegistrationPhase.cpp:

(JSC::DFG::StructureRegistrationPhase::run):

  • ftl/FTLAbstractHeapRepository.cpp:
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compileNewFunction):

  • interpreter/Interpreter.cpp:
  • interpreter/Interpreter.h:
  • jit/JITOpcodes.cpp:
  • jit/JITOpcodes32_64.cpp:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LLIntSlowPaths.cpp:
  • runtime/JSArrowFunction.cpp: Removed.
  • runtime/JSArrowFunction.h: Removed.
  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:
4:58 PM Changeset in webkit [194834] by fpizlo@apple.com
  • 9 edits in trunk/Source

It should be possible to run liveness over registers without also tracking Tmps
https://bugs.webkit.org/show_bug.cgi?id=152963

Reviewed by Saam Barati.

Source/JavaScriptCore:

This adds a RegLivenessAdapter so that we can run Liveness over registers. This makes it
easier to write certain kinds of phases, like ReportUsedRegisters. I anticipate writing more
code like that for handling cold function calls. It also makes code like that somewhat more
scalable, since we're no longer using HashSets.

Currently, the way we track sets of registers is with a BitVector. Normally, we use the
RegisterSet class, which wraps BitVector, so that we can add()/contains() on Reg's. But in
the liveness analysis, everything gets turned into an index. So, we want to use BitVector
directly. To do that, I needed to make the BitVector API look a bit more like a set API. I
think that this is good, because the lack of set methods (add/remove/contains) has caused
bugs in the past. This makes BitVector have methods both for set operations on bits and array
operations on bits. I think that's good, since BitVector gets used in both contexts.

  • b3/B3IndexSet.h:

(JSC::B3::IndexSet::Iterable::iterator::iterator):
(JSC::B3::IndexSet::Iterable::begin):
(JSC::B3::IndexSet::dump):

  • b3/air/AirInstInlines.h:

(JSC::B3::Air::ForEach<Tmp>::forEach):
(JSC::B3::Air::ForEach<Arg>::forEach):
(JSC::B3::Air::ForEach<Reg>::forEach):
(JSC::B3::Air::Inst::forEach):

  • b3/air/AirLiveness.h:

(JSC::B3::Air::RegLivenessAdapter::RegLivenessAdapter):
(JSC::B3::Air::RegLivenessAdapter::maxIndex):
(JSC::B3::Air::RegLivenessAdapter::acceptsType):
(JSC::B3::Air::RegLivenessAdapter::valueToIndex):
(JSC::B3::Air::RegLivenessAdapter::indexToValue):

  • b3/air/AirReportUsedRegisters.cpp:

(JSC::B3::Air::reportUsedRegisters):

  • jit/Reg.h:

(JSC::Reg::next):
(JSC::Reg::index):
(JSC::Reg::maxIndex):
(JSC::Reg::isSet):
(JSC::Reg::operator bool):

  • jit/RegisterSet.h:

(JSC::RegisterSet::forEach):

Source/WTF:

Add set methods (add/contains/remove) to BitVector, since it gets used as a set in a lot of
places. This also makes BitVector a drop-in replacement for HashSet<unsigned> in a lot of
places.

Also made the iterator methods of BitVector live on BitVector directly rather than behind the
thing returned from setBits(). This makes sense since that makes BitVector even more of a
drop-in for HashSet. It's not harmful since we've never added any other mode of iterating a
BitVector other than this, so it doesn't make sense to make it harder to access.

  • wtf/BitVector.h:

(WTF::BitVector::get):
(WTF::BitVector::contains):
(WTF::BitVector::set):
(WTF::BitVector::add):
(WTF::BitVector::ensureSizeAndSet):
(WTF::BitVector::clear):
(WTF::BitVector::remove):
(WTF::BitVector::hash):
(WTF::BitVector::iterator::iterator):
(WTF::BitVector::iterator::operator*):
(WTF::BitVector::iterator::operator++):
(WTF::BitVector::iterator::operator==):
(WTF::BitVector::iterator::operator!=):
(WTF::BitVector::begin):
(WTF::BitVector::end):
(WTF::BitVector::bitsInPointer):
(WTF::BitVector::SetBitsIterable::SetBitsIterable): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::iterator): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::operator*): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::operator++): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::operator==): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::operator!=): Deleted.
(WTF::BitVector::SetBitsIterable::begin): Deleted.
(WTF::BitVector::SetBitsIterable::end): Deleted.
(WTF::BitVector::setBits): Deleted.

2:33 PM Changeset in webkit [194833] by commit-queue@webkit.org
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Make branchMul functional in ARM B3 and minor fixes
https://bugs.webkit.org/show_bug.cgi?id=152889

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-10
Reviewed by Mark Lam.

ARM64 does not have a "S" version of MUL setting the flags.
What we do is abstract that in the MacroAssembler. The problem
is that form requires scratch registers.

For simplicity, I just exposed the two scratch registers
for Air. Filip already added the concept of Scratch role,
all I needed was to expose it for opcodes.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::branchMul32):
(JSC::MacroAssemblerARM64::branchMul64):
Expose a version with the scratch registers as arguments.

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lower):
Add the new form of CheckMul lowering.

  • b3/air/AirOpcode.opcodes:

Expose the new BranchMuls.
Remove all the Test variants that use immediates
since Air can't handle those immediates correctly yet.

  • b3/air/opcode_generator.rb:

Expose the Scratch role.

  • b3/testb3.cpp:

(JSC::B3::testPatchpointLotsOfLateAnys):
Ooops, the scratch registers were not clobbered. We were just lucky
on x86.

1:56 PM Changeset in webkit [194832] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[webkitdirs] Try arch and uname commands on non-windows OS
https://bugs.webkit.org/show_bug.cgi?id=152958

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-10
Reviewed by Michael Catanzaro.

Right now, determineArchitecture() uses arch and uname -m

commands to determine architecture in case of condition (isGtk() isAppleMacWebKit()
isEfl()) is true. This should be !anyWindows()

instead, because this code is applicable to any non-windows OS WebKit
supports (even Haiku which once was supported is moderately
POSIX-compliant and has uname command).

  • Scripts/webkitdirs.pm:

(determineArchitecture):

1:42 PM Changeset in webkit [194831] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] B3 is unable to do function calls on ARM64
https://bugs.webkit.org/show_bug.cgi?id=152895

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-10
Reviewed by Mark Lam.

Apparently iOS does not follow the ARM64 ABI for function calls.
Instead of giving each value a 8 bytes slot, it must be packed
while preserving alignment.

This patch adds a #ifdef to make function calls functional.

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::marshallCCallArgument):
(JSC::B3::Air::LowerToAir::lower):

12:28 PM Changeset in webkit [194830] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception selecting IndexedDB host folder in Storage tab
https://bugs.webkit.org/show_bug.cgi?id=152943

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-10
Reviewed by Brian Burg.

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
Another type of specialized folder tree element.

12:25 PM Changeset in webkit [194829] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Uncaught Exception: TypeError: undefined is not an object (evaluating 'this._scopeChain[i].object.deprecatedGetAllProperties')
https://bugs.webkit.org/show_bug.cgi?id=152944
<rdar://problem/24119827>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-10
Reviewed by Brian Burg.

  • UserInterface/Models/CallFrame.js:

(WebInspector.CallFrame.prototype.collectScopeChainVariableNames):
Missed one place where object needed to change to objects.
Here the list will always contain a single object, only UI
generated scopes for the sidebar may have multiple objects.

12:24 PM Changeset in webkit [194828] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Dashboard log message count doesn't include console.time messages
https://bugs.webkit.org/show_bug.cgi?id=151280

Patch by Johan K. Jensen <jj@johanjensen.dk> on 2016-01-10
Reviewed by Brian Burg.

  • UserInterface/Models/DefaultDashboard.js:

(WebInspector.DefaultDashboard.prototype._incrementConsoleMessageType):
Make Info and Debug levels increment the log count.

10:51 AM Changeset in webkit [194827] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

[Cocoa] Disable header postprocessing when building for El Capitan
https://bugs.webkit.org/show_bug.cgi?id=152962

Reviewed by Anders Carlsson.

  • Configurations/WebKit.xcconfig:
5:27 AM Changeset in webkit [194826] by akling@apple.com
  • 21 edits in trunk/Source

Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL cont'd
<https://webkit.org/b/152902>

Reviewed by Andy Estes.

Source/WebCore:

Convert some more of the remaining clients to use NeverDestroyed.

  • html/track/VTTRegion.cpp:

(WebCore::VTTRegion::textTrackCueContainerShadowPseudoId):
(WebCore::VTTRegion::textTrackRegionShadowPseudoId):

  • svg/properties/SVGAnimatedPropertyMacros.h:

Source/WebKit:

  • Storage/StorageThread.cpp:

(WebCore::activeStorageThreads):

Source/WebKit/ios:

  • WebCoreSupport/WebFixedPositionContent.mm:

(WebFixedPositionContentDataLock):

Source/WebKit/mac:

Convert some more of the remaining clients to use NeverDestroyed.

  • History/WebBackForwardList.mm:

(backForwardLists):

  • History/WebHistoryItem.mm:

(historyItemWrappers):

  • Misc/WebNSPasteboardExtras.mm:

(+[NSPasteboard _web_writableTypesForURL]):
(_writableTypesForImageWithoutArchive):
(_writableTypesForImageWithArchive):

  • Plugins/Hosted/NetscapePluginHostManager.mm:

(WebKit::NetscapePluginHostManager::singleton):

  • Plugins/Hosted/NetscapePluginHostProxy.mm:

(WebKit::pluginProxyMap):

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::globalExceptionString):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::proxyClass):

  • Plugins/WebNetscapePluginStream.mm:

(streams):

  • Storage/WebDatabaseManager.mm:

(transactionBackgroundTaskIdentifierLock):

  • WebCoreSupport/WebUserMediaClient.mm:

(userMediaCheckMap):

  • WebView/WebHTMLRepresentation.mm:

(regExpForLabels):

  • WebView/WebView.mm:

(aeDescFromJSValue):

Jan 9, 2016:

10:39 PM Changeset in webkit [194825] by Simon Fraser
  • 13 edits in trunk/Source/WebCore

Hook up display-list drawing in GraphicsLayerCA
https://bugs.webkit.org/show_bug.cgi?id=152946

Reviewed by Zalan Bujtas.

Have GraphicsLayerCA hold a DisplayList. If enabled, do a display-list record
in GraphicsLayerCA::recursiveCommitChanges(), and a playback in GraphicsLayerCA::platformCALayerPaintContents().

GraphicsLayerCA needs to maintain a m_hasEverPainted flag to know to do a full record
at first paint (when there are no dirty rects).

Plumb 'isUsingDisplayListDrawing' through to TileGrid via PlatformCALayer{Client}
so that we can decorate the tile paint counters with an outline.

Have RenderLayerCompositor push the displayListDrawingEnabled state down through
RenderLayerBackings to GraphicsLayers.

Convert RenderLayerCompositor to use initializers.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::GraphicsLayer):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::usesDisplayListDrawing):
(WebCore::GraphicsLayer::setUsesDisplayListDrawing):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::GraphicsLayerCA):
(WebCore::GraphicsLayerCA::setUsesDisplayListDrawing):
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::platformCALayerPaintContents):
(WebCore::GraphicsLayerCA::updateDrawsContent):
(WebCore::GraphicsLayerCA::dumpAdditionalProperties):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::drawRepaintIndicator):

  • platform/graphics/ca/PlatformCALayerClient.h:

(WebCore::PlatformCALayerClient::isUsingDisplayListDrawing):

  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::platformCALayerShowRepaintCounter):
(WebCore::TileGrid::isUsingDisplayListDrawing):

  • platform/graphics/ca/TileGrid.h:
  • platform/graphics/displaylists/DisplayList.h: Sadly need to include DisplayListItems.h

to get things to compile. I wasn't able to avoid this even when making functions non-inline.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::createGraphicsLayer):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::RenderLayerCompositor):
(WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):

  • rendering/RenderLayerCompositor.h:
8:15 PM Changeset in webkit [194824] by fpizlo@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Air should support Branch64 with immediates
https://bugs.webkit.org/show_bug.cgi?id=152951

Reviewed by Oliver Hunt.

This doesn't significantly improve performance on any benchmarks, but it's great to get this
obvious omission out of the way.

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::branch64):

  • b3/air/AirOpcode.opcodes:
  • b3/testb3.cpp:

(JSC::B3::testPowDoubleByIntegerLoop):
(JSC::B3::testBranch64Equal):
(JSC::B3::testBranch64EqualImm):
(JSC::B3::testBranch64EqualMem):
(JSC::B3::testBranch64EqualMemImm):
(JSC::B3::zero):
(JSC::B3::run):

4:38 PM Changeset in webkit [194823] by Alan Bujtas
  • 3 edits
    2 adds in trunk

REGRESSION (r194426): First email field is not autofilled on amazon.com
https://bugs.webkit.org/show_bug.cgi?id=152945
<rdar://problem/24082914>

Reviewed by Simon Fraser.

r194426 missed marking the m_layoutRoot for layout while converting to full layout (it only marked the new layout root).

Source/WebCore:

Test: fast/forms/multiple-subtree-layout-failure.html

  • page/FrameView.cpp:

(WebCore::FrameView::scheduleRelayoutOfSubtree):

LayoutTests:

  • fast/forms/multiple-subtree-layout-failure-expected.html: Added.
  • fast/forms/multiple-subtree-layout-failure.html: Added.
3:29 PM Changeset in webkit [194822] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[l10n] Updated Turkish translation of WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=152948

"Reviewed" by Michael Catanzaro.

Patch by Muhammet Kara <muhammetk@gmail.com> on 2016-01-09

  • tr.po:
12:13 PM Changeset in webkit [194821] by mitz@apple.com
  • 23 edits in trunk/Source

[Cocoa] Allow overriding the frameworks directory independently of using a staging install path
https://bugs.webkit.org/show_bug.cgi?id=152926

Reviewed by Tim Horton.

Introduce a new build setting, WK_OVERRIDE_FRAMEWORKS_DIR. When not empty, it determines
where the frameworks are installed. Setting USE_STAGING_INSTALL_PATH to YES sets
WK_OVERRIDE_FRAMEWORKS_DIR to $(SYSTEM_LIBRARY_DIR)/StagedFrameworks/Safari.

Account for the possibility of WK_OVERRIDE_FRAMEWORKS_DIR containing spaces.

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:
  • Replace STAGED_FRAMEWORKS_SEARCH_PATH in FRAMEWORK_SEARCH_PATHS with WK_OVERRIDE_FRAMEWORKS_DIR and add quotes to account for spaces.
  • Define JAVASCRIPTCORE_FRAMEWORKS_DIR based on WK_OVERRIDE_FRAMEWORKS_DIR.
  • Configurations/JSC.xcconfig: Add quotes to account for spaces.
  • Configurations/ToolExecutable.xcconfig: Ditto.
  • postprocess-headers.sh: Ditto.

Source/ThirdParty:

  • gtest/xcode/Config/General.xcconfig: Add quotes to account for spaces.
  • gtest/xcode/Config/ProductionProject.xcconfig:
  • Replace STAGED_FRAMEWORKS_SEARCH_PATH in FRAMEWORK_SEARCH_PATHS with WK_OVERRIDE_FRAMEWORKS_DIR and add quotes to account for spaces.
  • Define WEBCORE_FRAMEWORKS_DIR based on WK_OVERRIDE_FRAMEWORKS_DIR.

Source/WebCore:

  • Configurations/WebCore.xcconfig:
  • Replace STAGED_FRAMEWORKS_SEARCH_PATH in FRAMEWORK_SEARCH_PATHS with WK_OVERRIDE_FRAMEWORKS_DIR and add quotes to account for spaces.
  • Define WEBCORE_FRAMEWORKS_DIR and PRODUCTION_FRAMEWORKS_DIR based on WK_OVERRIDE_FRAMEWORKS_DIR.
  • WebCore.xcodeproj/project.pbxproj: Work around make’s inability to handle spaces in paths by creating a symlink to JAVASCRIPTCORE_PRIVATE_HEADERS_DIR under BUILT_PRODUCTS_DIR and using the symlink as the value of JavaScriptCore_SCRIPTS_DIR.

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:
  • Replace STAGED_FRAMEWORKS_SEARCH_PATH in FRAMEWORK_SEARCH_PATHS with WK_OVERRIDE_FRAMEWORKS_DIR and add quotes to account for spaces.
  • Configurations/WebInspectorUIFramework.xcconfig:
  • Define INSTALL_PATH and PRODUCTION_FRAMEWORKS_DIR based on WK_OVERRIDE_FRAMEWORKS_DIR.

Source/WebKit/mac:

  • Configurations/WebKitLegacy.xcconfig:
  • Replace STAGED_FRAMEWORKS_SEARCH_PATH in FRAMEWORK_SEARCH_PATHS with WK_OVERRIDE_FRAMEWORKS_DIR and add quotes to account for spaces.
  • Define WEBKIT_LEGACY_FRAMEWORKS_DIR, PRODUCTION_FRAMEWORKS_DIR, and WEBCORE_PRIVATE_HEADERS_DIR based on WK_OVERRIDE_FRAMEWORKS_DIR.
  • MigrateHeaders.make: Use a symlink under BUILT_PRODUCTS_DIR to the WebCore Private Headers. Use a BUILT_PRODUCTS_DIR-based path to the framework instead of a TARGET_BUILD_DIR-based one in order to avoid spaces.
  • migrate-headers.sh: Make the symlink to WEBCORE_PRIVATE_HEADERS_DIR that the makefile now uses.

Source/WebKit2:

  • Configurations/BaseTarget.xcconfig:
  • Add quotes to account for spaces.
  • Define WEBKIT_FRAMEWORKS_DIR and UMBRELLA_FRAMEWORKS_DIR based on WK_OVERRIDE_FRAMEWORKS_DIR.
  • WebKit2.xcodeproj/project.pbxproj:
  • In the Migrate WebKitLegacy Headers build phase, work around make’s inability to handle spaces in paths by creating a symlink to WEBKIT_LEGACY_PRIVATE_HEADERS_DIR under BUILT_PRODUCTS_DIR and using the symlink as the value of WEBKIT_LEGACY_PRIVATE_HEADERS_DIR.
  • In the Postprocess WKBase.h and Postprocess WKFoundation.h build phases, add quotes to account for spaces.
  • mac/MigrateHeadersFromWebKitLegacy.make: Use a BUILT_PRODUCTS_DIR-based path to the framework instead of a TARGET_BUILD_DIR-based one in order to avoid spaces.
  • mac/postprocess-framework-headers.sh: Add quotes to account for spaces.
7:23 AM Changeset in webkit [194820] by mark.lam@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

The FTL allocated spill slots for BinaryOps is sometimes inaccurate.
https://bugs.webkit.org/show_bug.cgi?id=152918

Reviewed by Filip Pizlo and Saam Barati.

  • ftl/FTLCompile.cpp:
  • Updated a comment.
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::lower):

  • The code to compute maxNumberOfCatchSpills was unnecessarily allocating an extra slot for BinaryOps that don't have Untyped operands, and failing to allocate that extra slot for some binary ops. This is now fixed.
  • tests/stress/ftl-shr-exception.js:
  • tests/stress/ftl-xor-exception.js:
  • Un-skipped these tests. They now pass with this patch.
5:13 AM Changeset in webkit [194819] by akling@apple.com
  • 176 edits in trunk/Source

Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL
<https://webkit.org/b/152902>

Reviewed by Anders Carlsson.

Source/JavaScriptCore:

Mostly mechanical conversion to NeverDestroyed throughout JavaScriptCore.

  • API/JSAPIWrapperObject.mm:

(jsAPIWrapperObjectHandleOwner):

  • API/JSManagedValue.mm:

(managedValueHandleOwner):

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::objectGroupForBreakpointAction):

  • jit/ExecutableAllocator.cpp:

(JSC::DemandExecutableAllocator::allocators):

Source/WebCore:

Mostly mechanical conversion to NeverDestroyed throughout WebCore.

  • Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp:

(WebCore::stringForPlaybackTargetAvailability):

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::directionNext):
(WebCore::IDBCursor::directionNextUnique):
(WebCore::IDBCursor::directionPrev):
(WebCore::IDBCursor::directionPrevUnique):

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::modeReadOnly):
(WebCore::IDBTransaction::modeReadWrite):
(WebCore::IDBTransaction::modeVersionChange):
(WebCore::IDBTransaction::modeReadOnlyLegacy):
(WebCore::IDBTransaction::modeReadWriteLegacy):

  • Modules/indexeddb/legacy/LegacyRequest.cpp:

(WebCore::LegacyRequest::readyState):

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::automaticKeyword):
(WebCore::MediaControlsHost::forcedOnlyKeyword):
(WebCore::MediaControlsHost::alwaysOnKeyword):
(WebCore::MediaControlsHost::externalDeviceType):

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::openKeyword):
(WebCore::MediaSource::closedKeyword):
(WebCore::MediaSource::endedKeyword):
(WebCore::MediaSource::streamEndedWithError):

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::quickTimePluginReplacementScript):
(WebCore::QuickTimePluginReplacement::supportsMimeType):
(WebCore::QuickTimePluginReplacement::supportsFileExtension):

  • Modules/speech/SpeechSynthesis.cpp:

(WebCore::SpeechSynthesis::boundaryEventOccurred):

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::cssPropertyIDForJSCSSPropertyName):

  • bridge/c/c_instance.cpp:

(JSC::Bindings::globalExceptionString):

  • css/MediaList.cpp:

(WebCore::addResolutionWarningMessageToConsole):

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):

  • dom/ChildListMutationScope.cpp:

(WebCore::accumulatorMap):

  • dom/DOMImplementation.cpp:

(WebCore::isSupportedSVG10Feature):
(WebCore::isSupportedSVG11Feature):

  • dom/Document.cpp:

(WebCore::Document::readyState):

  • dom/Element.cpp:

(WebCore::Element::webkitRegionOverset):

  • dom/EventDispatcher.cpp:

(WebCore::EventDispatcher::dispatchSimulatedClick):

  • dom/InlineStyleSheetOwner.cpp:

(WebCore::isValidCSSContentType):

  • dom/MutationObserver.cpp:

(WebCore::activeMutationObservers):
(WebCore::suspendedMutationObservers):

  • dom/MutationRecord.cpp:
  • dom/PseudoElement.cpp:

(WebCore::pseudoElementTagName):
(WebCore::PseudoElement::pseudoElementNameForEvents):

  • dom/QualifiedName.cpp:

(WebCore::qualifiedNameCache):
(WebCore::nullQName):

  • dom/ScriptElement.cpp:

(WebCore::isLegacySupportedJavaScriptLanguage):
(WebCore::ScriptElement::notifyFinished):

  • editing/ApplyStyleCommand.cpp:

(WebCore::styleSpanClassString):

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::shouldAddNamespaceElement):

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::isInterchangeNewlineNode):
(WebCore::isInterchangeConvertedSpaceSpan):

  • editing/htmlediting.cpp:

(WebCore::nonBreakingSpaceString):

  • editing/markup.cpp:

(WebCore::StyledMarkupAccumulator::styleNodeCloseTag):
(WebCore::createMarkupInternal):

  • fileapi/Blob.cpp:

(WebCore::BlobURLRegistry::registry):

  • html/BaseChooserOnlyDateAndTimeInputType.cpp:

(WebCore::BaseChooserOnlyDateAndTimeInputType::createShadowSubtree):

  • html/DateInputType.cpp:

(WebCore::DateInputType::createStepRange):

  • html/DateTimeInputType.cpp:

(WebCore::DateTimeInputType::createStepRange):

  • html/DateTimeLocalInputType.cpp:

(WebCore::DateTimeLocalInputType::createStepRange):

  • html/EmailInputType.cpp:

(WebCore::isValidEmailAddress):

  • html/FormController.cpp:

(WebCore::FormKeyGenerator::formKey):
(WebCore::formStateSignature):

  • html/HTMLAnchorElement.cpp:

(WebCore::rootEditableElementMap):

  • html/HTMLButtonElement.cpp:

(WebCore::HTMLButtonElement::formControlType):

  • html/HTMLFieldSetElement.cpp:

(WebCore::HTMLFieldSetElement::formControlType):

  • html/HTMLFrameOwnerElement.h:

(WebCore::SubframeLoadingDisabler::disabledSubtreeRoots):

  • html/HTMLKeygenElement.cpp:

(WebCore::HTMLKeygenElement::formControlType):

  • html/HTMLLinkElement.cpp:

(WebCore::linkLoadEventSender):

  • html/HTMLMediaElement.cpp:

(WebCore::documentToElementSetMap):

  • html/HTMLObjectElement.cpp:

(WebCore::isRecognizedTagName):

  • html/HTMLOptGroupElement.cpp:

(WebCore::HTMLOptGroupElement::formControlType):

  • html/HTMLOutputElement.cpp:

(WebCore::HTMLOutputElement::formControlType):

  • html/HTMLPlugInElement.cpp:

(WebCore::registeredPluginReplacements):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::titleText):
(WebCore::subtitleText):
(WebCore::HTMLPlugInImageElement::partOfSnapshotOverlay):

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::formControlType):

  • html/HTMLStyleElement.cpp:

(WebCore::styleLoadEventSender):

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::formControlType):

  • html/HTMLTextFormControlElement.cpp:

(WebCore::directionString):

  • html/ImageInputType.cpp:

(WebCore::ImageInputType::appendFormData):

  • html/InputTypeNames.cpp:

(WebCore::InputTypeNames::button):
(WebCore::InputTypeNames::checkbox):
(WebCore::InputTypeNames::color):
(WebCore::InputTypeNames::date):
(WebCore::InputTypeNames::datetime):
(WebCore::InputTypeNames::datetimelocal):
(WebCore::InputTypeNames::email):
(WebCore::InputTypeNames::file):
(WebCore::InputTypeNames::hidden):
(WebCore::InputTypeNames::image):
(WebCore::InputTypeNames::month):
(WebCore::InputTypeNames::number):
(WebCore::InputTypeNames::password):
(WebCore::InputTypeNames::radio):
(WebCore::InputTypeNames::range):
(WebCore::InputTypeNames::reset):
(WebCore::InputTypeNames::search):
(WebCore::InputTypeNames::submit):
(WebCore::InputTypeNames::telephone):
(WebCore::InputTypeNames::text):
(WebCore::InputTypeNames::time):
(WebCore::InputTypeNames::url):
(WebCore::InputTypeNames::week):

  • html/MediaController.cpp:

(playbackStateWaiting):
(playbackStatePlaying):
(playbackStateEnded):

  • html/MonthInputType.cpp:

(WebCore::MonthInputType::createStepRange):

  • html/NumberInputType.cpp:

(WebCore::NumberInputType::createStepRange):

  • html/RangeInputType.cpp:

(WebCore::RangeInputType::createStepRange):

  • html/StepRange.cpp:

(WebCore::StepRange::acceptableError):
(WebCore::StepRange::alignValueForStep):
(WebCore::StepRange::stepMismatch):

  • html/TimeInputType.cpp:

(WebCore::TimeInputType::createStepRange):

  • html/WeekInputType.cpp:

(WebCore::WeekInputType::createStepRange):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::getImageData):

  • html/parser/XSSAuditor.cpp:

(WebCore::XSSAuditor::init):
(WebCore::XSSAuditor::eraseDangerousAttributesIfInjected):

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlClosedCaptionsTrackListElement::updateDisplay):
(WebCore::getMediaControlTimeRemainingDisplayElementShadowPseudoId):
(WebCore::getMediaControlCurrentTimeDisplayElementShadowPseudoId):

  • html/shadow/MeterShadowElement.cpp:

(WebCore::MeterInnerElement::MeterInnerElement):
(WebCore::MeterValueElement::valuePseudoId):

  • html/shadow/MeterShadowElement.h:
  • html/shadow/SliderThumbElement.cpp:

(WebCore::sliderThumbShadowPseudoId):
(WebCore::mediaSliderThumbShadowPseudoId):
(WebCore::SliderContainerElement::shadowPseudoId):

  • html/track/AudioTrack.cpp:

(WebCore::AudioTrack::alternativeKeyword):
(WebCore::AudioTrack::descriptionKeyword):
(WebCore::AudioTrack::mainKeyword):
(WebCore::AudioTrack::mainDescKeyword):
(WebCore::AudioTrack::translationKeyword):
(WebCore::AudioTrack::commentaryKeyword):

  • html/track/TextTrack.cpp:

(WebCore::TextTrack::subtitlesKeyword):
(WebCore::TextTrack::captionsKeyword):
(WebCore::TextTrack::descriptionsKeyword):
(WebCore::TextTrack::chaptersKeyword):
(WebCore::TextTrack::metadataKeyword):
(WebCore::TextTrack::forcedKeyword):
(WebCore::TextTrack::disabledKeyword):
(WebCore::TextTrack::hiddenKeyword):
(WebCore::TextTrack::showingKeyword):

  • html/track/TextTrackCue.h:

(WebCore::TextTrackCue::cueShadowPseudoId):

  • html/track/VTTCue.cpp:

(WebCore::startKeyword):
(WebCore::middleKeyword):
(WebCore::endKeyword):
(WebCore::leftKeyword):
(WebCore::rightKeyword):
(WebCore::verticalGrowingLeftKeyword):
(WebCore::verticalGrowingRightKeyword):
(WebCore::VTTCueBox::vttCueBoxShadowPseudoId):
(WebCore::VTTCue::cueBackdropShadowPseudoId):
(WebCore::VTTCue::determineTextDirection):
(WebCore::VTTCue::markFutureAndPastNodes):

  • html/track/VTTRegion.cpp:

(WebCore::VTTRegion::scroll):
(WebCore::VTTRegion::setScroll):
(WebCore::VTTRegion::parseSettingValue):
(WebCore::VTTRegion::textTrackCueContainerScrollingClass):

  • html/track/VideoTrack.cpp:

(WebCore::VideoTrack::alternativeKeyword):
(WebCore::VideoTrack::captionsKeyword):
(WebCore::VideoTrack::mainKeyword):
(WebCore::VideoTrack::signKeyword):
(WebCore::VideoTrack::subtitlesKeyword):
(WebCore::VideoTrack::commentaryKeyword):

  • html/track/WebVTTElement.cpp:

(WebCore::nodeTypeToTagName):

  • html/track/WebVTTElement.h:
  • html/track/WebVTTParser.cpp:

(WebCore::WebVTTParser::collectMetadataHeader):

  • inspector/InspectorCSSAgent.cpp:

(WebCore::computePseudoClassMask):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::sourceMapURLForResource):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::selectorsFromSource):

  • inspector/PageDebuggerAgent.cpp:

(WebCore::PageDebuggerAgent::sourceMapURLForScript):

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::notifyFinished):

  • loader/TextTrackLoader.cpp:

(WebCore::TextTrackLoader::corsPolicyPreventedLoad):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::initiatorName):

  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::defaultDatabaseFilename):

  • page/CaptionUserPreferences.cpp:

(WebCore::CaptionUserPreferences::updateCaptionStyleSheetOveride):

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::captionsBackgroundCSS):
(WebCore::CaptionUserPreferencesMediaAF::captionsTextEdgeCSS):

  • page/ContentSecurityPolicy.cpp:

(WebCore::CSPDirectiveList::allowJavaScriptURLs):
(WebCore::CSPDirectiveList::allowInlineEventHandlers):
(WebCore::CSPDirectiveList::allowInlineScript):
(WebCore::CSPDirectiveList::allowInlineStyle):
(WebCore::CSPDirectiveList::allowEval):
(WebCore::ContentSecurityPolicy::reportUnsupportedDirective):

  • page/DOMWindow.cpp:

(WebCore::windowsWithUnloadEventListeners):
(WebCore::windowsWithBeforeUnloadEventListeners):

  • page/EventHandler.cpp:

(WebCore::EventHandler::dragState):
(WebCore::focusDirectionForKey):

  • page/Frame.cpp:

(WebCore::createRegExpForLabels):

  • page/NavigatorBase.cpp:

(WebCore::NavigatorBase::platform):

  • page/PageVisibilityState.cpp:

(WebCore::pageVisibilityStateString):

  • page/SecurityPolicy.cpp:

(WebCore::originAccessMap):

  • page/UserContentURLPattern.cpp:

(WebCore::UserContentURLPattern::parse):

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::shadowForBlending):

  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::updateKeyframeAnimations):

  • platform/Cursor.cpp:

(WebCore::pointerCursor):
(WebCore::crossCursor):
(WebCore::handCursor):
(WebCore::moveCursor):
(WebCore::verticalTextCursor):
(WebCore::cellCursor):
(WebCore::contextMenuCursor):
(WebCore::aliasCursor):
(WebCore::zoomInCursor):
(WebCore::zoomOutCursor):
(WebCore::copyCursor):
(WebCore::noneCursor):
(WebCore::progressCursor):
(WebCore::noDropCursor):
(WebCore::notAllowedCursor):
(WebCore::iBeamCursor):
(WebCore::waitCursor):
(WebCore::helpCursor):
(WebCore::eastResizeCursor):
(WebCore::northResizeCursor):
(WebCore::northEastResizeCursor):
(WebCore::northWestResizeCursor):
(WebCore::southResizeCursor):
(WebCore::southEastResizeCursor):
(WebCore::southWestResizeCursor):
(WebCore::westResizeCursor):
(WebCore::northSouthResizeCursor):
(WebCore::eastWestResizeCursor):
(WebCore::northEastSouthWestResizeCursor):
(WebCore::northWestSouthEastResizeCursor):
(WebCore::columnResizeCursor):
(WebCore::rowResizeCursor):
(WebCore::middlePanningCursor):
(WebCore::eastPanningCursor):
(WebCore::northPanningCursor):
(WebCore::northEastPanningCursor):
(WebCore::northWestPanningCursor):
(WebCore::southPanningCursor):
(WebCore::southEastPanningCursor):
(WebCore::southWestPanningCursor):
(WebCore::westPanningCursor):
(WebCore::grabCursor):
(WebCore::grabbingCursor):

  • platform/Language.cpp:

(WebCore::preferredLanguagesOverride):

  • platform/LocalizedStrings.cpp:

(WebCore::truncatedStringForLookupMenuItem):

  • platform/MIMETypeRegistry.cpp:

(WebCore::mediaMIMETypeMap):
(WebCore::defaultMIMEType):

  • platform/SchemeRegistry.cpp:

(WebCore::localURLSchemes):
(WebCore::displayIsolatedURLSchemes):
(WebCore::secureSchemes):
(WebCore::schemesWithUniqueOrigins):
(WebCore::emptyDocumentSchemes):
(WebCore::schemesForbiddenFromDomainRelaxation):
(WebCore::canDisplayOnlyIfCanRequestSchemes):
(WebCore::notAllowingJavascriptURLsSchemes):
(WebCore::schemesAllowingLocalStorageAccessInPrivateBrowsing):
(WebCore::schemesAllowingDatabaseAccessInPrivateBrowsing):
(WebCore::CORSEnabledSchemes):
(WebCore::ContentSecurityPolicyBypassingSchemes):

  • platform/ScrollbarTheme.cpp:

(WebCore::ScrollbarTheme::theme):

  • platform/URL.cpp:

(WebCore::blankURL):

  • platform/animation/Animation.cpp:

(WebCore::Animation::initialName):

  • platform/audio/AudioSession.cpp:

(WebCore::AudioSession::sharedSession):

  • platform/audio/AudioSession.h:
  • platform/audio/HRTFElevation.cpp:

(WebCore::getConcatenatedImpulseResponsesForSubject):

  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::audioDestinations):

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::repaintRectMap):

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::transformColorSpace):

  • platform/graphics/MediaPlayer.cpp:

(WebCore::applicationOctetStream):
(WebCore::textPlain):
(WebCore::codecs):

  • platform/graphics/ShadowBlur.cpp:

(WebCore::ScratchBuffer::singleton):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::playerToPrivateMap):

  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::effectName):

  • platform/graphics/filters/SourceGraphic.cpp:

(WebCore::SourceGraphic::effectName):

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

(WebCore::mimeCommonTypesCache):
(WebCore::mimeModernTypesCache):

  • platform/ios/CursorIOS.cpp:

(WebCore::cursor):

  • platform/ios/TileControllerMemoryHandlerIOS.cpp:

(WebCore::tileControllerMemoryHandler):

  • platform/ios/WebCoreMotionManager.mm:

(+[WebCoreMotionManager sharedManager]):

  • platform/ios/WebVideoFullscreenModelVideoElement.mm:

(WebVideoFullscreenModelVideoElement::updateForEventName):

  • platform/ios/wak/WKContentObservation.cpp:

(WebThreadGetObservedContentModifiers):

  • platform/mac/DragImageMac.mm:

(WebCore::fontFromNSFont):

  • platform/mac/ThemeMac.mm:

(WebCore::platformTheme):

  • platform/mac/ThreadCheck.mm:

(WebCoreReportThreadViolation):

  • platform/mediastream/mac/AVCaptureDeviceManager.h:
  • platform/mediastream/mac/AVCaptureDeviceManager.mm:

(WebCore::AVCaptureDeviceManager::singleton):

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

(WebCore::RealtimeMediaSourceCenter::platformCenter):

  • platform/mock/mediasource/MockBox.cpp:

(WebCore::MockTrackBox::type):
(WebCore::MockInitializationBox::type):
(WebCore::MockSampleBox::type):

  • platform/network/HTTPParsers.cpp:

(WebCore::parseXSSProtectionHeader):

  • platform/network/ResourceHandle.cpp:

(WebCore::builtinResourceHandleConstructorMap):
(WebCore::builtinResourceHandleSynchronousLoaderMap):

  • platform/network/cf/ResourceHandleCFNet.cpp:

(WebCore::allowsAnyHTTPSCertificateHosts):
(WebCore::clientCerts):

  • platform/text/AtomicStringKeyedMRUCache.h:

(WebCore::AtomicStringKeyedMRUCache::get):

  • platform/text/cf/HyphenationCF.cpp:

(WebCore::cfLocaleCache):

  • rendering/RenderBlock.cpp:

(WebCore::continuationOutlineTable):

  • rendering/RenderCounter.cpp:

(WebCore::counterMaps):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::drawPlatformResizerImage):

  • rendering/RenderScrollbarTheme.cpp:

(WebCore::RenderScrollbarTheme::renderScrollbarTheme):

  • rendering/RenderTheme.cpp:

(WebCore::customFocusRingColor):

  • rendering/RenderWidget.cpp:

(WebCore::WidgetHierarchyUpdatesSuspensionScope::widgetNewParentMap):

  • rendering/shapes/ShapeOutsideInfo.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::hyphenString):
(WebCore::RenderStyle::textEmphasisMarkString):
(WebCore::RenderStyle::initialDashboardRegions):
(WebCore::RenderStyle::noneDashboardRegions):

  • rendering/style/RenderStyle.h:
  • rendering/svg/RenderSVGPath.cpp:

(WebCore::RenderSVGPath::zeroLengthLinecapPath):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::nonScalingStrokePath):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::currentContentTransformation):

  • rendering/svg/SVGResources.cpp:

(WebCore::clipperFilterMaskerTags):
(WebCore::markerTags):
(WebCore::fillAndStrokeTags):
(WebCore::chainableResourceTags):

  • svg/SVGAngle.cpp:

(WebCore::SVGAngle::valueAsString):

  • svg/SVGAnimateColorElement.cpp:

(WebCore::attributeValueIsCurrentColor):

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::rotateMode):

  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::setCalcMode):
(WebCore::SVGAnimationElement::setAttributeType):
(WebCore::SVGAnimationElement::isAdditive):
(WebCore::SVGAnimationElement::isAccumulated):
(WebCore::inheritsFromProperty):

  • svg/SVGFEConvolveMatrixElement.cpp:

(WebCore::SVGFEConvolveMatrixElement::kernelUnitLengthXIdentifier):
(WebCore::SVGFEConvolveMatrixElement::kernelUnitLengthYIdentifier):
(WebCore::SVGFEConvolveMatrixElement::orderXIdentifier):
(WebCore::SVGFEConvolveMatrixElement::orderYIdentifier):

  • svg/SVGFEDiffuseLightingElement.cpp:

(WebCore::SVGFEDiffuseLightingElement::kernelUnitLengthXIdentifier):
(WebCore::SVGFEDiffuseLightingElement::kernelUnitLengthYIdentifier):

  • svg/SVGFEDropShadowElement.cpp:

(WebCore::SVGFEDropShadowElement::stdDeviationXIdentifier):
(WebCore::SVGFEDropShadowElement::stdDeviationYIdentifier):

  • svg/SVGFEGaussianBlurElement.cpp:

(WebCore::SVGFEGaussianBlurElement::stdDeviationXIdentifier):
(WebCore::SVGFEGaussianBlurElement::stdDeviationYIdentifier):

  • svg/SVGFEMorphologyElement.cpp:

(WebCore::SVGFEMorphologyElement::radiusXIdentifier):
(WebCore::SVGFEMorphologyElement::radiusYIdentifier):

  • svg/SVGFESpecularLightingElement.cpp:

(WebCore::SVGFESpecularLightingElement::kernelUnitLengthXIdentifier):
(WebCore::SVGFESpecularLightingElement::kernelUnitLengthYIdentifier):

  • svg/SVGFETurbulenceElement.cpp:

(WebCore::SVGFETurbulenceElement::baseFrequencyXIdentifier):
(WebCore::SVGFETurbulenceElement::baseFrequencyYIdentifier):

  • svg/SVGFilterElement.cpp:

(WebCore::SVGFilterElement::filterResXIdentifier):
(WebCore::SVGFilterElement::filterResYIdentifier):

  • svg/SVGGlyphMap.h:

(WebCore::SVGGlyphMap::svgGlyphForGlyph):

  • svg/SVGLangSpace.cpp:

(WebCore::SVGLangSpace::xmlspace):
(WebCore::SVGLangSpace::addSupportedAttributes):

  • svg/SVGMarkerElement.cpp:

(WebCore::SVGMarkerElement::orientTypeIdentifier):
(WebCore::SVGMarkerElement::orientAngleIdentifier):
(WebCore::SVGMarkerElement::synchronizeOrientType):

  • svg/SVGStyleElement.cpp:

(WebCore::SVGStyleElement::type):
(WebCore::SVGStyleElement::media):

  • svg/SVGTransform.cpp:

(WebCore::SVGTransform::transformTypePrefixForParsing):

  • svg/SVGViewSpec.cpp:

(WebCore::SVGViewSpec::viewBoxIdentifier):
(WebCore::SVGViewSpec::preserveAspectRatioIdentifier):
(WebCore::SVGViewSpec::transformIdentifier):

  • svg/animation/SVGSMILElement.cpp:

(WebCore::SVGSMILElement::parseClockValue):
(WebCore::SVGSMILElement::isSupportedAttribute):
(WebCore::SVGSMILElement::restart):
(WebCore::SVGSMILElement::fill):
(WebCore::SVGSMILElement::repeatCount):
(WebCore::SVGSMILElement::notifyDependentsIntervalChanged):

Source/WTF:

Mostly mechanical conversion to NeverDestroyed throughout WTF.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::current):

  • wtf/ThreadingPthreads.cpp:

(WTF::threadMapMutex):
(WTF::threadMap):

Jan 8, 2016:

10:32 PM Changeset in webkit [194818] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Test Resources should not be included in Production builds unless FORCE_TOOL_INSTALL
https://bugs.webkit.org/show_bug.cgi?id=152941
<rdar://problem/24119013>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-08
Reviewed by Dan Bernstein.

  • Configurations/Base.xcconfig:

Combine inspector resources in production, but not test resources.

  • Configurations/DebugRelease.xcconfig:

Do not combine inspector resources in Release/Debug. Combine test resources.

  • Configurations/WebInspectorUIFramework.xcconfig:

Simplify by moving to other config files.

  • Scripts/copy-user-interface-resources.pl:

Have FORCE_TOOL_INSTALL combine test resources as well.

  • WebInspectorUI.vcxproj/build-webinspectorui.pl:

Only combine test resources in non-Production.

10:27 PM Changeset in webkit [194817] by Alan Bujtas
  • 11 edits
    2 adds in trunk

Absolute positioning -webkit-search-cancel-button crashes Safari.
https://bugs.webkit.org/show_bug.cgi?id=152847
<rdar://problem/24112087>

Reviewed by Simon Fraser.

Do not call offsetFromContainer while resolving the painting position for the search/cancel button renderer.
It skips the static positioned parent input renderer, when the search/cancel renderer is absolute positioned.
This patch also fixes a rendering glitch when the margin-right is > 0.

Source/WebCore:

Test: fast/forms/absolute-positioned-custom-search-cancel-crash.html

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::paintSearchFieldCancelButton):
(WebCore::RenderTheme::paintSearchFieldResultsDecorationPart):
(WebCore::RenderTheme::paintSearchFieldResultsButton):

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::convertToPaintingPosition):
(WebCore::RenderThemeMac::paintSearchFieldCancelButton):
(WebCore::RenderThemeMac::paintSearchFieldResultsDecorationPart):
(WebCore::RenderThemeMac::paintSearchFieldResultsButton):
(WebCore::RenderThemeMac::convertToPaintingRect): Deleted.

LayoutTests:

  • fast/forms/absolute-positioned-custom-search-cancel-crash-expected.txt: Added.
  • fast/forms/absolute-positioned-custom-search-cancel-crash.html: Added.
10:07 PM Changeset in webkit [194816] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Add display-list drawing hooks to platform-specific GraphicsContext files
https://bugs.webkit.org/show_bug.cgi?id=152940

Reviewed by Zalan Bujtas.

Call into the display list recorder for top-level entrypoints implemented in platform-specific
files.

The convention is that if a function begins with "platform", it's not a top-level
entry point, and should only be called when there's a platform context (i.e. not
recording, and not paintingDisabled).

A few instances are stubbed out until we have a more complete display list implementation.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawText):

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::getCTM):
(WebCore::GraphicsContext::savePlatformState):
(WebCore::GraphicsContext::restorePlatformState):
(WebCore::GraphicsContext::drawRect):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawLine):
(WebCore::GraphicsContext::drawEllipse):
(WebCore::GraphicsContext::drawConvexPolygon):
(WebCore::GraphicsContext::clipConvexPolygon):
(WebCore::GraphicsContext::fillPath):
(WebCore::GraphicsContext::strokePath):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::clip):
(WebCore::GraphicsContext::clipPath):
(WebCore::GraphicsContext::clipBounds):
(WebCore::GraphicsContext::drawLinesForText):
(WebCore::GraphicsContext::roundToDevicePixels):
(WebCore::GraphicsContext::translate):
(WebCore::GraphicsContext::setPlatformStrokeThickness):
(WebCore::GraphicsContext::setPlatformStrokeStyle):
(WebCore::GraphicsContext::concatCTM):
(WebCore::GraphicsContext::setCTM):
(WebCore::GraphicsContext::beginPlatformTransparencyLayer):
(WebCore::GraphicsContext::endPlatformTransparencyLayer):
(WebCore::GraphicsContext::clearRect):
(WebCore::GraphicsContext::strokeRect):
(WebCore::GraphicsContext::setLineCap):
(WebCore::GraphicsContext::setLineDash):
(WebCore::GraphicsContext::setLineJoin):
(WebCore::GraphicsContext::clipOut):
(WebCore::GraphicsContext::rotate):
(WebCore::GraphicsContext::scale):
(WebCore::GraphicsContext::platformFillRoundedRect):
(WebCore::GraphicsContext::fillRectWithRoundedHole):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::setPlatformShouldAntialias):
(WebCore::GraphicsContext::setPlatformImageInterpolationQuality):
(WebCore::GraphicsContext::isAcceleratedContext):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::savePlatformState):
(WebCore::GraphicsContext::restorePlatformState):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::drawRect):
(WebCore::GraphicsContext::drawLine):
(WebCore::GraphicsContext::drawEllipse):
(WebCore::GraphicsContext::drawConvexPolygon):
(WebCore::GraphicsContext::clipConvexPolygon):
(WebCore::GraphicsContext::applyStrokePattern):
(WebCore::GraphicsContext::applyFillPattern):
(WebCore::GraphicsContext::drawPath):
(WebCore::GraphicsContext::fillPath):
(WebCore::GraphicsContext::strokePath):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::platformFillRoundedRect):
(WebCore::GraphicsContext::fillRectWithRoundedHole):
(WebCore::GraphicsContext::clip):
(WebCore::GraphicsContext::clipOut):
(WebCore::GraphicsContext::clipPath):
(WebCore::GraphicsContext::clipBounds):
(WebCore::GraphicsContext::beginPlatformTransparencyLayer):
(WebCore::GraphicsContext::endPlatformTransparencyLayer):
(WebCore::GraphicsContext::setPlatformShadow):
(WebCore::GraphicsContext::setMiterLimit):
(WebCore::GraphicsContext::clearRect):
(WebCore::GraphicsContext::strokeRect):
(WebCore::GraphicsContext::setLineCap):
(WebCore::GraphicsContext::setLineDash):
(WebCore::GraphicsContext::setLineJoin):
(WebCore::GraphicsContext::scale):
(WebCore::GraphicsContext::rotate):
(WebCore::GraphicsContext::translate):
(WebCore::GraphicsContext::concatCTM):
(WebCore::GraphicsContext::setCTM):
(WebCore::GraphicsContext::getCTM):
(WebCore::GraphicsContext::roundToDevicePixels):
(WebCore::GraphicsContext::drawLinesForText):
(WebCore::GraphicsContext::setURLForRect):
(WebCore::GraphicsContext::setIsCALayerContext):
(WebCore::GraphicsContext::isCALayerContext):
(WebCore::GraphicsContext::setIsAcceleratedContext):
(WebCore::GraphicsContext::isAcceleratedContext):
(WebCore::GraphicsContext::setPlatformTextDrawingMode):
(WebCore::GraphicsContext::setPlatformStrokeColor):
(WebCore::GraphicsContext::setPlatformStrokeThickness):
(WebCore::GraphicsContext::setPlatformFillColor):
(WebCore::GraphicsContext::setPlatformShouldAntialias):
(WebCore::GraphicsContext::setPlatformShouldSmoothFonts):
(WebCore::GraphicsContext::setPlatformAlpha):
(WebCore::GraphicsContext::setPlatformCompositeOperation):
(WebCore::GraphicsContext::platformApplyDeviceScaleFactor):
(WebCore::GraphicsContext::platformFillEllipse):
(WebCore::GraphicsContext::platformStrokeEllipse):

5:57 PM Changeset in webkit [194815] by beidson@apple.com
  • 4 edits in trunk/LayoutTests

Modern IDB: storage/indexeddb/setversion-blocked-by-versionchange-close.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152936

Reviewed by Alex Christensen.

  • platform/mac-wk1/TestExpectations:
  • storage/indexeddb/resources/setversion-blocked-by-versionchange-close.js:
  • storage/indexeddb/setversion-blocked-by-versionchange-close-expected.txt:
5:41 PM Changeset in webkit [194814] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

Add DisplayList hooks into GraphicsContext
https://bugs.webkit.org/show_bug.cgi?id=152932

Reviewed by Zalan Bujtas.

Add the hooks into GraphicsContext that call into the DisplayListRecorder if there
is one.

Rename size() to something less ambiguous.

Out-of-line some DisplayList functions so that the header doesn't need to see
DisplayListItems.h.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::save):
(WebCore::GraphicsContext::restore):
(WebCore::GraphicsContext::setStrokeThickness):
(WebCore::GraphicsContext::setStrokeStyle):
(WebCore::GraphicsContext::setStrokeColor):
(WebCore::GraphicsContext::setShadow):
(WebCore::GraphicsContext::setLegacyShadow):
(WebCore::GraphicsContext::clearShadow):
(WebCore::GraphicsContext::setFillColor):
(WebCore::GraphicsContext::setShadowsIgnoreTransforms):
(WebCore::GraphicsContext::setShouldAntialias):
(WebCore::GraphicsContext::setShouldSmoothFonts):
(WebCore::GraphicsContext::setShouldSubpixelQuantizeFonts):
(WebCore::GraphicsContext::setImageInterpolationQuality):
(WebCore::GraphicsContext::setAntialiasedFontDilationEnabled):
(WebCore::GraphicsContext::setStrokePattern):
(WebCore::GraphicsContext::setFillPattern):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillRule):
(WebCore::GraphicsContext::setFillGradient):
(WebCore::GraphicsContext::beginTransparencyLayer):
(WebCore::GraphicsContext::endTransparencyLayer):
(WebCore::GraphicsContext::drawGlyphs):
(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
(WebCore::GraphicsContext::setTextDrawingMode):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::fillRoundedRect):
(WebCore::GraphicsContext::setAlpha):
(WebCore::GraphicsContext::setCompositeOperation):
(WebCore::GraphicsContext::setDrawLuminanceMask):
(WebCore::GraphicsContext::applyDeviceScaleFactor):
(WebCore::GraphicsContext::applyState):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::setDisplayListRecorder):
(WebCore::GraphicsContext::isRecording):
(WebCore::GraphicsContext::setFillRule): Deleted.
(WebCore::GraphicsContext::setShadowsIgnoreTransforms): Deleted.
(WebCore::GraphicsContext::setShouldSubpixelQuantizeFonts): Deleted.
(WebCore::GraphicsContext::setDrawLuminanceMask): Deleted.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::clear):
(WebCore::DisplayList::DisplayList::removeItemsFromIndex):

  • platform/graphics/displaylists/DisplayList.h:

(WebCore::DisplayList::DisplayList::itemCount):
(WebCore::DisplayList::DisplayList::clear): Deleted.
(WebCore::DisplayList::DisplayList::size): Deleted.
(WebCore::DisplayList::DisplayList::removeItemsFromIndex): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::save):
(WebCore::DisplayList::Recorder::restore):

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::itemCount):
(WebCore::DisplayList::Recorder::size): Deleted.

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

(WebCore::DisplayList::Replayer::replay):

5:36 PM Changeset in webkit [194813] by bshafiei@apple.com
  • 2 edits in tags/Safari-602.1.15.0.1

Merged r194809. rdar://problem/24116804

5:35 PM Changeset in webkit [194812] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.15.0.1/Source

Versioning.

5:33 PM Changeset in webkit [194811] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.15.0.1

New tag.

5:21 PM Changeset in webkit [194810] by achristensen@apple.com
  • 14 edits
    2 adds in trunk/Source/WebKit2

Implement download authentication with NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=152878

Reviewed by Brady Eidson.

  • DerivedSources.make:
  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/Downloads/PendingDownload.cpp: Added.

(WebKit::PendingDownload::PendingDownload):
(WebKit::PendingDownload::willSendRedirectedRequest):
(WebKit::PendingDownload::continueWillSendRequest):
(WebKit::PendingDownload::canAuthenticateAgainstProtectionSpaceAsync):
(WebKit::PendingDownload::continueCanAuthenticateAgainstProtectionSpace):
(WebKit::PendingDownload::didConvertToDownload):
(WebKit::PendingDownload::messageSenderConnection):
(WebKit::PendingDownload::messageSenderDestinationID):

  • NetworkProcess/Downloads/PendingDownload.h:

(WebKit::PendingDownload::PendingDownload): Deleted.

  • NetworkProcess/Downloads/PendingDownload.messages.in: Added.
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::continueWillSendRequest):
The completion handler should always be called. If m_currentRequest is null, then the request will not proceed, which is the same as canceling it.
(WebKit::NetworkLoad::setPendingDownloadID):
(WebKit::NetworkLoad::setPendingDownload):
(WebKit::NetworkLoad::willPerformHTTPRedirection):
(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):
If this load is going to become a download, then call the PendingDownload version of didReceiveAuthenticationChallenge to communicate with the
UI process directly because there wasn't necessarily a web process associated with this request that will become a download.

  • NetworkProcess/NetworkLoad.h:

(WebKit::NetworkLoad::pendingDownloadID):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkDataTask::client):
(WebKit::NetworkDataTask::pendingDownloadID):
(WebKit::NetworkDataTask::pendingDownload):
(WebKit::NetworkDataTask::setPendingDownloadID):
(WebKit::NetworkDataTask::setPendingDownload):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:
  • PlatformMac.cmake:
  • Shared/Authentication/AuthenticationManager.cpp:

(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):

  • Shared/Authentication/AuthenticationManager.h:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::canAuthenticateAgainstProtectionSpace):
Removed unnecessary protection and move null check to before using the pointer it checks.

4:59 PM Changeset in webkit [194809] by achristensen@apple.com
  • 2 edits in trunk

Fix internal Windows build
https://bugs.webkit.org/show_bug.cgi?id=152937

Reviewed by Brent Fulgham.

  • Source/cmake/WebKitCommon.cmake:

Try looking in the default cygwin installation directory for executables like bison, flex, gperf, and ruby.
This is needed on Windows builds that are not driven by cygwin, but need to use the cygwin installations of these tools.
This is the effective equivalent of this line in WebKitLibraries/win/tools/vsprops/common.props in the old build system:
set PATH=%SystemDrive%\cygwin\bin;%PATH%

4:50 PM Changeset in webkit [194808] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:42 PM Changeset in webkit [194807] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking fast/scrolling/scroll-position-on-reload-rtl.html as failing on ios-simulator
https://bugs.webkit.org/show_bug.cgi?id=152935

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
4:41 PM Changeset in webkit [194806] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping two unsupported mouse event tests on ios-simulator

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
4:37 PM Changeset in webkit [194805] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

FTL B3 should do varargs tail calls and stack overflows
https://bugs.webkit.org/show_bug.cgi?id=152934

Reviewed by Saam Barati.

I was trying to get tail-call-varargs-no-stack-overflow.js.ftl-no-cjit-validate to work and
at first I hit the stack overflow issue and then I hit the varargs tail call issue. That's
why I have two fixes in one change. Now the test passes.

This reduces the number of failures from 13 to 0.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::lower): Implement stack overflow handling.
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs): Varargs tail calls need to
append an Oops (i.e. "unreachable").

4:36 PM Changeset in webkit [194804] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:24 PM Changeset in webkit [194803] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
4:01 PM Changeset in webkit [194802] by fpizlo@apple.com
  • 12 edits
    1 add in trunk/Source/JavaScriptCore

B3 needs Neg()
https://bugs.webkit.org/show_bug.cgi?id=152925

Reviewed by Mark Lam.

Previously we said that negation should be represented as Sub(0, x). That's wrong, since
for floats, Sub(0, 0) == 0 while Neg(0) == -0.

One way to solve this would be to say that anyone trying to say Neg(x) where x is a float
should instead say BitXor(x, -0). That's actually correct, but I think that it would be odd
to use bitops to represent floating point operations. Whatever cuteness this would have
bought us would be outweighed by the annoyance of having to write code that matches
Sub(0, x) for integer negation and BitXor(x, -0) for double negation. For example, this
would mean strictly more code for anyone implementing a Neg(Neg(x))=>x strength reduction.
Also, I suspect that the omission of Neg would cause others to make the mistake of using
Sub to represent floating point negation.

So, this introduces a proper Neg() opcode to B3. It's now the canonical way of saying
negation for both ints and floats. For ints, we canonicalize Sub(0, x) to Neg(x). For
floats, we lower it to BitXor(x, -0) on x86.

This reduces the number of failures from 13 to 12.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::andFloat):
(JSC::MacroAssemblerX86Common::xorDouble):
(JSC::MacroAssemblerX86Common::xorFloat):
(JSC::MacroAssemblerX86Common::convertInt32ToDouble):

  • b3/B3LowerMacrosAfterOptimizations.cpp:
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lower):

  • b3/B3Opcode.cpp:

(WTF::printInternal):

  • b3/B3Opcode.h:
  • b3/B3ReduceStrength.cpp:
  • b3/B3Validate.cpp:
  • b3/B3Value.cpp:

(JSC::B3::Value::effects):
(JSC::B3::Value::key):
(JSC::B3::Value::typeFor):

  • b3/air/AirOpcode.opcodes:
  • ftl/FTLB3Output.cpp:

(JSC::FTL::Output::lockedStackSlot):
(JSC::FTL::Output::neg):
(JSC::FTL::Output::bitNot):

  • ftl/FTLB3Output.h:

(JSC::FTL::Output::chillDiv):
(JSC::FTL::Output::mod):
(JSC::FTL::Output::chillMod):
(JSC::FTL::Output::doubleAdd):
(JSC::FTL::Output::doubleSub):
(JSC::FTL::Output::doubleMul):
(JSC::FTL::Output::doubleDiv):
(JSC::FTL::Output::doubleMod):
(JSC::FTL::Output::doubleNeg):
(JSC::FTL::Output::bitAnd):
(JSC::FTL::Output::bitOr):
(JSC::FTL::Output::neg): Deleted.

  • tests/stress/ftl-negate-zero.js: Added. This was already covered by op_negate but since

it's such a glaring bug, I thought having a test for it specifically would be good.

3:50 PM Changeset in webkit [194801] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking js/intl-collator.html as failing on ios-simulator
https://bugs.webkit.org/show_bug.cgi?id=152448

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
3:41 PM Changeset in webkit [194800] by beidson@apple.com
  • 4 edits in trunk

Modern IDB: imported/w3c/indexeddb/keyorder.htm times out.
https://bugs.webkit.org/show_bug.cgi?id=152929

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (Existing test now runs in the test harness).

  • Modules/indexeddb/client/IDBCursorImpl.cpp:

(WebCore::IDBClient::IDBCursor::setGetResult):

LayoutTests:

  • platform/mac-wk1/TestExpectations:
3:36 PM Changeset in webkit [194799] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking two css3/filters/composited-during-* tests as failing on ios-simulator.
https://bugs.webkit.org/show_bug.cgi?id=152282

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
3:26 PM Changeset in webkit [194798] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

Consider painting to be disabled on a GraphicsContext with no platform data, and make updatingControlTints() immutable state
https://bugs.webkit.org/show_bug.cgi?id=152927

Reviewed by Tim Horton.

GraphicsContext had setters for paintingDisabled and updatingControlTints, but neither
were changed dynamically.

We can eliminate paintingDisabled by simply considering a GraphicsContext that was
created with no platform context to be paint-disabled.

We make updatingControlTints immutable state by providing a constructor that takes
a "NonPaintingReasons" enum, and doesn't create platform data.

More functions in platform code were protected by if (paintingDisabled())...

  • page/FrameView.cpp:

(WebCore::FrameView::paintControlTints):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::fillRoundedRect):
(WebCore::GraphicsContext::setUpdatingControlTints): Deleted.
(WebCore::GraphicsContext::clip): Deleted.

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::paintingDisabled):
(WebCore::GraphicsContext::updatingControlTints):
(WebCore::GraphicsContextState::GraphicsContextState): Deleted.
(WebCore::GraphicsContext::setPaintingDisabled): Deleted.

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::platformInit):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::platformInit):
(WebCore::GraphicsContext::savePlatformState):
(WebCore::GraphicsContext::restorePlatformState):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::drawRect):
(WebCore::GraphicsContext::applyStrokePattern):
(WebCore::GraphicsContext::applyFillPattern):
(WebCore::GraphicsContext::clip):
(WebCore::GraphicsContext::clipBounds):
(WebCore::GraphicsContext::setLineDash):
(WebCore::GraphicsContext::roundToDevicePixels):
(WebCore::GraphicsContext::setPlatformImageInterpolationQuality):
(WebCore::GraphicsContext::setIsCALayerContext):
(WebCore::GraphicsContext::isCALayerContext):
(WebCore::GraphicsContext::setIsAcceleratedContext):
(WebCore::GraphicsContext::isAcceleratedContext):
(WebCore::GraphicsContext::platformApplyDeviceScaleFactor):

  • platform/graphics/win/GraphicsContextCGWin.cpp:

(WebCore::GraphicsContext::platformInit):
(WebCore::GraphicsContext::GraphicsContext): Deleted.

  • platform/graphics/win/GraphicsContextCairoWin.cpp:

(WebCore::GraphicsContext::platformInit):
(WebCore::GraphicsContext::GraphicsContext): Deleted.

3:25 PM Changeset in webkit [194797] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark compositing/overflow/dynamic-composited-scrolling-status.html as failing on ios-simulator, remove duplicate
expectation added by previous commit.

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
3:19 PM Changeset in webkit [194796] by andersca@apple.com
  • 8 edits in trunk/Source/WebCore

InputType::findClosestTickMarkValue should return an Optional<Decimal>
https://bugs.webkit.org/show_bug.cgi?id=152931

Reviewed by Andreas Kling.

This will make it possible to get rid of the notion of infinity from Decimal, allowing for more code simplification.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::findClosestTickMarkValue):

  • html/HTMLInputElement.h:
  • html/InputType.cpp:

(WebCore::InputType::findClosestTickMarkValue):

  • html/InputType.h:
  • html/RangeInputType.cpp:

(WebCore::RangeInputType::findClosestTickMarkValue):

  • html/RangeInputType.h:
  • html/shadow/SliderThumbElement.cpp:

(WebCore::SliderThumbElement::setPositionFromPoint):

3:19 PM Changeset in webkit [194795] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:18 PM Changeset in webkit [194794] by beidson@apple.com
  • 1 edit
    1 delete in trunk/LayoutTests

Removing WK2 specific results for this test.

Legacy IDB passes just the same as Modern IDB.

  • platform/wk2/imported/w3c/indexeddb/keypath-expected.txt: Removed.
3:16 PM Changeset in webkit [194793] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking two ios/scolling tests as failing on ios-simulator.
https://bugs.webkit.org/show_bug.cgi?id=152276

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
3:12 PM Changeset in webkit [194792] by Ryan Haddad
  • 2 edits
    1 add in trunk/LayoutTests

Rebaselining two compositing tests for ios-simulator
https://bugs.webkit.org/show_bug.cgi?id=152138

Unreviewed test gardening.

  • platform/ios-simulator-wk2/compositing/contents-opaque/body-background-painted-expected.txt:
  • platform/ios-simulator/compositing/contents-opaque/table-parts-expected.txt: Added.
2:51 PM Changeset in webkit [194791] by Ryan Haddad
  • 1 edit
    1717 deletes in trunk/LayoutTests

Removing ios-simulator-wk1/ and ios-simulator-wk2/ expected.* files that are identical to the ones in ios-simulator/
https://bugs.webkit.org/show_bug.cgi?id=152130

Unreviewed test gardening.

  • platform/ios-simulator-wk1/editing/deleting/delete-block-merge-contents-011-expected.txt: Removed.
  • platform/ios-simulator-wk1/editing/deleting/delete-first-list-item-expected.txt: Removed.
  • platform/ios-simulator-wk1/editing/deleting/merge-different-styles-expected.txt: Removed.
  • +1714 more
2:29 PM Changeset in webkit [194790] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Removing deleted test fast/mediastream/RTCPeerConnection-state.html from mac TestExpectations file

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:21 PM Changeset in webkit [194789] by beidson@apple.com
  • 9 edits in trunk

Modern IDB: IDBBindingUtilities chokes on unicode strings for get/set.
https://bugs.webkit.org/show_bug.cgi?id=152921

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • indexeddb/keypath-expected.txt:

Source/WebCore:

No new tests (Covered by existing tests).

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::get): Don't do a potentially lossy utf8() conversion on the string.
(WebCore::set): Ditto.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
  • storage/indexeddb/objectstore-autoincrement-expected.txt:
  • storage/indexeddb/objectstore-autoincrement.html:
  • storage/indexeddb/resources/objectstore-autoincrement.js:
1:57 PM Changeset in webkit [194788] by rniwa@webkit.org
  • 7 edits in trunk/Websites/perf.webkit.org

Make v3 UI analysis task page is hard to understand
https://bugs.webkit.org/show_bug.cgi?id=152917

Reviewed by Antti Koivisto.

Add a dark gray border around the selected block in the analysis results viewer instead of using darker
shades since that looks as if they were bigger regression/progression.

Explicitly show "Failed" as the label instead of omitting with "-" when all build requests in an A/B
testing group fails.

  • public/v3/components/analysis-results-viewer.js:

(AnalysisResultsViewer.cssTemplate): Tweaked the style to underline text in the hovered blocks and the
selected blocks and show a dark gray border around the selected blocks.
(AnalysisResultsViewer.TestGroupStackingBlock):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype.createStackingCell): Use this._title for title.
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._computeTestGroupStatus):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._valuesForRootSet): Deleted.

  • public/v3/components/results-table.js:

(ResultsTable.prototype.render):
(ResultsTable.prototype._createRevisionListCells): Extracted from ResultsTable.prototype.render.
(ResultsTable.cssTemplate): Tweaked the style.
(ResultsTableRow):
(ResultsTableRow.prototype.constructor): Added _labelForWholeRow to store the label for the entire row.
This is used to show the comparison result of two root sets (e.g. A vs B).
(ResultsTableRow.prototype.setLabelForWholeRow): Added.
(ResultsTableRow.prototype.labelForWholeRow): Added.
(ResultsTableRow.prototype.resultContent): Extracted from buildHeading. Creates a hyperlinked bar graph
used for each A/B testing result.
(ResultsTableRow.prototype.buildHeading): Deleted since we need to set colspan on the second table cell
when we're creating a row with _labelForWholeRow.

  • public/v3/components/test-group-results-table.js:

(TestGroupResultsTable.prototype.buildRowGroups): Added rows to show relative differences and statistical
significance between root sets (e.g. A vs B).

  • public/v3/models/build-request.js:

(BuildRequest.prototype.hasCompleted): Added.

  • public/v3/models/test-group.js:

(TestGroup.prototype.compareTestResults): Extracted from AnalysisResultsViewer.TestGroupStackingBlock's
_computeTestGroupStatus and generalized to be reused in TestGroupResultsTable.
(TestGroup.prototype._valuesForRootSet): Moved from AnalysisResultsViewer.TestGroupStackingBlock.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage.cssTemplate): Tweaked the style.

1:42 PM Changeset in webkit [194787] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[WinCairo] Support more video formats.
https://bugs.webkit.org/show_bug.cgi?id=152890

Reviewed by Alex Christensen.

Use MediaFoundation api to detect all supported video/audio formats.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::getSupportedTypes):
(WebCore::MediaPlayerPrivateMediaFoundation::supportsType):

1:42 PM Changeset in webkit [194786] by fpizlo@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

FTL B3 compile() doesn't clear exception handlers before we add FTL-specific ones
https://bugs.webkit.org/show_bug.cgi?id=152922

Reviewed by Saam Barati.

FTL B3 was generating a handler table that first contained the old baseline handlers keyed
by baseline's bytecode indices and then the FTL handlers keyed by FTL callsite index. That's
wrong, since the FTL code block should not contain any baseline handlers. The fix is to
clear the handlers before generation, sort of like FTL LLVM does.

Also added some stuff to make it easier to inspect the handler table.

This reduces the numbe rof failures from 25 to 13.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::dumpExceptionHandlers):
(JSC::CodeBlock::beginDumpProfiling):

  • bytecode/CodeBlock.h:
  • ftl/FTLB3Compile.cpp:

(JSC::FTL::compile):

1:33 PM Changeset in webkit [194785] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Initiated section of Resource Details Sidebar should not display as empty and should update as the list changes
https://bugs.webkit.org/show_bug.cgi?id=152907
<rdar://problem/24109927>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-08
Reviewed by Timothy Hatcher.

  • UserInterface/Models/Resource.js:

(WebInspector.Resource.prototype.addInitiatedResource):
Dispatch an event when the list of initiated resources changes.

  • UserInterface/Views/ResourceDetailsSidebarPanel.js:

(WebInspector.ResourceDetailsSidebarPanel.prototype.set resource):
Add/remove event listeners for initiated resources changes to refresh
the related resources section.

(WebInspector.ResourceDetailsSidebarPanel.prototype.refresh):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshURL):
(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
Show/hide the related resources section depending on if we have something or not.

1:32 PM Changeset in webkit [194784] by andersca@apple.com
  • 5 edits in trunk/Source/WTF

Nullopt and InPlace should be structs, not enum values
https://bugs.webkit.org/show_bug.cgi?id=152915

Reviewed by Andreas Kling.

Without this,

Optional<int> o = flag ? 1 : Nullopt;

would cause Nullopt to be treated as an integer, causing o to be initialized to 0,
instead of Nullopt. With this change, the above code now causes a compile error.

Also, get rid of the CONSTEXPR macro since all compilers support constexpr properly,
and add a WTF::makeOptional to match the current iteration of std::experimental::optional.

  • wtf/Compiler.h:
  • wtf/Forward.h:
  • wtf/Optional.h:

(WTF::NulloptTag::NulloptTag):
(WTF::makeOptional):

  • wtf/StdLibExtras.h:

(std::literals::chrono_literals::operator _s):
(std::literals::chrono_literals::operator _ms):
(std::move):

1:28 PM Changeset in webkit [194783] by timothy@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

<rdar://problem/24094651> REGRESSION (193350): CrashTracer: [USER] com.apple.WebKit.WebContent at …: Inspector::CSSFrontendDispatcher::styleSheetRemoved + 768

Reviewed by Joseph Pecoraro.

  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::setActiveStyleSheetsForDocument):
Add null check before using m_frontendDispatcher.

1:23 PM Changeset in webkit [194782] by timothy@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

<rdar://problem/24094651> REGRESSION (193350): CrashTracer: [USER] com.apple.WebKit.WebContent at …: Inspector::CSSFrontendDispatcher::styleSheetRemoved + 768

Reviewed by Joseph Pecoraro.

  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::setActiveStyleSheetsForDocument):
Add null check before using m_frontendDispatcher.

1:12 PM Changeset in webkit [194781] by beidson@apple.com
  • 18 edits
    2 copies in trunk

Modern IDB: Blocked event can fire on a delete request even after the last open connection has closed.
https://bugs.webkit.org/show_bug.cgi?id=152896

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • indexeddb/idbfactory_open12-expected.txt:
  • indexeddb/idbversionchangeevent-expected.txt:
  • indexeddb/transaction-lifetime-expected.txt:

Source/WebCore:

No new tests (Progression in many tests).

  • Modules/indexeddb/client/IDBFactoryImpl.cpp:

(WebCore::IDBClient::IDBFactory::deleteDatabase):

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::performCurrentDeleteOperation): Allow for handling 2+ delete operations in a row.
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): Ditto.
(WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromClient): Call "notifyCurrentRequestConnectionClosedOrFiredVersionChangeEvent"

after the connection is actually removed from the set of open connections.

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

LayoutTests:

  • platform/mac-wk1/TestExpectations:
  • platform/wk2/imported/w3c/indexeddb/idbfactory_open12-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open12-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbversionchangeevent-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-expected.txt.
  • storage/indexeddb/database-wrapper-expected.txt:
  • storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt:
  • storage/indexeddb/deletedatabase-not-blocked-expected.txt:
  • storage/indexeddb/intversion-upgrades-expected.txt:
  • storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js:
  • storage/indexeddb/resources/deletedatabase-not-blocked.js:
  • storage/indexeddb/resources/setversion-not-blocked.js:
  • storage/indexeddb/setversion-not-blocked-expected.txt:
1:05 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
1:01 PM Changeset in webkit [194780] by Brent Fulgham
  • 2 edits in trunk/Source/ThirdParty/ANGLE

[ANGLE] Correct UNREACHABLE runtime assertion for void constructors
https://bugs.webkit.org/show_bug.cgi?id=152900
<rdar://problem/24107501>

Reviewed by Alex Christensen.

Tested by Khronos WebGL 1.0.4 suite.

Merge a small part of ANGLE upstream commit r284735:

commit 01971113492d9aca386f2bca021b1f4b134fc277
author Dmitry Skiba <dskiba@google.com> Fri Jul 10 18:54:00 2015
committer Jamie Madill <jmadill@chromium.org> Fri Jul 10 19:03:34 2015
tree 47e42eac00f7d64cddb14b3cc21a4e605c189d20

This issue was found by <https://www.khronos.org/registry/webgl/sdk/tests/conformance/glsl/bugs/angle-constructor-invalid-parameters.html?webglVersion=1&quiet=0>

  • src/compiler/translator/Types.cpp:

(TType::buildMangledName): Don't assert with UNREACHABLE here.

1:01 PM Changeset in webkit [194779] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

[GTK] Several animation tests fail with accelerated compositing enabled

Unreviewed gardening.

  • platform/gtk/TestExpectations:
12:47 PM Changeset in webkit [194778] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] pageoverlay tests are failing

Unreviewed gardening.

Patch by Lorenzo Tilve <ltilve@igalia.com> on 2016-01-08

  • platform/gtk/TestExpectations:
12:14 PM Changeset in webkit [194777] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

B3 incorrectly turns NotEqual(bool, 1) into Equal(bool, 1) instead of Equal(bool, 0)
https://bugs.webkit.org/show_bug.cgi?id=152916

Reviewed by Mark Lam.

This was causing a failure in an ancient DFG layout test. Thanks, ftl-eager-no-cjit!

This reduces the number of failures from 27 to 25.

  • b3/B3ReduceStrength.cpp:
12:14 PM Changeset in webkit [194776] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught exception: TypeError: this._initiatorSourceCodeLocation.sourceCode.addInitiatedResource is not a function
https://bugs.webkit.org/show_bug.cgi?id=152905
<rdar://problem/24109809>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-08
Reviewed by Brian Burg.

  • UserInterface/Models/Resource.js:

(WebInspector.Resource):
(WebInspector.Resource.prototype.addInitiatedResource):
Only Resource has addInitiatedResource, so only call it if the
SourceCode in the SourceCodeLocation is a Resource.

12:05 PM Changeset in webkit [194775] by Alan Bujtas
  • 6 edits
    2 adds in trunk

Hovering link on http://help.apple.com/appletv/#/ does not show text underline.
https://bugs.webkit.org/show_bug.cgi?id=152906
<rdar://problem/23339617>

Reviewed by Simon Fraser.

GraphicsContext::computeLineBoundsAndAntialiasingModeForText() always integral ceils the origin y position to offset underline text.
This additional visual overflow offset is not taken into account by visualOverflowForDecorations().
Unfortunately we can't compute the exact same offset value while collecting repaint rects, because
computeLineBoundsAndAntialiasingModeForText() uses CTM scaling before adjusting the offset position.
Use 1px (css) bottom offset to cover this underling overflow.

Source/WebCore:

Test: fast/css3-text/css3-text-decoration/text-underline-position/underline-visual-overflow-with-subpixel-position.html

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::computeLineBoundsAndAntialiasingModeForText):

  • rendering/SimpleLineLayoutResolver.cpp: Add visual overflow to simple line layout.

(WebCore::SimpleLineLayout::RunResolver::Run::rect):
(WebCore::SimpleLineLayout::RunResolver::RunResolver):

  • rendering/SimpleLineLayoutResolver.h:
  • style/InlineTextBoxStyle.cpp:

(WebCore::visualOverflowForDecorations):

LayoutTests:

  • fast/css3-text/css3-text-decoration/text-underline-position/underline-visual-overflow-with-subpixel-position-expected.txt: Added.
  • fast/css3-text/css3-text-decoration/text-underline-position/underline-visual-overflow-with-subpixel-position.html: Added.
11:37 AM Changeset in webkit [194774] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

FTL B3 allocateCell() should not crash
https://bugs.webkit.org/show_bug.cgi?id=152909

Reviewed by Mark Lam.

This code was crashing in some tests that forced GC slow paths because it was stubbed out
due to the use of undef. B3 doesn't have undef. In this case, there's no good reason to use
undef. We can just use zero. Since the path is dead anyway in that case, we weren't gaining
any LLVM optimizations by using undef.

This reduces the number of failures from 35 to 27.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::allocateCell):

11:02 AM Changeset in webkit [194773] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

FTL B3 fails to realize that binary snippets might choose to omit their fast path
https://bugs.webkit.org/show_bug.cgi?id=152901

Reviewed by Mark Lam.

This reduces the number of failures from 99 to 35.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::emitBinarySnippet):

10:49 AM Changeset in webkit [194772] by sbarati@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

restoreCalleeSavesFromVMCalleeSavesBuffer should use the scratch register
https://bugs.webkit.org/show_bug.cgi?id=152879

Reviewed by Filip Pizlo.

We were clobbering a register we needed when picking
a scratch register inside an FTL OSR Exit.

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrEntryThunkGenerator):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitRandomThunk):
(JSC::AssemblyHelpers::restoreCalleeSavesFromVMCalleeSavesBuffer):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::copyCalleeSavesFromFrameOrRegisterToVMCalleeSavesBuffer):
(JSC::AssemblyHelpers::restoreCalleeSavesFromVMCalleeSavesBuffer): Deleted.

  • tests/stress/ftl-put-by-id-setter-exception-interesting-live-state.js:

(foo):

10:48 AM Changeset in webkit [194771] by beidson@apple.com
  • 7 edits
    2 copies in trunk

Modern IDB: imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order.htm fails.
https://bugs.webkit.org/show_bug.cgi?id=152891

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • indexeddb/idbobjectstore_createIndex6-event_order-expected.txt:
  • indexeddb/idbobjectstore_createIndex7-event_order-expected.txt:

Source/WebCore:

No new tests (At least two failing tests now pass).

  • Modules/indexeddb/client/IDBRequestImpl.cpp:

(WebCore::IDBClient::IDBRequest::dispatchEvent): Whenever we add the IDBTransaction as an event target,

also add the IDBDatabase.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-expected.txt.
10:44 AM Changeset in webkit [194770] by mark.lam@apple.com
  • 16 edits in trunk/Source/JavaScriptCore

Rolling out: Rename StringFromCharCode to StringFromSingleCharCode.
https://bugs.webkit.org/show_bug.cgi?id=152897

Not reviewed.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileFromCharCode):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • runtime/StringConstructor.cpp:

(JSC::stringFromCharCode):
(JSC::stringFromSingleCharCode): Deleted.

  • runtime/StringConstructor.h:
10:20 AM Changeset in webkit [194769] by peavo@outlook.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Use std::call_once instead of pthread_once when initializing LLVM.
https://bugs.webkit.org/show_bug.cgi?id=152893

Reviewed by Mark Lam.

Use std::call_once since pthreads is not present on all platforms.

  • llvm/InitializeLLVM.cpp:

(JSC::initializeLLVMImpl):
(JSC::initializeLLVM):

10:20 AM Changeset in webkit [194768] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

run-webkit-tests mis-counts totals when there are other crashes
https://bugs.webkit.org/show_bug.cgi?id=152894
<rdar://problem/24098697>

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/layout_tests/models/test_run_results.py:

(TestRunResults.add): Do not update result counters for other crashes.

10:10 AM Changeset in webkit [194767] by mark.lam@apple.com
  • 16 edits in trunk/Source/JavaScriptCore

Rename StringFromCharCode to StringFromSingleCharCode.
https://bugs.webkit.org/show_bug.cgi?id=152897

Reviewed by Daniel Bates.

StringFromSingleCharCode is a better name because the intrinsic it represents
only applies when we are converting from a single char code. This is purely
a refactoring patch. There is no semantic change.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileFromCharCode):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • runtime/StringConstructor.cpp:

(JSC::stringFromCharCode):
(JSC::stringFromSingleCharCode):

  • runtime/StringConstructor.h:
8:55 AM Changeset in webkit [194766] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Fixed unused parameter warnings
https://bugs.webkit.org/show_bug.cgi?id=152885

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-08
Reviewed by Mark Lam.

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):

8:51 AM Changeset in webkit [194765] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Modern IDB: storage/indexeddb/dont-wedge.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=152892

Unreviewed.

  • platform/mac-wk1/TestExpectations: Skip it for now.
8:37 AM Changeset in webkit [194764] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Max value of immediate arg of logical ops is 0xffff
https://bugs.webkit.org/show_bug.cgi?id=152884

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-08
Reviewed by Michael Saboff.

Replaced imm.m_value < 65535 checks with imm.m_value <= 65535

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::and32):
(JSC::MacroAssemblerMIPS::or32):

8:28 AM Changeset in webkit [194763] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Add new or32 implementation after r194613
https://bugs.webkit.org/show_bug.cgi?id=152865

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-08
Reviewed by Michael Saboff.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::or32):

4:17 AM WebKitGTK/Gardening/Howto edited by tpopela@redhat.com
(diff)
1:06 AM Changeset in webkit [194762] by Antti Koivisto
  • 12 edits in trunk/Source/WebCore

Enable selector filtering for shadow trees
https://bugs.webkit.org/show_bug.cgi?id=152831

Reviewed by Simon Fraser.

Selector filtering doesn't currently work in shadow trees making style resolve for them slow.
This is because SelectorFilter is not in "consistent" state.

This patch moves SelectorFilter ownership from StyleResolver to TreeResolver and guarantees
it is always upadated consistently. It eliminates a bunch of now unnecessary consistency checks
and special cases.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::ElementRuleCollector):

Assert for consistency instead of testing for it.

(WebCore::ElementRuleCollector::matchedResult):
(WebCore::ElementRuleCollector::collectMatchingRulesForList):

Selector filter can now be used if it exists.

  • css/ElementRuleCollector.h:

(WebCore::ElementRuleCollector::ElementRuleCollector): Deleted.

  • css/RuleSet.cpp:

(WebCore::RuleSet::addRule):

Disable selector filtering for custom shadow pseudo rules. They are resolved by shadow DOM resolver
but may contain components matching the normal DOM.

  • css/RuleSet.h:

(WebCore::RuleData::descendantSelectorIdentifierHashes):
(WebCore::RuleData::disableSelectorFiltering):
(WebCore::RuleData::compilationStatus):
(WebCore::RuleData::compiledSelectorCodeRef):

  • css/SelectorFilter.cpp:

(WebCore::collectElementIdentifierHashes):
(WebCore::SelectorFilter::parentStackIsConsistent):

New consistency conditions. This is now used for asserts only.

(WebCore::SelectorFilter::pushParentStackFrame):
(WebCore::SelectorFilter::popParentStackFrame):

Selector filter only filters the current tree context, replace parentOrShadowHostElement with parentElement.

(WebCore::SelectorFilter::setupParentStack): Deleted.

No longer needed.

(WebCore::SelectorFilter::pushParent):

Remove consistency check. These cases no longer happen.

  • css/SelectorFilter.h:

(WebCore::SelectorFilter::popParent):
(WebCore::SelectorFilter::parentStackIsEmpty):
(WebCore::SelectorFilter::fastRejectSelector):
(WebCore::SelectorFilter::parentStackIsConsistent): Deleted.

  • css/StyleInvalidationAnalysis.cpp:

(WebCore::StyleInvalidationAnalysis::invalidateIfNeeded):
(WebCore::StyleInvalidationAnalysis::invalidateStyle):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::appendAuthorStyleSheets):
(WebCore::StyleResolver::addKeyframeStyle):
(WebCore::StyleResolver::initElement):
(WebCore::StyleResolver::State::initForStyleResolve):

We no longer owner the selector filter. Move it to State.

(WebCore::StyleResolver::styleSharingCandidateMatchesRuleSet):
(WebCore::isAtShadowBoundary):
(WebCore::StyleResolver::styleForElement):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::pseudoStyleRulesForElement):
(WebCore::StyleResolver::pushParentElement): Deleted.
(WebCore::StyleResolver::popParentElement): Deleted.

No need for this logic.

  • css/StyleResolver.h:

(WebCore::StyleResolver::ruleSets):
(WebCore::StyleResolver::mediaQueryEvaluator):
(WebCore::StyleResolver::State::document):
(WebCore::StyleResolver::State::setAuthorRollback):
(WebCore::StyleResolver::State::setUserRollback):
(WebCore::StyleResolver::State::selectorFilter):
(WebCore::StyleResolver::state):
(WebCore::checkRegionSelector):
(WebCore::StyleResolver::selectorFilter): Deleted.
(WebCore::StyleResolverParentPusher::StyleResolverParentPusher): Deleted.
(WebCore::StyleResolverParentPusher::push): Deleted.
(WebCore::StyleResolverParentPusher::~StyleResolverParentPusher): Deleted.

  • style/StyleTreeResolver.cpp:

This now owns the selector filter for a tree context.

(WebCore::Style::SelectorFilterPusher::SelectorFilterPusher):
(WebCore::Style::SelectorFilterPusher::push):
(WebCore::Style::SelectorFilterPusher::~SelectorFilterPusher):
(WebCore::Style::TreeResolver::TreeResolver):
(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::TreeResolver::createRenderTreeForSlotAssignees):
(WebCore::Style::TreeResolver::createRenderTreeRecursively):
(WebCore::Style::TreeResolver::resolveChildren):
(WebCore::Style::TreeResolver::resolveRecursively):

Push the filter in a few more places to keep it consistent in shadow trees.

  • style/StyleTreeResolver.h:
12:36 AM Changeset in webkit [194761] by youenn.fablet@crf.canon.fr
  • 8 edits
    1 add in trunk/Tools

webkit-patch build-and-test should have an option to iterate over new tests
https://bugs.webkit.org/show_bug.cgi?id=143093

Reviewed by Michael Catanzaro.

This patch introduces the --iterate-on-new-tests option to webkit-patch build-and-test.
It allows running run-webkit-tests on modified or new paths in LayoutTests.
Computation of new or modified tests is done by LayoutTestFinder.find_touched_tests
It implements the translation of -expected.* paths to their related tests.
It also implements the removal of skipped tests.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:

(LayoutTestFinder.find_touched_tests):

  • Scripts/webkitpy/layout_tests/controllers/layout_test_finder_unittest.py: Added.

(MockPort):
(MockPort.init):
(MockPort.tests):
(LayoutTestFinderTests):
(LayoutTestFinderTests.touched_files):
(LayoutTestFinderTests.test_touched_test):
(LayoutTestFinderTests.test_expected_touched_test):
(LayoutTestFinderTests.test_platform_expected_touched_test):
(LayoutTestFinderTests.test_platform_duplicate_touched_test):
(LayoutTestFinderTests.test_touched_but_skipped_test):

  • Scripts/webkitpy/port/base.py:

(Port.potential_test_names_from_expected_file):

  • Scripts/webkitpy/tool/commands/download_unittest.py:

(DownloadCommandsTest._default_options):

  • Scripts/webkitpy/tool/steps/options.py:

(Options):

  • Scripts/webkitpy/tool/steps/runtests.py:

(RunTests.options):
(RunTests.run):
(RunTests):
(RunTests._new_or_modified_tests):
(RunTests._run_webkit_tests):

  • Scripts/webkitpy/tool/steps/runtests_unittest.py:

(RunTestsTest.test_webkit_run_unit_tests):

  • Scripts/webkitpy/tool/steps/steps_unittest.py:

(StepsTest._step_options):

Jan 7, 2016:

10:17 PM Changeset in webkit [194760] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

10:17 PM Changeset in webkit [194759] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

9:33 PM Changeset in webkit [194758] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed IndexedDB test gardening.

  • platform/mac-wk1/TestExpectations:
8:56 PM Changeset in webkit [194757] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

Move computeLineBoundsForText from GraphicsContext* to GraphicsContext.
https://bugs.webkit.org/show_bug.cgi?id=152882

Reviewed by Simon Fraser.

There is nothing platform specific about it.

No change in functionality.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::computeUnderlineBoundsForText): Rename to reflect its usage.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::computeLineBoundsForText): Deleted.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawLinesForText):
(WebCore::GraphicsContext::computeLineBoundsForText): Deleted.

  • rendering/TextDecorationPainter.cpp:

(WebCore::drawSkipInkUnderline):

8:29 PM Changeset in webkit [194756] by jonlee@apple.com
  • 5 edits in trunk/PerformanceTests

Fix new test.

  • Animometer/resources/runner/tests.js: Wrong URL from an

old patch.

  • Animometer/tests/master/particles.html:
  • Animometer/tests/master/resources/dom-particles.js:

(Particle.call.reset): Figured out a simpler way to set up
the particles.
(this.move.reset): Deleted.
(this.move._applyAttributes): Deleted.

  • Animometer/tests/master/resources/particles.js:

(Particle): Call move() after reset().

8:28 PM Changeset in webkit [194755] by jonlee@apple.com
  • 3 edits
    4 adds in trunk/PerformanceTests

Update benchmark test suite
https://bugs.webkit.org/show_bug.cgi?id=152679

Reviewed by Simon Fraser.

Add a new test. The test has a rotating background
gradient, and does a better job physically simulating
particles.

  • Animometer/resources/extensions.js: Teach Point to take constants as well as other Points.

(Point.prototype.length): Added.
(Point.prototype.normalize): Added.

  • Animometer/resources/runner/tests.js: Add the test to the master suite.
  • Animometer/tests/master/particles.html: Added.
  • Animometer/tests/master/resources/particles.js: Added. Parent class for different kinds of particles.

(Particle):
(Particle.prototype.reset): If the particle starts slowing down in terms of its animation,
reset it.
(Particle.prototype.animate): Bounce off the walls elastically, and include gravity.
(Particle.prototype.move): Subclasses should override.
(ParticlesStage): Stage includes a rotating gradient background.

  • Animometer/tests/master/resources/dom-particles.js: Added. Creates a <div> and adds it to

the stage.

  • Animometer/tests/resources/star.svg: Added.
8:08 PM Changeset in webkit [194754] by beidson@apple.com
  • 6 edits in trunk

Modern IDB: Success-after-open event should only have the IDBOpenDBRequest as its target.
https://bugs.webkit.org/show_bug.cgi?id=152875

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least 2 failing tests now pass).

  • Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:

(WebCore::IDBClient::IDBOpenDBRequest::fireSuccessAfterVersionChangeCommit):

  • Modules/indexeddb/client/IDBRequestImpl.cpp:

(WebCore::IDBClient::IDBRequest::dispatchEvent): Only add the transaction and database as potential

targets for this event if it is *not* the success-after-open event.

  • Modules/indexeddb/client/IDBRequestImpl.h:

LayoutTests:

  • platform/mac-wk1/TestExpectations:
7:58 PM Changeset in webkit [194753] by jonlee@apple.com
  • 20 edits
    3 moves in trunk/PerformanceTests

Update benchmark test suite
https://bugs.webkit.org/show_bug.cgi?id=152679

Reviewed by Simon Fraser.

Move algorithm.js and sampler.js to tests/ and benchmark-runner.js to runner/.

Needed by both harnesses.

  • Animometer/resources/runner/benchmark-runner.js: Renamed from PerformanceTests/Animometer/resources/debug-runner/benchmark-runner.js.
  • Animometer/developer.html:
  • Animometer/index.html:

Needed only by the tests. Move to tests/. Statistics, in sampler.js, is used by ResultsDashboard, so move that
into extensions.js.

  • Animometer/resources/extensions.js:
  • Animometer/tests/resources/algorithm.js: Renamed from PerformanceTests/Animometer/resources/algorithm.js.
  • Animometer/tests/resources/sampler.js: Renamed from PerformanceTests/Animometer/resources/sampler.js.
  • Animometer/tests/bouncing-particles/bouncing-canvas-images.html:
  • Animometer/tests/bouncing-particles/bouncing-canvas-shapes.html:
  • Animometer/tests/bouncing-particles/bouncing-css-images.html:
  • Animometer/tests/bouncing-particles/bouncing-css-shapes.html:
  • Animometer/tests/bouncing-particles/bouncing-svg-images.html:
  • Animometer/tests/bouncing-particles/bouncing-svg-shapes.html:
  • Animometer/tests/master/canvas-stage.html:
  • Animometer/tests/misc/canvas-electrons.html:
  • Animometer/tests/misc/canvas-stars.html:
  • Animometer/tests/misc/compositing-transforms.html:
  • Animometer/tests/simple/simple-canvas-paths.html:
  • Animometer/tests/template/template-canvas.html:
  • Animometer/tests/template/template-css.html:
  • Animometer/tests/template/template-svg.html:
  • Animometer/tests/text/layering-text.html:
  • Animometer/tests/text/text-boxes.html:
7:54 PM Changeset in webkit [194752] by jonlee@apple.com
  • 3 edits in trunk/PerformanceTests

Update benchmark test suite
https://bugs.webkit.org/show_bug.cgi?id=152679

Reviewed by Simon Fraser.

Fix tests for other browsers.

  • Animometer/resources/extensions.js:

(Point.elementClientSize): Some browsers return 0 for SVG clientWidth and clientHeight.
Use getBoundingClientRect() instead.

  • Animometer/tests/misc/resources/canvas-electrons.js:

(CanvasElectron.prototype._draw): Some browsers don't support ellipse.

6:51 PM Changeset in webkit [194751] by Brent Fulgham
  • 4 edits in trunk/Source/WebCore

Correct missing EXT_sRGB Format Handling
https://bugs.webkit.org/show_bug.cgi?id=152876
<rdar://problem/23284389>

Reviewed by Alex Christensen.

Tested by WebGL 1.0.4 suite.

  • platform/graphics/GraphicsContext3D.cpp:

(getDataFormat): Handle missing SRGB and SRGB_ALPHA cases.

  • platform/graphics/GraphicsContext3D.h: Add missing SRGB_ALPHA value from the Khronos standard.
  • platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

(WebCore::GraphicsContext3D::texImage2D): Add an assertion that we are not being handed
an internal format to a method that works with normal formats.

6:33 PM Changeset in webkit [194750] by Simon Fraser
  • 5 edits in trunk/Source

Use an appropriate buffer format for swipe snapshots
https://bugs.webkit.org/show_bug.cgi?id=152880
rdar://problem/23728299

Reviewed by Tim Horton.
Source/WebCore:

Choose an appropriate buffer format for swipe snapshots, and avoid converting
them to YUV422.

  • platform/graphics/cocoa/IOSurface.h:
  • platform/graphics/cocoa/IOSurface.mm:

(IOSurface::allowConversionFromFormatToFormat):

Source/WebKit2:

Choose an appropriate buffer format for swipe snapshots, and avoid converting
them to YUV422.

  • UIProcess/API/Cocoa/WKWebView.mm:

(WebKit::bufferFormat):
(-[WKWebView _takeViewSnapshot]):

6:18 PM Changeset in webkit [194749] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/Tools

prepare-ChangeLog should include radar number
https://bugs.webkit.org/show_bug.cgi?id=152839
<rdar://problem/24093563>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-07
Reviewed by Daniel Bates.

When running prepare-ChangeLog -b ###, check for a bugzilla comment that
starts with a "<rdar://problem/####>" URL. If found, include that radar URL
in the ChangeLog description after the bug URL.

  • Scripts/prepare-ChangeLog:

(main): Update signatures.
(fetchBugXMLData): XML Data is now used for multiple reasons. Extract this to just get the data.
(fetchBugDescriptionFromBugXMLData): Search data for <short_desc>.
(fetchRadarURLFromBugXMLData): Search comment text for radar URL.
(generateNewChangeLogs): Include radar URL if we found one.

  • Scripts/webkitperl/prepare-ChangeLog_unittest/fetchRadarURLFromBugXMLData.pl: Added.

Tests for the radar URL extraction.

5:52 PM Changeset in webkit [194748] by fpizlo@apple.com
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

FTL B3 lazy slow paths should do exceptions
https://bugs.webkit.org/show_bug.cgi?id=152853

Reviewed by Saam Barati.

This reduces the number of JSC test failures to 97.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::lazySlowPath):

  • tests/stress/ftl-new-negative-array-size.js: Added.

(foo):

5:38 PM Changeset in webkit [194747] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, skip more tests that fail.

  • tests/stress/ftl-shr-exception.js:

(foo):

  • tests/stress/ftl-xor-exception.js:

(foo):

5:10 PM Changeset in webkit [194746] by fpizlo@apple.com
  • 2 edits
    3 adds in trunk/Source/JavaScriptCore

FTL B3 binary snippets should do exceptions
https://bugs.webkit.org/show_bug.cgi?id=152852

Reviewed by Saam Barati.

This reduces the number of JSC test failures to 110.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::emitBinarySnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::emitBinaryBitOpSnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::emitRightShiftSnippet):

  • tests/stress/ftl-shr-exception.js: Added.

(foo):
(result.foo.valueOf):

  • tests/stress/ftl-sub-exception.js: Added.

(foo):
(result.foo.valueOf):

  • tests/stress/ftl-xor-exception.js: Added.

(foo):
(result.foo.valueOf):

5:05 PM Changeset in webkit [194745] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[EME] Secure stop information not written to disk
https://bugs.webkit.org/show_bug.cgi?id=152855

Reviewed by Eric Carlson.

Two separate bugs for the two APIs provided by AVFoundation. For the AVStreamSession path,
we were not calling the lazy-creation function which creates the AVStreamSession, and were
rather accessing the ivar directly. For the AVContentKeySession, we were not creating the
intermediate paths containing the secure stop database.

  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::contentKeySession):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession):

4:34 PM Changeset in webkit [194744] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, skipping this test. Looks like LLVM can't handle this one, either.

  • tests/stress/ftl-call-varargs-bad-args-exception-interesting-live-state.js:

(foo):

4:10 PM Changeset in webkit [194743] by jonlee@apple.com
  • 4 edits in trunk/PerformanceTests

Add a waitUntilReady() step
https://bugs.webkit.org/show_bug.cgi?id=152862

Reviewed by Simon Fraser.

Add a waitUntilReady() callback that lets the benchmark complete
its setup before running the benchmark.

  • Animometer/tests/resources/main.js:

(Benchmark.prototype.run): First call waitUntilReady, which returns
a promise. When the promise resolves, run everything that was in this
function.
(Benchmark.prototype.waitUntilReady): Default implementation returns
a resolved promise.
(Benchmark.prototype.resolveWhenFinished): Deleted.

  • Animometer/tests/template/resources/template-canvas.js:

(new.TemplateCanvasStage.waitUntilReady): Example on how to override.

4:08 PM Changeset in webkit [194742] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.1.46.91

New Tag.

4:07 PM Changeset in webkit [194741] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.5.9

New Tag.

4:00 PM Changeset in webkit [194740] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, skipping this test. Looks like LLVM can't handle it.

  • tests/stress/ftl-put-by-id-setter-exception-interesting-live-state.js:

(foo):

3:47 PM Changeset in webkit [194739] by fpizlo@apple.com
  • 3 edits
    9 adds in trunk/Source/JavaScriptCore

FTL B3 JS calls should do exceptions
https://bugs.webkit.org/show_bug.cgi?id=152851

Reviewed by Geoffrey Garen.

This reduces the number of JSC test failures with FTL B3 to 111.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToLLVM::compileTailCall):
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):

  • tests/stress/ftl-call-bad-args-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-call-bad-callee-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-call-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-call-exception-no-catch.js: Added.
  • tests/stress/ftl-call-exception.js: Added.
  • tests/stress/ftl-call-varargs-bad-callee-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-call-varargs-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-call-varargs-exception-no-catch.js: Added.
  • tests/stress/ftl-call-varargs-exception.js: Added.
3:47 PM Changeset in webkit [194738] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

Perf dashboard should automatically add aggregators
https://bugs.webkit.org/show_bug.cgi?id=152818

Reviewed by Chris Dumez.

When an aggregator entry is missing in aggregators table, automatically insert it in /api/report.

In a very early version of the perf dashboard, we had the ability to define a custom aggregator
in an admin page. In practice, nobody used or needed this feature so we got rid of it even before
the dashboard was landed into WebKit repository. This patch cleans up that mess.

  • run-tests.js:

(main): Added the filtering capability.
(TestEnvironment): Expose the config JSON in the test environment.

  • public/include/report-processor.php:

(ReportProcessor): Renamed name_to_aggregator now that it only contains ID.
(ReportProcessor::construct): No longer fetches the aggregator table. An equivalent work is done
in newly added ensure_aggregators.
(ReportProcessor::process): Calls ensure_aggregators which populates name_to_aggregator_id.
(ReportProcessor::ensure_aggregators): Added. Add the builtin aggregators: Arithmetic, Geometric,
Harmonic, and Total.
(TestRunsGenerator): Renamed name_to_aggregator now that it only contains ID.
(TestRunsGenerator::
construct):
(TestRunsGenerator::add_aggregated_metric): Don't include aggregator_definition here since it's
never used now that all the aggregations are done natively in PHP.
(TestRunsGenerator::$aggregators): Added. We don't include SquareSum since it's only used for
computing run_square_sum_cache in test_runs table and it's useless elsewhere.
(TestRunsGenerator::aggregate_values): Add a comment about that.

  • tests/api-report.js: Updated a test case to reflect the change.
3:44 PM Changeset in webkit [194737] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: Add warnings to section that require specific values of other properties
https://bugs.webkit.org/show_bug.cgi?id=148254

Patch by Devin Rousso <Devin Rousso> on 2016-01-07
Reviewed by Timothy Hatcher.

Added a function to VisualStylePropertyEditor to allow dependencies to be set which,
whenever the editor is updated or changed, will be checked against the computed styles
of the element to see if all the necessary property values are set.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel):
(WebInspector.VisualStyleDetailsPanel.prototype.refresh):
(WebInspector.VisualStyleDetailsPanel.prototype._populatePositionSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateFlexboxSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateAlignmentSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBorderSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateOutlineSection):
Added dependencies to relevant property editors.

(WebInspector.VisualStyleDetailsPanel.prototype._prepareForChange): Deleted.
No longer needed as the sidebar panel will refresh whenever triggered.

  • UserInterface/Views/VisualStylePropertyEditor.css:

(.visual-style-property-container.layout-reversed > .visual-style-property-title):
(.visual-style-property-container > .visual-style-property-title > .property-reference-info):
(.visual-style-property-container > .visual-style-property-editor-warning):
(.visual-style-property-container.layout-reversed > .visual-style-property-editor-warning):
(.visual-style-property-container > .visual-style-property-editor-warning.missing-dependency):
(.visual-style-property-container > .visual-style-property-value-container):
(.visual-style-property-container.layout-reversed > .visual-style-property-value-container):

  • UserInterface/Views/VisualStylePropertyEditor.js:

(WebInspector.VisualStylePropertyEditor):
(WebInspector.VisualStylePropertyEditor.prototype.updateEditorValues):
(WebInspector.VisualStylePropertyEditor.prototype.addDependency):
(WebInspector.VisualStylePropertyEditor.prototype._valueDidChange):
(WebInspector.VisualStylePropertyEditor.prototype._checkDependencies):
Looks at the computed style for the node to see if any dependent properties do not
have one of the required values.

  • UserInterface/Views/VisualStyleSelectorSection.js:

(WebInspector.VisualStyleSelectorSection.prototype.update.createSelectorItem):
(WebInspector.VisualStyleSelectorSection.prototype._styleTextReset): Deleted.

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):

3:33 PM Changeset in webkit [194736] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Use wavy offset for decoration painting when line style is TextDecorationStyleWavy.
https://bugs.webkit.org/show_bug.cgi?id=152856

Reviewed by Simon Fraser.

No change in functionality.

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::paintTextDecoration):

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

Web Inspector: Allow error items on Exception page to be selected
https://bugs.webkit.org/show_bug.cgi?id=152861

Patch by Devin Rousso <Devin Rousso> on 2016-01-07
Reviewed by Brian Burg.

  • UserInterface/Debug/UncaughtExceptionReporter.css:

(.uncaught-exception-sheet li):
Allowed user-select on text.

3:32 PM Changeset in webkit [194734] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Better test gardening. Only skip those tests that use touch events, not the whole
directory.

  • platform/ios-simulator-wk2/TestExpectations:
3:30 PM Changeset in webkit [194733] by beidson@apple.com
  • 4 edits in trunk

Modern IDB: Various imported/w3c/indexeddb tests fail due to expecting the wrong exception.
https://bugs.webkit.org/show_bug.cgi?id=152866

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (5 skipped tests now pass).

  • Modules/indexeddb/client/IDBObjectStoreImpl.cpp:

(WebCore::IDBClient::IDBObjectStore::putOrAdd): Reorder the exceptions, violating the spec but matching

a vast majority of browsers.

(WebCore::IDBClient::IDBObjectStore::deleteFunction): Ditto.
(WebCore::IDBClient::IDBObjectStore::clear): Ditto.
(WebCore::IDBClient::IDBObjectStore::doCount): Ditto.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
3:26 PM Changeset in webkit [194732] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
3:15 PM Changeset in webkit [194731] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

Remove unused shouldAntialias parameter from GraphicsContext::computeLineBoundsAndAntialiasingModeForText()
https://bugs.webkit.org/show_bug.cgi?id=152859

Reviewed by Simon Fraser.

No change in functionality.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::computeLineBoundsAndAntialiasingModeForText):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::computeLineBoundsForText):
(WebCore::GraphicsContext::drawLinesForText):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::computeLineBoundsForText):
(WebCore::GraphicsContext::drawLinesForText):

2:59 PM Changeset in webkit [194730] by fpizlo@apple.com
  • 2 edits
    6 adds in trunk/Source/JavaScriptCore

FTL B3 PutById should do exceptions
https://bugs.webkit.org/show_bug.cgi?id=152850

Reviewed by Saam Barati.

Implemented PutById exception handling by following the idiom used in GetById. Reduces the
number of JSC test failures to 128.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):

  • tests/stress/ftl-put-by-id-setter-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-put-by-id-setter-exception-no-catch.js: Added.
  • tests/stress/ftl-put-by-id-setter-exception.js: Added.
  • tests/stress/ftl-put-by-id-slow-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-put-by-id-slow-exception-no-catch.js: Added.
  • tests/stress/ftl-put-by-id-slow-exception.js: Added.
2:42 PM Changeset in webkit [194729] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

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

it broke many JSC tests when FTL B3 is enabled (Requested by
pizlo on #webkit).

Reverted changeset:

"[JSC] When resolving Stack arguments, use addressing from SP
when addressing from FP is invalid"
https://bugs.webkit.org/show_bug.cgi?id=152840
http://trac.webkit.org/changeset/194714

2:36 PM Changeset in webkit [194728] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebInspectorUI

Web Inspector: Add border-image properties to Visual sidebar
https://bugs.webkit.org/show_bug.cgi?id=152755

Patch by Devin Rousso <Devin Rousso> on 2016-01-07
Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

Switched the order of VisualStyleURLInput and VisualStyleUnitSlider
to be ordered alphabetically.

  • UserInterface/Views/VisualStyleBackgroundPicker.js:

(WebInspector.VisualStyleBackgroundPicker.prototype._keywordSelectMouseDown):

  • UserInterface/Views/VisualStyleDetailsPanel.css:

(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content > .group + .group > .row:first-child):
(.sidebar > .panel.details.css-style .visual > .details-section.background .details-section.border .visual-style-property-container.keyword-checkbox.border-image-slice):
Since the checkbox is so small, give it less room.

  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel.prototype._populateBorderSection.generateBorderImagePropertyEditors):
The three properties "border-image-width", "border-image-outset", and
"border-image-slice" all have the same syntax, so one function to generate
the layout for all three is much simpler.

(WebInspector.VisualStyleDetailsPanel.prototype._populateBorderSection):
Added the border image properties to a seperate group under Background > Border.

  • UserInterface/Views/VisualStyleKeywordPicker.js:

(WebInspector.VisualStyleKeywordPicker.prototype._keywordSelectMouseDown):

  • UserInterface/Views/VisualStyleNumberInputBox.js:

(WebInspector.VisualStyleNumberInputBox):
(WebInspector.VisualStyleNumberInputBox.prototype.set units):
Reordered logic to allow a value of ""/null to set the units to the "Number"
value if it is allowed for that editor.

(WebInspector.VisualStyleNumberInputBox.prototype.get synthesizedValue):
Instead of relying upon whether the editor has any units, just check to see if
the selected units are "Number" and, if not, add them to the value.

(WebInspector.VisualStyleNumberInputBox.prototype._unitsElementTextContent):

  • UserInterface/Views/VisualStylePropertyCombiner.js:

(WebInspector.VisualStylePropertyCombiner):
Now has another argument that, when true, assumes the combiner has at least 4
numerical values and is of the form (can have units):

property-name: value1 [value2 [value3 [value4 [...]]]];

(WebInspector.VisualStylePropertyCombiner.prototype.get synthesizedValue):
(WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText.updateEditor):
(WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText.updateCompatibleEditor):
(WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText):
If the new argument is true, assigns the existing values in the following way:

  • If there is 1 value, assign it to all of the editors.
  • If there are 2 values, assign the 1st one to editors 1 and 3 and the 2nd one

to editors 2 and 4.

  • If there are 3 values, assign the 1st one to editor 1, the 2nd one to editors

2 and 4, and the 3rd one to editor 3.

  • If there are 4 or more values, assign them normally.
  • UserInterface/Views/VisualStylePropertyEditor.js:

(WebInspector.VisualStylePropertyEditor.prototype.valueIsSupportedKeyword):
(WebInspector.VisualStylePropertyEditor.prototype._valueIsSupportedAdvancedKeyword):
Removed call to this.value to prevent recursion from VisualStyleNumberInputBox.

(WebInspector.VisualStylePropertyEditor.prototype.valueIsSupportedUnit):
(WebInspector.VisualStylePropertyEditor.prototype._valueIsSupportedAdvancedUnit):
Removed call to this.units to prevent recursion from VisualStyleNumberInputBox.

2:31 PM Changeset in webkit [194727] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Can't play inline video in a stock WK1 WebView on Mac
https://bugs.webkit.org/show_bug.cgi?id=152860

Rubber-stamped by Jer Noble.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
The default for this preference is supposed to be NO on Mac. It is in
Settings.in, and in WebKit2, but this one place got it wrong.

2:17 PM Changeset in webkit [194726] by beidson@apple.com
  • 4 edits in trunk

Modern IDB: imported/w3c/indexeddb/idbcursor-continue.htm fails.
https://bugs.webkit.org/show_bug.cgi?id=152849

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one failing test now passes).

  • Modules/indexeddb/server/MemoryIndexCursor.cpp:

(WebCore::IDBServer::MemoryIndexCursor::iterate): Don't allow returning an iterator outside of

the cursor's assigned range.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
2:13 PM Changeset in webkit [194725] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Lower immediates of logical operations.
https://bugs.webkit.org/show_bug.cgi?id=152693

On MIPS immediate operands of andi, ori, and xori are required to be 16-bit
non-negative numbers.

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

  • offlineasm/mips.rb:
2:13 PM Changeset in webkit [194724] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.15

New tag.

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

Web Inspector: Add indicator that element has pseudo-class in DOM tree
https://bugs.webkit.org/show_bug.cgi?id=152680

Patch by Devin Rousso <Devin Rousso> on 2016-01-07
Reviewed by Timothy Hatcher.

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement):
(WebInspector.DOMTreeElement.prototype._nodePseudoClassesDidChange):
Added an event listener to the node for when pseudo-classes change.

  • UserInterface/Views/DOMTreeOutline.css:

(.dom-tree-outline li.pseudo-class-enabled > .selection::before):
(.dom-tree-outline:focus li.selected.pseudo-class-enabled > .selection::before):
Used the hover/selected background style element to ensure that the indicator
is always positioned evenly with the first line of the opening tag.

(.dom-tree-outline li.hovered:not(.selected) .selection):
(.dom-tree-outline li .selection):
(.dom-tree-outline li.selected .selection):
(.dom-tree-outline li.elements-drag-over .selection):
Removed "display: none;" (as well as the "block" declarations) to allow
the ::before pseudo-element to display.

2:10 PM Changeset in webkit [194722] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

2:09 PM Changeset in webkit [194721] by ap@apple.com
  • 11 edits in trunk

testRunner.runUIScript crashes while running multiple tests in a row that invokes the same UIScript
https://bugs.webkit.org/show_bug.cgi?id=152390
<rdar://problem/23948321>

Reviewed by Simon Fraser.

Tools:

Fix two use-after-frees.

  1. WKPageCallAfterNextPresentationUpdate's callback has a pointer to TestInvocation,

but we may have already progressed to another test by the time the callback fires,
having destroyed the TestInvocation.

  1. UIScriptController is a RefCounted object, but it has a raw pointer to

UIScriptContext which has the same lifetime as a TestInvocation.
As a result, completion blocks of UIScriptController actions would use a destroyed
TestInvocation.

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::~TestInvocation):
(WTR::TestInvocation::url):
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::runUISideScriptAfterUpdateCallback):
(WTR::TestInvocation::runUISideScript):

  • WebKitTestRunner/TestInvocation.h:
  • WebKitTestRunner/UIScriptContext/UIScriptContext.cpp:

(UIScriptContext::UIScriptContext):
(UIScriptContext::~UIScriptContext):
(UIScriptContext::runUIScript):

  • WebKitTestRunner/UIScriptContext/UIScriptContext.h:
  • WebKitTestRunner/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::UIScriptController):
(WTR::UIScriptController::contextDestroyed):
(WTR::UIScriptController::makeWindowObject):
(WTR::UIScriptController::setWillBeginZoomingCallback):
(WTR::UIScriptController::willBeginZoomingCallback):
(WTR::UIScriptController::setDidEndZoomingCallback):
(WTR::UIScriptController::didEndZoomingCallback):
(WTR::UIScriptController::setDidEndScrollingCallback):
(WTR::UIScriptController::didEndScrollingCallback):
(WTR::UIScriptController::setDidShowKeyboardCallback):
(WTR::UIScriptController::didShowKeyboardCallback):
(WTR::UIScriptController::setDidHideKeyboardCallback):
(WTR::UIScriptController::didHideKeyboardCallback):
(WTR::UIScriptController::uiScriptComplete):

  • WebKitTestRunner/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::create):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::doAsyncTask):
(WTR::UIScriptController::zoomToScale):
(WTR::UIScriptController::singleTapAtPoint):
(WTR::UIScriptController::doubleTapAtPoint):
(WTR::UIScriptController::typeCharacterUsingHardwareKeyboard):
(WTR::UIScriptController::contentVisibleRect):
(WTR::UIScriptController::platformSetWillBeginZoomingCallback):
(WTR::UIScriptController::platformSetDidEndZoomingCallback):
(WTR::UIScriptController::platformSetDidShowKeyboardCallback):
(WTR::UIScriptController::platformSetDidHideKeyboardCallback):
(WTR::UIScriptController::platformSetDidEndScrollingCallback):

  • WebKitTestRunner/mac/UIScriptControllerMac.mm:

(WTR::UIScriptController::doAsyncTask):

LayoutTests:

  • platform/ios-simulator/TestExpectations: Unskipped tests that used to be affected.
2:02 PM Changeset in webkit [194720] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Update testCheckSubBadImm() for ARM64
https://bugs.webkit.org/show_bug.cgi?id=152846

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-07
Reviewed by Mark Lam.

  • b3/testb3.cpp:

(JSC::B3::testCheckSubBadImm):
The test was assuming the constant can always be used
as immediate. That's obviously not the case on ARM64.

1:56 PM Changeset in webkit [194719] by matthew_hanson@apple.com
  • 7 edits in branches/safari-601-branch/Source/WebCore

Fix the Mavericks build after r194287. rdar://problem/23769758

1:28 PM Changeset in webkit [194718] by achristensen@apple.com
  • 10 edits
    1 add in trunk/Source/WebKit2

Progress towards implementing downloads with NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=152760

Reviewed by Brady Eidson.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::Download):
There's no need to store the unused NetworkSession&.
(WebKit::Download::didStart):
(WebKit::Download::didReceiveAuthenticationChallenge):
Downloads with NetworkSession are NetworkLoads until the response is received, which is after authentication
challenges are handled by NetworkLoad's code.
(WebKit::Download::didReceiveResponse):

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):
Create a PendingDownload, which is basically a NetworkLoad that knows that it will become a Download
when the response is received, regardless of whether or not there is a Content-Disposition header.
(WebKit::DownloadManager::dataTaskBecameDownloadTask):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/PendingDownload.h: Added.

(WebKit::PendingDownload::PendingDownload):
Added a new NetworkLoadClient for requests that will become downloads.
A PendingDownload contains a NetworkLoad so we can always keep them together
and so it can handle setting its pending download id.

  • WebKit2.xcodeproj/project.pbxproj:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):
Avoid dereferencing a pointer if the NetworkSession hadn't been created when a NetworkLoad starts.
This shouldn't be possible, but it's good to not assume that all pointers are non-null.
(WebKit::NetworkLoad::cancel):
Add a null check in case the constructor doesn't make m_task.
(WebKit::NetworkLoad::convertTaskToDownload):
(WebKit::NetworkLoad::setPendingDownloadID):
Added for downloads that start with startDownload. The pending DownloadID is used to indicate that
this request should always become a download, regardless of whether or not the response has a
Content-Disposition header.
(WebKit::NetworkLoad::willPerformHTTPRedirection):
(WebKit::NetworkLoad::didReceiveResponse):

  • NetworkProcess/NetworkLoad.h:

There's no need to store a DownloadID here. It's stored in the NetworkDataTask (m_task).

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkDataTask::client):
(WebKit::NetworkDataTask::pendingDownloadID):
(WebKit::NetworkDataTask::setPendingDownloadID):
(WebKit::NetworkDataTask::downloadID): Deleted.
(WebKit::NetworkDataTask::setDownloadID): Deleted.
Renamed downloadID and setDownloadID to pendingDownloadID and setPendingDownloadID, respectively,
to indicate their use. They are not the current downloadID, but they are the downloadID of the download
that will happen once the response is received and PolicyDownload will be returned in the completion handler.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]):
Call dataTaskBecameDownloadTask after didBecomeDownload because the networkDataTask is deleted by removing it
from m_pendingDownloads in dataTaskBecameDownloadTask.

1:27 PM Changeset in webkit [194717] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebInspectorUI

Web Inspector: Make creating new rules in the Styles sidebar simpler
https://bugs.webkit.org/show_bug.cgi?id=152726

Patch by Devin Rousso <Devin Rousso> on 2016-01-07
Reviewed by Timothy Hatcher.

When creating a new rules of any kind, first look to see if it already exists in
another rule that has no properties. If found, focus/select it instead of creating
a new rule. Otherwise, create the new rule like normal.

Also changed the way in which previously-focused sections/tree-items are saved
to rely upon the selector of the new rule and whether the section for that rule
is empty and an inspector rule.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Models/CSSStyleDeclaration.js:

(WebInspector.CSSStyleDeclaration.prototype.isInspectorRule):
Returns true if the style is an inspector rule.

(WebInspector.CSSStyleDeclaration.prototype.hasProperties):
Returns true if the style has CSS properties.

  • UserInterface/Models/DOMNodeStyles.js:

(WebInspector.DOMNodeStyles.prototype.rulesForSelector.ruleHasSelector):
(WebInspector.DOMNodeStyles.prototype.rulesForSelector):
Returns a list of CSSRule that match the given selector and are not
in media queries.

  • UserInterface/Views/BoxModelDetailsSectionRow.js:

(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics):

  • UserInterface/Views/CSSStyleDeclarationSection.js:

(WebInspector.CSSStyleDeclarationSection.prototype._handleContextMenuEvent):

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WebInspector.CSSStyleDeclarationTextEditor.prototype.commentAllProperties):

  • UserInterface/Views/RulesStyleDetailsPanel.js:

(WebInspector.RulesStyleDetailsPanel.prototype.refresh.appendStyleSection):
(WebInspector.RulesStyleDetailsPanel.prototype.refresh.cssStyleDeclarationSectionEditorFocused):
Now saves the newly focused section as the previously-focused section.

(WebInspector.RulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionFocusNewInspectorRuleWithSelector):
Renamed from cssStyleDeclarationSectionFocusNextNewInspectorRule. Now needs
a selector argument.

(WebInspector.RulesStyleDetailsPanel.prototype.newRuleButtonClicked):
(WebInspector.RulesStyleDetailsPanel.prototype.sectionForStyle):
Returns the first section that has a style with matching selector.

(WebInspector.RulesStyleDetailsPanel.prototype.focusEmptySectionWithStyle):
Finds the section corresponding to the given style and, if empty, focuses it.

(WebInspector.RulesStyleDetailsPanel.prototype.nodeStylesRefreshed):
No longer clears the previously-focused section.

  • UserInterface/Views/VisualStyleSelectorSection.js:

(WebInspector.VisualStyleSelectorSection):
(WebInspector.VisualStyleSelectorSection.prototype.update.createSelectorItem):
(WebInspector.VisualStyleSelectorSection.prototype.update):
(WebInspector.VisualStyleSelectorSection.prototype.treeItemForStyle):
Returns the first tree item that has a style with matching selector.

(WebInspector.VisualStyleSelectorSection.prototype.selectEmptyStyleTreeItem):
Finds the tree item corresponding to the given style and, if empty, selects it.

(WebInspector.VisualStyleSelectorSection.prototype._addNewRule):

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem):
Now requires a delegate object.

(WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):

1:20 PM Changeset in webkit [194716] by fpizlo@apple.com
  • 12 edits
    12 adds in trunk/Source/JavaScriptCore

FTL B3 getById() should do exceptions
https://bugs.webkit.org/show_bug.cgi?id=152810

Reviewed by Saam Barati.

This adds abstractions for doing exceptions from patchpoints, and uses them to implement
exceptions from GetById. This covers all of the following ways that a GetById might throw an
exceptions:

  • Throw without try/catch from the vmCall() in a GetById(Untyped:)
  • Throw with try/catch from the vmCall() in a GetById(Untyped:)
  • Throw without try/catch from the callOperation() in the patchpoint of a GetById
  • Throw with try/catch from the callOperation() in the patchpoint of a GetById
  • Throw without try/catch from the Call IC generated in the patchpoint of a GetById
  • Throw with try/catch from the Call IC generated in the patchpoint of a GetById

This requires having a default exception target in FTL-generated code, and ensuring that this
target is generated regardless of whether we have branches to the B3 basic block of the
default exception target. This also requires adding some extra arguments to a
PatchpointValue, and then knowing that the arguments are used for OSR exit and not anything
else. This also requires associating the CallSiteIndex of the patchpoint with the register
set used for exit and with the OSR exit label for the unwind exit.

All of the stuff that you have to worry about when wiring a patchpoint to exception handling
is covered by the new PatchpointExceptionHandle object. You create one by calling
preparePatchpointForExceptions(). This sets up the B3 IR representation of the patchpoint
with stackmap arguments for the exceptional exit, and creates a PatchpointExceptionHandle
object that can be used to create zero or more actual OSR exits. It can create both OSR exits
for operation calls and OSR exits for unwind. You call the
PatchpointExceptionHandle::scheduleExitCreationXXX() methods from the generator callback to
actually get OSR exits.

This API makes heavy use of Box<>, late paths, and link tasks. For example, you can use the
PatchpointExceptionHandle to get a Box<JumpList> that you can append exception jumps to. When
you use this API, it automatically registers a link task that will link the JumpList to the
actual OSR exit label.

This API is very flexible about how you get to the label of the OSR exit. You are encouraged
to use the Box<JumpList> approach, but if you really just need the label, you can also get
a RefPtr<ExceptionTarget> and rely on the fact that the ExceptionTarget object will be able
to vend you the OSR exit label at link-time.

This reduces the number of JSC test failures with FTL B3 from 186 to 133. It also adds a
bunch of new tests specifically for all of the ways you might throw from GetById, and B3
passes all of these new tests. Note that I'm not counting the new tests as part of the
previous 186 test failures (FTL B3 failed all of the new tests prior to this change).

After this change, it should be easy to make all of the other patchpoints also handle
exceptions by just following the preparePatchpointForExceptions() idiom.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • b3/B3StackmapValue.h:
  • b3/B3ValueRep.cpp:

(JSC::B3::ValueRep::addUsedRegistersTo):
(JSC::B3::ValueRep::usedRegisters):
(JSC::B3::ValueRep::dump):

  • b3/B3ValueRep.h:

(JSC::B3::ValueRep::doubleValue):
(JSC::B3::ValueRep::withOffset):
(JSC::B3::ValueRep::usedRegisters):

  • ftl/FTLB3Compile.cpp:

(JSC::FTL::compile):

  • ftl/FTLB3Output.h:

(JSC::FTL::Output::unreachable):
(JSC::FTL::Output::speculate):

  • ftl/FTLExceptionTarget.cpp: Added.

(JSC::FTL::ExceptionTarget::~ExceptionTarget):
(JSC::FTL::ExceptionTarget::label):
(JSC::FTL::ExceptionTarget::jumps):
(JSC::FTL::ExceptionTarget::ExceptionTarget):

  • ftl/FTLExceptionTarget.h: Added.
  • ftl/FTLJITCode.cpp:

(JSC::FTL::JITCode::liveRegistersToPreserveAtExceptionHandlingCallSite):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::lower):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithAddOrSub):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithMul):
(JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):
(JSC::FTL::DFG::LowerDFGToLLVM::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToLLVM::compileIn):
(JSC::FTL::DFG::LowerDFGToLLVM::getById):
(JSC::FTL::DFG::LowerDFGToLLVM::emitBinarySnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::emitBinaryBitOpSnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::emitRightShiftSnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::callCheck):
(JSC::FTL::DFG::LowerDFGToLLVM::preparePatchpointForExceptions):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitArgumentsForPatchpointIfWillCatchException):
(JSC::FTL::DFG::LowerDFGToLLVM::lowBlock):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::DFG::LowerDFGToLLVM::blessSpeculation):

  • ftl/FTLPatchpointExceptionHandle.cpp: Added.

(JSC::FTL::PatchpointExceptionHandle::create):
(JSC::FTL::PatchpointExceptionHandle::defaultHandle):
(JSC::FTL::PatchpointExceptionHandle::~PatchpointExceptionHandle):
(JSC::FTL::PatchpointExceptionHandle::scheduleExitCreation):
(JSC::FTL::PatchpointExceptionHandle::scheduleExitCreationForUnwind):
(JSC::FTL::PatchpointExceptionHandle::PatchpointExceptionHandle):
(JSC::FTL::PatchpointExceptionHandle::createHandle):

  • ftl/FTLPatchpointExceptionHandle.h: Added.
  • ftl/FTLState.cpp:
  • ftl/FTLState.h:

(JSC::FTL::verboseCompilationEnabled):

  • tests/stress/ftl-get-by-id-getter-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-get-by-id-getter-exception-no-catch.js: Added.
  • tests/stress/ftl-get-by-id-getter-exception.js: Added.
  • tests/stress/ftl-get-by-id-slow-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-get-by-id-slow-exception-no-catch.js: Added.
  • tests/stress/ftl-get-by-id-slow-exception.js: Added.
  • tests/stress/ftl-operation-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-operation-exception-no-catch.js: Added.
1:17 PM Changeset in webkit [194715] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Implemented missing branch patching methods.
https://bugs.webkit.org/show_bug.cgi?id=152845

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::canJumpReplacePatchableBranch32WithPatch):
(JSC::MacroAssemblerMIPS::startOfPatchableBranch32WithPatchOnAddress):
(JSC::MacroAssemblerMIPS::revertJumpReplacementToPatchableBranch32WithPatch):

1:16 PM Changeset in webkit [194714] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] When resolving Stack arguments, use addressing from SP when addressing from FP is invalid
https://bugs.webkit.org/show_bug.cgi?id=152840

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-07
Reviewed by Mark Lam.

ARM64 has two kinds of addressing with immediates:
-Signed 9bits direct (really only -256 to 255).
-Unsigned 12bits scaled by the load/store size.

When resolving the stack addresses, we easily run
past -256 bytes from FP. Addressing from SP gives us more
room to address the stack efficiently because we can
use unsigned immediates.

  • b3/B3StackmapSpecial.cpp:

(JSC::B3::StackmapSpecial::repForArg):

  • b3/air/AirAllocateStack.cpp:

(JSC::B3::Air::allocateStack):

1:13 PM Changeset in webkit [194713] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Make repatchCall public to fix compilation.
https://bugs.webkit.org/show_bug.cgi?id=152843

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::repatchCall):
(JSC::MacroAssemblerMIPS::linkCall): Deleted.

12:43 PM Changeset in webkit [194712] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Replaced subi with addi in getHostCallReturnValue
https://bugs.webkit.org/show_bug.cgi?id=152841

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

MIPS architecture does not have subi instruction, addi with negative
number should be used instead.

  • jit/JITOperations.cpp:
12:21 PM Changeset in webkit [194711] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

ARMv7 or32(TrustedImm32, AbsoluteAddress) may have a bug with its use of dataTempRegister.
https://bugs.webkit.org/show_bug.cgi?id=152833

Reviewed by Michael Saboff.

Follow-up patch to fix illegal use of memoryTempRegister as the src for ARM64's
store32.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::or32):
(JSC::MacroAssemblerARM64::store):

12:01 PM Changeset in webkit [194710] by Alan Bujtas
  • 3 edits
    4 adds in trunk

Incorrect position: fixed; rendering when child of position:relative/sticky.
https://bugs.webkit.org/show_bug.cgi?id=147284

Reviewed by Simon Fraser and David Hyatt.

Computing logical left for positioned objects should take the relative positioned ancestors' offset
into account.

Source/WebCore:

Tests: fast/block/positioning/fixed-container-with-relative-parent.html

fast/block/positioning/fixed-container-with-sticky-parent.html

  • rendering/RenderBox.cpp:

(WebCore::computeInlineStaticDistance):

LayoutTests:

  • fast/block/positioning/fixed-container-with-relative-parent-expected.html: Added.
  • fast/block/positioning/fixed-container-with-relative-parent.html: Added.
  • fast/block/positioning/fixed-container-with-sticky-parent-expected.html: Added.
  • fast/block/positioning/fixed-container-with-sticky-parent.html: Added.
12:00 PM Changeset in webkit [194709] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] GPRInfo::toArgumentRegister missing
https://bugs.webkit.org/show_bug.cgi?id=152838

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

  • jit/GPRInfo.h:

(JSC::GPRInfo::toArgumentRegister):

11:53 AM Changeset in webkit [194708] by Simon Fraser
  • 6 edits
    9 adds in trunk/Source/WebCore

Initial implementation files for display-list recording and playback
https://bugs.webkit.org/show_bug.cgi?id=152816

Reviewed by Zalan Bujtas.

Add files for:

  • DisplayList, a class that holds a vector of display items, and in the future will hold metadata on the list for optimizations etc.
  • DisplayList::Recorder, the outward-facing recording API which GraphicsContext will call into.
  • DisplayList::Replayer, which plays back a DisplayList, possibly applying optimizations.
  • Various DisplayList::Items, one type for each display list operation. They cover most of the GraphicsContext functionality, other than clipping to an image buffer. Text drawing is stubbed out for now.

Added a "DisplayLists" log channel.

Added GraphicsContextState functions for tracking state deltas with change bits. It may
make sense to combine GraphicsContextStateChange and GraphicsContextState, and use the
dirty bits in non-display-list drawing as well.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/Logging.h:
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/displaylists/DisplayList.cpp: Added.

(WebCore::DisplayList::DisplayList::description):
(WebCore::DisplayList::DisplayList::dump):
(WebCore::operator<<):

  • platform/graphics/displaylists/DisplayListItems.cpp: Added.
  • platform/graphics/displaylists/DisplayListItems.h: Added.
  • platform/graphics/displaylists/DisplayListRecorder.cpp: Added.
  • platform/graphics/displaylists/DisplayListRecorder.h: Added.
  • platform/graphics/displaylists/DisplayListReplayer.cpp: Added.

(WebCore::DisplayList::Replayer::Replayer):
(WebCore::DisplayList::Replayer::~Replayer):
(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h: Added.
11:42 AM Changeset in webkit [194707] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

ARMv7 or32(TrustedImm32, AbsoluteAddress) may have a bug with its use of dataTempRegister.
https://bugs.webkit.org/show_bug.cgi?id=152833

Reviewed by Benjamin Poulain.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::or32):

  • Added some assertions to make sure it is safe to use ARMRegisters::S0 as a temp.
  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::or32):

  • Implement an optimization that avoids reloading the memoryTempRegister when the immediate is encodable as an instruction immediate.
  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::or32):

  • Added an assertion to make sure it is safe to use the dataTempRegister as a temp.
  • Implement an optimization that avoids reloading the memoryTempRegister when the immediate is encodable as an instruction immediate. In the event that we cannot encode the immediate, we'll use the addressTempRegister as a temp, and reload it later.
11:40 AM Changeset in webkit [194706] by Chris Dumez
  • 7 edits
    2 adds in trunk

Directly-composited animated GIFs never resume once scrolled offscreen
https://bugs.webkit.org/show_bug.cgi?id=152817
<rdar://problem/19982020>

Reviewed by Daniel Bates.

Source/WebCore:

Directly-composited animated GIFs would never resume once scrolled
offscreen. This is because calling repaint() in this case would not
cause BitmapImage::draw() to be called and the animation would thus
not be resumed. To address the problem,
repaintForPausedImageAnimationsIfNeeded() now calls
RenderBoxModelObject::contentChanged(ImageChanged) in addition to
repaint() to make sure the animation actually gets resumed, even in
the directly-composited animated GIF case.

Test: fast/images/composited-animated-gif-outside-viewport.html

  • platform/graphics/BitmapImage.h:

Make currentFrame() public so it can be exposed via Internals for the
purpose of testing.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::repaintForPausedImageAnimationsIfNeeded):
Call RenderBoxModelObject::contentChanged(ImageChanged) in addition to
calling repaint() to make sure the animation actually gets resumed in
the directly-composited animated GIFs case.

  • testing/Internals.cpp:

(WebCore::Internals::imageFrameIndex):

  • testing/Internals.h:
  • testing/Internals.idl:

Expose new "unsigned long imageFrameIndex(Element)" operation on
Internals so layout tests can better check if an image is actually
animating. Previously, we would rely on the output of
internals.hasPausedImageAnimations(Element) but this is not sufficient
to cover this bug as our rendering code believed it has resumed the
animations but the GIF was not actually animating due to it being
directly-composited.

LayoutTests:

Add a layout test to check that directly-composited animated GIFs are
properly suspended / resumed based on visibility inside the viewport.

  • fast/images/composited-animated-gif-outside-viewport-expected.txt: Added.
  • fast/images/composited-animated-gif-outside-viewport.html: Added.
11:29 AM Changeset in webkit [194705] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[CMake] JSC shell sources should include JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES
https://bugs.webkit.org/show_bug.cgi?id=152664

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Alex Christensen.

  • shell/CMakeLists.txt:
11:06 AM Changeset in webkit [194704] by Joseph Pecoraro
  • 8 edits
    3 adds in trunk

Web Inspector: CRASH Attempting to pause on CSP violation not inside of script
https://bugs.webkit.org/show_bug.cgi?id=152825
<rdar://problem/24021276>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • debugger/Debugger.cpp:

(JSC::Debugger::breakProgram):
We cannot pause if we are not evaluating JavaScript, so bail.

Source/WebInspectorUI:

  • UserInterface/Test/TestHarness.js:

(TestHarness.prototype.expectThat):
(TestHarness.prototype.pass):
(TestHarness.prototype.fail):
Add a simple way to output a standard pass/fail message. These are
often nicer than expectThat(true, ...) or assert(false, ...).

LayoutTests:

  • http/tests/inspector/resources/inspector-test.js:

(TestPage.reportUncaughtException):
Allow a test to continue after uncaught exceptions.

  • inspector/debugger/csp-exceptions-expected.txt: Added.
  • inspector/debugger/csp-exceptions.html: Added.
  • inspector/debugger/resources/csp-exception-iframe.html: Added.

Test a CSP exception that causes a pause and one outside of
script that does not pause (and does not crash).

10:57 AM Changeset in webkit [194703] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Re-enable lea() in Air on ARM64
https://bugs.webkit.org/show_bug.cgi?id=152832

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-07
Reviewed by Michael Saboff.

Lea() on the MacroAssembler is not the full x86 Lea (the real one being
x86Lea32()). Instead, it is a addPtr() with SP and a constant.

The instruction is required to implement B3's StackSlot. It is not
safe for big offsets but none of the stack operations are at the moment.

  • b3/air/AirOpcode.opcodes:
10:21 AM Changeset in webkit [194702] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed IndexedDB test gardening.

  • platform/mac-wk1/TestExpectations:
10:13 AM Changeset in webkit [194701] by beidson@apple.com
  • 3 edits
    2 adds in trunk/LayoutTests

Modern IDB: Add expectations for W3C tests that were missing them.
https://bugs.webkit.org/show_bug.cgi?id=152835

Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

  • indexeddb/idbfactory_open10-expected.txt: Added.
  • indexeddb/key_valid-expected.txt: Added.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
10:07 AM Changeset in webkit [194700] by beidson@apple.com
  • 28 edits
    22 copies in trunk/LayoutTests

Modern IDB: Update results for W3C tests marked as failures that actually pass.
https://bugs.webkit.org/show_bug.cgi?id=152827

Reviewed by Daniel Bates.
LayoutTests/imported/w3c:

Modern IDB passes the following tests with PASS results where we previous expected FAIL.

Let's update those, shall we?

  • indexeddb/abort-in-initial-upgradeneeded-expected.txt:
  • indexeddb/idbcursor-advance-expected.txt:
  • indexeddb/idbcursor_advance_index5-expected.txt:
  • indexeddb/idbcursor_advance_index9-expected.txt:
  • indexeddb/idbcursor_advance_objectstore5-expected.txt:
  • indexeddb/idbcursor_continue_index5-expected.txt:
  • indexeddb/idbcursor_continue_index6-expected.txt:
  • indexeddb/idbcursor_continue_index8-expected.txt:
  • indexeddb/idbcursor_continue_invalid-expected.txt:
  • indexeddb/idbcursor_continue_objectstore6-expected.txt:
  • indexeddb/idbcursor_delete_index4-expected.txt:
  • indexeddb/idbcursor_delete_objectstore4-expected.txt:
  • indexeddb/idbdatabase_close2-expected.txt:
  • indexeddb/idbdatabase_deleteObjectStore4-not_reused-expected.txt:
  • indexeddb/idbfactory_deleteDatabase3-expected.txt:
  • indexeddb/idbindex-multientry-big-expected.txt:
  • indexeddb/idbindex_get3-expected.txt:
  • indexeddb/idbobjectstore_add4-expected.txt:
  • indexeddb/idbobjectstore_createIndex2-expected.txt:
  • indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt:
  • indexeddb/idbobjectstore_put4-expected.txt:
  • indexeddb/idbtransaction_abort-expected.txt:
  • indexeddb/keygenerator-constrainterror-expected.txt:
  • indexeddb/keygenerator-expected.txt:
  • indexeddb/transaction-requestqueue-expected.txt:

LayoutTests:

  • Update FAIL expectations to PASS expectations for Modern IDB.
  • Copy the FAIL expectations over to platform/wk2 to keep testing Legacy IDB.
  • platform/mac-wk1/TestExpectations:
  • platform/wk2/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor-advance-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_advance_index5-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_advance_index9-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_advance_objectstore5-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_continue_index8-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_continue_objectstore6-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_delete_index4-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_delete_objectstore4-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbdatabase_close2-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbfactory_deleteDatabase3-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbindex-multientry-big-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbindex_get3-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get3-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_add4-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_createIndex2-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_put4-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbtransaction_abort-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/keygenerator-constrainterror-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/keygenerator-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/keygenerator-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/transaction-requestqueue-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-expected.txt.
9:06 AM Changeset in webkit [194699] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Add two missing abortWithReason implementations
https://bugs.webkit.org/show_bug.cgi?id=136753

Patch by Julien Brianceau <jbriance@cisco.com> on 2016-01-07
Reviewed by Benjamin Poulain.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::memoryFence):
(JSC::MacroAssemblerMIPS::abortWithReason):
(JSC::MacroAssemblerMIPS::readCallTarget):

7:31 AM Changeset in webkit [194698] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Add new or32 implementation to MacroAssemblerARM after r194613
https://bugs.webkit.org/show_bug.cgi?id=152784

Reviewed by Benjamin Poulain.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::or32):

7:00 AM Changeset in webkit [194697] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[SOUP] Consider reducing max simultaneous connections
https://bugs.webkit.org/show_bug.cgi?id=137282

Reviewed by Carlos Garcia Campos.

Reduce max simultaneous connections from 35 to 17, because (a) all major browsers except
Chrome use 17, and (b) Chrome uses 10. The only reason we previously used 35 was that other
browsers were using 35 at the time.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession):

6:00 AM Changeset in webkit [194696] by youenn.fablet@crf.canon.fr
  • 4 edits
    1 add in trunk/Tools

[buildbot] clean-build script should remove untracked files and revert local changes too
https://bugs.webkit.org/show_bug.cgi?id=142400

Reviewed by Ryosuke Niwa.

This patch cleans the WebKit folder by reverting tracked files changes and deleting SCM untracked files, including SCM ignored files.
A helper routine SCM.discard_untracked_files is added for that purpose.

  • BuildSlaveSupport/clean-build:

(main): Making call to Scripts/clean-webkit

  • Scripts/clean-webkit: Added.

(main): Revert changes and delete untracked files.

  • Scripts/webkitpy/common/checkout/scm/scm.py:

(SCM.discard_untracked_files): Helper function to discard untracked files or folders found by SCM.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(SCMTest._shared_test_discard_untracked_files):
(test_discard_untracked_files): Tests that untracked file and untracked folder get discarded correctly.

3:25 AM WebKitGTK/Gardening/Calendar edited by mario@webkit.org
(diff)
12:17 AM Changeset in webkit [194695] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebKit2

Merge r194557. rdar://problem/24042908

12:17 AM Changeset in webkit [194694] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebKit2

Merge r194624. rdar://problem/24074336

12:16 AM Changeset in webkit [194693] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r194485. rdar://problem/23978916

12:16 AM Changeset in webkit [194692] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r194662. rdar://problem/24043055

12:16 AM Changeset in webkit [194691] by Antti Koivisto
  • 12 edits
    2 moves in trunk/Source/WebCore

Factor free standing tree style resolve functions into a class
https://bugs.webkit.org/show_bug.cgi?id=152786

Reviewed by Simon Fraser.

Factor the free standing tree style resolve functions into a class that can keep state.
Style::TreeResolver instances resolve a single tree scope. It is instantiated for resolving
the document style and then recursively for each encountered shadow tree.

This will enable new features and optimizations later.

  • dom/Document.cpp:

(WebCore::Document::recalcStyle):

Move the root style computation code back to Document. It fits better here and avoid some
awkwardness with style resolver construction order.

  • style/StyleResolveTree.cpp:

(WebCore::Style::TreeResolver::TreeResolver):

TreeResolver knows the current tree context and the StyleResolver to use for it.
Switch the functions to use these instead of recomputing them repeatedly.

(WebCore::Style::shouldCreateRenderer):
(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::moveToFlowThreadIfNeeded):
(WebCore::Style::TreeResolver::createRenderer):
(WebCore::Style::updateTextRendererAfterContentChange):
(WebCore::Style::TreeResolver::createRenderTreeForChildren):
(WebCore::Style::TreeResolver::createRenderTreeForShadowRoot):
(WebCore::Style::needsPseudoElement):
(WebCore::Style::TreeResolver::createRenderTreeForBeforeOrAfterPseudoElement):
(WebCore::Style::TreeResolver::createRenderTreeForSlotAssignees):
(WebCore::Style::TreeResolver::createRenderTreeRecursively):

Rename to reduce the use of confusing "attach" terminology.

(WebCore::Style::pseudoStyleCacheIsInvalid):
(WebCore::Style::TreeResolver::resolveLocally):
(WebCore::Style::resolveTextNode):
(WebCore::Style::TreeResolver::resolveChildAtShadowBoundary):
(WebCore::Style::TreeResolver::resolveShadowTree):
(WebCore::Style::TreeResolver::resolveBeforeOrAfterPseudoElement):
(WebCore::Style::TreeResolver::resolveChildren):
(WebCore::Style::TreeResolver::resolveSlotAssignees):
(WebCore::Style::TreeResolver::resolveRecursively):
(WebCore::Style::TreeResolver::resolve):
(WebCore::Style::detachRenderTree):
(WebCore::Style::styleForElement): Deleted.
(WebCore::Style::createRendererIfNeeded): Deleted.
(WebCore::Style::attachChildren): Deleted.
(WebCore::Style::attachShadowRoot): Deleted.
(WebCore::Style::attachBeforeOrAfterPseudoElementIfNeeded): Deleted.
(WebCore::Style::attachSlotAssignees): Deleted.
(WebCore::Style::attachRenderTree): Deleted.
(WebCore::Style::resolveLocal): Deleted.
(WebCore::Style::resolveChildAtShadowBoundary): Deleted.
(WebCore::Style::resolveShadowTree): Deleted.
(WebCore::Style::updateBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::resolveChildren): Deleted.
(WebCore::Style::resolveSlotAssignees): Deleted.
(WebCore::Style::resolveTree): Deleted.

  • style/StyleResolveTree.h:
12:14 AM Changeset in webkit [194690] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

AX: AXObjectCacheMac is passing WebCore enum values directly to VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=151755

Patch by Doug Russell <d_russell@apple.com> on 2016-01-07
Reviewed by Chris Fleizach.

No new tests, covered by existing tests.

  • accessibility/mac/AXObjectCacheMac.mm:

(platformChangeTypeForWebCoreChangeType):
(platformEditTypeForWebCoreEditType):
(platformDirectionForWebCoreDirection):
(platformGranularityForWebCoreGranularity):
(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::textReplacementChangeDictionary):
(WebCore::AXObjectCache::postTextReplacementPlatformNotification):

Jan 6, 2016:

11:53 PM Changeset in webkit [194689] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Modern IDB: Initial enabling of imported W3C IDB tests.
https://bugs.webkit.org/show_bug.cgi?id=152824

Reviewed by Daniel Bates.

  • platform/mac-wk1/TestExpectations: Unskip the entire W3C IDB test directory, but add appropriate results for all the tests that don't yet pass.
6:41 PM Changeset in webkit [194688] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Web Inspector: Add test for Color.canBeSerializedAsShortHex
https://bugs.webkit.org/show_bug.cgi?id=152809

Patch by Devin Rousso <Devin Rousso> on 2016-01-06
Reviewed by Brian Burg.

Added more specific tests for the canBeSerializedAsShortHex
method of Web Inspector model class Color.

  • inspector/model/color-expected.txt:
  • inspector/model/color.html:
6:09 PM Changeset in webkit [194687] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

Modern IDB: Fix up IDBDatabaseIdentifier hash issues.
https://bugs.webkit.org/show_bug.cgi?id=152822

Reviewed by Alex Christensen.

No new tests (No explicitly testable behavior change, existing tests pass, flakiness will be reduced).

  • Modules/indexeddb/IDBDatabaseIdentifier.h:

(WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier):
(WebCore::IDBDatabaseIdentifier::isEmpty):
(WebCore::IDBDatabaseIdentifierHashTraits::isEmptyValue):

  • page/SecurityOriginData.h:
5:44 PM Changeset in webkit [194686] by Joseph Pecoraro
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: DOMContentLoaded label in the Timeline tab should be "DOM Content Loaded"
https://bugs.webkit.org/show_bug.cgi?id=152746

Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/TimelineRuler.js:

(WebInspector.TimelineRuler.prototype.addMarker):

5:44 PM Changeset in webkit [194685] by Joseph Pecoraro
  • 9 edits in trunk

Web Inspector: Scope chain shows too many scopes for functions (let and var in the same function are two scopes)
https://bugs.webkit.org/show_bug.cgi?id=152349

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:

New "Closure Variables (%s)" string for including the function name alongside
the closure scope section.

  • UserInterface/Models/ScopeChainNode.js:

(WebInspector.ScopeChainNode):
(WebInspector.ScopeChainNode.prototype.get objects):
(WebInspector.ScopeChainNode.prototype.get object): Deleted.
Allow a ScopeChainNode to hold onto multiple RemoteObjects (for multiple JSScopes).

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype._scopeChainNodeFromPayload):
Simplify the legacy case and convert "Local" to "Closure". The UI will now
determine and display "Local" where appropriate in a backwards compatible way.

  • UserInterface/Views/ScopeChainDetailsSidebarPanel.js:

(WebInspector.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
Associate ScopeChain nodes with CallFrame frames so that we can better combine
variable sections and better label closure sections.

  • UserInterface/Views/ScopeChainDetailsSidebarPanel.css:

(.scope-chain .details-section > .content > .group > .row.properties:not(.empty)):
(.scope-chain .details-section > .content > .group > .row.properties:not(.empty):last-child):
Styles for two object trees property sections next to eachother.

LayoutTests:

  • inspector/debugger/breakpoint-scope.html:
  • inspector/model/scope-chain-node.html:

The ScopeChainNode model object changed, so update tests.

5:43 PM Changeset in webkit [194684] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Sort the project file.

  • WebCore.xcodeproj/project.pbxproj:
5:43 PM Changeset in webkit [194683] by Simon Fraser
  • 16 edits in trunk

Add a setting and preferences to enable display-list drawing. Does nothing yet.
https://bugs.webkit.org/show_bug.cgi?id=152807

Reviewed by Zalan Bujtas.
Source/WebCore:

Setting for display-list drawing.

  • page/Settings.in:

Source/WebKit/mac:

WK1 pref for display-list drawing, defaults to off.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences displayListDrawingEnabled]):
(-[WebPreferences setDisplayListDrawingEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
(-[WebView _preferencesChanged:]):

Source/WebKit2:

WK2 debug pref for display-list drawing, defaults to off.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _displayListDrawingEnabled]):
(-[WKPreferences _setDisplayListDrawingEnabled:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

Add an item to the Settings menu to toggle display-list drawing.

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleDisplayListDrawingEnabled:]):
(-[SettingsController displayListDrawingEnabled]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController didChangeSettings]):

5:39 PM Changeset in webkit [194682] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

[GTK] css-multicol-1 tests are failing

Unreviewed gardening.

  • platform/gtk/TestExpectations:
5:37 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
5:33 PM Changeset in webkit [194681] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaselining media/airplay-target-availability.html
hhttps://bugs.webkit.org/show_bug.cgi?id=152815

Unreviewed test gardening.

  • media/airplay-target-availability-expected.txt:
5:17 PM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
5:00 PM Changeset in webkit [194680] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Perf dashboard JSON API should fail gracefully when postgres is down
https://bugs.webkit.org/show_bug.cgi?id=152812

Reviewed by Chris Dumez.

Even though all JSON APIs returned DatabaseConnectionFailure as the status when Database::connect
returned a falsy value, PHP was spitting out warnings and producing HTTP responses that cannot be
parsed as a JSON when pg_connect failed.

Fixed the bug by suppressing warning messages in pg_connect.

  • public/include/db.php:

(Database::connect): Use '@' prefix to suppress warning messages.

4:57 PM Changeset in webkit [194679] by rniwa@webkit.org
  • 3 edits
    1 add in trunk/Websites/perf.webkit.org

Perf dashboard should auto-generate manifest file when one is missing
https://bugs.webkit.org/show_bug.cgi?id=152813

Reviewed by Chris Dumez.

When /data/manifest.json is missing, fall back to newly added /api/manifest instead of
silently failing to show the UI. This will make the initial setup easier.

  • public/api/manifest.php: Added.

(main):

  • public/include/manifest.php:

(Manifest::manifest): Added.

  • public/v3/main.js:

(fetchManifest):
(didFetchManifest): Extracted from fetchManifest.

3:54 PM Changeset in webkit [194678] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Remove Debug Logging from some Inspector Tests
https://bugs.webkit.org/show_bug.cgi?id=152806

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-06
Reviewed by Brian Burg.

  • inspector/debugger/scriptParsed.html:
  • inspector/model/scope-chain-node.html:
3:50 PM Changeset in webkit [194677] by matthew_hanson@apple.com
  • 13 edits
    2 adds in branches/safari-601-branch

Merge r194405. rdar://problem/23982006

3:50 PM Changeset in webkit [194676] by matthew_hanson@apple.com
  • 4 edits
    2 adds in branches/safari-601-branch

Merge r194404. rdar://problem/23982006

3:50 PM Changeset in webkit [194675] by matthew_hanson@apple.com
  • 11 edits in branches/safari-601-branch

Merge r194114. rdar://problem/23982010

3:50 PM Changeset in webkit [194674] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

Merge r188802. rdar://problem/23982009

3:46 PM Changeset in webkit [194673] by commit-queue@webkit.org
  • 5 edits
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: Add basic Animation section to Visual Sidebar
https://bugs.webkit.org/show_bug.cgi?id=152692

Patch by Devin Rousso <Devin Rousso> on 2016-01-06
Reviewed by Timothy Hatcher.

Adds a non-autocompleting section to the "Effects" section (renamed from
"Animations") of the Visual sidebar for setting CSS Animation values.

  • Scripts/copy-user-interface-resources.pl:
  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Images/AnimationPlayStatePaused.svg: Added.
  • UserInterface/Images/AnimationPlayStateRunning.svg: Added.
  • UserInterface/Main.html:
  • UserInterface/Views/VisualStyleBasicInput.js: Added.

(WebInspector.VisualStyleBasicInput):
(WebInspector.VisualStyleBasicInput.prototype.get value):
(WebInspector.VisualStyleBasicInput.prototype.set value):
(WebInspector.VisualStyleBasicInput.prototype.get synthesizedValue):
(WebInspector.VisualStyleBasicInput.prototype._handleInputElementInput):
Very basic editor that is just an input box with a given placeholder.

  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel):
(WebInspector.VisualStyleDetailsPanel.prototype._populateAnimationSection):
Creates the necessary property editors and adds them to their respective rows.

3:37 PM Changeset in webkit [194672] by eric.carlson@apple.com
  • 15 edits
    2 adds in trunk

AirPlay route availability event not always sent
https://bugs.webkit.org/show_bug.cgi?id=152802

Reviewed by Jer Noble.

Source/WebCore:

Test: media/airplay-target-availability.html

  • Modules/mediasession/WebMediaSessionManager.cpp:

(WebCore::mediaProducerStateString): Log the new flags.
(WebCore::WebMediaSessionManager::clientStateDidChange): Schedule a client reconfiguration if

the 'requires monitoring', 'has listener', or 'has audio or video' flags have changed.

(WebCore::WebMediaSessionManager::configurePlaybackTargetMonitoring): Start monitoring if

at least one client has a listener and at least one has audio/video.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaState): Set new flags.

  • html/HTMLMediaElement.h:
  • page/MediaProducer.h: Define new flags. Add new state enum.
  • platform/graphics/MediaPlaybackTargetContext.h: Initial state is "Unknown".
  • platform/mock/MediaPlaybackTargetMock.h:
  • platform/mock/MediaPlaybackTargetPickerMock.cpp:

(WebCore::MediaPlaybackTargetPickerMock::externalOutputDeviceAvailable): Enums not bitfields.
(WebCore::MediaPlaybackTargetPickerMock::startingMonitoringPlaybackTargets): Ditto. Don't make

device change callback if the device state is "Unknown".

(WebCore::MediaPlaybackTargetPickerMock::setState): Ditto.

  • platform/mock/MediaPlaybackTargetPickerMock.h:
  • testing/Internals.cpp:

(WebCore::Internals::setMockMediaPlaybackTargetPickerState): Support new state.

LayoutTests:

  • media/airplay-target-availability-expected.txt: Added.
  • media/airplay-target-availability.html: Added.
  • platform/mac/TestExpectations: Skip new test on Yosemite.
  • platform/efl/TestExpectations: Skip new test.
  • platform/gtk/TestExpectations: Ditto.
  • platform/win/TestExpectations: Ditto.
2:34 PM Changeset in webkit [194671] by beidson@apple.com
  • 5 edits in trunk

Modern IDB: storage/indexeddb/odd-strings.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=152800

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (Existing flaky test is now rock solid and unskipped).

  • Modules/indexeddb/client/IDBDatabaseImpl.cpp:

(WebCore::IDBClient::IDBDatabase::IDBDatabase):
(WebCore::IDBClient::IDBDatabase::maybeCloseInServer): Only refuse to close in the server if there

are active transactions. In the case of page navigation where stop() has been called on active DOM objects,
there will never be any active transactions.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):

LayoutTests:

  • platform/mac-wk1/TestExpectations:
2:21 PM Changeset in webkit [194670] by beidson@apple.com
  • 5 edits in trunk

Modern IDB: storage/indexeddb/intversion-gated-on-delete.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=152795

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one failing test now passes).

Change the HashSet of open connection into a ListHashSet.

This enforces a reliable order of event delivery, which this test relies on,
and which seems better in general.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromClient):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

LayoutTests:

  • platform/mac-wk1/TestExpectations:
2:21 PM Changeset in webkit [194669] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r194613): JITMulGenerator needs a scratch GPR on 32-bit too.
https://bugs.webkit.org/show_bug.cgi?id=152805

Reviewed by Michael Saboff.

There aren't enough registers on x86 32-bit to allocate the needed scratch GPR.
So, we'll continue to use one of the result registers as the scratch, and
re-compute the result at the end.

  • jit/JITMulGenerator.cpp:

(JSC::JITMulGenerator::generateFastPath):

2:10 PM Changeset in webkit [194668] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Use code signed identifier as part of user directory suffix
https://bugs.webkit.org/show_bug.cgi?id=152310
<rdar://problem/13352225>

As pointed out by Sam Weinig, the year is 2016! I inadvertently added the copyright year 2015 instead of 2016.

  • Shared/mac/ChildProcessMac.mm:
2:08 PM Changeset in webkit [194667] by Simon Fraser
  • 11 edits in trunk

[iOS] Revert overflow:hidden on the body affecting viewport scale (r186786)
https://bugs.webkit.org/show_bug.cgi?id=152803
rdar://problem/22242515

Reviewed by Tim Horton.
Source/WebCore:

You can't assume that if an author uses overflow:hidden on the body, they have no
content outside the body that is important. Sites like Google Translate put
abspos elements outside the body.

So revert the change.

  • page/FrameView.cpp:

(WebCore::FrameView::contentsSizeRespectingOverflow): Deleted.

  • page/FrameView.h:

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebView _contentsSizeRespectingOverflow]): Keep this function which is used
by UIKit, but change the implementation to just return the document size.

Source/WebKit2:

You can't assume that if an author uses overflow:hidden on the body, they have no
content outside the body that is important. Sites like Google Translate put
abspos elements outside the body.

So revert the change.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::mainFrameDidLayout): Go back to using contents size.

LayoutTests:

Keep the tests, but update their expected results.

  • platform/ios-simulator/fast/viewport/ios/width-is-device-width-overflowing-body-overflow-hidden-expected.txt:
  • platform/ios-simulator/fast/viewport/ios/width-is-device-width-overflowing-body-overflow-hidden-tall-expected.txt:
  • platform/ios-simulator/fast/viewport/ios/width-is-device-width-overflowing-expected.txt:
2:07 PM Changeset in webkit [194666] by Brent Fulgham
  • 5 edits
    2 adds in trunk

Port blocking bypass issue using 307 redirect
https://bugs.webkit.org/show_bug.cgi?id=152801
<rdar://problem/24048554>

Reviewed by Anders Carlsson.

Source/WebCore:

Tested by http/tests/security/blocked-on-redirect.html.

Make sure that 307 redirects check the requested URL via 'portAllowed'.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest): Confirm that the requested port
is valid, and block load if it is not.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::reportBlockedPortFailed): Added.
(WebCore::FrameLoader::blockedError): Added.

  • loader/FrameLoader.h:

LayoutTests:

  • http/tests/security/blocked-on-redirect-expected.txt: Added.
  • http/tests/security/blocked-on-redirect.html: Added.
1:50 PM Changeset in webkit [194665] by andersca@apple.com
  • 7 edits
    1 add in trunk/Source

Add a smart block pointer
https://bugs.webkit.org/show_bug.cgi?id=152799

Reviewed by Tim Horton.

Source/JavaScriptCore:

Get rid of RemoteTargetBlock and replace it with WTF::BlockPtr<void ()>.

  • inspector/remote/RemoteConnectionToTarget.h:

(Inspector::RemoteTargetBlock::RemoteTargetBlock): Deleted.
(Inspector::RemoteTargetBlock::~RemoteTargetBlock): Deleted.
(Inspector::RemoteTargetBlock::operator=): Deleted.
(Inspector::RemoteTargetBlock::operator()): Deleted.

  • inspector/remote/RemoteConnectionToTarget.mm:

(Inspector::RemoteTargetQueueTaskOnGlobalQueue):
(Inspector::RemoteConnectionToTarget::queueTaskOnPrivateRunLoop):

Source/WebKit2:

Use WTF::BlockPtr.

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore fetchDataRecordsOfTypes:completionHandler:]):
(-[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:]):
(-[WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:]):

Source/WTF:

Introduce WTF::BlockPtr, a smart block pointer.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/BlockPtr.h: Added.

(WTF::makeBlockPtr):

1:43 PM Changeset in webkit [194664] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Commit another forgotten change, this time, for r194653.

  • public/v3/models/measurement-set.js:
1:37 PM Changeset in webkit [194663] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] More B3 tests passing on ARM64
https://bugs.webkit.org/show_bug.cgi?id=152787

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-06
Reviewed by Michael Saboff.

Some more minor bugs.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::urshift64):
The offset was being truncated. That code was just copied
from the 32bits version of urshift.

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::createGenericCompare):
Very few instructions can encode -1 as immediate.
TST certainly can't. The fallback works for ARM.

  • b3/air/AirOpcode.opcodes:

Bit instructions have very specific immediate encoding.
B3 cannot express that properly yet. I disabled those
forms for now. Immediates encoding is something we'll really
have to look into at some point for B3 ARM64.

1:32 PM Changeset in webkit [194662] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

Merge for rdar://problem/24043055.

1:16 PM Changeset in webkit [194661] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

The sampling of time series on v3 UI is too aggressive
https://bugs.webkit.org/show_bug.cgi?id=152804

Reviewed by Chris Dumez.

Fixed a bug that we were always halving the number of data points in _sampleTimeSeries
and increased the number of data points allowed to make the sampling less aggressive.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.prototype._ensureSampledTimeSeries): Increase the number of maximum points
to 2x the number of pixels divided by the radius of each point.
(TimeSeriesChart.prototype._sampleTimeSeries.findMedian): Changed the semantics of endIndex
to mean the index after the last point and renamed it to indexAfterEnd.
(TimeSeriesChart.prototype._sampleTimeSeries): Fixed a bug that this code always coerced two
data points into one sampled data point despite of the fact i and j are sufficiently apart
since data[j].time - data[i].time > timePerSample by definition.

1:15 PM Changeset in webkit [194660] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Use code signed identifier as part of user directory suffix
https://bugs.webkit.org/show_bug.cgi?id=152310
<rdar://problem/13352225>

Reviewed by Brent Fulgham.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::findSecCodeForProcess): Added.
(WebKit::ChildProcess::initializeSandbox): Modified to use an identifier
from the code signature of the app/tool as part of the user directory suffix.

1:13 PM Changeset in webkit [194659] by Michael Catanzaro
  • 2 edits in trunk/Source/JavaScriptCore

Silence -Wtautological-compare
https://bugs.webkit.org/show_bug.cgi?id=152768

Reviewed by Saam Barati.

  • runtime/Options.cpp:

(JSC::Options::setAliasedOption):

1:06 PM Changeset in webkit [194658] by clopez@igalia.com
  • 2 edits in trunk/LayoutTests

gi2016-01-06 Carlos Alberto Lopez Perez <clopez@igalia.com>

[GTK] Unreviewed gardening.

  • platform/gtk/TestExpectations: report and mark new SVG failures

after r192138 and new media timeouts after r191948. Mark also the
RTSP test as skip because it was failing, and update the expectation
for a slow inspector test that now timeouts.

1:04 PM Changeset in webkit [194657] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Commit the forgotten change for r194651.

  • public/v3/pages/domain-control-toolbar.js:

(DomainControlToolbar.prototype.setStartTime):

12:53 PM Changeset in webkit [194656] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Tiny cleanup in FontPlatformData::ctFont()
https://bugs.webkit.org/show_bug.cgi?id=152793

Reviewed by Zalan Bujtas.

No new tests because there is no behavior change.

  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:

(WebCore::FontPlatformData::ctFont):

12:49 PM Changeset in webkit [194655] by fpizlo@apple.com
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

Make sure that the basic throw-from-operation mode of throwing makes sense in FTL B3
https://bugs.webkit.org/show_bug.cgi?id=152798

Reviewed by Oliver Hunt.

This really just contains one change: we inline emitBranchToOSRExitIfWillCatchException()
into callCheck(), since that was its only caller. This makes it a bit more clear what is
going on.

It turns out that FTL B3 already handled this case properly. I added a test that I believe
illustrates this. Note that although the test uses GetById, which ordinarily throws
exceptions from inside a patchpoint, it uses it in such a way that the exception is thrown
from the operation call for the non-cell bypass path of a GetById(UntypedUse:).

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::callCheck):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitArgumentsForPatchpointIfWillCatchException):
(JSC::FTL::DFG::LowerDFGToLLVM::lowBlock):
(JSC::FTL::DFG::LowerDFGToLLVM::emitBranchToOSRExitIfWillCatchException): Deleted.

  • tests/stress/ftl-operation-exception.js: Added.

(foo):

12:31 PM Changeset in webkit [194654] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Fixed Individuals and Vendor Contact formatting.
https://bugs.webkit.org/show_bug.cgi?id=152714

Reviewed by Timothy Hatcher.

  • security-policy.md:
12:31 PM Changeset in webkit [194653] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

The right hand side of main chart appears to be cut off as you zoom out on v3 UI
https://bugs.webkit.org/show_bug.cgi?id=152778

Reviewed by Antti Koivisto.

Add a padding on x-axis after the end time to make the main chart more easily interactive.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.prototype._computeHorizontalRenderingMetrics):

  • public/v3/pages/page-with-charts.js:

(PageWithCharts.mainChartOptions): Add a padding of 5px at the end of x-axis.

12:27 PM Changeset in webkit [194652] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

v3 UI should use four sig-figs to label y-axis of the main charts
https://bugs.webkit.org/show_bug.cgi?id=152779

Reviewed by Antti Koivisto.

Increase the number of significant figures used in the main charts to four as done in v2 UI.

  • public/v3/pages/chart-pane.js:

(ChartPane.constructor): Create a formatter with four significant figures.

  • public/v3/pages/page-with-charts.js:

(PageWithCharts.mainChartOptions): Increase the width of y-axis labels.

12:26 PM Changeset in webkit [194651] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

v3 UI's time range slider is harder to use than that of v2 UI
https://bugs.webkit.org/show_bug.cgi?id=152780

Reviewed by Antti Koivisto.

Improved the time range slider by using a cubic mapping to time range and providing a text field
to directly edit the number of days to show.

Now an user can enter the text mode to directly edit the number of days to show by clicking on
the number of days (text field is always there with opacity=0).

  • public/v3/pages/charts-toolbar.js:

(ChartsToolbar): Store the minimum and maximum number of days allowed. Also rename _inputElement
to _slider and added a new type=number text field as _editor.
(ChartsToolbar.prototype.render):
(ChartsToolbar.prototype.setStartTime): Exit the text mode when the number of days is changed by
an URL state transition (i.e. back/forward navigation).
(ChartsToolbar.prototype._setInputElementValue): Added. Updates the values of _slider and _editor.
(ChartsToolbar.prototype._enterTextMode): Added. Hide the elements used by the slider mode and
show the text field.
(ChartsToolbar.prototype._exitTextMode): Added. Does the opposite.
(ChartsToolbar.prototype._sliderValueMayHaveChanged): Renamed from _inputValueMayHaveChanged.
(ChartsToolbar.prototype._editorValueMayHaveChanged): Added. Similar to _sliderValueMayHaveChanged
but also corrects the value of _editor if needed.
(ChartsToolbar.prototype._callNumberOfDaysCallback): Extracted from _inputValueMayHaveChanged.
Also fixed a bug that we didn't update the URL state when the change event was fired without
modifying the effective number of days.
(ChartsToolbar.cssTemplate): Tweaked the style to support the new mode. Also set a fixed width on
the span showing the number of days in the slider mode.

12:06 PM Changeset in webkit [194650] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Web Inspector: Remove duplicate check
https://bugs.webkit.org/show_bug.cgi?id=152792

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-06
Reviewed by Timothy Hatcher.

  • inspector/InjectedScriptSource.js:

(InjectedScript.RemoteObject.prototype._generatePreview): Deleted.
This method is only called from one place, and it does an equivalent
check before calling this function. Remove the duplicate check.

11:24 AM Changeset in webkit [194649] by beidson@apple.com
  • 7 edits
    1 add in trunk

Modern IDB: storage/indexeddb/transaction-scope-sequencing.html fails
https://bugs.webkit.org/show_bug.cgi?id=152775

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (At least one failing test now passes, plus changes to another existing test).

Any transaction enqueued after a read-write transaction whose scope overlaps with
that read-write transaction cannot run until after that read-write transaction runs.

Additionally, read-only transactions were actually sometimes running even though their scopes
overlapped with a running read-write transaction.

This patch fixes both of those issues.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired):
(WebCore::IDBServer::UniqueIDBDatabase::takeNextRunnableTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::inProgressTransactionCompleted):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

LayoutTests:

In addition to enabling the previously skipped test, this also completely rewrites transaction-scheduler-4,
which covered incorrect behavior, to cover newly implemented correct behavior.

  • platform/mac-wk1/TestExpectations:
  • storage/indexeddb/modern/resources/transaction-scheduler-4.js: Added.
  • storage/indexeddb/modern/transaction-scheduler-4-expected.txt:
  • storage/indexeddb/modern/transaction-scheduler-4.html:
11:17 AM Changeset in webkit [194648] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Zooming button is broken on v3 UI
https://bugs.webkit.org/show_bug.cgi?id=152777

Reviewed by Chris Dumez.

Bring up the zoom button in z-index so that users can click it.

  • public/v3/components/interactive-time-series-chart.js:

(InteractiveTimeSeriesChart.cssTemplate):

11:09 AM Changeset in webkit [194647] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

v3 UI doesn't preserve the time range when charts page is opened from a dashboard
https://bugs.webkit.org/show_bug.cgi?id=152776

Reviewed by Chris Dumez.

Fixed the bug by moving the construction of charts URL from DashboardPage.prototype.open to
DashboardPage.prototype.render and re-rendering the entire page upon an URL state transition.

  • public/v3/pages/charts-page.js:

(ChartsPage.createStateForDashboardItem): Takes the start time for the charts page.

  • public/v3/pages/dashboard-page.js:

(DashboardPage.prototype.updateFromSerializedState): Merged _numberOfDaysDidChange and
_updateChartsDomainFromToolbar into this function since they're not used elsewhere. Also re-render
the entire page when transition between different number of days to show.
(DashboardPage.prototype._numberOfDaysDidChange): Deleted.
(DashboardPage.prototype._updateChartsDomainFromToolbar): Deleted.
(DashboardPage.prototype.render): Construct URL for each charts here.
(DashboardPage.prototype._createChartForCell): Don't construct URL here since this function is
called once when the dashboard page is opened, and not when the time range is changed.

10:49 AM Changeset in webkit [194646] by BJ Burg
  • 11 edits
    4 adds in trunk/Source

Add a WebKit SPI for registering an automation controller with RemoteInspector
https://bugs.webkit.org/show_bug.cgi?id=151576

Reviewed by Dan Bernstein and Joseph Pecoraro.

Source/JavaScriptCore:

Given a RemoteInspector endpoint that is instantiated in UIProcess, there
should be a way to delegate automation-related functionality and policy to
clients of WebKit.

This class adds a RemoteInspector::Client interface that serves a delegate.
This is ultimately delegated via _WKAutomationDelegate, which is an SPI
that allows clients to install an Objective-C delegate for automation.

The setting for whether remote automation is allowed is included in the
listing that RemoteInspector sends out. It is updated when RemoteInspector::Client
is assigned, or when the client signals that its capabilities have changed.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/RemoteInspector.mm:

(Inspector::RemoteInspector::setRemoteInspectorClient): Added.
(Inspector::RemoteInspector::pushListingsNow):

In the listing, include whether the application supports remote automation.

  • inspector/remote/RemoteInspectorConstants.h: Add a constant.

Source/WebKit2:

_WKAutomationDelegate is a new SPI that allows WKProcessPool clients to decide
policy and implement actions for remote automation.

The SPI's implementation connects the client's delegate to RemoteInspector::Client.
This allows the delegate to handle some commands, such as requestAutomationSession,
that come over XPC from an external test runner but are not associated with a specific
automation target.

  • PlatformMac.cmake:
  • UIProcess/API/APIAutomationClient.h: Added. Boilerplate for WebKit::AutomationClient.

(API::AutomationClient::~AutomationClient):
(API::AutomationClient::allowsRemoteAutomation):
(API::AutomationClient::requestAutomationSession):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _automationDelegate]): Added.
(-[WKProcessPool _setAutomationDelegate:]): Added.
(-[WKProcessPool _automationCapabilitiesDidChange]): Added.

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h: Add delegate.
  • UIProcess/API/Cocoa/_WKAutomationDelegate.h: Added.

This is a new delegate SPI of WKProcessPool; it corresponds to AutomationClient.

  • UIProcess/Cocoa/AutomationClient.h: Added.
  • UIProcess/Cocoa/AutomationClient.mm: Added.

This implements a bridge between RemoteInspector::Client and _WKAutomationDelegate.
Since the delegate can be called from JavaScriptCore, save the delegating
WKProcessPool and pass it as the self parameter to delegate methods.

(WebKit::AutomationClient::AutomationClient):
(WebKit::AutomationClient::~AutomationClient):

This client automatically registers and unregisters as a RemoteInspector::Client.

(WebKit::AutomationClient::remoteAutomationAllowed):
(WebKit::AutomationClient::requestAutomationSession):

Forward requests from RemoteInspector to the automation delegate.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::setAutomationClient): Added.
(WebKit::WebProcessPool::updateAutomationCapabilities): Added, it notifies RemoteInspector.

  • UIProcess/WebProcessPool.h:
  • WebKit2.xcodeproj/project.pbxproj:
10:34 AM Changeset in webkit [194645] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Float with media query positioned incorrectly after window resize.
https://bugs.webkit.org/show_bug.cgi?id=152558

Reviewed by Simon Fraser and David Hyatt.

This patch ensures that when a renderer becomes floated, it is moved
to the right containing block.
When this floated renderer's previous sibling is an anonymous block, it needs
to be reparented so that the float is positioned as if there was no anonymous block at all.

Source/WebCore:

Test: fast/block/float/float-with-anonymous-previous-sibling.html

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::styleDidChange):

LayoutTests:

  • fast/block/float/float-with-anonymous-previous-sibling-expected.html: Added.
  • fast/block/float/float-with-anonymous-previous-sibling.html: Added.
10:28 AM Changeset in webkit [194644] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Add remaining background style properties to Visual sidebar
https://bugs.webkit.org/show_bug.cgi?id=152757

Patch by Devin Rousso <Devin Rousso> on 2016-01-06
Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel.prototype._populateBackgroundStyleSection):
Added background-blend-mode and background-origin property editors.

  • UserInterface/Views/VisualStyleSelectorSection.js:

(WebInspector.VisualStyleSelectorSection.prototype._handleMouseOver):
Unrelated error that occurred when the user was hovering over a selector item
before the tree outline was able to create the selected item.

10:25 AM Changeset in webkit [194643] by keith_miller@apple.com
  • 8 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Boolean, Number, Map, RegExp, and Set should be subclassable
https://bugs.webkit.org/show_bug.cgi?id=152765

Reviewed by Michael Saboff.

This patch enables subclassing of five more builtins: Boolean, Number, Map, RegExp, and Set.

  • runtime/BooleanConstructor.cpp:

(JSC::constructWithBooleanConstructor):
(JSC::constructBoolean): Deleted.

  • runtime/BooleanConstructor.h:
  • runtime/MapConstructor.cpp:

(JSC::constructMap):

  • runtime/NumberConstructor.cpp:

(JSC::constructWithNumberConstructor):

  • runtime/RegExpConstructor.cpp:

(JSC::getRegExpStructure):
(JSC::constructRegExp):

  • runtime/SetConstructor.cpp:

(JSC::constructSet):

  • tests/es6.yaml:
  • tests/stress/class-subclassing-misc.js: Added.

(B):
(N):
(M):
(R):
(S):
(test):

10:23 AM Changeset in webkit [194642] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking webarchive/adopt-attribute-styled-body-webarchive.html as flaky on mac-wk1
https://bugs.webkit.org/show_bug.cgi?id=152789

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
10:10 AM Changeset in webkit [194641] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Fix branchTruncateDoubleToUint32 implementation in macro assembler
https://bugs.webkit.org/show_bug.cgi?id=152782

Patch by Julien Brianceau <jbriance@cisco.com> on 2016-01-06
Reviewed by Benjamin Poulain.

Already covered by LayoutTests/js/dfg-uint32array-overflow-values test.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::branchTruncateDoubleToUint32):

9:53 AM Changeset in webkit [194640] by Julien Brianceau
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Fix or32 implementation in macro assembler
https://bugs.webkit.org/show_bug.cgi?id=152781

Reviewed by Michael Saboff.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::or32):

9:50 AM Changeset in webkit [194639] by Julien Brianceau
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Add missing branchAdd32 implementation in macro assembler
https://bugs.webkit.org/show_bug.cgi?id=152785

Reviewed by Michael Saboff.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::branchAdd32):

8:57 AM Changeset in webkit [194638] by Alan Bujtas
  • 4 edits
    2 adds in trunk

isAnonymousInlineBlock() should exclude any ruby content.
https://bugs.webkit.org/show_bug.cgi?id=152648
<rdar://problem/23872549>

Reviewed by David Hyatt.

isAnonymousInlineBlock is designed for the new Block-Inside-Inline Model
and all other anonymous inline-block renderers (including Ruby) should bail out of it.
(see webkit.org/b/143145)

Source/WebCore:

Test: fast/ruby/ruby-inline-margin-collapse-crash.html

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::isAnonymousInlineBlock):

  • rendering/RenderObject.h:

(WebCore::RenderObject::isAnonymousInlineBlock): Deleted.

LayoutTests:

  • fast/ruby/ruby-inline-margin-collapse-crash-expected.txt: Added.
  • fast/ruby/ruby-inline-margin-collapse-crash.html: Added.
6:34 AM Changeset in webkit [194637] by Gyuyoung Kim
  • 4 edits in trunk

[EFL] Set WebKit2 process output name
https://bugs.webkit.org/show_bug.cgi?id=152773

Reviewed by Benjamin Poulain.

If we add *WebKit* prefix to each WK2 process, it is more clear when checking what process is running.
So this patch sets wk2 process output name.

.:

  • Source/cmake/OptionsEfl.cmake:

Source/WebKit2:

  • PlatformEfl.cmake:
4:17 AM Changeset in webkit [194636] by commit-queue@webkit.org
  • 8 edits in trunk

[ES6] Date.prototype should be a plain object
https://bugs.webkit.org/show_bug.cgi?id=152574

Patch by Andy VanWagoner <thetalecrafter@gmail.com> on 2016-01-06
Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

  • runtime/DateConstructor.cpp:

(JSC::DateConstructor::finishCreation):

  • runtime/DatePrototype.cpp:

(JSC::DatePrototype::DatePrototype):

  • runtime/DatePrototype.h:
  • tests/mozilla/mozilla-tests.yaml: Expect errors from old Date.prototype as Date instance tests.

LayoutTests:

Test that the non-generic Date.prototype methods throw when invoked
from the now generic object Date.prototype. Also test that this change
preserves correct instanceof behavior.

  • js/date-proto-generic-invocation-expected.txt:
  • js/script-tests/date-proto-generic-invocation.js:
2:43 AM Changeset in webkit [194635] by commit-queue@webkit.org
  • 9 edits
    1 add in trunk/Source/JavaScriptCore

[JSC] Get more of testb3 to pass on ARM64
https://bugs.webkit.org/show_bug.cgi?id=152737

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-06
Reviewed by Geoffrey Garen.

A bunch of minor bugs and missing function to make most of testb3
run on ARM64.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::canEncodePImmOffset):
(JSC::ARM64Assembler::canEncodeSImmOffset):
(JSC::isInt9): Deleted.
(JSC::isUInt12): Deleted.

  • assembler/ARMv7Assembler.h:
  • assembler/AssemblerCommon.h: Added.

(JSC::isInt9):
(JSC::isUInt12):
(JSC::isValidScaledUImm12):
(JSC::isValidSignedImm9):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16SignedExtendTo32):
(JSC::MacroAssemblerARM64::load8SignedExtendTo32):
(JSC::MacroAssemblerARM64::store16):
(JSC::MacroAssemblerARM64::absFloat):
(JSC::MacroAssemblerARM64::loadFloat):
(JSC::MacroAssemblerARM64::storeFloat):
(JSC::MacroAssemblerARM64::loadSignedAddressedByUnsignedImmediate):
(JSC::MacroAssemblerARM64::loadSignedAddressedByUnscaledImmediate):
(JSC::MacroAssemblerARM64::tryLoadSignedWithOffset):
(JSC::MacroAssemblerARM64::loadSignedAddressedByUnsignedImmediate<8>):
(JSC::MacroAssemblerARM64::loadSignedAddressedByUnsignedImmediate<16>):
(JSC::MacroAssemblerARM64::loadSignedAddressedByUnscaledImmediate<8>):
(JSC::MacroAssemblerARM64::loadSignedAddressedByUnscaledImmediate<16>):

  • assembler/X86Assembler.h:
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::effectiveAddr):
(JSC::B3::Air::LowerToAir::lower):

  • b3/air/AirArg.h:

(JSC::B3::Air::Arg::isValidImmForm):
(JSC::B3::Air::Arg::isValidAddrForm):
(JSC::B3::Air::Arg::isValidForm):

  • b3/air/AirOpcode.opcodes:
2:15 AM Changeset in webkit [194634] by youenn.fablet@crf.canon.fr
  • 3 edits in trunk/Tools

Python SCM should be able to retrieve untracked files - Add GIT support
https://bugs.webkit.org/show_bug.cgi?id=143135

Reviewed by Michael Catanzaro.

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.untracked_files): Adding support for git.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(GitTest.setUp):
(GitTest.test_untracked_files): Adding test.

2:13 AM WebKitGTK/Gardening/Calendar edited by mario@webkit.org
(diff)
Note: See TracTimeline for information about the timeline view.