WebKit-https.git
4 years agoModern IDB: storage/indexeddb/intversion-long-queue.html fails.
beidson@apple.com [Tue, 12 Jan 2016 00:33:47 +0000 (00:33 +0000)]
Modern IDB: storage/indexeddb/intversion-long-queue.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152995

Reviewed by Alex Christensen.

* platform/mac-wk1/TestExpectations:
* storage/indexeddb/intversion-long-queue-expected.txt:
* storage/indexeddb/resources/intversion-long-queue.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194874 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[JSC] Add Div/Mod and fix Mul for B3 ARM64
commit-queue@webkit.org [Tue, 12 Jan 2016 00:11:25 +0000 (00:11 +0000)]
[JSC] Add Div/Mod and fix Mul for B3 ARM64
https://bugs.webkit.org/show_bug.cgi?id=152978

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-11
Reviewed by Filip Pizlo.

Add the 3 operands forms of Mul.
Remove the form taking immediate on ARM64, there are no such instruction.

Add Div with sdiv.

Unfortunately, I discovered ChillMod's division by zero
makes it non-trivial on ARM64. I just made it into a macro like on x86.

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::mul32):
(JSC::MacroAssemblerARM64::mul64):
(JSC::MacroAssemblerARM64::div32):
(JSC::MacroAssemblerARM64::div64):
* b3/B3LowerMacros.cpp:
* b3/B3LowerToAir.cpp:
(JSC::B3::Air::LowerToAir::lower):
* b3/air/AirOpcode.opcodes:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194873 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoModern IDB: storage/indexeddb/index-multientry.html fails under GuardMalloc/ASAN.
beidson@apple.com [Mon, 11 Jan 2016 23:44:03 +0000 (23:44 +0000)]
Modern IDB: storage/indexeddb/index-multientry.html fails under GuardMalloc/ASAN.
https://bugs.webkit.org/show_bug.cgi?id=152990

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (Covered by re-enabling existing test).

* Modules/indexeddb/client/IDBRequestImpl.cpp:
(WebCore::IDBClient::IDBRequest::dispatchEvent): Use String::utf8() instead of AtomicString::characters8() for
  the format string, as the latter fails under ASAN.

* Modules/indexeddb/server/IndexValueStore.cpp:
(WebCore::IDBServer::IndexValueStore::removeEntriesWithValueKey): We can't save off pointers to IDBKeyDatas
  used as keys in the map, because the moment we start mutating the map the keys can be rehashed, invalidating
  our pointers. Save off the IDBKeyDatas by value instead.

LayoutTests:

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194872 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Migrate Page Timeline recording to ScriptProfiler
commit-queue@webkit.org [Mon, 11 Jan 2016 23:34:43 +0000 (23:34 +0000)]
Web Inspector: Migrate Page Timeline recording to ScriptProfiler
https://bugs.webkit.org/show_bug.cgi?id=152727

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-01-11
Reviewed by Brian Burg.

Source/WebCore:

Test: inspector/script-profiler/event-type-Other.html

This now shares the JavaScript profiling code between JSContext and Page
inspection. It also moves forward splitting the Page's Timeline domain
into smaller components that can be turned on/off individually.

* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback):
* bindings/js/JSErrorHandler.cpp:
(WebCore::JSErrorHandler::handleEvent):
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):
* bindings/js/JSMainThreadExecState.h:
(WebCore::JSMainThreadExecState::profiledCall):
(WebCore::JSMainThreadExecState::profiledEvaluate):
* bindings/js/JSMutationCallback.cpp:
(WebCore::JSMutationCallback::call):
* bindings/js/ScheduledAction.cpp:
(WebCore::ScheduledAction::executeFunctionInContext):
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::evaluateInWorld):
* bindings/objc/WebScriptObject.mm:
(-[WebScriptObject callWebScriptMethod:withArguments:]):
(-[WebScriptObject evaluateWebScript:]):
Identify entry points into JSC that we want to profile for the frontend.
These were nearly all already classified for the Timeline. We added missing
support for ErrorHandlers (window.onerror handler functions).

* inspector/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::didCallFunction):
(WebCore::InspectorTimelineAgent::didEvaluateScript):
(WebCore::startProfiling): Deleted.
(WebCore::stopProfiling): Deleted.
(WebCore::InspectorTimelineAgent::willCallFunction): Deleted.
(WebCore::InspectorTimelineAgent::willEvaluateScript): Deleted.
* inspector/InspectorTimelineAgent.h:
TimelineAgent no longer needs to start/stop the Legacy Profiler
since ScriptProfiler will automatically do that for us. Delete
all code associated with that. There is still an open question
regarding `console.profile` and `console.profileEnd` that
starts/stops the profiler.

Source/WebInspectorUI:

* UserInterface/Images/TimelineRecordAPI.svg: Added.
* UserInterface/Images/gtk/TimelineRecordAPI.svg: Added.
New [S] image for API initiated script evaluations.
Display matches the existing [S] Script Evaluated.
Colors match the gray [N] Native image colors.

* UserInterface/Models/ScriptInstrument.js:
(WebInspector.ScriptInstrument.prototype.startInstrumentation):
(WebInspector.ScriptInstrument.prototype.stopInstrumentation):
(WebInspector.ScriptInstrument):
Use ScriptProfiler, if available, in Web debuggables.

* UserInterface/Controllers/TimelineManager.js:
(WebInspector.TimelineManager):
(WebInspector.TimelineManager.prototype.capturingStarted):
(WebInspector.TimelineManager.prototype._processRecord):
(WebInspector.TimelineManager.prototype._scriptProfilerTypeToScriptTimelineRecordType):
(WebInspector.TimelineManager.prototype.scriptProfilerTrackingUpdated):
(WebInspector.TimelineManager.prototype.scriptProfilerTrackingCompleted):
(WebInspector.TimelineManager.prototype._mergeScriptProfileRecords.let.nextRecord):
(WebInspector.TimelineManager.prototype._mergeScriptProfileRecords.let.recordContainsRecord):
(WebInspector.TimelineManager.prototype._mergeScriptProfileRecords):
When running a timeline on a web debuggable the frontend receives both
Timeline event records and ScriptProfiler events. Timeline (Web) records
are high level web events like "Script Evaluated", "Event Dispatched",
"Timer Fired". The timestamps for these records should always be wrapping
a ScriptProfiler event and its associated profile data. So, at the end
of a recording we merge ScriptProfiler profile data into the original
Timeline (Web) record.

* UserInterface/Models/ScriptTimelineRecord.js:
(WebInspector.ScriptTimelineRecord.prototype.get profilePayload):
(WebInspector.ScriptTimelineRecord.prototype.set profilePayload):
(WebInspector.ScriptTimelineRecord.prototype.setProfilePayload): Deleted.
Replace method with getter/setter.

(WebInspector.ScriptTimelineRecord.EventType.displayName):
Add a new event type for API records, but share display name with Script Evaluated.

* UserInterface/Views/NavigationSidebarPanel.js:
Fix typo.

* UserInterface/Views/ScriptTimelineView.css:
(.timeline-view.script > .data-grid .eventType-column): Deleted.
There is no "eventType" column in the ScriptTimelineView datagrid, so remove styles.

* UserInterface/Views/TimelineIcons.css:
(.api-record .icon):
* UserInterface/Views/TimelineRecordTreeElement.js:
(WebInspector.TimelineRecordTreeElement):
For API Script Evaluation records use the new icon.

LayoutTests:

