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

Timeline



Oct 15, 2017:

11:25 PM Changeset in webkit [223336] by Nikita Vasilyev
  • 5 edits
    2 adds in trunk

Web Inspector: Modify CSS number values with up key and down key
https://bugs.webkit.org/show_bug.cgi?id=170779
<rdar://problem/33170633>

Reviewed by Matt Baker.

Source/WebInspectorUI:

Up key increments a number, Down key decrements it.

Holding modifier keys changes the step value:

  • Option modifies the value by 0.1
  • Shift modifies the value by 10
  • Command modifies the value by 100
  • UserInterface/Test.html:
  • UserInterface/Views/EditingSupport.js:

(WI.incrementElementValue):
Abstract away incrementElementValue into a public method.

  • UserInterface/Views/SpreadsheetTextField.js:

(WI.SpreadsheetTextField.prototype._handleKeyDown):

LayoutTests:

Add tests for WI.incrementElementValue defined in WebInspectorUI/UserInterface/Views/EditingSupport.js.

  • inspector/unit-tests/editing-support-expected.txt: Added.
  • inspector/unit-tests/editing-support.html: Added.
9:46 PM Changeset in webkit [223335] by webkit@devinrousso.com
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: show warning when recorded Canvas action caused no visual change
https://bugs.webkit.org/show_bug.cgi?id=175282

Reviewed by Joseph Pecoraro.

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

(WI.RecordingAction):
(WI.RecordingAction.prototype.get valid):
(WI.RecordingAction.prototype.get hasVisibleEffect):
(WI.RecordingAction.prototype.markInvalid):
(WI.RecordingAction.prototype.apply):
(WI.RecordingAction.prototype.async._swizzle):
If the selected action is visual, save a copy of the preview canvas' dataURL before
applying the action and compare it to its dataURL after. If there is no difference, the
action had no visual effect.

  • UserInterface/Models/Recording.js:

(WI.Recording):

  • UserInterface/Views/RecordingActionTreeElement.js:

(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement.prototype._handleValidityChanged):
(WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged):

  • UserInterface/Views/RecordingActionTreeElement.css:

(.item.action.visual.no-visible-effect:not(.invalid) > .status > .warning):

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView):
(WI.RecordingContentView.prototype.async._generateContentCanvas2D):
(WI.RecordingContentView.prototype._applyAction): Deleted.

9:16 PM Changeset in webkit [223334] by tpopela@redhat.com
  • 2 edits in trunk/Source/WebCore

DataTransfer.cpp triggers -Wunused-but-set-variable
https://bugs.webkit.org/show_bug.cgi?id=178209

Reviewed by Wenson Hsieh.

Use the ASSERT_UNUSED to silence it.

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::filesFromPasteboardAndItemList const):

8:42 PM Changeset in webkit [223333] by Nikita Vasilyev
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: [PARITY] Styles Redesign: clicking on the go-to arrow in Computed tab should work
https://bugs.webkit.org/show_bug.cgi?id=178286
<rdar://problem/34986379>

Reviewed by Joseph Pecoraro.

Highlight the matching property using a yellow background and focus on the property value
if the property is editable (e.g., not a User Agent style).

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor):
(.spreadsheet-style-declaration-editor .property):
Move left padding to the property element so there's no awkward gap on the left side
when the property is highlighted.

(.spreadsheet-style-declaration-editor .property.highlighted):
(@keyframes style-property-highlight):
Use the same animation duration as we used in .text-editor > .CodeMirror .highlighted.
The highlight color was changed from light blue to yellow.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:

(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):
Use the same logic as in WI.CSSStyleDeclarationTextEditor.prototype.highlightProperty
to find matching style property to highlight.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.highlightProperty):
Use the same logic as in WI.CSSStyleDeclarationSection.prototype.highlightProperty.

  • UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:

(WI.SpreadsheetRulesStyleDetailsPanel.prototype.scrollToSectionAndHighlightProperty):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.nodeStylesRefreshed):
Copied from WI.RulesStyleDetailsPanel.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.detached):
(WI.SpreadsheetStyleProperty.prototype.highlight):

7:59 PM Changeset in webkit [223332] by commit-queue@webkit.org
  • 6 edits
    2 copies
    1 move in trunk/Source/WebCore

[Settings] Split non-macro generated parts of Settings into SettingsBase base class
https://bugs.webkit.org/show_bug.cgi?id=178321

Patch by Sam Weinig <sam@webkit.org> on 2017-10-15
Reviewed by Darin Adler.

Working towards getting generated Settings working again, but in smaller patches, split
non-generated part off into SettingsBase as a first step.

