Timeline



Jan 11, 2016:

11:39 PM Changeset in webkit [194887] by commit-queue@webkit.org
  • 5 edits in trunk

Web Inspector: console.count() shouldn't show a colon in front of a number
https://bugs.webkit.org/show_bug.cgi?id=152038

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

Source/JavaScriptCore:

  • inspector/agents/InspectorConsoleAgent.cpp:

(Inspector::InspectorConsoleAgent::count):
Do not include title and colon if the title is empty.

LayoutTests:

  • inspector/console/console-api-expected.txt:
  • inspector/console/console-api.html:

Add testcases for console.count

11:16 PM Changeset in webkit [194886] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit2

REGRESSION(r190717): [GTK] Popup menus stop working after being dismissed without selecting an item
https://bugs.webkit.org/show_bug.cgi?id=152977

Reviewed by Michael Catanzaro.

This happens since r190717 when you open a popup menu and without
selecting any option it's dismissed (press ESC or click somewhere
else). This is because I removed the code to track when the menu
is unmapped, thinking that it was no longer necessary. But we need
to send the DidChangeSelectedIndexForActivePopupMenu to the
WebProcess with -1 as index to keep the web process in sync.

  • UIProcess/gtk/WebPopupMenuProxyGtk.cpp:

(WebKit::WebPopupMenuProxyGtk::WebPopupMenuProxyGtk):
(WebKit::WebPopupMenuProxyGtk::showPopupMenu):
(WebKit::WebPopupMenuProxyGtk::cancelTracking):
(WebKit::WebPopupMenuProxyGtk::menuItemActivated):
(WebKit::WebPopupMenuProxyGtk::dismissMenuTimerFired):
(WebKit::WebPopupMenuProxyGtk::menuUnmappedCallback):

  • UIProcess/gtk/WebPopupMenuProxyGtk.h:
8:40 PM Changeset in webkit [194885] by sbarati@apple.com
  • 2 edits in trunk/Tools

run-jsc-stress-tests should try to figure out a JSC path
https://bugs.webkit.org/show_bug.cgi?id=152971

Reviewed by Yusuke Suzuki.

This patch now allows run-jsc-stress-tests to be run
without a "--jsc <jsc-path>" argument. It tries
to take its best guess at a <jsc-path> automagically.

This makes it much easier to just run run-jsc-stress-tests
with a directory or a yaml file as an argument.
You now just do this:
run-jsc-stress-tests <path-to-yaml>
or
run-jsc-stress-tests <path-to-directory-of-js-files>

I wrote this patch because I'd often find myself hacking the
run-javascriptcore-tests file just to run a particular subset of tests.
Because I always forget the arguments to run-jsc-stress-tests (which means
I always forgot to provide a --jsc argument), I always found it easier to
just hack on that file instead of calling run-jsc-stress-tests directly.
No longer is this true!

  • Scripts/run-jsc-stress-tests:
8:21 PM Changeset in webkit [194884] by mitz@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Reverted r194317.

Reviewed by Joseph Pecoraro.

r194317 did not contain a change log entry, did not explain the motivation, did not name a
reviewer, and does not seem necessary.

7:05 PM Changeset in webkit [194883] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.5.8.3/Source

Versioning.

7:03 PM Changeset in webkit [194882] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.5.8.3

New tag.

7:02 PM Changeset in webkit [194881] by commit-queue@webkit.org
  • 5 edits
    3 adds in trunk

keywords ("super", "delete", etc) should be valid method names
https://bugs.webkit.org/show_bug.cgi?id=144281

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-01-11
Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):

  • When parsing "static(" treat it as a method named "static" and not a static method.
  • When parsing a keyword treat it like a string method name (get and set are not keywords)
  • When parsing a getter / setter method name identifier, allow lookahead to be a keyword

(JSC::Parser<LexerType>::parseGetterSetter):

  • When parsing the getter / setter's name, allow it to be a keyword.

LayoutTests:

  • js/class-syntax-super-expected.txt:
  • js/script-tests/class-syntax-super.js:

Update the test for the correct expected result.

  • js/keyword-method-names-expected.txt: Added.
  • js/keyword-method-names.html: Added.
  • js/script-tests/keyword-method-names.js: Added.

Add tests to cover parsing allows keywords in method name syntax.

6:12 PM Changeset in webkit [194880] by aestes@apple.com
  • 18 edits
    1 add in trunk

[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/API/Cocoa/WKFoundation.h: Added a newline to force re-postprocessing.
  • 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):

5:40 PM Changeset in webkit [194879] by commit-queue@webkit.org
  • 12 edits in trunk/Source/WebInspectorUI

Web Inspector: Storage tab navigation bar should fit on a single line
https://bugs.webkit.org/show_bug.cgi?id=152473

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

The wrapping of the navigation bar on the Storage tab was caused by the
fact that Sidebar.js used a minimum width of 200px, regardless of the
content within the sidebar (unless it had a NavigationBar). Logic has
been added that causes the sidebar to use the selected panel's own
minimum width calculation if it is greater than 200px.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.prototype.get minimumWidth):

  • UserInterface/Views/MultipleScopeBarItem.js:

(WebInspector.MultipleScopeBarItem.prototype.set selectedScopeBarItem):
(WebInspector.MultipleScopeBarItem.prototype.displaySelectedItem):
Sets the displayed text to the currently selected item.

(WebInspector.MultipleScopeBarItem.prototype.displayWidestItem):
Sets the displayed text to the widest (pixel wise) item in the select element.

  • UserInterface/Views/NavigationBar.js:

(WebInspector.NavigationBar.prototype._calculateMinimumWidth):
Now uses NavigationItem.prototype.get minimumWidth.

  • UserInterface/Views/NavitationItem.js:

(WebInspector.NavitationItem.prototype.get minimumWidth):
Returns the element's realOffsetWidth.

  • UserInterface/Views/NetworkSidebarPanel.js:

(WebInspector.NetworkSidebarPanel.prototype.get minimumWidth):

  • UserInterface/Views/ResourceSidebarPanel.js:

(WebInspector.ResourceSidebarPanel.prototype.get minimumWidth):

  • UserInterface/Views/ScopeBar.js:

(WebInspector.ScopeBar):
(WebInspector.ScopeBar.prototype.get minimumWidth):

  • UserInterface/Views/Sidebar.js:

(WebInspector.Sidebar.prototype.set selectedSidebarPanel):
(WebInspector.Sidebar.prototype.get minimumWidth):
(WebInspector.Sidebar.prototype.set width):
(WebInspector.Sidebar.prototype.set collapsed):
(WebInspector.Sidebar.prototype._recalculateWidth):
Whenever the sidebar changes (e.g. tab change, sidebar becomes
visible/hidden, etc.), a width recalculation is necessary to ensure
that the navigation bar never wraps.

  • UserInterface/Views/SidebarPanel.js:

(WebInspector.SidebarPanel.prototype.get minimumWidth):

  • UserInterface/Views/StorageSidebarPanel.js:

(WebInspector.StorageSidebarPanel.prototype.get minimumWidth):

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel.prototype.get minimumWidth):

5:34 PM Changeset in webkit [194878] by commit-queue@webkit.org
  • 11 edits in trunk/Source/WebInspectorUI

Web Inspector: Make Timelines view also remember sort order
https://bugs.webkit.org/show_bug.cgi?id=152811

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

Changeset r194574 introduced the ability for WebInspector.Setting objects to
be passed to DataGrid instances to save the sort column for that grid. These
changes also add the ability for the sort order to be save as well.

  • UserInterface/Views/ApplicationCacheFrameContentView.js:

(WebInspector.ApplicationCacheFrameContentView.prototype._createDataGrid):

  • UserInterface/Views/CookieStorageContentView.js:

(WebInspector.CookieStorageContentView.prototype._rebuildTable):

  • UserInterface/Views/DOMStorageContentView.js:

(WebInspector.DOMStorageContentView):

  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGrid):
(WebInspector.DataGrid.prototype.set sortOrder):
If a WebInspector.Setting object has been given, save the new sort order.

(WebInspector.DataGrid.prototype.set sortOrderSetting):
Saves the given WebInspector.Setting object for modification whenever the user
changes the sort order.

  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:

(WebInspector.LayerTreeDetailsSidebarPanel.prototype._buildDataGridSection):

  • UserInterface/Views/LayoutTimelineView.js:

(WebInspector.LayoutTimelineView):

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView):

  • UserInterface/Views/NetworkTimelineView.js:

(WebInspector.NetworkTimelineView):

  • UserInterface/Views/RenderingFrameTimelineView.js:

(WebInspector.RenderingFrameTimelineView):

  • UserInterface/Views/ScriptTimelineView.js:

(WebInspector.ScriptTimelineView):

5:34 PM Changeset in webkit [194877] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Copying JS object output from console shouldn't include trailing '= $n'
https://bugs.webkit.org/show_bug.cgi?id=119347

Patch by Johan K. Jensen <jj@johanjensen.dk> on 2016-01-11
Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype.toClipboardString):

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

Web Inspector: Add basic Content section to Visual Sidebar
https://bugs.webkit.org/show_bug.cgi?id=152972

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

Since the "content" property has so many different types of values, a
simple text input editor should be added to provide some support for
the CSS property until a better, more specialized editor is created.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:

(.visual-style-property-container.comma-separated-keyword-editor):
Moved margin-left to new rule in VisualStylePropertyEditor.css.

  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel):