* inspector/script-profiler/event-type-Other-expected.txt: Added.
* inspector/script-profiler/event-type-Other.html: Added.
Add a test that Web script evaluations create "Other" ScriptProfiler events.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194871 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoGet rid of CFMakeCollectable, it is a no-op
andersca@apple.com [Mon, 11 Jan 2016 23:16:17 +0000 (23:16 +0000)]
Get rid of CFMakeCollectable, it is a no-op
https://bugs.webkit.org/show_bug.cgi?id=152988

Reviewed by Sam Weinig.

Source/WebCore:

* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::URLByTruncatingOneCharacterBeforeComponent):
(WebCore::URLByRemovingComponentAndSubsequentCharacter):

Source/WebKit/mac:

* Misc/WebNSDataExtras.m:
(-[NSString _web_capitalizeRFC822HeaderFieldName]):
(-[NSData _webkit_parseRFC822HeaderFields]):
* Plugins/WebPluginController.mm:
(-[WebPluginController initWithDocumentView:]):

Source/WebKit2:

* Shared/Cocoa/WKNSString.mm:
* Shared/Cocoa/WKNSURL.mm:
(-[WKNSURL _web_createTarget]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194870 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoArrays should use the InternalFunctionAllocationProfile when constructing new Arrays
keith_miller@apple.com [Mon, 11 Jan 2016 22:40:00 +0000 (22:40 +0000)]
Arrays should use the InternalFunctionAllocationProfile when constructing new Arrays
https://bugs.webkit.org/show_bug.cgi?id=152949

Reviewed by Michael Saboff.

This patch updates Array constructors to use the new InternalFunctionAllocationProfile.

* runtime/ArrayConstructor.cpp:
(JSC::constructArrayWithSizeQuirk):
(JSC::constructWithArrayConstructor):
* runtime/InternalFunction.h:
(JSC::InternalFunction::createStructure):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::arrayStructureForIndexingTypeDuringAllocation):
(JSC::JSGlobalObject::arrayStructureForProfileDuringAllocation):
(JSC::constructEmptyArray):
(JSC::constructArray):
(JSC::constructArrayNegativeIndexed):
* runtime/PrototypeMap.cpp:
(JSC::PrototypeMap::emptyStructureForPrototypeFromBaseStructure):
* runtime/Structure.h:
* runtime/StructureInlines.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194869 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed, rolling out r194866.
commit-queue@webkit.org [Mon, 11 Jan 2016 22:34:44 +0000 (22:34 +0000)]
Unreviewed, rolling out r194866.
https://bugs.webkit.org/show_bug.cgi?id=152986

This change broke the mac build (Requested by ryanhaddad on
#webkit).

Reverted changeset:

"[Cocoa] Add SPI to opt out a URL scheme from the memory
cache"
https://bugs.webkit.org/show_bug.cgi?id=152950
http://trac.webkit.org/changeset/194866

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194868 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoPadding added to table-cell element after font-size change.
zalan@apple.com [Mon, 11 Jan 2016 22:03:03 +0000 (22:03 +0000)]
Padding added to table-cell element after font-size change.
https://bugs.webkit.org/show_bug.cgi?id=152796

Reviewed by David Hyatt.

Do not include intrinsicPaddingBefore value while figuring out the height of a row.
In RenderTableSection::calcRowLogicalHeight() we are interested in the height of the content
without the additional padding (normal padding is included).

Source/WebCore:

Test: fast/table/table-baseline-grows.html

* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::calcRowLogicalHeight):

LayoutTests:

* TestExpectations: This test fails even without the patch when Ahem font is not used.
* fast/table/table-baseline-grows-expected.html: Added.
* fast/table/table-baseline-grows.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194867 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Cocoa] Add SPI to opt out a URL scheme from the memory cache
aestes@apple.com [Mon, 11 Jan 2016 21:57:09 +0000 (21:57 +0000)]
[Cocoa] Add SPI to opt out a URL scheme from the memory cache
https://bugs.webkit.org/show_bug.cgi?id=152950
rdar://problem/24066652

Reviewed by Tim Horton.

Source/WebCore:

Added a list of schemes to SchemeRegistry whose resources should always be revalidated. Taught CachedResource to
return a freshness lifetime of 0 for these resources, unless the scheme is one that should be cached indefinitely.

New API test: WebKit2.AlwaysRevalidatedURLSchemes

* loader/cache/CachedResource.cpp:
(WebCore::shouldCacheSchemeIndefinitely): Moved from SchemeRegistry::shouldCacheResponsesFromURLSchemeIndefinitely().
(WebCore::CachedResource::freshnessLifetime): For a scheme that should not be cached indefinitely, return 0 if
that scheme should always be revalidated according to SchemeRegistry.
* platform/SchemeRegistry.cpp:
(WebCore::alwaysRevalidatedSchemes):
(WebCore::SchemeRegistry::registerURLSchemeAsAlwaysRevalidated):
(WebCore::SchemeRegistry::shouldAlwaysRevalidateURLScheme):
(WebCore::SchemeRegistry::shouldCacheResponsesFromURLSchemeIndefinitely): Moved to WebCore::shouldCacheSchemeIndefinitely().
There was no reason for this to be in SchemeRegistry.
* platform/SchemeRegistry.h:

Source/WebKit2:

Added a alwaysRevalidatedURLSchemes property to _WKProcessPoolConfiguration. Taught WebProcess to add these
schemes to SchemeRegistry when initializing a new web process.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration alwaysRevalidatedURLSchemes]):
(-[_WKProcessPoolConfiguration setAlwaysRevalidatedURLSchemes:]):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
* UIProcess/WebProcessPool.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::registerURLSchemeAsAlwaysRevalidated):
* WebProcess/WebProcess.h:

Tools:

Added an API test.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/AlwaysRevalidatedURLSchemes.mm: Added.
(+[AlwaysRevalidatedURLSchemeProtocol canInitWithRequest:]):
(+[AlwaysRevalidatedURLSchemeProtocol canonicalRequestForRequest:]):
(+[AlwaysRevalidatedURLSchemeProtocol requestIsCacheEquivalent:toRequest:]):
(-[AlwaysRevalidatedURLSchemeProtocol startLoading]):
(-[AlwaysRevalidatedURLSchemeProtocol stopLoading]):
(-[AlwaysRevalidatedURLSchemesDelegate webView:didFinishNavigation:]):
(TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194866 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoPicture element needs to work with the preload scanner and select the correct
hyatt@apple.com [Mon, 11 Jan 2016 21:49:20 +0000 (21:49 +0000)]
Picture element needs to work with the preload scanner and select the correct
source element instead of loading the image.
https://bugs.webkit.org/show_bug.cgi?id=152983

Reviewed by Dean Jackson.

Source/WebCore:

Added new tests in http/tests/loading.

* html/parser/HTMLPreloadScanner.cpp:
(WebCore::TokenPreloadScanner::tagIdFor):
(WebCore::TokenPreloadScanner::initiatorFor):
(WebCore::TokenPreloadScanner::StartTagScanner::StartTagScanner):
(WebCore::TokenPreloadScanner::StartTagScanner::processAttributes):
(WebCore::TokenPreloadScanner::StartTagScanner::processImageAndScriptAttribute):
(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute):
(WebCore::TokenPreloadScanner::StartTagScanner::resourceType):
(WebCore::TokenPreloadScanner::scan):
* html/parser/HTMLPreloadScanner.h:
(WebCore::TokenPreloadScanner::setPredictedBaseElementURL):
(WebCore::TokenPreloadScanner::inPicture):

LayoutTests:

These tests are imported from Blink, although they have been modified slightly to
reflect the fact that we pass the nested <picture> cases that Blink fails.

* http/tests/loading/hidpi-preload-picture-sizes-expected.txt: Added.
* http/tests/loading/hidpi-preload-picture-sizes.html: Added.
* http/tests/loading/preload-picture-invalid-expected.txt: Added.
* http/tests/loading/preload-picture-invalid.html: Added.
* http/tests/loading/preload-picture-nested-expected.txt: Added.
* http/tests/loading/preload-picture-nested.html: Added.
* http/tests/loading/preload-picture-sizes-expected.txt: Added.
* http/tests/loading/preload-picture-sizes.html: Added.
* http/tests/loading/resources/base-image1.png: Added.
* http/tests/loading/resources/base-image2.png: Added.
* http/tests/loading/resources/base-image3.png: Added.
* http/tests/loading/resources/dup-image1.png: Added.
* http/tests/loading/resources/dup-image2.png: Added.
* http/tests/loading/resources/dup-image3.png: Added.
* http/tests/loading/resources/image1.png: Added.
* http/tests/loading/resources/image2.png: Added.
* http/tests/loading/resources/picture-preload-helper.js: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194865 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoLayoutTests/imported/w3c:
beidson@apple.com [Mon, 11 Jan 2016 21:37:35 +0000 (21:37 +0000)]
LayoutTests/imported/w3c:
Modern IDB: IDBBindingUtilities chokes on unicode strings for get/set.
https://bugs.webkit.org/show_bug.cgi?id=152921

Reviewed by Alex Christensen.

* indexeddb/keygenerator-overflow-expected.txt:

Source/WebCore:
Modern IDB: storage/indexeddb/key-generator.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152981

Reviewed by Alex Christensen.

No new tests (One failing test now passes, and one test's results get a progression).

* Modules/indexeddb/server/IDBBackingStore.h:

* Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::generateKeyNumber): Throw an error if the current
  value is already over 2^53.
(WebCore::IDBServer::MemoryIDBBackingStore::revertGeneratedKeyNumber):
(WebCore::IDBServer::MemoryIDBBackingStore::maybeUpdateKeyGeneratorNumber): Handle double -> uint64_t
  conversions properly when calculating the next key.
* Modules/indexeddb/server/MemoryIDBBackingStore.h:

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::ScopeGuard::ScopeGuard): Add this utility class to call a function
  any time it goes out of scope.