One function, effectiveFrameFlattening(), needs to remain in Settings for now, as it directly
references a macro generated function, frameFlattening().

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/Page.h:
  • page/Settings.cpp:
  • page/Settings.h:
  • page/SettingsBase.h: Copied from Source/WebCore/page/Settings.h.
  • page/cocoa/SettingsBaseCocoa.mm: Copied from Source/WebCore/page/cocoa/SettingsCocoa.mm.
  • page/cocoa/SettingsCocoa.mm: Removed.
6:55 PM Changeset in webkit [223331] by Yusuke Suzuki
  • 13 edits in trunk/Source

[JSC] Perform module specifier validation at parsing time
https://bugs.webkit.org/show_bug.cgi?id=178256

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch make module loader's resolve operation synchronous. And we validate
module's requested module names when instantiating the module instead of satisfying
module's dependencies. This change is not observable to users. But this is precise
to the spec and this optimizes & simplifies the current module loader a bit by
reducing object allocations.

Previously, we have an object called pair in the module loader. This is pair of
module's name and module's record. And we use it to link one module to dependent
modules. Now, it is replaced with module's registry entry.

We also change our loader functions to take a registry entry instead of a module key.
Previous design is due to the consideration that these APIs may be exposed to users
in whatwg/loader spec. However, this won't happen. This change removes unnecessary
repeatedly hash map lookups.

  • builtins/ModuleLoaderPrototype.js:

(globalPrivate.newRegistryEntry):
(requestFetch):
(requestInstantiate):
(requestSatisfy):
(link):
(moduleEvaluation):
(loadModule):

  • jsc.cpp:

(GlobalObject::moduleLoaderResolve):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::finishCreation):
(JSC::AbstractModuleRecord::hostResolveImportedModule):

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

(JSC::JSModuleLoader::resolveSync):
(JSC::JSModuleLoader::resolve):

  • runtime/JSModuleLoader.h:
  • runtime/ModuleLoaderPrototype.cpp:

(JSC::moduleLoaderPrototypeResolveSync):

Source/WebCore:

No behavior change in the current implementation.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::moduleLoaderResolve):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::resolve):

  • bindings/js/ScriptModuleLoader.h:
2:58 PM Changeset in webkit [223330] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

DOMTokenList shouldn't add empty attributes
https://bugs.webkit.org/show_bug.cgi?id=178280
<rdar://problem/34987431>

Reviewed by Ryosuke Niwa.

Follow-up to r223306, reverse the check conditions to avoid attribute
lookup when possible. Also use m_tokens instead of tokens() to avoid
unnecessary branch.

  • html/DOMTokenList.cpp:

(WebCore::DOMTokenList::updateAssociatedAttributeFromTokens):

1:13 PM Changeset in webkit [223329] by Darin Adler
  • 7 edits
    1 add in trunk

UTF-8 decoding produces one replacement character per byte; Encoding standard requires one replacement character per illegal sequence instead
https://bugs.webkit.org/show_bug.cgi?id=178207

Reviewed by Sam Weinig.

Source/WebCore:

  • platform/text/TextCodecUTF8.cpp:

(WebCore::TextCodecUTF8::create): Deleted. Use a lambda instead.
(WebCore::TextCodecUTF8::registerCodecs): Use a lambda.
(WebCore::nonASCIISequenceLength): Changed to return 0 instead of 2 for the range 80-C1 since
none of those are valid sequence leading characters.
(WebCore::decodeNonASCIISequence): Changed the length argument to be in/out so the caller
knows how much of the sequence we decoded for failure cases. Simplified the length 2 section.
(WebCore::TextCodecUTF8::handleError): Deleted.
(WebCore::TextCodecUTF8::handlePartialSequence): Changed this into a pair of plain functions
rather than two template function specializations since the two functions are rather different.
For the one-byte version, got rid of the unused arguments. For the two-byte version, got rid
of the ignored return value, stopped using the handleError function since each error case
needs to be handled differently. In each error case consume the entire incorrect sequence
instead of just one byte.
(WebCore::TextCodecUTF8::decode): Updated for the above change, and changed the non-partial
incorrect sequence to consume the entire incorrect sequence instead of just one byte. Also
use WTF prefixes explicitly so we don't have to do "using namespace".
(WebCore::TextCodecUTF8::encode): Got rid of unneeded type punning, and added some inline
capacity to save one memory allocation when encoding shorter strings.

  • platform/text/TextCodecUTF8.h: Use pragma once. Intialize m_partialSequenceSize where it

is defined and let the compiler generate the constructor. Updated for the changes above.

  • platform/text/TextEncoding.h: Export a constructor now used by a unit test.
  • platform/text/TextEncodingRegistry.h: Export newTextCodec, now used by a unit test.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added test.
  • TestWebKitAPI/Tests/WebCore/TextCodec.cpp: Added.