(WebInspector.VisualStyleDetailsPanel.prototype._populateContentSection):
Adds the basic editor under the Text section in a new subsection
called Content.

  • UserInterface/Views/VisualStylePropertyEditor.css:

(.visual-style-property-container > *:first-child:matches(.visual-style-property-value-container)):
Adds a left margin to property editors without a title.

5:31 PM Changeset in webkit [194875] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Visual sidebar minor bug fixes
https://bugs.webkit.org/show_bug.cgi?id=152967

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

  • UserInterface/Views/VisualStyleDetailsPanel.js:

(WebInspector.VisualStyleDetailsPanel.prototype.refresh):
Only update sections when it is not a significant change, as they are
updated when the selector changes.

(WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
Only reset links if the refresh is a significant change (node or selected
style changes).

  • UserInterface/Views/VisualStyleNumberInputBox.js:

(WebInspector.VisualStyleNumberInputBox):
(WebInspector.VisualStyleNumberInputBox.prototype.get value):
Removed unreachable return.

(WebInspector.VisualStyleNumberInputBox.prototype.set value):
(WebInspector.VisualStyleNumberInputBox.prototype._valueNumberInputKeyDown.adjustValue):
_updatedValues.propertyMissing was changed to _propertyMissing in a
prior patch.

4:33 PM Changeset in webkit [194874] by beidson@apple.com
  • 4 edits in trunk/LayoutTests

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:
4:11 PM Changeset in webkit [194873] by commit-queue@webkit.org
  • 5 edits in trunk/Source/JavaScriptCore

[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:
3:44 PM Changeset in webkit [194872] by beidson@apple.com
  • 5 edits in trunk

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:
3:34 PM Changeset in webkit [194871] by commit-queue@webkit.org
  • 20 edits
    4 adds in trunk

Web Inspector: Migrate Page Timeline recording to ScriptProfiler
https://bugs.webkit.org/show_bug.cgi?id=152727

Patch by Joseph Pecoraro <Joseph Pecoraro> 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.

3:16 PM Changeset in webkit [194870] by andersca@apple.com
  • 8 edits in trunk/Source

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]):

2:40 PM Changeset in webkit [194869] by keith_miller@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

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:
2:34 PM Changeset in webkit [194868] by commit-queue@webkit.org
  • 17 edits
    1 delete in trunk

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

2:03 PM Changeset in webkit [194867] by Alan Bujtas
  • 4 edits
    2 adds in trunk

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.
1:57 PM Changeset in webkit [194866] by aestes@apple.com
  • 17 edits
    1 add in trunk

[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):

1:49 PM Changeset in webkit [194865] by hyatt@apple.com
  • 4 edits
    17 adds in trunk

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.
1:37 PM Changeset in webkit [194864] by beidson@apple.com
  • 9 edits
    1 copy in trunk

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

(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.
1:31 PM Changeset in webkit [194863] by keith_miller@apple.com
  • 40 edits
    2 adds in trunk/Source/JavaScriptCore

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):

1:28 PM Changeset in webkit [194862] by peavo@outlook.com
  • 2 edits in trunk/Source/JavaScriptCore

[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:
1:04 PM Changeset in webkit [194861] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

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 <Konstantin Tokarev> on 2016-01-11
Reviewed by Alex Christensen.

  • jit/CallFrameShuffler.h:

(JSC::CallFrameShuffler::assumeCalleeIsCell):

1:00 PM Changeset in webkit [194860] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

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.

12:18 PM Changeset in webkit [194859] by beidson@apple.com
  • 5 edits in trunk

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:
10:13 AM Changeset in webkit [194858] by Csaba Osztrogonác
  • 6 edits in trunk/Source/JavaScriptCore

[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):

9:39 AM Changeset in webkit [194857] by beidson@apple.com
  • 9 edits in trunk/Source/WebCore

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:
9:25 AM Changeset in webkit [194856] by fpizlo@apple.com
  • 8 edits
    1 add in trunk/Source/JavaScriptCore

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.

(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:
9:18 AM Changeset in webkit [194855] by fpizlo@apple.com
  • 9 edits
    1 add in trunk/Source/JavaScriptCore

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.
8:55 AM Changeset in webkit [194854] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

Fix other builds after my MSVC build fix. :-|

  • css/StyleResolver.cpp:
8:42 AM Changeset in webkit [194853] by Michael Catanzaro
  • 2 edits
    70 adds in trunk/LayoutTests

[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.
8:39 AM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
8:34 AM Changeset in webkit [194852] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

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:
8:33 AM Changeset in webkit [194851] by akling@apple.com
  • 7 edits in trunk/Source/WebCore

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):

8:21 AM Changeset in webkit [194850] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

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

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-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):

7:01 AM Changeset in webkit [194849] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[webkitdirs] Use CMake to determine architecture on isCMakeBuild()
https://bugs.webkit.org/show_bug.cgi?id=152959

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-11
Reviewed by Brent Fulgham.

  • Scripts/webkitdirs.pm:

(determineArchitecture):

4:23 AM Changeset in webkit [194848] by akling@apple.com
  • 10 edits in trunk/Source

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:
3:39 AM Changeset in webkit [194847] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[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:
3:37 AM WebKitGTK/2.10.x edited by mario@webkit.org
(diff)
3:32 AM Changeset in webkit [194846] by mario@webkit.org
  • 2 edits in trunk/Source/WebKit2

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

2:49 AM Changeset in webkit [194845] by Michael Catanzaro
  • 4 edits
    2 adds in trunk

[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:
2:40 AM Changeset in webkit [194844] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[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:

Jan 10, 2016:

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

Merged r194719. rdar://problem/23769758

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

Versioning.

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

New tag.

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

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

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

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

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

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

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

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

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

  • heap/CodeBlockSet.h:

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

  • heap/ConservativeRoots.cpp:

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

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

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

  • heap/Heap.h:

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

  • heap/MachineStackMarker.cpp:

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

  • heap/MachineStackMarker.h:

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

  • heap/MarkedBlockSet.h:

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

  • heap/MarkedSpace.cpp:

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

  • heap/MarkedSpace.h:

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

  • interpreter/CallFrame.h:

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

  • jit/ExecutableAllocator.cpp:

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

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

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

  • jsc.cpp:

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

  • llint/LLIntPCRanges.h: Added.

(JSC::LLInt::isLLIntPC):

  • offlineasm/asm.rb:

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

  • runtime/Executable.h:

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

  • runtime/JSLock.cpp:

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

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

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

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

  • runtime/SamplingProfiler.h: Added.

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

  • runtime/VM.cpp:

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

  • runtime/VM.h:

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

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):

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

(foo):
(baz):

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

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

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

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

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

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

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

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

  • tools/JSDollarVMPrototype.cpp:

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

  • yarr/YarrJIT.cpp:

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

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

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

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

  • heap/CodeBlockSet.h:

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

  • heap/ConservativeRoots.cpp:

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

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

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

  • heap/Heap.h:

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

  • heap/HeapInlines.h:

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

  • heap/MachineStackMarker.cpp:

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

  • heap/MachineStackMarker.h:

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

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

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

  • interpreter/CallFrame.h:

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

  • jit/ExecutableAllocator.cpp:

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

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

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

  • jsc.cpp:

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

  • llint/LLIntPCRanges.h: Added.

(JSC::LLInt::isLLIntPC):

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

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

  • runtime/JSLock.cpp:

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

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

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

  • runtime/SamplingProfiler.h: Added.

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

  • runtime/VM.cpp:

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

  • runtime/VM.h:

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

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):

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

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

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

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

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

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

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

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

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

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

  • yarr/YarrJIT.cpp:

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

Source/WTF:

  • wtf/MetaAllocator.cpp:

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

  • wtf/MetaAllocator.h:

(WTF::MetaAllocator::getLock):

  • wtf/Platform.h:

Tools:

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

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

Reviewed by Simon Fraser.

Source/WebCore:

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

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

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::font):

  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::ensureCustomFontData):

  • svg/SVGToOTFFontConversion.cpp:

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

  • svg/SVGToOTFFontConversion.h:

LayoutTests:

Make sure the font renders as if its invalid.

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

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

Reviewed by Saam Barati.

Source/JavaScriptCore:

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

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

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

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

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

Writing forEach in JS eliminates this.

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

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

  1. Iterator result object allocation is costly.

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

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

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

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

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

old:

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

new:

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

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

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

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

(forEach):

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

(forEach):

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

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

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

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

  • runtime/JSGlobalObject.h:

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

  • runtime/MapPrototype.cpp:

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

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

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

  • runtime/SetPrototype.h:

LayoutTests:

Add regress tests.

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

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

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

(createMap):

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

(set forEach):
(set createSet):

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

Unreviewed, fix ARM64 build.

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

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

Reviewed by Saam Barati.

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

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

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

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

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

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

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

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

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

  • dfg/DFGSpeculativeJIT.cpp:

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

  • dfg/DFGStructureRegistrationPhase.cpp:

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

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

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

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

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

Reviewed by Saam Barati.

Source/JavaScriptCore:

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

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

  • b3/B3IndexSet.h:

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

  • b3/air/AirInstInlines.h:

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

  • b3/air/AirLiveness.h:

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

  • b3/air/AirReportUsedRegisters.cpp:

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

  • jit/Reg.h:

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

  • jit/RegisterSet.h:

(JSC::RegisterSet::forEach):

Source/WTF:

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

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

  • wtf/BitVector.h:

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

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

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

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

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

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

  • assembler/MacroAssemblerARM64.h:

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

  • b3/B3LowerToAir.cpp:

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

  • b3/air/AirOpcode.opcodes:

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

  • b3/air/opcode_generator.rb:

Expose the Scratch role.

  • b3/testb3.cpp:

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

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

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

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

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

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

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

  • Scripts/webkitdirs.pm:

(determineArchitecture):

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

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

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

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

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

  • b3/B3LowerToAir.cpp:

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

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

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

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

  • UserInterface/Views/NavigationSidebarPanel.js:

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

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

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

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

  • UserInterface/Models/CallFrame.js:

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

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

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

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

  • UserInterface/Models/DefaultDashboard.js:

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

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

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

Reviewed by Anders Carlsson.

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

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

Reviewed by Andy Estes.

Source/WebCore:

Convert some more of the remaining clients to use NeverDestroyed.

  • html/track/VTTRegion.cpp:

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

  • svg/properties/SVGAnimatedPropertyMacros.h:

Source/WebKit:

  • Storage/StorageThread.cpp:

(WebCore::activeStorageThreads):

Source/WebKit/ios:

  • WebCoreSupport/WebFixedPositionContent.mm:

(WebFixedPositionContentDataLock):

Source/WebKit/mac:

Convert some more of the remaining clients to use NeverDestroyed.

  • History/WebBackForwardList.mm:

(backForwardLists):

  • History/WebHistoryItem.mm:

(historyItemWrappers):

  • Misc/WebNSPasteboardExtras.mm:

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

  • Plugins/Hosted/NetscapePluginHostManager.mm:

(WebKit::NetscapePluginHostManager::singleton):

  • Plugins/Hosted/NetscapePluginHostProxy.mm:

(WebKit::pluginProxyMap):

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::globalExceptionString):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::proxyClass):

  • Plugins/WebNetscapePluginStream.mm:

(streams):

  • Storage/WebDatabaseManager.mm:

(transactionBackgroundTaskIdentifierLock):

  • WebCoreSupport/WebUserMediaClient.mm:

(userMediaCheckMap):

  • WebView/WebHTMLRepresentation.mm:

(regExpForLabels):

  • WebView/WebView.mm:

(aeDescFromJSValue):

Jan 9, 2016:

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

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

Reviewed by Zalan Bujtas.

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

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

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

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

Convert RenderLayerCompositor to use initializers.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::GraphicsLayer):

  • platform/graphics/GraphicsLayer.h:

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

  • platform/graphics/ca/GraphicsLayerCA.cpp:

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

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

(WebCore::PlatformCALayer::drawRepaintIndicator):

  • platform/graphics/ca/PlatformCALayerClient.h:

(WebCore::PlatformCALayerClient::isUsingDisplayListDrawing):

  • platform/graphics/ca/TileGrid.cpp:

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

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

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

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::createGraphicsLayer):

  • rendering/RenderLayerCompositor.cpp:

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

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

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

Reviewed by Oliver Hunt.

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

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::branch64):

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

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

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

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

Reviewed by Simon Fraser.

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

Source/WebCore:

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

  • page/FrameView.cpp:

(WebCore::FrameView::scheduleRelayoutOfSubtree):

LayoutTests:

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

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

"Reviewed" by Michael Catanzaro.

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

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

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

Reviewed by Tim Horton.

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

Account for the possibility of WK_OVERRIDE_FRAMEWORKS_DIR containing spaces.

Source/JavaScriptCore:

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

Source/ThirdParty:

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

Source/WebCore:

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

Source/WebInspectorUI:

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

Source/WebKit/mac:

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

Source/WebKit2:

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

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

Reviewed by Filip Pizlo and Saam Barati.

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

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

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

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

Reviewed by Anders Carlsson.

Source/JavaScriptCore:

Mostly mechanical conversion to NeverDestroyed throughout JavaScriptCore.

  • API/JSAPIWrapperObject.mm:

(jsAPIWrapperObjectHandleOwner):

  • API/JSManagedValue.mm:

(managedValueHandleOwner):

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::objectGroupForBreakpointAction):

  • jit/ExecutableAllocator.cpp:

(JSC::DemandExecutableAllocator::allocators):

Source/WebCore:

Mostly mechanical conversion to NeverDestroyed throughout WebCore.

  • Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.cpp:

(WebCore::stringForPlaybackTargetAvailability):

  • Modules/indexeddb/IDBCursor.cpp:

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

  • Modules/indexeddb/IDBTransaction.cpp:

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

  • Modules/indexeddb/legacy/LegacyRequest.cpp:

(WebCore::LegacyRequest::readyState):

  • Modules/mediacontrols/MediaControlsHost.cpp:

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

  • Modules/mediasource/MediaSource.cpp:

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

  • Modules/plugins/QuickTimePluginReplacement.mm:

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

  • Modules/speech/SpeechSynthesis.cpp:

(WebCore::SpeechSynthesis::boundaryEventOccurred):

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::cssPropertyIDForJSCSSPropertyName):

  • bridge/c/c_instance.cpp:

(JSC::Bindings::globalExceptionString):

  • css/MediaList.cpp:

(WebCore::addResolutionWarningMessageToConsole):

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):

  • dom/ChildListMutationScope.cpp:

(WebCore::accumulatorMap):

  • dom/DOMImplementation.cpp:

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

  • dom/Document.cpp:

(WebCore::Document::readyState):

  • dom/Element.cpp:

(WebCore::Element::webkitRegionOverset):

  • dom/EventDispatcher.cpp:

(WebCore::EventDispatcher::dispatchSimulatedClick):

  • dom/InlineStyleSheetOwner.cpp:

(WebCore::isValidCSSContentType):

  • dom/MutationObserver.cpp:

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

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

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

  • dom/QualifiedName.cpp:

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

  • dom/ScriptElement.cpp:

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

  • editing/ApplyStyleCommand.cpp:

(WebCore::styleSpanClassString):

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::shouldAddNamespaceElement):

  • editing/ReplaceSelectionCommand.cpp:

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

  • editing/htmlediting.cpp:

(WebCore::nonBreakingSpaceString):

  • editing/markup.cpp:

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

  • fileapi/Blob.cpp:

(WebCore::BlobURLRegistry::registry):

  • html/BaseChooserOnlyDateAndTimeInputType.cpp:

(WebCore::BaseChooserOnlyDateAndTimeInputType::createShadowSubtree):

  • html/DateInputType.cpp:

(WebCore::DateInputType::createStepRange):

  • html/DateTimeInputType.cpp:

(WebCore::DateTimeInputType::createStepRange):

  • html/DateTimeLocalInputType.cpp:

(WebCore::DateTimeLocalInputType::createStepRange):

  • html/EmailInputType.cpp:

(WebCore::isValidEmailAddress):

  • html/FormController.cpp:

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

  • html/HTMLAnchorElement.cpp:

(WebCore::rootEditableElementMap):

  • html/HTMLButtonElement.cpp:

(WebCore::HTMLButtonElement::formControlType):

  • html/HTMLFieldSetElement.cpp:

(WebCore::HTMLFieldSetElement::formControlType):

  • html/HTMLFrameOwnerElement.h:

(WebCore::SubframeLoadingDisabler::disabledSubtreeRoots):

  • html/HTMLKeygenElement.cpp:

(WebCore::HTMLKeygenElement::formControlType):

  • html/HTMLLinkElement.cpp:

(WebCore::linkLoadEventSender):

  • html/HTMLMediaElement.cpp:

(WebCore::documentToElementSetMap):

  • html/HTMLObjectElement.cpp:

(WebCore::isRecognizedTagName):

  • html/HTMLOptGroupElement.cpp:

(WebCore::HTMLOptGroupElement::formControlType):

  • html/HTMLOutputElement.cpp:

(WebCore::HTMLOutputElement::formControlType):

  • html/HTMLPlugInElement.cpp:

(WebCore::registeredPluginReplacements):

  • html/HTMLPlugInImageElement.cpp:

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

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::formControlType):

  • html/HTMLStyleElement.cpp:

(WebCore::styleLoadEventSender):

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::formControlType):

  • html/HTMLTextFormControlElement.cpp:

(WebCore::directionString):

  • html/ImageInputType.cpp:

(WebCore::ImageInputType::appendFormData):

  • html/InputTypeNames.cpp:

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

  • html/MediaController.cpp:

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

  • html/MonthInputType.cpp:

(WebCore::MonthInputType::createStepRange):

  • html/NumberInputType.cpp:

(WebCore::NumberInputType::createStepRange):

  • html/RangeInputType.cpp:

(WebCore::RangeInputType::createStepRange):

  • html/StepRange.cpp:

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

  • html/TimeInputType.cpp:

(WebCore::TimeInputType::createStepRange):

  • html/WeekInputType.cpp:

(WebCore::WeekInputType::createStepRange):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::getImageData):

  • html/parser/XSSAuditor.cpp:

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

  • html/shadow/MediaControlElements.cpp:

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

  • html/shadow/MeterShadowElement.cpp:

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

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

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

  • html/track/AudioTrack.cpp:

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

  • html/track/TextTrack.cpp:

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

  • html/track/TextTrackCue.h:

(WebCore::TextTrackCue::cueShadowPseudoId):

  • html/track/VTTCue.cpp:

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

  • html/track/VTTRegion.cpp:

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

  • html/track/VideoTrack.cpp:

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

  • html/track/WebVTTElement.cpp:

(WebCore::nodeTypeToTagName):

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

(WebCore::WebVTTParser::collectMetadataHeader):

  • inspector/InspectorCSSAgent.cpp:

(WebCore::computePseudoClassMask):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::sourceMapURLForResource):

  • inspector/InspectorStyleSheet.cpp:

(WebCore::selectorsFromSource):

  • inspector/PageDebuggerAgent.cpp:

(WebCore::PageDebuggerAgent::sourceMapURLForScript):

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::notifyFinished):

  • loader/TextTrackLoader.cpp:

(WebCore::TextTrackLoader::corsPolicyPreventedLoad):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::initiatorName):

  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::defaultDatabaseFilename):

  • page/CaptionUserPreferences.cpp:

(WebCore::CaptionUserPreferences::updateCaptionStyleSheetOveride):

  • page/CaptionUserPreferencesMediaAF.cpp:

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

  • page/ContentSecurityPolicy.cpp:

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

  • page/DOMWindow.cpp:

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

  • page/EventHandler.cpp:

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

  • page/Frame.cpp:

(WebCore::createRegExpForLabels):

  • page/NavigatorBase.cpp:

(WebCore::NavigatorBase::platform):

  • page/PageVisibilityState.cpp:

(WebCore::pageVisibilityStateString):

  • page/SecurityPolicy.cpp:

(WebCore::originAccessMap):

  • page/UserContentURLPattern.cpp:

(WebCore::UserContentURLPattern::parse):

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::shadowForBlending):

  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::updateKeyframeAnimations):

  • platform/Cursor.cpp:

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

  • platform/Language.cpp:

(WebCore::preferredLanguagesOverride):

  • platform/LocalizedStrings.cpp:

(WebCore::truncatedStringForLookupMenuItem):

  • platform/MIMETypeRegistry.cpp:

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

  • platform/SchemeRegistry.cpp:

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

  • platform/ScrollbarTheme.cpp:

(WebCore::ScrollbarTheme::theme):

  • platform/URL.cpp:

(WebCore::blankURL):

  • platform/animation/Animation.cpp:

(WebCore::Animation::initialName):

  • platform/audio/AudioSession.cpp:

(WebCore::AudioSession::sharedSession):

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

(WebCore::getConcatenatedImpulseResponsesForSubject):

  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::audioDestinations):

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::repaintRectMap):

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::transformColorSpace):

  • platform/graphics/MediaPlayer.cpp:

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

  • platform/graphics/ShadowBlur.cpp:

(WebCore::ScratchBuffer::singleton):

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

(WebCore::playerToPrivateMap):

  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::effectName):

  • platform/graphics/filters/SourceGraphic.cpp:

(WebCore::SourceGraphic::effectName):

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

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

  • platform/ios/CursorIOS.cpp:

(WebCore::cursor):

  • platform/ios/TileControllerMemoryHandlerIOS.cpp:

(WebCore::tileControllerMemoryHandler):

  • platform/ios/WebCoreMotionManager.mm:

(+[WebCoreMotionManager sharedManager]):

  • platform/ios/WebVideoFullscreenModelVideoElement.mm:

(WebVideoFullscreenModelVideoElement::updateForEventName):

  • platform/ios/wak/WKContentObservation.cpp:

(WebThreadGetObservedContentModifiers):

  • platform/mac/DragImageMac.mm:

(WebCore::fontFromNSFont):

  • platform/mac/ThemeMac.mm:

(WebCore::platformTheme):

  • platform/mac/ThreadCheck.mm:

(WebCoreReportThreadViolation):

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

(WebCore::AVCaptureDeviceManager::singleton):

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

(WebCore::RealtimeMediaSourceCenter::platformCenter):

  • platform/mock/mediasource/MockBox.cpp:

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

  • platform/network/HTTPParsers.cpp:

(WebCore::parseXSSProtectionHeader):

  • platform/network/ResourceHandle.cpp:

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

  • platform/network/cf/ResourceHandleCFNet.cpp:

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

  • platform/text/AtomicStringKeyedMRUCache.h:

(WebCore::AtomicStringKeyedMRUCache::get):

  • platform/text/cf/HyphenationCF.cpp:

(WebCore::cfLocaleCache):

  • rendering/RenderBlock.cpp:

(WebCore::continuationOutlineTable):

  • rendering/RenderCounter.cpp:

(WebCore::counterMaps):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::drawPlatformResizerImage):

  • rendering/RenderScrollbarTheme.cpp:

(WebCore::RenderScrollbarTheme::renderScrollbarTheme):

  • rendering/RenderTheme.cpp:

(WebCore::customFocusRingColor):

  • rendering/RenderWidget.cpp:

(WebCore::WidgetHierarchyUpdatesSuspensionScope::widgetNewParentMap):

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

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

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

(WebCore::RenderSVGPath::zeroLengthLinecapPath):

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::nonScalingStrokePath):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::currentContentTransformation):

  • rendering/svg/SVGResources.cpp:

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

  • svg/SVGAngle.cpp:

(WebCore::SVGAngle::valueAsString):

  • svg/SVGAnimateColorElement.cpp:

(WebCore::attributeValueIsCurrentColor):

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::rotateMode):

  • svg/SVGAnimationElement.cpp:

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

  • svg/SVGFEConvolveMatrixElement.cpp:

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

  • svg/SVGFEDiffuseLightingElement.cpp:

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

  • svg/SVGFEDropShadowElement.cpp:

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

  • svg/SVGFEGaussianBlurElement.cpp:

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

  • svg/SVGFEMorphologyElement.cpp:

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

  • svg/SVGFESpecularLightingElement.cpp:

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

  • svg/SVGFETurbulenceElement.cpp:

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

  • svg/SVGFilterElement.cpp:

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

  • svg/SVGGlyphMap.h:

(WebCore::SVGGlyphMap::svgGlyphForGlyph):

  • svg/SVGLangSpace.cpp:

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

  • svg/SVGMarkerElement.cpp:

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

  • svg/SVGStyleElement.cpp:

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

  • svg/SVGTransform.cpp:

(WebCore::SVGTransform::transformTypePrefixForParsing):

  • svg/SVGViewSpec.cpp:

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

  • svg/animation/SVGSMILElement.cpp:

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

Source/WTF:

Mostly mechanical conversion to NeverDestroyed throughout WTF.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::current):

  • wtf/ThreadingPthreads.cpp:

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

Jan 8, 2016:

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

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

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

  • Configurations/Base.xcconfig:

Combine inspector resources in production, but not test resources.

  • Configurations/DebugRelease.xcconfig:

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

  • Configurations/WebInspectorUIFramework.xcconfig:

Simplify by moving to other config files.

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

Have FORCE_TOOL_INSTALL combine test resources as well.

  • WebInspectorUI.vcxproj/build-webinspectorui.pl:

Only combine test resources in non-Production.

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

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

Reviewed by Simon Fraser.

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

Source/WebCore:

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

  • rendering/RenderTheme.h:

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

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

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

LayoutTests:

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

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

Reviewed by Zalan Bujtas.

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

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

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

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawText):

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

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

  • platform/graphics/cg/GraphicsContextCG.cpp:

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

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

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

Reviewed by Alex Christensen.

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

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

Reviewed by Zalan Bujtas.

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

Rename size() to something less ambiguous.

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

  • platform/graphics/GraphicsContext.cpp:

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

  • platform/graphics/GraphicsContext.h:

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

  • platform/graphics/displaylists/DisplayList.cpp:

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

  • platform/graphics/displaylists/DisplayList.h:

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

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

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

  • platform/graphics/displaylists/DisplayListRecorder.h:

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

  • platform/graphics/displaylists/DisplayListReplayer.cpp:

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

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

Merged r194809. rdar://problem/24116804

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

Versioning.

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

New tag.

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

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

Reviewed by Brady Eidson.

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

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/Downloads/PendingDownload.cpp: Added.

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

  • NetworkProcess/Downloads/PendingDownload.h:

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

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

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

  • NetworkProcess/NetworkLoad.h:

(WebKit::NetworkLoad::pendingDownloadID):

  • NetworkProcess/NetworkSession.h:

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

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

(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):

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

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

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

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

Reviewed by Brent Fulgham.

  • Source/cmake/WebKitCommon.cmake:

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

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

Unreviewed test gardening.

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

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

Unreviewed test gardening.

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

Skipping two unsupported mouse event tests on ios-simulator

Unreviewed test gardening.

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

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

Reviewed by Saam Barati.

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

This reduces the number of failures from 13 to 0.

  • ftl/FTLLowerDFGToLLVM.cpp:

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

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

Unreviewed test gardening.

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

Unreviewed test gardening.

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

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

Reviewed by Mark Lam.

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

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

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

This reduces the number of failures from 13 to 12.

  • assembler/MacroAssemblerX86Common.h:

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

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

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

  • b3/B3Opcode.cpp:

(WTF::printInternal):

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

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

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

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

  • ftl/FTLB3Output.h:

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

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

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

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

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

Unreviewed test gardening.

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

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

Reviewed by Alex Christensen.

Source/WebCore:

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

  • Modules/indexeddb/client/IDBCursorImpl.cpp:

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

LayoutTests:

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

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

Unreviewed test gardening.

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

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

Reviewed by Tim Horton.

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

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

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

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

  • page/FrameView.cpp:

(WebCore::FrameView::paintControlTints):

  • platform/graphics/GraphicsContext.cpp:

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

  • platform/graphics/GraphicsContext.h:

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

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

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

  • platform/graphics/cg/GraphicsContextCG.cpp:

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

  • platform/graphics/win/GraphicsContextCGWin.cpp:

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

  • platform/graphics/win/GraphicsContextCairoWin.cpp:

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

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

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