(WebCore::IDBServer::ScopeGuard::~ScopeGuard):
(WebCore::IDBServer::ScopeGuard::enable):
(WebCore::IDBServer::ScopeGuard::disable):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd): Revert the key generator value if
  the put/add operation ends in error.

LayoutTests:
Modern IDB: storage/indexeddb/key-generator.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152981

Reviewed by Alex Christensen.

* platform/mac-wk1/TestExpectations:
* platform/wk2/imported/w3c/indexeddb/keygenerator-overflow-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-expected.txt.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194864 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUse a profile to store allocation structures for subclasses of InternalFunctions
keith_miller@apple.com [Mon, 11 Jan 2016 21:31:04 +0000 (21:31 +0000)]
Use a profile to store allocation structures for subclasses of InternalFunctions
https://bugs.webkit.org/show_bug.cgi?id=152942

Reviewed by Michael Saboff.

This patch adds InternalFunctionAllocationProfile to FunctionRareData, which holds
a cached structure that can be used to quickly allocate any derived class of an InternalFunction.
InternalFunctionAllocationProfile ended up being distinct from ObjectAllocationProfile, due to
constraints imposed by Reflect.construct. Reflect.construct allows the user to pass an arbitrary
constructor as a new.target to any other constructor. This means that a user can pass some
non-derived constructor to an InternalFunction (they can even pass another InternalFunction as the
new.target). If we use the same profile for both InternalFunctions and JS allocations then we always
need to check in both JS code and C++ code that the profiled structure has the same ClassInfo as the
current constructor. By using different profiles, we only need to check the profile in InternalFunctions
as all JS constructed objects share the same ClassInfo (JSFinalObject). This comes at the relatively
low cost of using slightly more memory on FunctionRareData and being slightly more conceptually complex.

Additionally, this patch adds subclassing to some omitted classes.

* API/JSObjectRef.cpp:
(JSObjectMakeDate):
(JSObjectMakeRegExp):
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/InternalFunctionAllocationProfile.h: Added.
(JSC::InternalFunctionAllocationProfile::structure):
(JSC::InternalFunctionAllocationProfile::clear):
(JSC::InternalFunctionAllocationProfile::visitAggregate):
(JSC::InternalFunctionAllocationProfile::createAllocationStructureFromBase):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGOperations.cpp:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_create_this):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_create_this):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/BooleanConstructor.cpp:
(JSC::constructWithBooleanConstructor):
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/DateConstructor.cpp:
(JSC::constructDate):
(JSC::constructWithDateConstructor):
* runtime/DateConstructor.h:
* runtime/ErrorConstructor.cpp:
(JSC::Interpreter::constructWithErrorConstructor):
* runtime/FunctionRareData.cpp:
(JSC::FunctionRareData::create):
(JSC::FunctionRareData::visitChildren):
(JSC::FunctionRareData::FunctionRareData):
(JSC::FunctionRareData::initializeObjectAllocationProfile):
(JSC::FunctionRareData::clear):
(JSC::FunctionRareData::finishCreation): Deleted.
(JSC::FunctionRareData::initialize): Deleted.
* runtime/FunctionRareData.h:
(JSC::FunctionRareData::offsetOfObjectAllocationProfile):
(JSC::FunctionRareData::objectAllocationProfile):
(JSC::FunctionRareData::objectAllocationStructure):
(JSC::FunctionRareData::allocationProfileWatchpointSet):
(JSC::FunctionRareData::isObjectAllocationProfileInitialized):
(JSC::FunctionRareData::internalFunctionAllocationStructure):
(JSC::FunctionRareData::createInternalFunctionAllocationStructureFromBase):
(JSC::FunctionRareData::offsetOfAllocationProfile): Deleted.
(JSC::FunctionRareData::allocationProfile): Deleted.
(JSC::FunctionRareData::allocationStructure): Deleted.
(JSC::FunctionRareData::isInitialized): Deleted.
* runtime/InternalFunction.cpp:
(JSC::InternalFunction::createSubclassStructure):
* runtime/InternalFunction.h:
* runtime/JSArrayBufferConstructor.cpp:
(JSC::constructArrayBuffer):
* runtime/JSFunction.cpp:
(JSC::JSFunction::allocateRareData):
(JSC::JSFunction::allocateAndInitializeRareData):
(JSC::JSFunction::initializeRareData):
* runtime/JSFunction.h:
(JSC::JSFunction::rareData):
* runtime/JSGenericTypedArrayViewConstructorInlines.h:
(JSC::constructGenericTypedArrayView):
* runtime/JSObject.h:
(JSC::JSFinalObject::typeInfo):
(JSC::JSFinalObject::createStructure):
* runtime/JSPromiseConstructor.cpp:
(JSC::constructPromise):
* runtime/JSPromiseConstructor.h:
* runtime/JSWeakMap.cpp:
* runtime/JSWeakSet.cpp:
* runtime/MapConstructor.cpp:
(JSC::constructMap):
* runtime/NativeErrorConstructor.cpp:
(JSC::Interpreter::constructWithNativeErrorConstructor):
* runtime/NumberConstructor.cpp:
(JSC::constructWithNumberConstructor):
* runtime/PrototypeMap.cpp:
(JSC::PrototypeMap::createEmptyStructure):
(JSC::PrototypeMap::emptyStructureForPrototypeFromBaseStructure):
(JSC::PrototypeMap::emptyObjectStructureForPrototype):
(JSC::PrototypeMap::clearEmptyObjectStructureForPrototype):
* runtime/PrototypeMap.h:
* runtime/RegExpConstructor.cpp:
(JSC::getRegExpStructure):
(JSC::constructRegExp):
(JSC::constructWithRegExpConstructor):
* runtime/RegExpConstructor.h:
* runtime/SetConstructor.cpp:
(JSC::constructSet):
* runtime/WeakMapConstructor.cpp:
(JSC::constructWeakMap):
* runtime/WeakSetConstructor.cpp:
(JSC::constructWeakSet):
* tests/stress/class-subclassing-misc.js:
(A):
(D):
(E):
(WM):
(WS):
(test):
* tests/stress/class-subclassing-typedarray.js: Added.
(test):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194863 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[B3][Win64] Compile error.
peavo@outlook.com [Mon, 11 Jan 2016 21:28:40 +0000 (21:28 +0000)]
[B3][Win64] Compile error.
https://bugs.webkit.org/show_bug.cgi?id=152984