(TestWebKitAPI::decodeHexTestBytes): Decodes a string so we can write readable tests.
(TestWebKitAPI::escapeNonPrintableASCIICharacters): Encodes a string so we can write readable tests.
(TestWebKitAPI::TEST): Added some UTF-8 tests and UTF-8 invalid sequences tests.
Would be smart to add more tests for other cases, exercising the fast ASCII loop for example, and
other encodings.

6:35 AM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)

Oct 14, 2017:

6:45 PM Changeset in webkit [223328] by commit-queue@webkit.org
  • 10 edits
    3 deletes in trunk

Remove all Web Animations code
https://bugs.webkit.org/show_bug.cgi?id=178273

Patch by Antoine Quint <Antoine Quint> on 2017-10-14
Reviewed by Sam Weinig.

Source/WebCore:

We remove all existing code related to Web Animations which does not include any functionality,
only stubs. This leaves the build and runtime flags, we'll start a complete implementation from
scratch.

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/Animatable.idl: Removed.
  • animation/AnimationEffect.cpp: Removed.
  • animation/AnimationEffect.h: Removed.
  • animation/AnimationEffect.idl: Removed.
  • animation/AnimationTimeline.cpp: Removed.
  • animation/AnimationTimeline.h: Removed.
  • animation/AnimationTimeline.idl: Removed.
  • animation/DocumentAnimation.cpp: Removed.
  • animation/DocumentAnimation.h: Removed.
  • animation/DocumentAnimation.idl: Removed.
  • animation/DocumentTimeline.cpp: Removed.
  • animation/DocumentTimeline.h: Removed.
  • animation/DocumentTimeline.idl: Removed.
  • animation/KeyframeEffect.cpp: Removed.
  • animation/KeyframeEffect.h: Removed.
  • animation/KeyframeEffect.idl: Removed.
  • animation/WebAnimation.cpp: Removed.
  • animation/WebAnimation.h: Removed.
  • animation/WebAnimation.idl: Removed.
  • bindings/js/JSAnimationTimelineCustom.cpp: Removed.
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/WebCoreBuiltinNames.h:
  • dom/Element.cpp:

(WebCore::Element::getAnimations): Deleted.

  • dom/Element.h:
  • dom/Element.idl:

LayoutTests:

Remove the only existing Web Animations test.

  • webanimations/Document-expected.txt: Removed.
  • webanimations/Document.html: Removed.
6:28 PM Changeset in webkit [223327] by commit-queue@webkit.org
  • 246 edits
    2 copies
    8 moves
    10 adds
    4 deletes in trunk/LayoutTests

Resync tests up to c1716b039411090428e7073158b1aea081dafe71
https://bugs.webkit.org/show_bug.cgi?id=178241

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-14
Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • resources/TestRepositories:
  • resources/resource-files.json:
  • web-platform-tests/IndexedDB/idb-binary-key-detached.htm:
  • web-platform-tests/IndexedDB/keypath-exceptions.htm:
  • web-platform-tests/WebCryptoAPI/digest/digest.js:

(run_test.):

  • web-platform-tests/XMLHttpRequest/abort-after-stop-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/abort-after-stop.htm: Removed.
  • web-platform-tests/XMLHttpRequest/event-error-order.sub-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/event-error-order.sub.html: Removed.
  • web-platform-tests/XMLHttpRequest/event-timeout-order-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/event-timeout-order.htm: Removed.
  • web-platform-tests/XMLHttpRequest/open-url-worker-origin-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/open-url-worker-origin.htm: Removed.
  • web-platform-tests/XMLHttpRequest/responsetype-expected.txt:
  • web-platform-tests/XMLHttpRequest/send-after-setting-document-domain-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/send-after-setting-document-domain.htm: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-basic-cors-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-basic-cors-not-enabled-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-basic-cors-not-enabled.htm: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-basic-cors.htm: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-basic-repeat-no-args-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-basic-repeat-no-args.htm: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-basic-setrequestheader.htm: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-basic.htm: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-competing-names-passwords-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/send-authentication-competing-names-passwords.htm: Removed.
  • web-platform-tests/XMLHttpRequest/send-entity-body-basic-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/send-entity-body-basic.htm: Removed.
  • web-platform-tests/XMLHttpRequest/send-network-error-async-events.sub-expected.txt: Removed.
  • web-platform-tests/XMLHttpRequest/send-network-error-async-events.sub.htm: Removed.
  • web-platform-tests/XMLHttpRequest/timeout-sync-expected.txt:
  • web-platform-tests/XMLHttpRequest/w3c-import.log:
  • web-platform-tests/background-fetch/interfaces-expected.txt:
  • web-platform-tests/background-fetch/interfaces.idl:
  • web-platform-tests/background-fetch/interfaces.worker-expected.txt:
  • web-platform-tests/background-fetch/interfaces.worker.js:
  • web-platform-tests/beacon/headers/header-content-type-expected.txt:
  • web-platform-tests/common/vendor-prefix.js: Removed.
  • web-platform-tests/common/w3c-import.log:
  • web-platform-tests/css/css-grid-1/abspos/w3c-import.log:
  • web-platform-tests/css/css-grid-1/support/w3c-import.log:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-image-threshold-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-image-threshold-001.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-image-threshold-002.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-image-threshold-003.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-margin-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-margin-001.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-margin-002.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-margin-003.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-margin-004.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-margin-005.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-box-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-001.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-002.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-003.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-004.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-005.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-006.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-007.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-008.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-009.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-computed-shape-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-computed-shape-001.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-001.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-002.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-003.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-004.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-005.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-006.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-007.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-008.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-009.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-001.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-002.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-003.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-004.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-005.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-006.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-007.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-inset-009.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-polygon-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-polygon-001.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-polygon-002.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-polygon-003.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-polygon-004.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-polygon-005.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-arguments-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-arguments-001.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-box-pair-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-inherit-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-initial-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-none-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/shape-outside-shape-notation-000.html:
  • web-platform-tests/css/css-shapes-1/shape-outside/values/support/parsing-utils.js:

(convertToPx):
(each):
(setupFonts):

  • web-platform-tests/css/css-shapes-1/spec-examples/shape-outside-012.html:
  • web-platform-tests/css/css-shapes-1/w3c-import.log:
  • web-platform-tests/css/css-ui-3/cursor-image-005-nfs.html:
  • web-platform-tests/css/selectors4/w3c-import.log:
  • web-platform-tests/cssom/OWNERS:
  • web-platform-tests/cssom/getComputedStyle-pseudo-expected.txt:
  • web-platform-tests/cssom/getComputedStyle-pseudo.html:
  • web-platform-tests/cssom/style-sheet-interfaces-001-expected.txt:
  • web-platform-tests/cssom/style-sheet-interfaces-001.html:
  • web-platform-tests/cssom/w3c-import.log:
  • web-platform-tests/custom-elements/Document-createElement-expected.txt:
  • web-platform-tests/custom-elements/Document-createElement.html:
  • web-platform-tests/custom-elements/parser/parser-fallsback-to-unknown-element-expected.txt:
  • web-platform-tests/custom-elements/w3c-import.log:
  • web-platform-tests/dom/events/Event-timestamp-safe-resolution.html:
  • web-platform-tests/dom/nodes/DOMImplementation-createDocument.html:
  • web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument-expected.txt:
  • web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.html:
  • web-platform-tests/dom/nodes/Document-constructor.html:
  • web-platform-tests/dom/nodes/Element-matches-expected.txt:
  • web-platform-tests/dom/nodes/Element-webkitMatchesSelector-expected.txt:
  • web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
  • web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt:
  • web-platform-tests/dom/nodes/selectors.js:
  • web-platform-tests/eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm:
  • web-platform-tests/eventsource/eventsource-constructor-non-same-origin-expected.txt:
  • web-platform-tests/eventsource/eventsource-constructor-non-same-origin.htm:
  • web-platform-tests/eventsource/resources/last-event-id.py:

(main):

  • web-platform-tests/eventsource/shared-worker/eventsource-constructor-non-same-origin-expected.txt:
  • web-platform-tests/eventsource/shared-worker/eventsource-constructor-non-same-origin.htm:
  • web-platform-tests/fetch/api/basic/integrity-expected.txt:
  • web-platform-tests/fetch/api/basic/integrity-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/integrity.js:

(integrity):

  • web-platform-tests/fetch/api/headers/headers-combine-expected.txt:
  • web-platform-tests/fetch/api/headers/headers-combine.html:
  • web-platform-tests/fetch/api/request/request-error-expected.txt:
  • web-platform-tests/fetch/api/request/request-error.js:
  • web-platform-tests/fetch/api/request/request-headers-expected.txt:
  • web-platform-tests/fetch/api/request/request-headers.html:
  • web-platform-tests/fetch/api/request/request-idl-expected.txt:
  • web-platform-tests/fetch/api/request/request-idl.html:
  • web-platform-tests/fetch/api/request/request-structure-expected.txt:
  • web-platform-tests/fetch/api/request/request-structure.html:
  • web-platform-tests/fetch/api/request/w3c-import.log:
  • web-platform-tests/fetch/api/response/response-clone-expected.txt:
  • web-platform-tests/fetch/api/response/response-init-001-expected.txt:
  • web-platform-tests/fetch/api/response/response-init-001.html:
  • web-platform-tests/fetch/api/response/w3c-import.log:
  • web-platform-tests/fonts/Ahem.ttf:
  • web-platform-tests/hr-time/idlharness-expected.txt:
  • web-platform-tests/hr-time/idlharness.html:
  • web-platform-tests/html/README.md:
  • web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log:
  • web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/w3c-import.log:
  • web-platform-tests/html/browsers/origin/origin-of-data-document-expected.txt:
  • web-platform-tests/html/dom/interfaces.html:
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_canplay.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_canplay_noautoplay.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_canplaythrough.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_canplaythrough_noautoplay.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_loadeddata.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_loadeddata_noautoplay.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_loadedmetadata.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_loadedmetadata_noautoplay.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_order_canplay_canplaythrough.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_order_canplay_playing.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_order_loadedmetadata_loadeddata.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_order_loadstart_progress.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_pause.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_play.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_playing.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_progress.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_progress_noautoplay.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/historical-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/historical.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/srclang-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/language-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/paused_false_during_play.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/readyState_during_canplay.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/readyState_during_canplaythrough.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/readyState_during_loadeddata.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/readyState_during_loadedmetadata.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/readyState_during_playing.html:
  • web-platform-tests/html/semantics/embedded-content/media-elements/video_008.htm:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.cross-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.cross.html:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.redirect-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.redirect.html:
  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/blank.htm:
  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/support/w3c-import.log:
  • web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/form-submission-0/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-button-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-fieldset-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-form-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-input-element/w3c-import.log:
  • web-platform-tests/html/semantics/forms/the-progress-element/progress-expected.txt:
  • web-platform-tests/html/semantics/forms/the-progress-element/w3c-import.log:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:
  • web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/w3c-import.log:
  • web-platform-tests/html/syntax/serializing-html-fragments/serializing-expected.txt:
  • web-platform-tests/html/syntax/serializing-html-fragments/serializing.html:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-parse-error-expected.txt:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt:
  • web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-throw-expected.txt:
  • web-platform-tests/lint.whitelist:
  • web-platform-tests/mediacapture-fromelement/capture.html:
  • web-platform-tests/mediacapture-fromelement/creation.html:
  • web-platform-tests/mediacapture-fromelement/ended.html:
  • web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html:
  • web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html:
  • web-platform-tests/resource-timing/idlharness-expected.txt:
  • web-platform-tests/resource-timing/idlharness.html:
  • web-platform-tests/resources/idlharness.js:

(IdlInterface.prototype.test_to_json_operation):

  • web-platform-tests/resources/test/tests/api-tests-1.html:
  • web-platform-tests/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html:
  • web-platform-tests/resources/testharness.js:
  • web-platform-tests/service-workers/service-worker/fetch-event-redirect.https.html:
  • web-platform-tests/service-workers/service-worker/fetch-frame-resource.https.html:
  • web-platform-tests/service-workers/service-worker/fetch-request-xhr.https.html:
  • web-platform-tests/service-workers/service-worker/navigation-preload/resources/redirect-scope.py:

(main):

  • web-platform-tests/service-workers/service-worker/resources/bytecheck-worker-imported-script.py:

(main):

  • web-platform-tests/service-workers/service-worker/resources/bytecheck-worker.py:

(main):

  • web-platform-tests/service-workers/service-worker/resources/fetch-event-redirect-iframe.html: Removed.
  • web-platform-tests/service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html:
  • web-platform-tests/service-workers/service-worker/resources/navigation-redirect-out-scope.py:

(main):

  • web-platform-tests/service-workers/service-worker/resources/navigation-redirect-scope1.py:

(main):

  • web-platform-tests/service-workers/service-worker/resources/navigation-redirect-scope2.py:

(main):

  • web-platform-tests/service-workers/service-worker/resources/update-max-aged-worker-imported-script.py:

(main):

  • web-platform-tests/service-workers/service-worker/resources/update-max-aged-worker.py:

(main):

  • web-platform-tests/service-workers/service-worker/resources/w3c-import.log:
  • web-platform-tests/service-workers/service-worker/w3c-import.log:
  • web-platform-tests/shadow-dom/Extensions-to-Event-Interface-expected.txt:
  • web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html:
  • web-platform-tests/shadow-dom/event-inside-shadow-tree-expected.txt:
  • web-platform-tests/shadow-dom/event-with-related-target.html:
  • web-platform-tests/shadow-dom/leaktests/get-elements-expected.txt:
  • web-platform-tests/shadow-dom/resources/event-path-test-helpers.js:

(dispatchEventWithEventLog):

  • web-platform-tests/shadow-dom/slotchange-event-expected.txt:
  • web-platform-tests/shadow-dom/w3c-import.log:
  • web-platform-tests/streams/piping/general-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/general.js:

(promise_test):

  • web-platform-tests/streams/readable-byte-streams/w3c-import.log:
  • web-platform-tests/streams/readable-streams/pipe-through-expected.txt: Removed.
  • web-platform-tests/tools/manifest/catalog/xhtml.dtd:
  • web-platform-tests/tools/manifest/sourcefile.py:

(SourceFile.references):
(SourceFile.spec_links):

  • web-platform-tests/tools/manifest/tests/test_sourcefile.py:

(test_relpath_normalized):
(test_reftest_url_whitespace):
(test_spec_links_whitespace):

  • web-platform-tests/tools/wptserve/tests/functional/test_handlers.py:

(TestDirectoryHandler.test_subdirectory_no_trailing_slash):

  • web-platform-tests/tools/wptserve/wptserve/handlers.py:

(DirectoryHandler.call):

  • web-platform-tests/update-built-tests.sh:
  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/urltestdata.json:
  • web-platform-tests/webrtc/RTCCertificate.html:
  • web-platform-tests/webrtc/RTCConfiguration-iceServers-expected.txt:
  • web-platform-tests/webrtc/RTCDTMFSender-insertDTMF.html: Removed.
  • web-platform-tests/webrtc/RTCDTMFSender-ontonechange-long.html: Removed.
  • web-platform-tests/webrtc/RTCDTMFSender-ontonechange.html: Removed.
  • web-platform-tests/webrtc/RTCPeerConnection-addTrack.html: Removed.
  • web-platform-tests/webrtc/RTCPeerConnection-getStats.html: Removed.
  • web-platform-tests/webrtc/RTCPeerConnection-ontrack.html: Removed.
  • web-platform-tests/webrtc/RTCPeerConnection-removeTrack.html: Removed.
  • web-platform-tests/webrtc/RTCRtpReceiver-getContributingSources.html: Removed.
  • web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.html: Removed.
  • web-platform-tests/webrtc/historical-expected.txt:
  • web-platform-tests/webrtc/historical.html:
  • web-platform-tests/webrtc/simplecall-expected.txt:
  • web-platform-tests/webrtc/simplecall.html:
  • web-platform-tests/webrtc/w3c-import.log:

LayoutTests:

Rebasing expectations.

  • TestExpectations: Skipping unsupported tests.
  • http/wpt/fetch/request-clone-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/beacon/headers/header-content-type-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/background-fetch/interfaces-expected.txt:
  • tests-options.json:
5:24 PM Changeset in webkit [223326] by Adrian Perez de Castro
  • 2 edits in trunk/Tools

[WPE] JHBuild build directory DependenciesWPE/Build is not removed by update-webkit-libs-jhbuild
https://bugs.webkit.org/show_bug.cgi?id=178212

Reviewed by Michael Catanzaro.

  • Scripts/update-webkit-libs-jhbuild:

(cleanJhbuild): The WPE JHBuild also uses a separate "Build" subdirectory, so do not skip
cleaning it when "--wpe" is passed to the script.

4:57 PM Changeset in webkit [223325] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Implement Cache API support for WPE/GTK
https://bugs.webkit.org/show_bug.cgi?id=178316

Unreviewed.

Skip tests until feature is implemented.

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-14

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
4:55 PM Changeset in webkit [223324] by commit-queue@webkit.org
  • 7 edits in trunk/LayoutTests

WebRTC test gardening
https://bugs.webkit.org/show_bug.cgi?id=178317

Unreviewed.

Updating expectations according dashboard.
Skipping tests for platforms that do not support WebRTC.

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-14

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/win/TestExpectations:
12:18 PM Changeset in webkit [223323] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION (r223310): Web Inspector: Class list container is transparent and unreadable
https://bugs.webkit.org/show_bug.cgi?id=178311

Reviewed by Devin Rousso.

  • UserInterface/Views/CSSStyleDetailsSidebarPanel.css:

(.sidebar > .panel.details.css-style > .content ~ .class-list-container):
Fix 1px hole below the class container.

12:05 PM Changeset in webkit [223322] by Matt Baker
  • 8 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas tab: recordings should have a unique name
https://bugs.webkit.org/show_bug.cgi?id=178188
<rdar://problem/34943364>

Reviewed by Devin Rousso.

  • Localizations/en.lproj/localizedStrings.js:

New format string "Recording %d".

  • UserInterface/Base/FileUtilities.js:

(WI.loadDataFromFile):
Pass chosen filename to callback.

  • UserInterface/Controllers/CanvasManager.js:

(WI.CanvasManager.prototype.recordingFinished):
Create a unique name for the recording.

  • UserInterface/Models/Recording.js:

(WI.Recording):
(WI.Recording.fromPayload):
(WI.Recording.prototype.get displayName):
(WI.Recording.prototype.createDisplayName):

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView.prototype.get saveData):
Use encodeURI so that special characters can be used in filenames, and
to be consistent with other saveData implementations.

  • UserInterface/Views/RecordingNavigationSidebarPanel.js:

(WI.RecordingNavigationSidebarPanel.prototype.set recording):
(WI.RecordingNavigationSidebarPanel.prototype._importNavigationItemClicked):
Drive-by fix: wait until actions are resolved before updating UI.

  • UserInterface/Views/RecordingTabContentView.js:

(WI.RecordingTabContentView.prototype._navigationSidebarImport):
Try to use the imported filename as the recording name. If the name
collides with that of another imported recording, append a unique suffix.

11:56 AM Changeset in webkit [223321] by webkit@devinrousso.com
  • 16 edits
    2 adds in trunk

Web Inspector: provide a way to enable/disable event listeners
https://bugs.webkit.org/show_bug.cgi?id=177451

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add setEventListenerDisabled command that enables/disables a specific event listener
during event dispatch. When a disabled event listener is fired, the listener's callback will
not be called.

Source/WebCore:

Test: inspector/dom/setEventListenerDisabled.html

  • dom/EventTarget.cpp:

(WebCore::EventTarget::fireEventListeners):
Add InspectorInstrumentation call to isEventListenerDisabled. If true, the event listener's
callback will not be called.

  • inspector/InspectorDOMAgent.h:
  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::discardBindings):
(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::setEventListenerDisabled):
(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::willRemoveEventListener):
(WebCore::InspectorDOMAgent::isEventListenerDisabled):
Introduce a mapping of EventListener* to InspectorEventListener, a struct for uniquely
identifying event listeners so they can be referenced from the frontend. We only add items
to this mapping when getEventListenersForNode is called, as that is when EventListener
data is sent to the frontend. This allows us to defer creating an Inspector "mirror" object
for each EventListener until it is needed. Items are removed whenever an event listener is
removed or when the document changes.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::isEventListenerDisabled):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::willRemoveEventListenerImpl):
(WebCore::InspectorInstrumentation::isEventListenerDisabledImpl):
Pass additional parameters to InspectorDOMAgent so it can determine if the event listener
actually exists. If not, don't dispatch an event to the frontend as nothing will change.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Controllers/DOMTreeManager.js:

(WI.DOMTreeManager.prototype.setEventListenerDisabled):

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WI.DOMNodeDetailsSidebarPanel.prototype.attached):
(WI.DOMNodeDetailsSidebarPanel.prototype.detached):
(WI.DOMNodeDetailsSidebarPanel.prototype._eventListenersChanged):
(WI.DOMNodeDetailsSidebarPanel.prototype.addEventListeners): Deleted.
(WI.DOMNodeDetailsSidebarPanel.prototype.removeEventListeners): Deleted.
Listen for WI.DOMNode.Event.EventListenersChanged on all instances of WI.DOMNode, since we
will still want to refresh the event listeners section in the event that an event listener
is removed from a parent node.

  • UserInterface/Views/EventListenerSectionGroup.js:

(WI.EventListenerSectionGroup):
(WI.EventListenerSectionGroup.prototype._eventText):
(WI.EventListenerSectionGroup.prototype._nodeTextOrLink):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleElement):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleElement.updateTitle):

  • UserInterface/Views/EventListenerSectionGroup.css:

(.event-listener-section > .content input[type="checkbox"]):

  • UserInterface/Views/DetailsSectionSimpleRow.js:

(WI.DetailsSectionSimpleRow.prototype.get label):
(WI.DetailsSectionSimpleRow.prototype.set label):

LayoutTests:

  • inspector/dom/setEventListenerDisabled-expected.txt: Added.
  • inspector/dom/setEventListenerDisabled.html: Added.
9:56 AM Changeset in webkit [223320] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark fast/frames/frame-unload-navigate-and-setTimeout-assert-fail.html as a flaky crash on Windows.
https://bugs.webkit.org/show_bug.cgi?id=178309

Unreviewed test gardening.

  • platform/win/TestExpectations:
9:14 AM Changeset in webkit [223319] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark fast/images/animated-gif-scrolling-crash.html as flaky on Windows.
https://bugs.webkit.org/show_bug.cgi?id=178307

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:35 AM Changeset in webkit [223318] by Yusuke Suzuki
  • 35 edits
    2 adds in trunk

Reland "Add Above/Below comparisons for UInt32 patterns"
https://bugs.webkit.org/show_bug.cgi?id=177281

Reviewed by Saam Barati.