Unreviewed test gardening.

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

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

Reviewed by Andreas Kling.

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

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::findClosestTickMarkValue):

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

(WebCore::InputType::findClosestTickMarkValue):

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

(WebCore::RangeInputType::findClosestTickMarkValue):

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

(WebCore::SliderThumbElement::setPositionFromPoint):

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

Unreviewed test gardening.

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

Removing WK2 specific results for this test.

Legacy IDB passes just the same as Modern IDB.

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

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

Unreviewed test gardening.

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

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

Unreviewed test gardening.

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

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

Unreviewed test gardening.

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

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

Unreviewed test gardening.

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

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

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • indexeddb/keypath-expected.txt:

Source/WebCore:

No new tests (Covered by existing tests).

  • bindings/js/IDBBindingUtilities.cpp:

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

LayoutTests:

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

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

Reviewed by Antti Koivisto.

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

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

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

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

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

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

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

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

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

(BuildRequest.prototype.hasCompleted): Added.

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

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

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

(AnalysisTaskPage.cssTemplate): Tweaked the style.

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

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

Reviewed by Alex Christensen.

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

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

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

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

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

Reviewed by Saam Barati.

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

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

This reduces the numbe rof failures from 25 to 13.

  • bytecode/CodeBlock.cpp:

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

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

(JSC::FTL::compile):

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

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

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

  • UserInterface/Models/Resource.js:

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

  • UserInterface/Views/ResourceDetailsSidebarPanel.js:

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

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

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

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

Reviewed by Andreas Kling.

Without this,

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

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

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

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

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

  • wtf/StdLibExtras.h:

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

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

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

Reviewed by Joseph Pecoraro.

  • inspector/InspectorCSSAgent.cpp:

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

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

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

Reviewed by Joseph Pecoraro.

  • inspector/InspectorCSSAgent.cpp:

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

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

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

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

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

Source/WebCore:

No new tests (Progression in many tests).

  • Modules/indexeddb/client/IDBFactoryImpl.cpp:

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

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

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

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

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

LayoutTests:

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

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

Reviewed by Alex Christensen.

Tested by Khronos WebGL 1.0.4 suite.

Merge a small part of ANGLE upstream commit r284735:

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

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

  • src/compiler/translator/Types.cpp:

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

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

[GTK] Several animation tests fail with accelerated compositing enabled

Unreviewed gardening.

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

[GTK] pageoverlay tests are failing

Unreviewed gardening.

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

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

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

Reviewed by Mark Lam.

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

This reduces the number of failures from 27 to 25.

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

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

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

  • UserInterface/Models/Resource.js:

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

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

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

Reviewed by Simon Fraser.

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

Source/WebCore:

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

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::computeLineBoundsAndAntialiasingModeForText):

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

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

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

(WebCore::visualOverflowForDecorations):

LayoutTests:

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

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

Reviewed by Mark Lam.

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

This reduces the number of failures from 35 to 27.

  • ftl/FTLLowerDFGToLLVM.cpp:

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

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

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

Reviewed by Mark Lam.

This reduces the number of failures from 99 to 35.

  • ftl/FTLLowerDFGToLLVM.cpp:

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

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

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

Reviewed by Filip Pizlo.

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

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrEntryThunkGenerator):

  • jit/AssemblyHelpers.cpp:

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

  • jit/AssemblyHelpers.h:

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

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

(foo):

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

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

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

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

Source/WebCore:

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

  • Modules/indexeddb/client/IDBRequestImpl.cpp:

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

also add the IDBDatabase.

LayoutTests:

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

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

Not reviewed.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

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

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

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

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • runtime/StringConstructor.cpp:

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

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

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

Reviewed by Mark Lam.

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

  • llvm/InitializeLLVM.cpp:

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

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

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

Reviewed by Alexey Proskuryakov.

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

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

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

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

Reviewed by Daniel Bates.

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

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

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

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

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

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • runtime/StringConstructor.cpp:

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

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

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

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

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):

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

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

Unreviewed.

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

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

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

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

  • assembler/MacroAssemblerMIPS.h:

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

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

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

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

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::or32):

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

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

Reviewed by Simon Fraser.

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

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

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::ElementRuleCollector):

Assert for consistency instead of testing for it.

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

Selector filter can now be used if it exists.

  • css/ElementRuleCollector.h:

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

  • css/RuleSet.cpp:

(WebCore::RuleSet::addRule):

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

  • css/RuleSet.h:

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

  • css/SelectorFilter.cpp:

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

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

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

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

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

No longer needed.

(WebCore::SelectorFilter::pushParent):

Remove consistency check. These cases no longer happen.

  • css/SelectorFilter.h:

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

  • css/StyleInvalidationAnalysis.cpp:

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

  • css/StyleResolver.cpp:

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

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

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

No need for this logic.

  • css/StyleResolver.h:

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

  • style/StyleTreeResolver.cpp:

This now owns the selector filter for a tree context.

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

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

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

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

Reviewed by Michael Catanzaro.

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

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

(LayoutTestFinder.find_touched_tests):

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

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

  • Scripts/webkitpy/port/base.py:

(Port.potential_test_names_from_expected_file):

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

(DownloadCommandsTest._default_options):

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

(Options):

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

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

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

(RunTestsTest.test_webkit_run_unit_tests):

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

(StepsTest._step_options):

Jan 7, 2016:

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

Versioning.

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

Versioning.

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

Unreviewed IndexedDB test gardening.

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

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

Reviewed by Simon Fraser.

There is nothing platform specific about it.

No change in functionality.

  • platform/graphics/GraphicsContext.cpp:

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

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

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

  • platform/graphics/cg/GraphicsContextCG.cpp:

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

  • rendering/TextDecorationPainter.cpp:

(WebCore::drawSkipInkUnderline):

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

Fix new test.

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

old patch.

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

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

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

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

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

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

Reviewed by Simon Fraser.

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

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

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

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

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

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

the stage.

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

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

Reviewed by Alex Christensen.

Source/WebCore:

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

  • Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:

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

  • Modules/indexeddb/client/IDBRequestImpl.cpp:

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

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

  • Modules/indexeddb/client/IDBRequestImpl.h:

LayoutTests:

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

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

Reviewed by Simon Fraser.

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

Needed by both harnesses.

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

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

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

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

Reviewed by Simon Fraser.

Fix tests for other browsers.

  • Animometer/resources/extensions.js:

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

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

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

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

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

Reviewed by Alex Christensen.

Tested by WebGL 1.0.4 suite.

  • platform/graphics/GraphicsContext3D.cpp:

(getDataFormat): Handle missing SRGB and SRGB_ALPHA cases.

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

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

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

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

Reviewed by Tim Horton.
Source/WebCore:

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

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

(IOSurface::allowConversionFromFormatToFormat):

Source/WebKit2:

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

  • UIProcess/API/Cocoa/WKWebView.mm:

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

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

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

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

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

  • Scripts/prepare-ChangeLog:

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

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

Tests for the radar URL extraction.

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

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

Reviewed by Saam Barati.

This reduces the number of JSC test failures to 97.

  • ftl/FTLLowerDFGToLLVM.cpp:

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

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

(foo):

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

Unreviewed, skip more tests that fail.

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

(foo):

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

(foo):

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

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

Reviewed by Saam Barati.

This reduces the number of JSC test failures to 110.

  • ftl/FTLLowerDFGToLLVM.cpp:

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

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

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

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

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

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

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

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

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

Reviewed by Eric Carlson.

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

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

(WebCore::CDMSessionAVContentKeySession::contentKeySession):

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

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession):

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

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

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

(foo):

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

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

Reviewed by Simon Fraser.

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

  • Animometer/tests/resources/main.js:

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

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

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

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

New Tag.

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

New Tag.

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

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

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

(foo):

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

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

Reviewed by Geoffrey Garen.

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToLLVM.cpp:

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

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

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

Reviewed by Chris Dumez.

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

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

  • run-tests.js:

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

  • public/include/report-processor.php:

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

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

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

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

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

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

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

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

  • UserInterface/Views/VisualStylePropertyEditor.css:

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

  • UserInterface/Views/VisualStylePropertyEditor.js:

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

  • UserInterface/Views/VisualStyleSelectorSection.js:

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

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):

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

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

Reviewed by Simon Fraser.

No change in functionality.

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::paintTextDecoration):

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

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

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

  • UserInterface/Debug/UncaughtExceptionReporter.css:

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

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

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

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

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

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (5 skipped tests now pass).

  • Modules/indexeddb/client/IDBObjectStoreImpl.cpp:

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

a vast majority of browsers.

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

LayoutTests:

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

Test gardening.

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

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

Reviewed by Simon Fraser.

No change in functionality.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::computeLineBoundsAndAntialiasingModeForText):

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

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

  • platform/graphics/cg/GraphicsContextCG.cpp:

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

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

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

Reviewed by Saam Barati.

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

  • ftl/FTLLowerDFGToLLVM.cpp:

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

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

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

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

Reverted changeset:

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

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

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

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

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

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

  • UserInterface/Views/VisualStyleBackgroundPicker.js:

(WebInspector.VisualStyleBackgroundPicker.prototype._keywordSelectMouseDown):

  • UserInterface/Views/VisualStyleDetailsPanel.css:

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

  • UserInterface/Views/VisualStyleDetailsPanel.js:

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

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

  • UserInterface/Views/VisualStyleKeywordPicker.js:

(WebInspector.VisualStyleKeywordPicker.prototype._keywordSelectMouseDown):

  • UserInterface/Views/VisualStyleNumberInputBox.js:

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

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

(WebInspector.VisualStyleNumberInputBox.prototype._unitsElementTextContent):

  • UserInterface/Views/VisualStylePropertyCombiner.js:

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

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

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

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

to editors 2 and 4.

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

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

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

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

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

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

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

Rubber-stamped by Jer Noble.

  • WebView/WebPreferences.mm:

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

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

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

Reviewed by Alex Christensen.

Source/WebCore:

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

  • Modules/indexeddb/server/MemoryIndexCursor.cpp:

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

the cursor's assigned range.

LayoutTests:

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

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

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

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

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

New tag.

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

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

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

  • UserInterface/Views/DOMTreeElement.js:

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

  • UserInterface/Views/DOMTreeOutline.css:

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

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

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

Versioning.

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

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

Reviewed by Simon Fraser.

Tools:

Fix two use-after-frees.

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

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

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

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

  • WebKitTestRunner/TestInvocation.cpp:

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

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

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

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

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

  • WebKitTestRunner/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::create):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

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

  • WebKitTestRunner/mac/UIScriptControllerMac.mm:

(WTR::UIScriptController::doAsyncTask):

LayoutTests:

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

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

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

  • b3/testb3.cpp:

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

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

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

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

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

Reviewed by Brady Eidson.

  • NetworkProcess/Downloads/Download.cpp:

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

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

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

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

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

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

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

  • NetworkProcess/NetworkLoad.h:

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

  • NetworkProcess/NetworkSession.h:

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

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

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

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

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

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

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

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

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

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

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

  • UserInterface/Models/DOMNodeStyles.js:

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

  • UserInterface/Views/BoxModelDetailsSectionRow.js:

(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics):

  • UserInterface/Views/CSSStyleDeclarationSection.js:

(WebInspector.CSSStyleDeclarationSection.prototype._handleContextMenuEvent):

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WebInspector.CSSStyleDeclarationTextEditor.prototype.commentAllProperties):

  • UserInterface/Views/RulesStyleDetailsPanel.js:

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

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

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

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

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

  • UserInterface/Views/VisualStyleSelectorSection.js:

(WebInspector.VisualStyleSelectorSection):
(WebInspector.VisualStyleSelectorSection.prototype.update.createSelectorItem):
(WebInspector.VisualStyleSelectorSection.prototype.update):
(WebInspector.VisualStyleSelectorSection.prototype.treeItemForStyle):
Returns the first tree item that has a style with matching selector.

(WebInspector.VisualStyleSelectorSection.prototype.selectEmptyStyleTreeItem):
Finds the tree item corresponding to the given style and, if empty, selects it.

(WebInspector.VisualStyleSelectorSection.prototype._addNewRule):

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem):
Now requires a delegate object.

(WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):

1:20 PM Changeset in webkit [194716] by fpizlo@apple.com
  • 12 edits
    12 adds in trunk/Source/JavaScriptCore

FTL B3 getById() should do exceptions
https://bugs.webkit.org/show_bug.cgi?id=152810

Reviewed by Saam Barati.

This adds abstractions for doing exceptions from patchpoints, and uses them to implement
exceptions from GetById. This covers all of the following ways that a GetById might throw an
exceptions:

  • Throw without try/catch from the vmCall() in a GetById(Untyped:)
  • Throw with try/catch from the vmCall() in a GetById(Untyped:)
  • Throw without try/catch from the callOperation() in the patchpoint of a GetById
  • Throw with try/catch from the callOperation() in the patchpoint of a GetById
  • Throw without try/catch from the Call IC generated in the patchpoint of a GetById
  • Throw with try/catch from the Call IC generated in the patchpoint of a GetById

This requires having a default exception target in FTL-generated code, and ensuring that this
target is generated regardless of whether we have branches to the B3 basic block of the
default exception target. This also requires adding some extra arguments to a
PatchpointValue, and then knowing that the arguments are used for OSR exit and not anything
else. This also requires associating the CallSiteIndex of the patchpoint with the register
set used for exit and with the OSR exit label for the unwind exit.

All of the stuff that you have to worry about when wiring a patchpoint to exception handling
is covered by the new PatchpointExceptionHandle object. You create one by calling
preparePatchpointForExceptions(). This sets up the B3 IR representation of the patchpoint
with stackmap arguments for the exceptional exit, and creates a PatchpointExceptionHandle
object that can be used to create zero or more actual OSR exits. It can create both OSR exits
for operation calls and OSR exits for unwind. You call the
PatchpointExceptionHandle::scheduleExitCreationXXX() methods from the generator callback to
actually get OSR exits.

This API makes heavy use of Box<>, late paths, and link tasks. For example, you can use the
PatchpointExceptionHandle to get a Box<JumpList> that you can append exception jumps to. When
you use this API, it automatically registers a link task that will link the JumpList to the
actual OSR exit label.

This API is very flexible about how you get to the label of the OSR exit. You are encouraged
to use the Box<JumpList> approach, but if you really just need the label, you can also get
a RefPtr<ExceptionTarget> and rely on the fact that the ExceptionTarget object will be able
to vend you the OSR exit label at link-time.

This reduces the number of JSC test failures with FTL B3 from 186 to 133. It also adds a
bunch of new tests specifically for all of the ways you might throw from GetById, and B3
passes all of these new tests. Note that I'm not counting the new tests as part of the
previous 186 test failures (FTL B3 failed all of the new tests prior to this change).

After this change, it should be easy to make all of the other patchpoints also handle
exceptions by just following the preparePatchpointForExceptions() idiom.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • b3/B3StackmapValue.h:
  • b3/B3ValueRep.cpp:

(JSC::B3::ValueRep::addUsedRegistersTo):
(JSC::B3::ValueRep::usedRegisters):
(JSC::B3::ValueRep::dump):

  • b3/B3ValueRep.h:

(JSC::B3::ValueRep::doubleValue):
(JSC::B3::ValueRep::withOffset):
(JSC::B3::ValueRep::usedRegisters):

  • ftl/FTLB3Compile.cpp:

(JSC::FTL::compile):

  • ftl/FTLB3Output.h:

(JSC::FTL::Output::unreachable):
(JSC::FTL::Output::speculate):

  • ftl/FTLExceptionTarget.cpp: Added.

(JSC::FTL::ExceptionTarget::~ExceptionTarget):
(JSC::FTL::ExceptionTarget::label):
(JSC::FTL::ExceptionTarget::jumps):
(JSC::FTL::ExceptionTarget::ExceptionTarget):

  • ftl/FTLExceptionTarget.h: Added.
  • ftl/FTLJITCode.cpp:

(JSC::FTL::JITCode::liveRegistersToPreserveAtExceptionHandlingCallSite):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::DFG::LowerDFGToLLVM::lower):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithAddOrSub):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithMul):
(JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):
(JSC::FTL::DFG::LowerDFGToLLVM::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToLLVM::compileIn):
(JSC::FTL::DFG::LowerDFGToLLVM::getById):
(JSC::FTL::DFG::LowerDFGToLLVM::emitBinarySnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::emitBinaryBitOpSnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::emitRightShiftSnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::callCheck):
(JSC::FTL::DFG::LowerDFGToLLVM::preparePatchpointForExceptions):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitArgumentsForPatchpointIfWillCatchException):
(JSC::FTL::DFG::LowerDFGToLLVM::lowBlock):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::DFG::LowerDFGToLLVM::blessSpeculation):

  • ftl/FTLPatchpointExceptionHandle.cpp: Added.

(JSC::FTL::PatchpointExceptionHandle::create):
(JSC::FTL::PatchpointExceptionHandle::defaultHandle):
(JSC::FTL::PatchpointExceptionHandle::~PatchpointExceptionHandle):
(JSC::FTL::PatchpointExceptionHandle::scheduleExitCreation):
(JSC::FTL::PatchpointExceptionHandle::scheduleExitCreationForUnwind):
(JSC::FTL::PatchpointExceptionHandle::PatchpointExceptionHandle):
(JSC::FTL::PatchpointExceptionHandle::createHandle):

  • ftl/FTLPatchpointExceptionHandle.h: Added.
  • ftl/FTLState.cpp:
  • ftl/FTLState.h:

(JSC::FTL::verboseCompilationEnabled):

  • tests/stress/ftl-get-by-id-getter-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-get-by-id-getter-exception-no-catch.js: Added.
  • tests/stress/ftl-get-by-id-getter-exception.js: Added.
  • tests/stress/ftl-get-by-id-slow-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-get-by-id-slow-exception-no-catch.js: Added.
  • tests/stress/ftl-get-by-id-slow-exception.js: Added.
  • tests/stress/ftl-operation-exception-interesting-live-state.js: Added.
  • tests/stress/ftl-operation-exception-no-catch.js: Added.
1:17 PM Changeset in webkit [194715] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Implemented missing branch patching methods.
https://bugs.webkit.org/show_bug.cgi?id=152845

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::canJumpReplacePatchableBranch32WithPatch):
(JSC::MacroAssemblerMIPS::startOfPatchableBranch32WithPatchOnAddress):
(JSC::MacroAssemblerMIPS::revertJumpReplacementToPatchableBranch32WithPatch):

1:16 PM Changeset in webkit [194714] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] When resolving Stack arguments, use addressing from SP when addressing from FP is invalid
https://bugs.webkit.org/show_bug.cgi?id=152840

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-07
Reviewed by Mark Lam.