Reviewed by Alex Christensen.

Windows does not have bzero, use memset instead.

* b3/air/AirIteratedRegisterCoalescing.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194862 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFixed compilation of JavaScriptCore with GCC 4.8 on 32-bit platforms
commit-queue@webkit.org [Mon, 11 Jan 2016 21:04:20 +0000 (21:04 +0000)]
Fixed compilation of JavaScriptCore with GCC 4.8 on 32-bit platforms
https://bugs.webkit.org/show_bug.cgi?id=152923

Patch by Konstantin Tokarev <annulen@yandex.ru> on 2016-01-11
Reviewed by Alex Christensen.

* jit/CallFrameShuffler.h:
(JSC::CallFrameShuffler::assumeCalleeIsCell):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194861 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFix Mac CMake build after r194810.
achristensen@apple.com [Mon, 11 Jan 2016 21:00:03 +0000 (21:00 +0000)]
Fix Mac CMake build after r194810.

* PlatformMac.cmake:
PendingDownload isn't needed until NETWORK_SESSION is used by default.
I'll figure this out when I make the switch.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194860 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoModern IDB: storage/indexeddb/lazy-index-population.html fails.
beidson@apple.com [Mon, 11 Jan 2016 20:18:29 +0000 (20:18 +0000)]
Modern IDB: storage/indexeddb/lazy-index-population.html fails.
https://bugs.webkit.org/show_bug.cgi?id=152976

Reviewed by Alex Christensen.

Source/WebCore:

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

We were restoring objectstores/indexes incorrectly on transaction abort.

* Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:
(WebCore::IDBServer::MemoryBackingStoreTransaction::abort):
* Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::removeObjectStoreForVersionChangeAbort):

LayoutTests:

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194859 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[B3] Fix control reaches end of non-void function GCC warnings on Linux
ossy@webkit.org [Mon, 11 Jan 2016 18:13:36 +0000 (18:13 +0000)]
[B3] Fix control reaches end of non-void function GCC warnings on Linux
https://bugs.webkit.org/show_bug.cgi?id=152887

Reviewed by Mark Lam.

* b3/B3LowerToAir.cpp:
(JSC::B3::Air::LowerToAir::createBranch):
(JSC::B3::Air::LowerToAir::createCompare):
(JSC::B3::Air::LowerToAir::createSelect):
* b3/B3Type.h:
(JSC::B3::sizeofType):
* b3/air/AirArg.cpp:
(JSC::B3::Air::Arg::isRepresentableAs):
* b3/air/AirArg.h:
(JSC::B3::Air::Arg::isAnyUse):
(JSC::B3::Air::Arg::isColdUse):
(JSC::B3::Air::Arg::isEarlyUse):
(JSC::B3::Air::Arg::isLateUse):
(JSC::B3::Air::Arg::isAnyDef):
(JSC::B3::Air::Arg::isEarlyDef):
(JSC::B3::Air::Arg::isLateDef):
(JSC::B3::Air::Arg::isZDef):
(JSC::B3::Air::Arg::widthForB3Type):
(JSC::B3::Air::Arg::isGP):
(JSC::B3::Air::Arg::isFP):
(JSC::B3::Air::Arg::isType):
(JSC::B3::Air::Arg::isValidForm):
* b3/air/AirCode.h:
(JSC::B3::Air::Code::newTmp):
(JSC::B3::Air::Code::numTmps):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194858 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoModern IDB: Make MemoryIndex and MemoryObjectStore RefCounted.
beidson@apple.com [Mon, 11 Jan 2016 17:39:25 +0000 (17:39 +0000)]
Modern IDB: Make MemoryIndex and MemoryObjectStore RefCounted.
https://bugs.webkit.org/show_bug.cgi?id=152966

Reviewed by Alex Christensen.

No new tests (Refactor, no change in behavior)

* Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:
(WebCore::IDBServer::MemoryBackingStoreTransaction::indexDeleted):
(WebCore::IDBServer::MemoryBackingStoreTransaction::objectStoreDeleted):
(WebCore::IDBServer::MemoryBackingStoreTransaction::abort):
* Modules/indexeddb/server/MemoryBackingStoreTransaction.h:

* Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::restoreObjectStoreForVersionChangeAbort):
(WebCore::IDBServer::MemoryIDBBackingStore::registerObjectStore):
(WebCore::IDBServer::MemoryIDBBackingStore::takeObjectStoreByName):
* Modules/indexeddb/server/MemoryIDBBackingStore.h:

* Modules/indexeddb/server/MemoryIndex.cpp:
(WebCore::IDBServer::MemoryIndex::create):
* Modules/indexeddb/server/MemoryIndex.h:

* Modules/indexeddb/server/MemoryObjectStore.cpp:
(WebCore::IDBServer::MemoryObjectStore::create):
(WebCore::IDBServer::MemoryObjectStore::createIndex):
(WebCore::IDBServer::MemoryObjectStore::maybeRestoreDeletedIndex):
(WebCore::IDBServer::MemoryObjectStore::takeIndexByName):
(WebCore::IDBServer::MemoryObjectStore::deleteIndex):
(WebCore::IDBServer::MemoryObjectStore::updateIndexesForDeleteRecord):
(WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):
(WebCore::IDBServer::MemoryObjectStore::registerIndex):
* Modules/indexeddb/server/MemoryObjectStore.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194857 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMake it easier to introduce exotic instructions to Air
fpizlo@apple.com [Mon, 11 Jan 2016 17:25:03 +0000 (17:25 +0000)]
Make it easier to introduce exotic instructions to Air
https://bugs.webkit.org/show_bug.cgi?id=152953

Reviewed by Benjamin Poulain.

Currently, you can define new "opcodes" in Air using either:

1) New opcode declared in AirOpcode.opcodes.
2) Patch opcode with a new implementation of Air::Special.

With (1), you are limited to fixed-argument-length instructions. There are other
restrictions as well, like that you can only use the roles that the AirOpcode syntax
supports.

With (2), you can do anything you like, but the instruction will be harder to match
since it will share the same opcode as any other Patch. Also, the instruction will have
the Special argument, which means more busy-work when creating the instruction and
validating it.

This introduces an in-between facility called "custom". This replaces what AirOpcode
previously called "special". A custom instruction is one whose behavior is defined by a
FooCustom struct with some static methods. Calls to those methods are emitted by
opcode_generator.rb.

The "custom" facility is powerful enough to be used to implement Patch, with the caveat
that we now treat the Patch instruction specially in a few places. Those places were
already effectively treating it specially by assuming that only Patch instructions have
a Special as their first argument.

This will let me implement the Shuffle instruction (bug 152952), which I think is needed
for performance work.