JSTests:

  • stress/uint32-comparison-jump.js: Added.

(shouldBe):
(above):
(aboveOrEqual):
(below):
(belowOrEqual):
(notAbove):
(notAboveOrEqual):
(notBelow):
(notBelowOrEqual):

  • stress/uint32-comparison.js: Added.

(shouldBe):
(above):
(aboveOrEqual):
(below):
(belowOrEqual):
(aboveTest):
(aboveOrEqualTest):
(belowTest):
(belowOrEqualTest):

Source/JavaScriptCore:

We reland this patch without DFGStrengthReduction change to see what causes
regression in the iOS bot.

Sometimes, we would like to have UInt32 operations in JS. While VM does
not support UInt32 nicely, VM supports efficient Int32 operations. As long
as signedness does not matter, we can just perform Int32 operations instead
and recognize its bit pattern as UInt32.

But of course, some operations respect signedness. The most frequently
used one is comparison. Octane/zlib performs UInt32 comparison by performing
val >>> 0. It emits op_urshift and op_unsigned. op_urshift produces
UInt32 in Int32 form. And op_unsigned will generate Double value if
the generated Int32 is < 0 (which should be UInt32).

There is a chance for optimization. The given code pattern is the following.

op_unsigned(op_urshift(@1)) lessThan:< op_unsigned(op_urshift(@2))

This can be converted to the following.

op_urshift(@1) below:< op_urshift(@2)

The above conversion is nice since

  1. We can avoid op_unsigned. This could be unsignedness check in DFG. Since

this check depends on the value of Int32, dropping this check is not as easy as
removing Int32 edge filters.

  1. We can perform unsigned comparison in Int32 form. We do not need to convert

them to DoubleRep.

Since the above comparison exists in Octane/zlib's *super* hot path, dropping
op_unsigned offers huge win.

At first, my patch attempts to convert the above thing in DFG pipeline.
However it poses several problems.

  1. MovHint is not well removed. It makes UInt32ToNumber (which is for op_unsigned) live.
  2. UInt32ToNumber could cause an OSR exit. So if we have the following nodes,

2: UInt32ToNumber(@0)
3: MovHint(@2, xxx)
4: UInt32ToNumber(@1)
5: MovHint(@1, xxx)

we could drop @5's MovHint. But @3 is difficult since @4 can exit.

So, instead, we start introducing a simple optimization in the bytecode compiler.
It performs pattern matching for op_urshift and comparison to drop op_unsigned.
We adds op_below and op_above families to bytecodes. They only accept Int32 and
perform unsigned comparison.

This offers 4% performance improvement in Octane/zlib.

baseline patched

zlib x2 431.07483+-16.28434 414.33407+-9.38375 might be 1.0404x faster

  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumper<Block>::printCompareJump):
(JSC::BytecodeDumper<Block>::dumpBytecode):

  • bytecode/BytecodeDumper.h:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/Opcode.h:

(JSC::isBranch):

  • bytecode/PreciseJumpTargetsInlines.h:

(JSC::extractStoredJumpTargetsForBytecodeOffset):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitJumpIfTrue):
(JSC::BytecodeGenerator::emitJumpIfFalse):

  • bytecompiler/NodesCodegen.cpp:

(JSC::BinaryOpNode::emitBytecode):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCompareUnsigned):

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGValidate.cpp:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareBelow):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareBelowEq):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_below):
(JSC::JIT::emit_op_beloweq):
(JSC::JIT::emit_op_jbelow):
(JSC::JIT::emit_op_jbeloweq):
(JSC::JIT::emit_compareUnsignedAndJump):
(JSC::JIT::emit_compareUnsigned):

  • jit/JITArithmetic32_64.cpp:

(JSC::JIT::emit_compareUnsignedAndJump):
(JSC::JIT::emit_compareUnsigned):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • parser/Nodes.h:

(JSC::ExpressionNode::isBinaryOpNode const):

8:07 AM Changeset in webkit [223317] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Remove HashCountedSet's copyToVector functions
https://bugs.webkit.org/show_bug.cgi?id=178215

Patch by Sam Weinig <sam@webkit.org> on 2017-10-14
Reviewed by Daniel Bates.

Source/WebCore:

  • page/DeviceController.cpp:

(WebCore::DeviceController::dispatchDeviceEvent):
(WebCore::DeviceController::fireDeviceEvent):

Replace use of HashCountedSet's copyToVector functions with copyToVector(hashCountedSet.values()).

Source/WTF:

  • wtf/HashCountedSet.h:

(WTF::copyToVector): Deleted.

They are replaced by either copyToVector(hashCountedSet) or copyToVector(hashCountedSet.values())

Note: See TracTimeline for information about the timeline view.