ARM64 has two kinds of addressing with immediates:
-Signed 9bits direct (really only -256 to 255).
-Unsigned 12bits scaled by the load/store size.

When resolving the stack addresses, we easily run
past -256 bytes from FP. Addressing from SP gives us more
room to address the stack efficiently because we can
use unsigned immediates.

  • b3/B3StackmapSpecial.cpp:

(JSC::B3::StackmapSpecial::repForArg):

  • b3/air/AirAllocateStack.cpp:

(JSC::B3::Air::allocateStack):

1:13 PM Changeset in webkit [194713] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Make repatchCall public to fix compilation.
https://bugs.webkit.org/show_bug.cgi?id=152843

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::repatchCall):
(JSC::MacroAssemblerMIPS::linkCall): Deleted.

12:43 PM Changeset in webkit [194712] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Replaced subi with addi in getHostCallReturnValue
https://bugs.webkit.org/show_bug.cgi?id=152841

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

MIPS architecture does not have subi instruction, addi with negative
number should be used instead.

  • jit/JITOperations.cpp:
12:21 PM Changeset in webkit [194711] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

ARMv7 or32(TrustedImm32, AbsoluteAddress) may have a bug with its use of dataTempRegister.
https://bugs.webkit.org/show_bug.cgi?id=152833

Reviewed by Michael Saboff.

Follow-up patch to fix illegal use of memoryTempRegister as the src for ARM64's
store32.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::or32):
(JSC::MacroAssemblerARM64::store):

12:01 PM Changeset in webkit [194710] by Alan Bujtas
  • 3 edits
    4 adds in trunk

Incorrect position: fixed; rendering when child of position:relative/sticky.
https://bugs.webkit.org/show_bug.cgi?id=147284

Reviewed by Simon Fraser and David Hyatt.

Computing logical left for positioned objects should take the relative positioned ancestors' offset
into account.

Source/WebCore:

Tests: fast/block/positioning/fixed-container-with-relative-parent.html

fast/block/positioning/fixed-container-with-sticky-parent.html

  • rendering/RenderBox.cpp:

(WebCore::computeInlineStaticDistance):

LayoutTests:

  • fast/block/positioning/fixed-container-with-relative-parent-expected.html: Added.
  • fast/block/positioning/fixed-container-with-relative-parent.html: Added.
  • fast/block/positioning/fixed-container-with-sticky-parent-expected.html: Added.
  • fast/block/positioning/fixed-container-with-sticky-parent.html: Added.
12:00 PM Changeset in webkit [194709] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] GPRInfo::toArgumentRegister missing
https://bugs.webkit.org/show_bug.cgi?id=152838

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Michael Saboff.

  • jit/GPRInfo.h:

(JSC::GPRInfo::toArgumentRegister):

11:53 AM Changeset in webkit [194708] by Simon Fraser
  • 6 edits
    9 adds in trunk/Source/WebCore

Initial implementation files for display-list recording and playback
https://bugs.webkit.org/show_bug.cgi?id=152816

Reviewed by Zalan Bujtas.

Add files for:

  • DisplayList, a class that holds a vector of display items, and in the future will hold metadata on the list for optimizations etc.
  • DisplayList::Recorder, the outward-facing recording API which GraphicsContext will call into.
  • DisplayList::Replayer, which plays back a DisplayList, possibly applying optimizations.
  • Various DisplayList::Items, one type for each display list operation. They cover most of the GraphicsContext functionality, other than clipping to an image buffer. Text drawing is stubbed out for now.

Added a "DisplayLists" log channel.

Added GraphicsContextState functions for tracking state deltas with change bits. It may
make sense to combine GraphicsContextStateChange and GraphicsContextState, and use the
dirty bits in non-display-list drawing as well.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/Logging.h:
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/displaylists/DisplayList.cpp: Added.

(WebCore::DisplayList::DisplayList::description):
(WebCore::DisplayList::DisplayList::dump):
(WebCore::operator<<):

  • platform/graphics/displaylists/DisplayListItems.cpp: Added.
  • platform/graphics/displaylists/DisplayListItems.h: Added.
  • platform/graphics/displaylists/DisplayListRecorder.cpp: Added.
  • platform/graphics/displaylists/DisplayListRecorder.h: Added.
  • platform/graphics/displaylists/DisplayListReplayer.cpp: Added.

(WebCore::DisplayList::Replayer::Replayer):
(WebCore::DisplayList::Replayer::~Replayer):
(WebCore::DisplayList::Replayer::replay):

  • platform/graphics/displaylists/DisplayListReplayer.h: Added.
11:42 AM Changeset in webkit [194707] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

ARMv7 or32(TrustedImm32, AbsoluteAddress) may have a bug with its use of dataTempRegister.
https://bugs.webkit.org/show_bug.cgi?id=152833

Reviewed by Benjamin Poulain.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::or32):

  • Added some assertions to make sure it is safe to use ARMRegisters::S0 as a temp.
  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::or32):

  • Implement an optimization that avoids reloading the memoryTempRegister when the immediate is encodable as an instruction immediate.
  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::or32):

  • Added an assertion to make sure it is safe to use the dataTempRegister as a temp.
  • Implement an optimization that avoids reloading the memoryTempRegister when the immediate is encodable as an instruction immediate. In the event that we cannot encode the immediate, we'll use the addressTempRegister as a temp, and reload it later.
11:40 AM Changeset in webkit [194706] by Chris Dumez
  • 7 edits
    2 adds in trunk

Directly-composited animated GIFs never resume once scrolled offscreen
https://bugs.webkit.org/show_bug.cgi?id=152817
<rdar://problem/19982020>

Reviewed by Daniel Bates.

Source/WebCore:

Directly-composited animated GIFs would never resume once scrolled
offscreen. This is because calling repaint() in this case would not
cause BitmapImage::draw() to be called and the animation would thus
not be resumed. To address the problem,
repaintForPausedImageAnimationsIfNeeded() now calls
RenderBoxModelObject::contentChanged(ImageChanged) in addition to
repaint() to make sure the animation actually gets resumed, even in
the directly-composited animated GIF case.

Test: fast/images/composited-animated-gif-outside-viewport.html

  • platform/graphics/BitmapImage.h:

Make currentFrame() public so it can be exposed via Internals for the
purpose of testing.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::repaintForPausedImageAnimationsIfNeeded):
Call RenderBoxModelObject::contentChanged(ImageChanged) in addition to
calling repaint() to make sure the animation actually gets resumed in
the directly-composited animated GIFs case.

  • testing/Internals.cpp:

(WebCore::Internals::imageFrameIndex):

  • testing/Internals.h:
  • testing/Internals.idl:

Expose new "unsigned long imageFrameIndex(Element)" operation on
Internals so layout tests can better check if an image is actually
animating. Previously, we would rely on the output of
internals.hasPausedImageAnimations(Element) but this is not sufficient
to cover this bug as our rendering code believed it has resumed the
animations but the GIF was not actually animating due to it being
directly-composited.

LayoutTests:

Add a layout test to check that directly-composited animated GIFs are
properly suspended / resumed based on visibility inside the viewport.

  • fast/images/composited-animated-gif-outside-viewport-expected.txt: Added.
  • fast/images/composited-animated-gif-outside-viewport.html: Added.
11:29 AM Changeset in webkit [194705] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[CMake] JSC shell sources should include JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES
https://bugs.webkit.org/show_bug.cgi?id=152664

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-01-07
Reviewed by Alex Christensen.

  • shell/CMakeLists.txt:
11:06 AM Changeset in webkit [194704] by Joseph Pecoraro
  • 8 edits
    3 adds in trunk

Web Inspector: CRASH Attempting to pause on CSP violation not inside of script
https://bugs.webkit.org/show_bug.cgi?id=152825
<rdar://problem/24021276>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • debugger/Debugger.cpp:

(JSC::Debugger::breakProgram):
We cannot pause if we are not evaluating JavaScript, so bail.

Source/WebInspectorUI:

  • UserInterface/Test/TestHarness.js:

(TestHarness.prototype.expectThat):
(TestHarness.prototype.pass):
(TestHarness.prototype.fail):
Add a simple way to output a standard pass/fail message. These are
often nicer than expectThat(true, ...) or assert(false, ...).

LayoutTests:

  • http/tests/inspector/resources/inspector-test.js:

(TestPage.reportUncaughtException):
Allow a test to continue after uncaught exceptions.

  • inspector/debugger/csp-exceptions-expected.txt: Added.
  • inspector/debugger/csp-exceptions.html: Added.
  • inspector/debugger/resources/csp-exception-iframe.html: Added.

Test a CSP exception that causes a pause and one outside of
script that does not pause (and does not crash).

10:57 AM Changeset in webkit [194703] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Re-enable lea() in Air on ARM64
https://bugs.webkit.org/show_bug.cgi?id=152832

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-01-07
Reviewed by Michael Saboff.

Lea() on the MacroAssembler is not the full x86 Lea (the real one being
x86Lea32()). Instead, it is a addPtr() with SP and a constant.

The instruction is required to implement B3's StackSlot. It is not
safe for big offsets but none of the stack operations are at the moment.

  • b3/air/AirOpcode.opcodes:
10:21 AM Changeset in webkit [194702] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed IndexedDB test gardening.

  • platform/mac-wk1/TestExpectations:
10:13 AM Changeset in webkit [194701] by beidson@apple.com
  • 3 edits
    2 adds in trunk/LayoutTests