* JavaScriptCore.xcodeproj/project.pbxproj:
* b3/air/AirCustom.h: Added.
(JSC::B3::Air::PatchCustom::forEachArg):
(JSC::B3::Air::PatchCustom::isValidFormStatic):
(JSC::B3::Air::PatchCustom::isValidForm):
(JSC::B3::Air::PatchCustom::admitsStack):
(JSC::B3::Air::PatchCustom::hasNonArgNonControlEffects):
(JSC::B3::Air::PatchCustom::generate):
* b3/air/AirHandleCalleeSaves.cpp:
(JSC::B3::Air::handleCalleeSaves):
* b3/air/AirInst.h:
* b3/air/AirInstInlines.h:
(JSC::B3::Air::Inst::forEach):
(JSC::B3::Air::Inst::extraClobberedRegs):
(JSC::B3::Air::Inst::extraEarlyClobberedRegs):
(JSC::B3::Air::Inst::forEachDefWithExtraClobberedRegs):
(JSC::B3::Air::Inst::reportUsedRegisters):
(JSC::B3::Air::Inst::hasSpecial): Deleted.
* b3/air/AirOpcode.opcodes:
* b3/air/AirReportUsedRegisters.cpp:
(JSC::B3::Air::reportUsedRegisters):
* b3/air/opcode_generator.rb:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194856 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoTurn Check(true) into Patchpoint() followed by Oops
fpizlo@apple.com [Mon, 11 Jan 2016 17:18:07 +0000 (17:18 +0000)]
Turn Check(true) into Patchpoint() followed by Oops
https://bugs.webkit.org/show_bug.cgi?id=152968

Reviewed by Benjamin Poulain.

This is an obvious strength reduction to have, especially since if we discover that the
input to the Check is true after some amount of B3 optimization, then stubbing out the rest
of the basic block unlocks CFG simplification opportunities.

It's also a proof-of-concept for the Check->Patchpoint conversion that I'll use once I
implement sinking (bug 152162).

* b3/B3ControlValue.cpp:
(JSC::B3::ControlValue::convertToJump):
(JSC::B3::ControlValue::convertToOops):
(JSC::B3::ControlValue::dumpMeta):
* b3/B3ControlValue.h:
* b3/B3InsertionSet.h:
(JSC::B3::InsertionSet::insertValue):
* b3/B3InsertionSetInlines.h:
(JSC::B3::InsertionSet::insert):
* b3/B3ReduceStrength.cpp:
* b3/B3StackmapValue.h:
* b3/B3Value.h:
* tests/stress/ftl-force-osr-exit.js: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194855 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFix other builds after my MSVC build fix. :-|
akling@apple.com [Mon, 11 Jan 2016 16:55:15 +0000 (16:55 +0000)]
Fix other builds after my MSVC build fix. :-|

* css/StyleResolver.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194854 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] Update test expectations after r194845
mcatanzaro@igalia.com [Mon, 11 Jan 2016 16:42:19 +0000 (16:42 +0000)]
[GTK] Update test expectations after r194845

Unreviewed gardening. Mark XHTML tests as passing now that we have patched shared-mime-info
to better detect XHTML. Add expectations for additional XHTML tests that were unskipped in
r194845.

* platform/gtk/TestExpectations:
* platform/gtk/css2.1/tables/table-anonymous-objects-015-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-016-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-023-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-024-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-035-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-036-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-037-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-038-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-045-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-046-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-047-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-048-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-049-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-050-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-055-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-056-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-091-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-092-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-099-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-100-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-103-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-104-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-105-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-106-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-107-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-108-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-109-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-110-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-111-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-112-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-113-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-114-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-115-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-116-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-117-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-118-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-119-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-120-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-121-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-122-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-123-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-124-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-139-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-140-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-149-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-150-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-155-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-156-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-159-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-160-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-165-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-166-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-177-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-178-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-179-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-180-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-181-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-189-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-190-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-191-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-192-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-193-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-194-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-195-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-196-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-205-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-206-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-207-expected.txt: Added.
* platform/gtk/css2.1/tables/table-anonymous-objects-208-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194853 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoSkipping unsupported test pageoverlay/overlay-small-frame-mouse-events.html on ios...
ryanhaddad@apple.com [Mon, 11 Jan 2016 16:34:03 +0000 (16:34 +0000)]
Skipping unsupported test pageoverlay/overlay-small-frame-mouse-events.html on ios-simulator
https://bugs.webkit.org/show_bug.cgi?id=152130

Unreviewed test gardening.

* platform/ios-simulator/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194852 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFix MSVC build after r194848.
akling@apple.com [Mon, 11 Jan 2016 16:33:30 +0000 (16:33 +0000)]
Fix MSVC build after r194848.

Since MSVC refuses to recognize the friendship between LazyNeverDestroyed
and some CSS*Value classes, make their constructors public in MSVC builds.

Added FIXME's to make it look extra gross.

* css/CSSInheritedValue.h:
(WebCore::CSSInheritedValue::create): Deleted.
* css/CSSInitialValue.h:
* css/CSSPrimitiveValue.h:
* css/CSSRevertValue.h:
(WebCore::CSSRevertValue::create): Deleted.
* css/CSSUnsetValue.h:
(WebCore::CSSUnsetValue::create): Deleted.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::applyProperty):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194851 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[JSC] When resolving Stack arguments, use addressing from SP when addressing from...
commit-queue@webkit.org [Mon, 11 Jan 2016 16:21:25 +0000 (16:21 +0000)]
[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-11
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194850 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[webkitdirs] Use CMake to determine architecture on isCMakeBuild()
commit-queue@webkit.org [Mon, 11 Jan 2016 15:01:38 +0000 (15:01 +0000)]
[webkitdirs] Use CMake to determine architecture on isCMakeBuild()
https://bugs.webkit.org/show_bug.cgi?id=152959

Patch by Konstantin Tokarev <annulen@yandex.ru> on 2016-01-11
Reviewed by Brent Fulgham.

* Scripts/webkitdirs.pm:
(determineArchitecture):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194849 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoSource/WebCore:
akling@apple.com [Mon, 11 Jan 2016 12:23:57 +0000 (12:23 +0000)]
Source/WebCore:
CSSValuePool should use nonfragmented storage for eternal caches.
<https://webkit.org/b/152960>

Reviewed by Antti Koivisto.

Store all of the common cached CSS value objects in contiguous arrays
instead of lazily allocating them on the heap.

This reduces heap fragmentation (win) and removes indirection (win)

* css/CSSInheritedValue.h:
* css/CSSInitialValue.h:
* css/CSSPrimitiveValue.h:
* css/CSSRevertValue.h:
* css/CSSUnsetValue.h:
* css/CSSValuePool.cpp:
(WebCore::CSSValuePool::CSSValuePool):
(WebCore::CSSValuePool::createIdentifierValue):
(WebCore::CSSValuePool::createColorValue):
(WebCore::CSSValuePool::createValue):
(WebCore::CSSValuePool::drain): Deleted.
* css/CSSValuePool.h:
(WebCore::CSSValuePool::createInheritedValue):
(WebCore::CSSValuePool::createImplicitInitialValue):
(WebCore::CSSValuePool::createExplicitInitialValue):
(WebCore::CSSValuePool::createUnsetValue):
(WebCore::CSSValuePool::createRevertValue):

Source/WTF:
NeverDestroyed should relax adoption requirements on all RefCountedBase subclasses.
<https://webkit.org/b/152960>

Reviewed by Antti Koivisto.

Instead of relaxing on subclasses of RefCounted<T>, relax on subclasses of RefCountedBase.
This allows e.g NeverDestroyed<CSSPrimitiveValue> to relax its pointee despite the class
hierarchy starting with RefCounted<CSSValue> (not RefCounted<CSSPrimitiveValue>.)

* wtf/NeverDestroyed.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194848 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] Cleanup RenderThemeGtk
carlosgc@webkit.org [Mon, 11 Jan 2016 11:39:22 +0000 (11:39 +0000)]
[GTK] Cleanup RenderThemeGtk
https://bugs.webkit.org/show_bug.cgi?id=152888

Reviewed by Michael Catanzaro.

Use a common path for GTK+ 3.19 and previous versions, simplifying
the code and removing a lot of ifdefs.

 - createStyleContext() now receives a theme part enum value, and
   an optional parent GtkStyleContext. It encapsulates all the
   differences between GTK+ 3.19 and previous version leaving the
   rendering code common and free of ifdefs.
 - Stock icons support have been removed, simplifying the code
   that now always renders symbolic icons, updating the colors
   depending on the current state.
 - Media button and colors have been removed, because they are
   unused now that we render the media controls with CSS.
 - ComboBox separators support has also been removed. In GTK+ 3.19
   combo boxes no longer have separators and most of the GTK+
   themes don't use the either, so it's better to simple not render
   them anymore in WebKit either.
 - Code to paint caps lock indicator has been removed too, since
   caps lock indicator is now shadow dom and automatically
   rendered by WebCore.

* rendering/RenderThemeGtk.cpp:
(WebCore::createStyleContext):
(WebCore::loadThemedIcon):
(WebCore::gtkIconStateFlags):
(WebCore::RenderThemeGtk::adjustRepaintRect):
(WebCore::setToggleSize):
(WebCore::paintToggle):
(WebCore::RenderThemeGtk::setCheckboxSize):
(WebCore::RenderThemeGtk::paintCheckbox):
(WebCore::RenderThemeGtk::setRadioSize):
(WebCore::RenderThemeGtk::paintRadio):
(WebCore::RenderThemeGtk::paintButton):
(WebCore::getComboBoxMetrics):
(WebCore::RenderThemeGtk::popupInternalPaddingLeft):
(WebCore::RenderThemeGtk::popupInternalPaddingRight):
(WebCore::RenderThemeGtk::popupInternalPaddingTop):
(WebCore::RenderThemeGtk::popupInternalPaddingBottom):
(WebCore::RenderThemeGtk::paintMenuList):
(WebCore::RenderThemeGtk::paintTextField):
(WebCore::adjustSearchFieldIconStyle):
(WebCore::RenderThemeGtk::adjustSearchFieldResultsDecorationPartStyle):
(WebCore::paintIcon):
(WebCore::paintEntryIcon):
(WebCore::RenderThemeGtk::paintSearchFieldResultsDecorationPart):
(WebCore::RenderThemeGtk::adjustSearchFieldCancelButtonStyle):
(WebCore::RenderThemeGtk::paintSearchFieldCancelButton):
(WebCore::RenderThemeGtk::shouldHaveCapsLockIndicator):
(WebCore::RenderThemeGtk::paintSliderTrack):
(WebCore::RenderThemeGtk::paintSliderThumb):
(WebCore::RenderThemeGtk::adjustSliderThumbSize):
(WebCore::RenderThemeGtk::paintProgressBar):
(WebCore::RenderThemeGtk::adjustInnerSpinButtonStyle):
(WebCore::paintSpinArrowButton):
(WebCore::RenderThemeGtk::paintInnerSpinButton):
(WebCore::styleColor):
(WebCore::RenderThemeGtk::platformActiveSelectionBackgroundColor):
(WebCore::RenderThemeGtk::platformInactiveSelectionBackgroundColor):
(WebCore::RenderThemeGtk::platformActiveSelectionForegroundColor):
(WebCore::RenderThemeGtk::platformInactiveSelectionForegroundColor):
(WebCore::RenderThemeGtk::platformActiveListBoxSelectionBackgroundColor):
(WebCore::RenderThemeGtk::platformInactiveListBoxSelectionBackgroundColor):
(WebCore::RenderThemeGtk::platformActiveListBoxSelectionForegroundColor):
(WebCore::RenderThemeGtk::platformInactiveListBoxSelectionForegroundColor):
(WebCore::RenderThemeGtk::systemColor):
(WebCore::RenderThemeGtk::paintMediaButton):
(WebCore::RenderThemeGtk::paintMediaFullscreenButton):
(WebCore::RenderThemeGtk::paintMediaMuteButton):
(WebCore::RenderThemeGtk::paintMediaPlayButton):
(WebCore::RenderThemeGtk::paintMediaSeekBackButton):
(WebCore::RenderThemeGtk::paintMediaSeekForwardButton):
(WebCore::RenderThemeGtk::paintMediaToggleClosedCaptionsButton):
* rendering/RenderThemeGtk.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194847 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[WK2][GTK] Propagate motion-notify-event signals from the WebView
mario@webkit.org [Mon, 11 Jan 2016 11:32:07 +0000 (11:32 +0000)]
[WK2][GTK] Propagate motion-notify-event signals from the WebView
https://bugs.webkit.org/show_bug.cgi?id=152974

Reviewed by Carlos Garcia Campos.

Always propagate motion-notify-event signals, regardless of what the
web process does, so that we can listen for those events (which does
not act on specific targets inside the webview) from the container
widget too, and not just from the WebView itself.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseMotionNotifyEvent): Ensure the signal gets propagated.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194846 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] W3C CSS2.1 anonymous table tests are failing
mcatanzaro@igalia.com [Mon, 11 Jan 2016 10:49:47 +0000 (10:49 +0000)]
[GTK] W3C CSS2.1 anonymous table tests are failing
https://bugs.webkit.org/show_bug.cgi?id=152455

Reviewed by Mario Sanchez Prada.

Tools:

Add shared-mime-info to the jhbuild environment, since it affects the results of layout
tests. Add upstream patches to fix detection of XHTML files.

* gtk/jhbuild.modules:
* gtk/patches/shared-mime-info-xht-glob.patch: Added.
* gtk/patches/shared-mime-info-xhtml-magic.patch: Added.

LayoutTests:

Unskip the anonymous table tests, so the bots can generate expected results. The expected
results will be committed separately.

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194845 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] Cleanup ScrollbarThemeGtk
carlosgc@webkit.org [Mon, 11 Jan 2016 10:40:12 +0000 (10:40 +0000)]
[GTK] Cleanup ScrollbarThemeGtk
https://bugs.webkit.org/show_bug.cgi?id=152830

Reviewed by Michael Catanzaro.

Use a common path for GTK+ 3.19 and previous versions, simplifying
the code and removing a lot of ifdefs. Use always a new
GtkStyleContext, but when painting cache the newly created one so
all paint methods use that one. We were also caching some theme
properties assuming they don't change unless the theme changes,
but some of them can have different values depending on the state,
for example, when hovered or pressed. Those properties are now
only cached when we create a new GtkStyleContext.
The method updateScrollbarsFrameThickness() has also been removed,
since the Scrollbar constructor already initializes the frame rect
using the scrollbarThickness(). This method was not doing anything
anyway, since that was called on the constructor of the theme,
when there were no scrollbars registered. This also means we no
longer need to track registered/unregistered scrollbars.