Modern IDB: Add expectations for W3C tests that were missing them.
https://bugs.webkit.org/show_bug.cgi?id=152835

Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

  • indexeddb/idbfactory_open10-expected.txt: Added.
  • indexeddb/key_valid-expected.txt: Added.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
10:07 AM Changeset in webkit [194700] by beidson@apple.com
  • 28 edits
    22 copies in trunk/LayoutTests

Modern IDB: Update results for W3C tests marked as failures that actually pass.
https://bugs.webkit.org/show_bug.cgi?id=152827

Reviewed by Daniel Bates.
LayoutTests/imported/w3c:

Modern IDB passes the following tests with PASS results where we previous expected FAIL.

Let's update those, shall we?

  • indexeddb/abort-in-initial-upgradeneeded-expected.txt:
  • indexeddb/idbcursor-advance-expected.txt:
  • indexeddb/idbcursor_advance_index5-expected.txt:
  • indexeddb/idbcursor_advance_index9-expected.txt:
  • indexeddb/idbcursor_advance_objectstore5-expected.txt:
  • indexeddb/idbcursor_continue_index5-expected.txt:
  • indexeddb/idbcursor_continue_index6-expected.txt:
  • indexeddb/idbcursor_continue_index8-expected.txt:
  • indexeddb/idbcursor_continue_invalid-expected.txt:
  • indexeddb/idbcursor_continue_objectstore6-expected.txt:
  • indexeddb/idbcursor_delete_index4-expected.txt:
  • indexeddb/idbcursor_delete_objectstore4-expected.txt:
  • indexeddb/idbdatabase_close2-expected.txt:
  • indexeddb/idbdatabase_deleteObjectStore4-not_reused-expected.txt:
  • indexeddb/idbfactory_deleteDatabase3-expected.txt:
  • indexeddb/idbindex-multientry-big-expected.txt:
  • indexeddb/idbindex_get3-expected.txt:
  • indexeddb/idbobjectstore_add4-expected.txt:
  • indexeddb/idbobjectstore_createIndex2-expected.txt:
  • indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt:
  • indexeddb/idbobjectstore_put4-expected.txt:
  • indexeddb/idbtransaction_abort-expected.txt:
  • indexeddb/keygenerator-constrainterror-expected.txt:
  • indexeddb/keygenerator-expected.txt:
  • indexeddb/transaction-requestqueue-expected.txt:

LayoutTests:

  • Update FAIL expectations to PASS expectations for Modern IDB.
  • Copy the FAIL expectations over to platform/wk2 to keep testing Legacy IDB.
  • platform/mac-wk1/TestExpectations:
  • platform/wk2/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor-advance-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_advance_index5-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_advance_index9-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_advance_objectstore5-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_continue_index8-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_continue_objectstore6-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_delete_index4-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbcursor_delete_objectstore4-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbdatabase_close2-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbfactory_deleteDatabase3-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbindex-multientry-big-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbindex_get3-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get3-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_add4-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_createIndex2-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbobjectstore_put4-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/idbtransaction_abort-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/keygenerator-constrainterror-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/keygenerator-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/keygenerator-expected.txt.
  • platform/wk2/imported/w3c/indexeddb/transaction-requestqueue-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-expected.txt.
9:06 AM Changeset in webkit [194699] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Add two missing abortWithReason implementations
https://bugs.webkit.org/show_bug.cgi?id=136753

Patch by Julien Brianceau <jbriance@cisco.com> on 2016-01-07
Reviewed by Benjamin Poulain.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::memoryFence):
(JSC::MacroAssemblerMIPS::abortWithReason):
(JSC::MacroAssemblerMIPS::readCallTarget):

7:31 AM Changeset in webkit [194698] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Add new or32 implementation to MacroAssemblerARM after r194613
https://bugs.webkit.org/show_bug.cgi?id=152784

Reviewed by Benjamin Poulain.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::or32):

7:00 AM Changeset in webkit [194697] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

[SOUP] Consider reducing max simultaneous connections
https://bugs.webkit.org/show_bug.cgi?id=137282

Reviewed by Carlos Garcia Campos.

Reduce max simultaneous connections from 35 to 17, because (a) all major browsers except
Chrome use 17, and (b) Chrome uses 10. The only reason we previously used 35 was that other
browsers were using 35 at the time.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession):

6:00 AM Changeset in webkit [194696] by youenn.fablet@crf.canon.fr
  • 4 edits
    1 add in trunk/Tools

[buildbot] clean-build script should remove untracked files and revert local changes too
https://bugs.webkit.org/show_bug.cgi?id=142400

Reviewed by Ryosuke Niwa.

This patch cleans the WebKit folder by reverting tracked files changes and deleting SCM untracked files, including SCM ignored files.
A helper routine SCM.discard_untracked_files is added for that purpose.

  • BuildSlaveSupport/clean-build:

(main): Making call to Scripts/clean-webkit

  • Scripts/clean-webkit: Added.

(main): Revert changes and delete untracked files.

  • Scripts/webkitpy/common/checkout/scm/scm.py:

(SCM.discard_untracked_files): Helper function to discard untracked files or folders found by SCM.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(SCMTest._shared_test_discard_untracked_files):
(test_discard_untracked_files): Tests that untracked file and untracked folder get discarded correctly.

3:25 AM WebKitGTK/Gardening/Calendar edited by mario@webkit.org
(diff)
12:17 AM Changeset in webkit [194695] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebKit2

Merge r194557. rdar://problem/24042908

12:17 AM Changeset in webkit [194694] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebKit2

Merge r194624. rdar://problem/24074336

12:16 AM Changeset in webkit [194693] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r194485. rdar://problem/23978916

12:16 AM Changeset in webkit [194692] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r194662. rdar://problem/24043055

12:16 AM Changeset in webkit [194691] by Antti Koivisto
  • 12 edits
    2 moves in trunk/Source/WebCore

Factor free standing tree style resolve functions into a class
https://bugs.webkit.org/show_bug.cgi?id=152786

Reviewed by Simon Fraser.

Factor the free standing tree style resolve functions into a class that can keep state.
Style::TreeResolver instances resolve a single tree scope. It is instantiated for resolving
the document style and then recursively for each encountered shadow tree.

This will enable new features and optimizations later.

  • dom/Document.cpp:

(WebCore::Document::recalcStyle):

Move the root style computation code back to Document. It fits better here and avoid some
awkwardness with style resolver construction order.

  • style/StyleResolveTree.cpp:

(WebCore::Style::TreeResolver::TreeResolver):

TreeResolver knows the current tree context and the StyleResolver to use for it.
Switch the functions to use these instead of recomputing them repeatedly.

(WebCore::Style::shouldCreateRenderer):
(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::moveToFlowThreadIfNeeded):
(WebCore::Style::TreeResolver::createRenderer):
(WebCore::Style::updateTextRendererAfterContentChange):
(WebCore::Style::TreeResolver::createRenderTreeForChildren):
(WebCore::Style::TreeResolver::createRenderTreeForShadowRoot):
(WebCore::Style::needsPseudoElement):
(WebCore::Style::TreeResolver::createRenderTreeForBeforeOrAfterPseudoElement):
(WebCore::Style::TreeResolver::createRenderTreeForSlotAssignees):
(WebCore::Style::TreeResolver::createRenderTreeRecursively):

Rename to reduce the use of confusing "attach" terminology.

(WebCore::Style::pseudoStyleCacheIsInvalid):
(WebCore::Style::TreeResolver::resolveLocally):
(WebCore::Style::resolveTextNode):
(WebCore::Style::TreeResolver::resolveChildAtShadowBoundary):
(WebCore::Style::TreeResolver::resolveShadowTree):
(WebCore::Style::TreeResolver::resolveBeforeOrAfterPseudoElement):
(WebCore::Style::TreeResolver::resolveChildren):
(WebCore::Style::TreeResolver::resolveSlotAssignees):
(WebCore::Style::TreeResolver::resolveRecursively):
(WebCore::Style::TreeResolver::resolve):
(WebCore::Style::detachRenderTree):
(WebCore::Style::styleForElement): Deleted.
(WebCore::Style::createRendererIfNeeded): Deleted.
(WebCore::Style::attachChildren): Deleted.
(WebCore::Style::attachShadowRoot): Deleted.
(WebCore::Style::attachBeforeOrAfterPseudoElementIfNeeded): Deleted.
(WebCore::Style::attachSlotAssignees): Deleted.
(WebCore::Style::attachRenderTree): Deleted.
(WebCore::Style::resolveLocal): Deleted.
(WebCore::Style::resolveChildAtShadowBoundary): Deleted.
(WebCore::Style::resolveShadowTree): Deleted.
(WebCore::Style::updateBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::resolveChildren): Deleted.
(WebCore::Style::resolveSlotAssignees): Deleted.
(WebCore::Style::resolveTree): Deleted.

  • style/StyleResolveTree.h:
12:14 AM Changeset in webkit [194690] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

AX: AXObjectCacheMac is passing WebCore enum values directly to VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=151755

Patch by Doug Russell <d_russell@apple.com> on 2016-01-07
Reviewed by Chris Fleizach.

No new tests, covered by existing tests.

  • accessibility/mac/AXObjectCacheMac.mm:

(platformChangeTypeForWebCoreChangeType):
(platformEditTypeForWebCoreEditType):
(platformDirectionForWebCoreDirection):
(platformGranularityForWebCoreGranularity):
(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::textReplacementChangeDictionary):
(WebCore::AXObjectCache::postTextReplacementPlatformNotification):

Note: See TracTimeline for information about the timeline view.