* platform/gtk/ScrollbarThemeGtk.cpp:
(WebCore::ScrollbarThemeGtk::backButtonRect): Use the cached
GtkStyleContext and properties or create a new.
(WebCore::ScrollbarThemeGtk::forwardButtonRect): Ditto.
(WebCore::ScrollbarThemeGtk::trackRect): Ditto.
(WebCore::orientationStyleClass):
(WebCore::ScrollbarThemeGtk::getOrCreateStyleContext): Create a
new GtkStyleContext for the scrollbar if there isn't a cached
one. Also initialize the properties that depend on the state.
(WebCore::createChildStyleContext): Create a new GtkStyleContext
from a parent one.
(WebCore::ScrollbarThemeGtk::updateThemeProperties): Get the
properties that can only change when the theme changes.
(WebCore::ScrollbarThemeGtk::thumbRect): Use the cached
GtkStyleContext and properties or create a new.
(WebCore::adjustRectAccordingToMargin): Use always the
GtkStyleContext state instead of receiving it and setting it again.
(WebCore::ScrollbarThemeGtk::paintTrackBackground): Get or create
a GtkStyleContext for the scrollbar and create a child one for the trough.
(WebCore::ScrollbarThemeGtk::paintScrollbarBackground): Use the
cached GtkStyleContext or create a new one.
(WebCore::ScrollbarThemeGtk::paintThumb): Get or create a
GtkStyleContext for the scrollbar and create a child ones for
trough and slider.
(WebCore::ScrollbarThemeGtk::paintButton): Get or create a
GtkStyleContext for the scrollbar and create a child one for the button.
(WebCore::ScrollbarThemeGtk::paint): Create a GtkStyleContext and
cache it temporarily using TemporaryChange until the method finishes.
(WebCore::ScrollbarThemeGtk::scrollbarThickness): Use the cached
GtkStyleContext and properties or create a new.
(WebCore::ScrollbarThemeGtk::buttonSize): Ditto.
* platform/gtk/ScrollbarThemeGtk.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194844 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoImplement a sampling profiler
sbarati@apple.com [Mon, 11 Jan 2016 06:49:49 +0000 (06:49 +0000)]
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.

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/CodeBlock.h:
(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.

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/CodeBlock.h:
(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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194840 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[SVG -> OTF Converter] Parsing failures cause use of incomplete fonts
mmaxfield@apple.com [Mon, 11 Jan 2016 05:55:14 +0000 (05:55 +0000)]
[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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194839 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[JSC] Iterating over a Set/Map is too slow
utatane.tea@gmail.com [Mon, 11 Jan 2016 05:54:03 +0000 (05:54 +0000)]
[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)

2. 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194838 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed, fix ARM64 build.
fpizlo@apple.com [Mon, 11 Jan 2016 03:44:41 +0000 (03:44 +0000)]
Unreviewed, fix ARM64 build.

* b3/air/AirOpcode.opcodes:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194837 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoB3 should reduce Trunc(BitOr(value, constant)) where !(constant & 0xffffffff) to...
fpizlo@apple.com [Mon, 11 Jan 2016 03:25:57 +0000 (03:25 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194836 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[ES6] Arrow function syntax. Get rid of JSArrowFunction and use standard JSFunction...
commit-queue@webkit.org [Mon, 11 Jan 2016 01:38:36 +0000 (01:38 +0000)]
[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'

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* dfg/DFGAbstractInterpreterInlines.h:
(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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194835 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoIt should be possible to run liveness over registers without also tracking Tmps
fpizlo@apple.com [Mon, 11 Jan 2016 00:58:34 +0000 (00:58 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194834 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[JSC] Make branchMul functional in ARM B3 and minor fixes
commit-queue@webkit.org [Sun, 10 Jan 2016 22:33:01 +0000 (22:33 +0000)]
[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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194833 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[webkitdirs] Try arch and uname commands on non-windows OS
commit-queue@webkit.org [Sun, 10 Jan 2016 21:56:07 +0000 (21:56 +0000)]
[webkitdirs] Try arch and uname commands on non-windows OS
https://bugs.webkit.org/show_bug.cgi?id=152958

Patch by Konstantin Tokarev <annulen@yandex.ru> 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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[JSC] B3 is unable to do function calls on ARM64
commit-queue@webkit.org [Sun, 10 Jan 2016 21:42:48 +0000 (21:42 +0000)]
[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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194831 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Uncaught Exception selecting IndexedDB host folder in Storage tab
commit-queue@webkit.org [Sun, 10 Jan 2016 20:28:24 +0000 (20:28 +0000)]
Web Inspector: Uncaught Exception selecting IndexedDB host folder in Storage tab
https://bugs.webkit.org/show_bug.cgi?id=152943

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-01-10
Reviewed by Brian Burg.

* UserInterface/Views/NavigationSidebarPanel.js:
(WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
Another type of specialized folder tree element.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194830 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUncaught Exception: TypeError: undefined is not an object (evaluating 'this._scopeCha...
commit-queue@webkit.org [Sun, 10 Jan 2016 20:25:23 +0000 (20:25 +0000)]
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 <pecoraro@apple.com> 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194829 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Dashboard log message count doesn't include console.time messages
commit-queue@webkit.org [Sun, 10 Jan 2016 20:24:26 +0000 (20:24 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194828 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Cocoa] Disable header postprocessing when building for El Capitan
mitz@apple.com [Sun, 10 Jan 2016 18:51:58 +0000 (18:51 +0000)]
[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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194827 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUse NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL cont'd
akling@apple.com [Sun, 10 Jan 2016 13:27:40 +0000 (13:27 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194826 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoHook up display-list drawing in GraphicsLayerCA
simon.fraser@apple.com [Sun, 10 Jan 2016 06:39:43 +0000 (06:39 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194825 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAir should support Branch64 with immediates
fpizlo@apple.com [Sun, 10 Jan 2016 04:15:59 +0000 (04:15 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194824 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoREGRESSION (r194426): First email field is not autofilled on amazon.com
zalan@apple.com [Sun, 10 Jan 2016 00:38:56 +0000 (00:38 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194823 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[l10n] Updated Turkish translation of WebKitGTK+
mcatanzaro@igalia.com [Sat, 9 Jan 2016 23:29:23 +0000 (23:29 +0000)]
[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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194822 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Cocoa] Allow overriding the frameworks directory independently of using a staging...
mitz@apple.com [Sat, 9 Jan 2016 20:13:57 +0000 (20:13 +0000)]
[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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194821 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoThe FTL allocated spill slots for BinaryOps is sometimes inaccurate.
mark.lam@apple.com [Sat, 9 Jan 2016 15:23:56 +0000 (15:23 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194820 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUse NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL
akling@apple.com [Sat, 9 Jan 2016 13:13:41 +0000 (13:13 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194819 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Test Resources should not be included in Production builds unless...
commit-queue@webkit.org [Sat, 9 Jan 2016 06:32:23 +0000 (06:32 +0000)]
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 <pecoraro@apple.com> 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194818 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAbsolute positioning -webkit-search-cancel-button crashes Safari.
zalan@apple.com [Sat, 9 Jan 2016 06:27:42 +0000 (06:27 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194817 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAdd display-list drawing hooks to platform-specific GraphicsContext files
simon.fraser@apple.com [Sat, 9 Jan 2016 06:07:33 +0000 (06:07 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194816 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoModern IDB: storage/indexeddb/setversion-blocked-by-versionchange-close.html fails.
beidson@apple.com [Sat, 9 Jan 2016 01:57:47 +0000 (01:57 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194815 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAdd DisplayList hooks into GraphicsContext
simon.fraser@apple.com [Sat, 9 Jan 2016 01:41:27 +0000 (01:41 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194814 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoImplement download authentication with NetworkSession
achristensen@apple.com [Sat, 9 Jan 2016 01:21:57 +0000 (01:21 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194810 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFix internal Windows build
achristensen@apple.com [Sat, 9 Jan 2016 00:59:34 +0000 (00:59 +0000)]
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%

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194809 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed test gardening.
beidson@apple.com [Sat, 9 Jan 2016 00:50:40 +0000 (00:50 +0000)]
Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194808 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMarking fast/scrolling/scroll-position-on-reload-rtl.html as failing on ios-simulator
ryanhaddad@apple.com [Sat, 9 Jan 2016 00:42:59 +0000 (00:42 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194807 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoSkipping two unsupported mouse event tests on ios-simulator
ryanhaddad@apple.com [Sat, 9 Jan 2016 00:41:00 +0000 (00:41 +0000)]
Skipping two unsupported mouse event tests on ios-simulator

Unreviewed test gardening.

* platform/ios-simulator/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194806 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFTL B3 should do varargs tail calls and stack overflows
fpizlo@apple.com [Sat, 9 Jan 2016 00:37:47 +0000 (00:37 +0000)]
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").

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194805 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed test gardening.
beidson@apple.com [Sat, 9 Jan 2016 00:36:27 +0000 (00:36 +0000)]
Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194804 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed test gardening.
beidson@apple.com [Sat, 9 Jan 2016 00:24:12 +0000 (00:24 +0000)]
Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194803 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoB3 needs Neg()
fpizlo@apple.com [Sat, 9 Jan 2016 00:01:55 +0000 (00:01 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194802 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMarking js/intl-collator.html as failing on ios-simulator
ryanhaddad@apple.com [Fri, 8 Jan 2016 23:50:28 +0000 (23:50 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194801 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoModern IDB: imported/w3c/indexeddb/keyorder.htm times out.
beidson@apple.com [Fri, 8 Jan 2016 23:41:56 +0000 (23:41 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194800 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMarking two css3/filters/composited-during-* tests as failing on ios-simulator.
ryanhaddad@apple.com [Fri, 8 Jan 2016 23:36:16 +0000 (23:36 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194799 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoConsider painting to be disabled on a GraphicsContext with no platform data, and...
simon.fraser@apple.com [Fri, 8 Jan 2016 23:26:48 +0000 (23:26 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194798 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMark compositing/overflow/dynamic-composited-scrolling-status.html as failing on...
ryanhaddad@apple.com [Fri, 8 Jan 2016 23:25:15 +0000 (23:25 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194797 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoInputType::findClosestTickMarkValue should return an Optional<Decimal>
andersca@apple.com [Fri, 8 Jan 2016 23:19:50 +0000 (23:19 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194796 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed test gardening.
beidson@apple.com [Fri, 8 Jan 2016 23:19:19 +0000 (23:19 +0000)]
Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194795 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemoving WK2 specific results for this test.
beidson@apple.com [Fri, 8 Jan 2016 23:18:08 +0000 (23:18 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194794 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMarking two ios/scolling tests as failing on ios-simulator.
ryanhaddad@apple.com [Fri, 8 Jan 2016 23:16:42 +0000 (23:16 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194793 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRebaselining two compositing tests for ios-simulator
ryanhaddad@apple.com [Fri, 8 Jan 2016 23:12:01 +0000 (23:12 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194792 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemoving ios-simulator-wk1/ and ios-simulator-wk2/ expected.* files that are identica...
ryanhaddad@apple.com [Fri, 8 Jan 2016 22:51:26 +0000 (22:51 +0000)]
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

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194791 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemoving deleted test fast/mediastream/RTCPeerConnection-state.html from mac TestExpe...
ryanhaddad@apple.com [Fri, 8 Jan 2016 22:29:54 +0000 (22:29 +0000)]
Removing deleted test fast/mediastream/RTCPeerConnection-state.html from mac TestExpectations file

Unreviewed test gardening.

* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194790 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoModern IDB: IDBBindingUtilities chokes on unicode strings for get/set.
beidson@apple.com [Fri, 8 Jan 2016 22:21:24 +0000 (22:21 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194789 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMake v3 UI analysis task page is hard to understand
rniwa@webkit.org [Fri, 8 Jan 2016 21:57:32 +0000 (21:57 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194788 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[WinCairo] Support more video formats.
peavo@outlook.com [Fri, 8 Jan 2016 21:42:25 +0000 (21:42 +0000)]
[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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194787 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFTL B3 compile() doesn't clear exception handlers before we add FTL-specific ones
fpizlo@apple.com [Fri, 8 Jan 2016 21:42:23 +0000 (21:42 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194786 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Initiated section of Resource Details Sidebar should not display as...
commit-queue@webkit.org [Fri, 8 Jan 2016 21:33:59 +0000 (21:33 +0000)]
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 <pecoraro@apple.com> 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194785 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoNullopt and InPlace should be structs, not enum values
andersca@apple.com [Fri, 8 Jan 2016 21:32:12 +0000 (21:32 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194784 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoModern IDB: Blocked event can fire on a delete request even after the last open conne...
beidson@apple.com [Fri, 8 Jan 2016 21:12:08 +0000 (21:12 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194781 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[ANGLE] Correct UNREACHABLE runtime assertion for void constructors
bfulgham@apple.com [Fri, 8 Jan 2016 21:01:26 +0000 (21:01 +0000)]
[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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194780 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] Several animation tests fail with accelerated compositing enabled
mcatanzaro@igalia.com [Fri, 8 Jan 2016 21:01:01 +0000 (21:01 +0000)]
[GTK] Several animation tests fail with accelerated compositing enabled

Unreviewed gardening.

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194779 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] pageoverlay tests are failing
commit-queue@webkit.org [Fri, 8 Jan 2016 20:47:11 +0000 (20:47 +0000)]
[GTK] pageoverlay tests are failing

Unreviewed gardening.

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

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194778 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoB3 incorrectly turns NotEqual(bool, 1) into Equal(bool, 1) instead of Equal(bool, 0)
fpizlo@apple.com [Fri, 8 Jan 2016 20:14:36 +0000 (20:14 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194777 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Uncaught exception: TypeError: this._initiatorSourceCodeLocation.sourc...
commit-queue@webkit.org [Fri, 8 Jan 2016 20:14:20 +0000 (20:14 +0000)]
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 <pecoraro@apple.com> 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194776 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoHovering link on http://help.apple.com/appletv/#/ does not show text underline.
zalan@apple.com [Fri, 8 Jan 2016 20:05:08 +0000 (20:05 +0000)]
Hovering link on 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194775 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFTL B3 allocateCell() should not crash
fpizlo@apple.com [Fri, 8 Jan 2016 19:37:58 +0000 (19:37 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194774 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFTL B3 fails to realize that binary snippets might choose to omit their fast path
fpizlo@apple.com [Fri, 8 Jan 2016 19:02:53 +0000 (19:02 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194773 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agorestoreCalleeSavesFromVMCalleeSavesBuffer should use the scratch register
sbarati@apple.com [Fri, 8 Jan 2016 18:49:26 +0000 (18:49 +0000)]
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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194772 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoModern IDB: imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order.htm fails.
beidson@apple.com [Fri, 8 Jan 2016 18:48:03 +0000 (18:48 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194771 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRolling out: Rename StringFromCharCode to StringFromSingleCharCode.
mark.lam@apple.com [Fri, 8 Jan 2016 18:44:36 +0000 (18:44 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194770 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[JSC] Use std::call_once instead of pthread_once when initializing LLVM.
peavo@outlook.com [Fri, 8 Jan 2016 18:20:43 +0000 (18:20 +0000)]
[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):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194769 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agorun-webkit-tests mis-counts totals when there are other crashes
aakash_jain@apple.com [Fri, 8 Jan 2016 18:20:27 +0000 (18:20 +0000)]
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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194768 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRename StringFromCharCode to StringFromSingleCharCode.
mark.lam@apple.com [Fri, 8 Jan 2016 18:10:36 +0000 (18:10 +0000)]
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194767 268f45cc-cd09-0410-ab3c-d52691b4dbfc