Timeline
Jul 7, 2014:
- 10:56 PM Changeset in webkit [170880] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed. iOS build fix after r170871.
- rendering/RenderThemeIOS.mm:
(WebCore::adjustInputElementButtonStyle):
- 10:51 PM Changeset in webkit [170879] by
-
- 2 edits in trunk/Tools
Unreviewed build fix.
- WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj:
Make Common.cpp excluded from both 32-bit and 64-bit builds.
- 9:35 PM Changeset in webkit [170878] by
-
- 2 edits in trunk/Source/JavaScriptCore
Fix the build after r170876
Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-07-07
- assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::linkCode):
- 9:26 PM Changeset in webkit [170877] by
-
- 3 edits2 adds in trunk
Subpixel rendering: icloud.com password arrow has clipped circle at some window sizes.
https://bugs.webkit.org/show_bug.cgi?id=134710
<rdar://problem/17545291>
Reviewed by Simon Fraser.
Transparent layer clipping needs device pixel snapping.
Source/WebCore:
Test: fast/layers/wrong-clipping-semi-transparent-layer-on-subpixel-position.html
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::beginTransparencyLayers):
LayoutTests:
- fast/layers/wrong-clipping-semi-transparent-layer-on-subpixel-position-expected.html: Added.
- fast/layers/wrong-clipping-semi-transparent-layer-on-subpixel-position.html: Added.
- 9:23 PM Changeset in webkit [170876] by
-
- 35 edits in trunk/Source
LinkBuffer should not keep a reference to the MacroAssembler
https://bugs.webkit.org/show_bug.cgi?id=134668
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
In FTL, the LinkBuffer can outlive the MacroAssembler that was used for code generation.
When that happens, the pointer m_assembler points to released memory. That was not causing
issues because the attribute is not used after linking, but that was not particularily
future proof.
This patch refactors LinkBuffer to avoid any lifetime risk. The MacroAssembler is now passed
as a reference, it is used for linking but no reference is ever stored with the LinkBuffer.
While fixing the call sites to use a reference, I also discovered LinkBuffer.h was included
everywhere. I refactored some #include to avoid that.
- assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::linkCode):
- assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
- bytecode/Watchpoint.cpp:
- dfg/DFGDisassembler.cpp:
- dfg/DFGDisassembler.h:
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::linkFunction):
- dfg/DFGOSRExitCompiler.cpp:
- dfg/DFGPlan.cpp:
- dfg/DFGThunks.cpp:
(JSC::DFG::osrExitGenerationThunkGenerator):
(JSC::DFG::osrEntryThunkGenerator):
- ftl/FTLCompile.cpp:
(JSC::FTL::generateICFastPath):
(JSC::FTL::fixFunctionBasedOnStackMaps):
- ftl/FTLJSCall.cpp:
- ftl/FTLJSCall.h:
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- ftl/FTLLowerDFGToLLVM.cpp:
- ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileStub):
- ftl/FTLThunks.cpp:
(JSC::FTL::osrExitGenerationThunkGenerator):
(JSC::FTL::slowPathCallThunkGenerator):
- jit/ArityCheckFailReturnThunks.cpp:
(JSC::ArityCheckFailReturnThunks::returnPCsFor):
- jit/JIT.cpp:
(JSC::JIT::privateCompile):
- jit/JITCall.cpp:
(JSC::JIT::privateCompileClosureCall):
- jit/JITCall32_64.cpp:
(JSC::JIT::privateCompileClosureCall):
- jit/JITDisassembler.cpp:
- jit/JITDisassembler.h:
- jit/JITOpcodes.cpp:
- jit/JITPropertyAccess.cpp:
(JSC::JIT::stringGetByValStubGenerator):
(JSC::JIT::privateCompileGetByVal):
(JSC::JIT::privateCompilePutByVal):
- jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::stringGetByValStubGenerator):
- jit/RegisterPreservationWrapperGenerator.cpp:
(JSC::generateRegisterPreservationWrapper):
(JSC::registerRestorationThunkGenerator):
- jit/Repatch.cpp:
(JSC::generateByIdStub):
(JSC::tryCacheGetByID):
(JSC::emitPutReplaceStub):
(JSC::emitPutTransitionStub):
(JSC::tryRepatchIn):
(JSC::linkClosureCall):
- jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::finalize):
- jit/ThunkGenerators.cpp:
(JSC::throwExceptionFromCallSlowPathGenerator):
(JSC::linkForThunkGenerator):
(JSC::linkClosureCallForThunkGenerator):
(JSC::virtualForThunkGenerator):
(JSC::nativeForGenerator):
(JSC::arityFixup):
- llint/LLIntThunks.cpp:
(JSC::LLInt::generateThunkWithJumpTo):
- yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::compile):
Source/WebCore:
- cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::compile):
- 9:13 PM Changeset in webkit [170875] by
-
- 6 edits2 adds in trunk
Subpixel rendering: Inline box decoration rounds to integral.
https://bugs.webkit.org/show_bug.cgi?id=134523
<rdar://problem/17530298>
Reviewed by Darin Adler.
This patch removes 2 integral roundings from InlineFlowBox:
- Border and padding sizes are implicitly integral truncated by the 'int' return type of borderLogicalLeft/Right()/paddingLogicalLeft/Right(). It results in losing fractional border/padding values.
- Painting rectangle is explicitly rounded which pushes border and other decoration elements to odd device pixel positions on retina displays.
These values get pixel snapped right before calling in to GraphicsContext::*.
Source/WebCore:
Test: fast/inline/hidpi-inline-text-decoration-with-subpixel-value.html
- rendering/InlineBox.h:
(WebCore::InlineBox::frameRect):
- rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::nodeAtPoint):
(WebCore::InlineFlowBox::paintBoxDecorations):
(WebCore::InlineFlowBox::paintMask):
(WebCore::InlineFlowBox::roundedFrameRect): Deleted.
- rendering/InlineFlowBox.h:
(WebCore::InlineFlowBox::borderLogicalLeft):
(WebCore::InlineFlowBox::borderLogicalRight):
(WebCore::InlineFlowBox::paddingLogicalLeft):
(WebCore::InlineFlowBox::paddingLogicalRight):
LayoutTests:
- fast/inline/hidpi-inline-text-decoration-with-subpixel-value-expected.html: Added.
- fast/inline/hidpi-inline-text-decoration-with-subpixel-value.html: Added.
- platform/mac/css1/formatting_model/inline_elements-expected.txt:
- 9:00 PM Changeset in webkit [170874] by
-
- 2 edits in trunk/LayoutTests
[EFL] gardening after r170864
https://bugs.webkit.org/show_bug.cgi?id=134713
Unreviewed, EFL gardening.
Patch by Hunseop Jeong <Hunseop Jeong> on 2014-07-07
- platform/efl/TestExpectations: Report and mark several unexpected image-only failures.
- 8:22 PM Changeset in webkit [170873] by
-
- 3 edits in trunk/Source/WebCore
Pass RenderLayer reference instead of pointer to RenderLayer::paintingExtent().
https://bugs.webkit.org/show_bug.cgi?id=134714
Reviewed by Simon Fraser.
No change in functionality.
- rendering/RenderLayer.cpp: * -> &
(WebCore::expandClipRectForRegionAndReflection):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::transparencyClipBox):
(WebCore::paintingExtent):
(WebCore::RenderLayer::beginTransparencyLayers):
(WebCore::RenderLayer::paintTransformedLayerIntoFragments):
(WebCore::RenderLayer::hitTestTransformedLayerInFragments):
(WebCore::RenderLayer::paintingExtent): Deleted.
- rendering/RenderLayer.h:
- 7:40 PM Changeset in webkit [170872] by
-
- 2 edits in trunk/Source/WebKit2
Turn on accelerated drawing for WebKit2 by default
https://bugs.webkit.org/show_bug.cgi?id=134708
<rdar://problem/17584642>
Reviewed by Simon Fraser.
- Shared/WebPreferencesDefinitions.h:
Make Mac match iOS, in that accelerated drawing is on by default.
- 7:27 PM Changeset in webkit [170871] by
-
- 8 edits in trunk/Source/WebCore
Remove misleadingly-named Font::isSVGFont()
https://bugs.webkit.org/show_bug.cgi?id=134697
Reviewed by Dean Jackson.
Being a SVG font is a property of the FontData object, not
the Font object. Providing an isSVGFont() function on the
Font class will likely lead to incorrect code and non-obvious
bugs.
No new tests because there is no behavior change.
- platform/graphics/Font.h:
(WebCore::Font::isSVGFont): Deleted.
- platform/graphics/mac/FontMac.mm:
(WebCore::Font::primaryFontDataIsSystemFont):
- rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::constructTextRun):
- rendering/RenderBlock.cpp:
(WebCore::constructTextRunInternal):
- rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseFor):
- rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::constructTextRun):
- rendering/svg/SVGTextMetrics.cpp:
(WebCore::SVGTextMetrics::constructTextRun):
(WebCore::SVGTextMetrics::SVGTextMetrics):
- 6:56 PM Changeset in webkit [170870] by
-
- 2 edits in trunk/Source/WebKit2
Don't leak _WKRemoteObjectRegistry in WKBrowsingContextController
https://bugs.webkit.org/show_bug.cgi?id=134703
Reviewed by Simon Fraser.
- UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(-[WKBrowsingContextController _remoteObjectRegistry]):
Adoption is important!!
- 6:52 PM Changeset in webkit [170869] by
-
- 13 edits in trunk/Source/WebCore
Move Gamepad index down into PlatformGamepad.
https://bugs.webkit.org/show_bug.cgi?id=134670
Reviewed by Darin Adler.
PlatformGamepads always have an inherent index anyways.
This will make things easier in all upcoming work.
- Modules/gamepad/Gamepad.cpp:
(WebCore::Gamepad::Gamepad):
- Modules/gamepad/Gamepad.h:
- Modules/gamepad/GamepadManager.cpp:
(WebCore::GamepadManager::platformGamepadConnected):
(WebCore::GamepadManager::platformGamepadDisconnected):
(WebCore::GamepadManager::makeGamepadsVisibileToBlindNavigators):
- Modules/gamepad/GamepadManager.h:
- Modules/gamepad/NavigatorGamepad.cpp:
(WebCore::NavigatorGamepad::gamepadsBecameVisible):
(WebCore::NavigatorGamepad::gamepadConnected):
(WebCore::NavigatorGamepad::gamepadDisconnected):
- Modules/gamepad/NavigatorGamepad.h:
- platform/GamepadProviderClient.h:
- platform/PlatformGamepad.h:
(WebCore::PlatformGamepad::index):
(WebCore::PlatformGamepad::PlatformGamepad):
- platform/mac/HIDGamepad.cpp:
(WebCore::HIDGamepad::HIDGamepad):
- platform/mac/HIDGamepad.h:
- platform/mac/HIDGamepadProvider.cpp:
(WebCore::HIDGamepadProvider::deviceAdded):
(WebCore::HIDGamepadProvider::deviceRemoved):
(WebCore::HIDGamepadProvider::removeGamepadForDevice):
- platform/mac/HIDGamepadProvider.h:
- 6:38 PM Changeset in webkit [170868] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: CSS style declaration editor should ignore empty lines when determining prefix whitespace
https://bugs.webkit.org/show_bug.cgi?id=134704
Reviewed by Joseph Pecoraro.
When checking for zero-length prefix whitespace, completely empty lines are now ignored
as these lines are most often used for organizing rules into groups and often have their
whitespace removed due to trailing whitespace removal conventions.
- UserInterface/Views/CSSStyleDeclarationTextEditor.js:
- 5:14 PM Changeset in webkit [170867] by
-
- 5 edits in branches/safari-537.75-branch/Source
Versioning.
- 5:10 PM Changeset in webkit [170866] by
-
- 1 copy in tags/Safari-537.75.18
New Tag.
- 5:07 PM Changeset in webkit [170865] by
-
- 4 edits in branches/safari-537.75-branch/Source
Merged r169927. <rdar://problem/17563093>
- 4:44 PM Changeset in webkit [170864] by
-
- 15 edits in trunk/Source
[UI-side compositing] Support reflections on custom layers like video
https://bugs.webkit.org/show_bug.cgi?id=134701
Reviewed by Tim Horton.
Source/WebCore:
Add a LayerTypeWebGLLayer layer type, and support casting to PlatformCALayerRemoteCustom.
- WebCore.exp.in: Export PlatformCALayerMac::layerTypeForPlatformLayer(CALayer*), and sort.
- platform/graphics/ca/PlatformCALayer.h:
(WebCore::PlatformCALayer::isPlatformCALayerRemoteCustom):
- platform/graphics/ca/mac/PlatformCALayerMac.h:
- platform/graphics/ca/mac/PlatformCALayerMac.mm:
(PlatformCALayerMac::layerTypeForPlatformLayer):
(PlatformCALayerMac::PlatformCALayerMac):
(PlatformCALayerMac::commonInit):
Source/WebKit2:
For video reflections, we have to support cloning of PlatformCALayerRemoteCustom
in the web process. Do so by implementing PlatformCALayerRemoteCustom::clone(),
which does the right gyrations to get AVPlayerLayers cloned, then makes a
new PlatformCALayerRemoteCustom to wrap the new layer. This ends up getting
its own context hosting ID, allowing the clone to show in the UI process.
Attempt to do the same for WebGL, but turn it off because it breaks.
- Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::drawInContext):
- Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::encode): Unconditionally encode/decode
the hostingContextID. It will be 0 for most layers.
(WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::decode):
(WebKit::RemoteLayerTreeTransaction::description):
- UIProcess/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::createLayer):
- UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::createLayer):
- WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::create): Creation with a custom PlatformLayer* always
creates a PlatformCALayerRemoteCustom.
(WebKit::PlatformCALayerRemote::clone): Factor some code.
(WebKit::PlatformCALayerRemote::updateClonedLayerProperties):
(WebKit::PlatformCALayerRemote::recursiveBuildTransaction):
- WebProcess/WebPage/mac/PlatformCALayerRemote.h:
- WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
- WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
(WebKit::PlatformCALayerRemoteCustom::create):
(WebKit::PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
(WebKit::PlatformCALayerRemoteCustom::clone): Clone by making an instance of the
correct type of platform layer when possible, then wrapping a PlatformCALayerRemoteCustom
around it.
(WebKit::PlatformCALayerRemoteCustom::contents):
(WebKit::PlatformCALayerRemoteCustom::setContents):
- WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::layerWasCreated):
(WebKit::RemoteLayerTreeContext::layerWillBeDestroyed):
- 4:44 PM Changeset in webkit [170863] by
-
- 3 edits in trunk/Source/WebInspectorUI
Web Inspector: Uncaught Exception debugging iOS 7 NetworkAgent.loadResource is unavailable
https://bugs.webkit.org/show_bug.cgi?id=134689
Patch by Joseph Pecoraro <Joseph Pecoraro> on 2014-07-07
Reviewed by Darin Adler.
Gracefully handle if NetworkAgent.loadResource is unavailable.
- UserInterface/Controllers/SourceMapManager.js:
(WebInspector.SourceMapManager.prototype._loadAndParseSourceMap):
- UserInterface/Models/SourceMapResource.js:
- 4:44 PM Changeset in webkit [170862] by
-
- 5 edits in trunk/Source
[UI-side compositing] Crash when starting a filter transition on a reflected layer
https://bugs.webkit.org/show_bug.cgi?id=134694
Reviewed by Tim Horton.
Source/WebCore:
Don't call the owner if we failed to find the animation key (which actually
isn't used by PlatformCALayerMac anyway).
- platform/graphics/ca/mac/PlatformCALayerMac.mm:
(-[WebAnimationDelegate animationDidStart:]):
Source/WebKit2:
When cloned layers had animations, we would fire two animationDidStart callbacks,
but the second would pass an empty animationKey string to the web process, resulting
in a crash.
Fix by not blindly copying all layer properties when cloning PlatformCALayerRemotes,
since the clone would include addedAnimations, and then get the same animations
added on top by the caller.
Also protect against an empty animation key in the animationDidStart callback.
- UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::animationDidStart):
- WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::PlatformCALayerRemote):
(WebKit::PlatformCALayerRemote::clone): Don't copy all the properties; copy
them manually as PlatformCALayerMac does. Only copy the big things if they don't
have their default values.
(WebKit::PlatformCALayerRemote::copyFiltersFrom): Need an implementation of this
for clone() to call.
- 4:44 PM Changeset in webkit [170861] by
-
- 2 edits in trunk/Tools
Have MiniBrowser log and reload if the Web Content Process crashes
https://bugs.webkit.org/show_bug.cgi?id=134691
Reviewed by Tim Horton.
Implement _webViewWebProcessDidCrash, log and reload when the web process
crashes.
- MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController _webViewWebProcessDidCrash:]):
- 4:33 PM Changeset in webkit [170860] by
-
- 2 edits in branches/ftlopt/Source/JavaScriptCore
Merge r170011 from trunk.
2014-06-16 Michael Saboff <msaboff@apple.com>
Convert ASSERT in inlineFunctionForCapabilityLevel to early return
https://bugs.webkit.org/show_bug.cgi?id=133903
Reviewed by Mark Hahnenberg.
Hardened code by Converting ASSERT to return CannotCompile.
- dfg/DFGCapabilities.h: (JSC::DFG::inlineFunctionForCapabilityLevel):
- 4:18 PM Changeset in webkit [170859] by
-
- 2 edits in trunk/Source/WebKit2
Nearly everything in the UIProcess "leaks" when WKWebView is torn down
https://bugs.webkit.org/show_bug.cgi?id=134699
<rdar://problem/17581777>
Reviewed by Simon Fraser.
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithFrame:configuration:]):
Adoption is important!
- 2:42 PM Changeset in webkit [170858] by
-
- 9 edits in trunk/Source/WebKit2
REGRESSION(iOS WK2): arrow keys movements don't work.
https://bugs.webkit.org/show_bug.cgi?id=134561
<rdar://problem/16827629>
Reviewed by Benjamin Poulain.
This change add the implementations for cursor movement selectors.
It also provides a mechanism to ensure that every selection
change in WebKit is reflected in UIKit so that it can update the
autocorrection data. This way we ensure that the autocorraction state
is consistent even when selection changes are originated by JavaScript.
WebPageProxy::editorStateChanged now notifies the page client when the
selection is about to change as well as when it actually changed.
- UIProcess/PageClient.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::editorStateChanged):
- UIProcess/WebPageProxy.h:
- UIProcess/ios/PageClientImplIOS.h:
- UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::selectionWillChange):
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cut:]): Removed incorrect calls to textWillChange and
textDidChange.
(-[WKContentView paste:]):
(-[WKContentView _moveUp:withHistory:]):
(-[WKContentView _moveDown:withHistory:]):
(-[WKContentView _moveLeft:withHistory:]):
(-[WKContentView _moveRight:withHistory:]):
(-[WKContentView _moveToStartOfWord:withHistory:]):
(-[WKContentView _moveToStartOfParagraph:withHistory:]):
(-[WKContentView _moveToStartOfLine:withHistory:]):
(-[WKContentView _moveToStartOfDocument:withHistory:]):
(-[WKContentView _moveToEndOfWord:withHistory:]):
(-[WKContentView _moveToEndOfParagraph:withHistory:]):
(-[WKContentView _moveToEndOfLine:withHistory:]):
(-[WKContentView _moveToEndOfDocument:withHistory:]):
(-[WKContentView _selectionWillChange]):
(-[WKContentView _selectionChanged]):
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::notifySelectionWillChange):
- 2:06 PM Changeset in webkit [170857] by
-
- 2 edits in trunk/Source/JavaScriptCore
Fast path for jsStringWithCache() when asked for the same string repeatedly.
<https://webkit.org/b/134635>
Reviewed by Darin Adler.
Follow-up to r170818 addressing a review comment by Geoff Garen.
- runtime/JSString.cpp:
(JSC::jsStringWithCacheSlowCase):
- 1:52 PM Changeset in webkit [170856] by
-
- 8 edits in trunk/Source/WebKit2
Add SPI for saving and restoring a WKWebView's _WKSessionState
https://bugs.webkit.org/show_bug.cgi?id=134693
Reviewed by Dan Bernstein.
- UIProcess/API/C/WKPage.cpp:
(WKPageRestoreFromSessionState):
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _sessionState]):
(-[WKWebView _restoreFromSessionStateData:]):
(-[WKWebView _restoreFromSessionState:]):
(-[WKWebView _restoreSessionState:andNavigate:]):
- UIProcess/API/Cocoa/WKWebViewPrivate.h:
- UIProcess/API/Cocoa/_WKSessionState.mm:
(-[_WKSessionState _initWithSessionState:]):
- UIProcess/API/Cocoa/_WKSessionStateInternal.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::restoreFromSessionState):
- UIProcess/WebPageProxy.h:
- 1:39 PM Changeset in webkit [170855] by
-
- 36 edits14 adds in branches/ftlopt
[ftlopt] Infer immutable object properties
https://bugs.webkit.org/show_bug.cgi?id=134567
Reviewed by Mark Hahnenberg.
Source/JavaScriptCore:
This introduces a new way of inferring immutable object properties. A property is said to
be immutable if after its creation (i.e. the transition that creates it), we never
overwrite it (i.e. replace it) or delete it. Immutability is a property of an "own
property" - so if we say that "f" is immutable at "o" then we are implying that "o" has "f"
directly and not on a prototype. More specifically, the immutability inference will prove
that a property on some structure is immutable. This means that, for example, we may have a
structure S1 with property "f" where we claim that "f" at S1 is immutable, but S1 has a
transition to S2 that adds a new property "g" and we may claim that "f" at S2 is actually
mutable. This is mainly for convenience; it allows us to decouple immutability logic from
transition logic. Immutability can be used to constant-fold accesses to objects at
DFG-time. The DFG needs to prove the following to constant-fold the access:
- The base of the access must be a constant object pointer. We prove that a property at a structure is immutable, but that says nothing of its value; each actual instance of that property may have a different value. So, a constant object pointer is needed to get an actual constant instance of the immutable value.
- A check (or watchpoint) must have been emitted proving that the object has a structure that allows loading the property in question.
- The replacement watchpoint set of the property in the structure that we've proven the object to have is still valid and we add a watchpoint to it lazily. The replacement watchpoint set is the key new mechanism that this change adds. It's possible that we have proven that the object has one of many structures, in which case each of those structures needs a valid replacement watchpoint set.
The replacement watchpoint set is created the first time that any access to the property is
cached. A put replace cache will create, and immediately invalidate, the watchpoint set. A
get cache will create the watchpoint set and make it start watching. Any non-cached put
access will invalidate the watchpoint set if one had been created; the underlying algorithm
ensures that checking for the existence of a replacement watchpoint set is very fast in the
common case. This algorithm ensures that no cached access needs to ever do any work to
invalidate, or check the validity of, any replacement watchpoint sets. It also has some
other nice properties:
- It's very robust in its definition of immutability. The strictest that it will ever be is that for any instance of the object, the property must be written to only once, specifically at the time that the property is created. But it's looser than this in practice. For example, the property may be written to any number of times before we add the final property that the object will have before anyone reads the property; this works since for optimization purposes we only care if we detect immutability on the structure that the object will have when it is most frequently read from, not any previous structure that the object had. Also, we may write to the property any number of times before anyone caches accesses to it.
- It is mostly orthogonal to structure transitions. No new structures need to be created to track the immutability of a property. Hence, there is no risk from this feature causing more polymorphism. This is different from the previous "specificValue" constant inference, which did cause additional structures to be created and sometimes those structures led to fake polymorphism. This feature does leverage existing transitions to do some of the watchpointing: property deletions don't fire the replacement watchpoint set because that would cause a new structure and so the mandatory structure check would fail. Also, this feature is guaranteed to never kick in for uncacheable dictionaries because those wouldn't allow for cacheable accesses - and it takes a cacheable access for this feature to be enabled.
- No memory overhead is incurred except when accesses to the property are cached. Dictionary properties will typically have no meta-data for immutability. The number of replacement watchpoint sets we allocate is proportional to the number of inline caches in the program, which is typically must smaller than the number of structures or even the number of objects.
This inference is far more powerful than the previous "specificValue" inference, so this
change also removes all of that code. It's interesting that the amount of code that is
changed to remove that feature is almost as big as the amount of code added to support the
new inference - and that's if you include the new tests in the tally. Without new tests,
it appears that the new feature actually touches less code!
There is one corner case where the previous "specificValue" inference was more powerful.
You can imagine someone creating objects with functions as self properties on those
objects, such that each object instance had the same function pointers - essentially,
someone might be trying to create a vtable but failing at the whole "one vtable for many
instances" concept. The "specificValue" inference would do very well for such programs,
because a structure check would be sufficient to prove a constant value for all of the
function properties. This new inference will fail because it doesn't track the constant
values of constant properties; instead it detects the immutability of otherwise variable
properties (in the sense that each instance of the property may have a different value).
So, the new inference requires having a particular object instance to actually get the
constant value. I think it's OK to lose this antifeature. It took a lot of code to support
and was a constant source of grief in our transition logic, and there doesn't appear to be
any real evidence that programs benefited from that particular kind of inference since
usually it's the singleton prototype instance that has all of the functions.
This change is a speed-up on everything. date-format-xparb and both SunSpider/raytrace and
V8/raytrace seem to be the biggest winners among the macrobenchmarks; they see >5%
speed-ups. Many of our microbenchmarks see very large performance improvements, even 80% in
one case.
- bytecode/ComplexGetStatus.cpp:
(JSC::ComplexGetStatus::computeFor):
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFromLLInt):
(JSC::GetByIdStatus::computeForStubInfo):
(JSC::GetByIdStatus::computeFor):
- bytecode/GetByIdVariant.cpp:
(JSC::GetByIdVariant::GetByIdVariant):
(JSC::GetByIdVariant::operator=):
(JSC::GetByIdVariant::attemptToMerge):
(JSC::GetByIdVariant::dumpInContext):
- bytecode/GetByIdVariant.h:
(JSC::GetByIdVariant::alternateBase):
(JSC::GetByIdVariant::specificValue): Deleted.
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeForStubInfo):
(JSC::PutByIdStatus::computeFor):
- bytecode/PutByIdVariant.cpp:
(JSC::PutByIdVariant::operator=):
(JSC::PutByIdVariant::setter):
(JSC::PutByIdVariant::dumpInContext):
- bytecode/PutByIdVariant.h:
(JSC::PutByIdVariant::specificValue): Deleted.
- bytecode/Watchpoint.cpp:
(JSC::WatchpointSet::fireAllSlow):
(JSC::WatchpointSet::fireAll): Deleted.
- bytecode/Watchpoint.h:
(JSC::WatchpointSet::fireAll):
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleGetByOffset):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::emitGetByOffset):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::isStringPrototypeMethodSane):
(JSC::DFG::FixupPhase::canOptimizeStringObjectAccess):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::tryGetConstantProperty):
(JSC::DFG::Graph::visitChildren):
- dfg/DFGGraph.h:
- dfg/DFGWatchableStructureWatchingPhase.cpp:
(JSC::DFG::WatchableStructureWatchingPhase::run):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileMultiGetByOffset):
- jit/JITOperations.cpp:
- jit/Repatch.cpp:
(JSC::repatchByIdSelfAccess):
(JSC::generateByIdStub):
(JSC::tryCacheGetByID):
(JSC::tryCachePutByID):
(JSC::tryBuildPutByIdList):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::putToScopeCommon):
- runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::tryCachePutToScopeGlobal):
- runtime/IntendedStructureChain.cpp:
(JSC::IntendedStructureChain::mayInterceptStoreTo):
- runtime/JSCJSValue.cpp:
(JSC::JSValue::putToPrimitive):
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::reset):
- runtime/JSObject.cpp:
(JSC::JSObject::put):
(JSC::JSObject::putDirectNonIndexAccessor):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::defaultValue):
(JSC::getCallableObjectSlow): Deleted.
(JSC::JSObject::getPropertySpecificValue): Deleted.
- runtime/JSObject.h:
(JSC::JSObject::getDirect):
(JSC::JSObject::getDirectOffset):
(JSC::JSObject::inlineGetOwnPropertySlot):
(JSC::JSObject::putDirectInternal):
(JSC::JSObject::putOwnDataProperty):
(JSC::JSObject::putDirect):
(JSC::JSObject::putDirectWithoutTransition):
(JSC::getCallableObject): Deleted.
- runtime/JSScope.cpp:
(JSC::abstractAccess):
- runtime/PropertyMapHashTable.h:
(JSC::PropertyMapEntry::PropertyMapEntry):
(JSC::PropertyTable::copy):
- runtime/PropertyTable.cpp:
(JSC::PropertyTable::clone):
(JSC::PropertyTable::PropertyTable):
(JSC::PropertyTable::visitChildren): Deleted.
- runtime/Structure.cpp:
(JSC::Structure::Structure):
(JSC::Structure::materializePropertyMap):
(JSC::Structure::addPropertyTransitionToExistingStructureImpl):
(JSC::Structure::addPropertyTransitionToExistingStructure):
(JSC::Structure::addPropertyTransitionToExistingStructureConcurrently):
(JSC::Structure::addPropertyTransition):
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::preventExtensionsTransition):
(JSC::Structure::takePropertyTableOrCloneIfPinned):
(JSC::Structure::nonPropertyTransition):
(JSC::Structure::addPropertyWithoutTransition):
(JSC::Structure::allocateRareData):
(JSC::Structure::ensurePropertyReplacementWatchpointSet):
(JSC::Structure::startWatchingPropertyForReplacements):
(JSC::Structure::didCachePropertyReplacement):
(JSC::Structure::startWatchingInternalProperties):
(JSC::Structure::copyPropertyTable):
(JSC::Structure::copyPropertyTableForPinning):
(JSC::Structure::getConcurrently):
(JSC::Structure::get):
(JSC::Structure::add):
(JSC::Structure::visitChildren):
(JSC::Structure::prototypeChainMayInterceptStoreTo):
(JSC::Structure::dump):
(JSC::Structure::despecifyDictionaryFunction): Deleted.
(JSC::Structure::despecifyFunctionTransition): Deleted.
(JSC::Structure::despecifyFunction): Deleted.
(JSC::Structure::despecifyAllFunctions): Deleted.
(JSC::Structure::putSpecificValue): Deleted.
- runtime/Structure.h:
(JSC::Structure::startWatchingPropertyForReplacements):
(JSC::Structure::startWatchingInternalPropertiesIfNecessary):
(JSC::Structure::startWatchingInternalPropertiesIfNecessaryForEntireChain):
(JSC::Structure::transitionDidInvolveSpecificValue): Deleted.
(JSC::Structure::disableSpecificFunctionTracking): Deleted.
- runtime/StructureInlines.h:
(JSC::Structure::getConcurrently):
(JSC::Structure::didReplaceProperty):
(JSC::Structure::propertyReplacementWatchpointSet):
- runtime/StructureRareData.cpp:
(JSC::StructureRareData::destroy):
- runtime/StructureRareData.h:
- tests/stress/infer-constant-global-property.js: Added.
(foo.Math.sin):
(foo):
- tests/stress/infer-constant-property.js: Added.
(foo):
- tests/stress/jit-cache-poly-replace-then-cache-get-and-fold-then-invalidate.js: Added.
(foo):
(bar):
- tests/stress/jit-cache-replace-then-cache-get-and-fold-then-invalidate.js: Added.
(foo):
(bar):
- tests/stress/jit-put-to-scope-global-cache-watchpoint-invalidate.js: Added.
(foo):
(bar):
- tests/stress/llint-cache-replace-then-cache-get-and-fold-then-invalidate.js: Added.
(foo):
(bar):
- tests/stress/llint-put-to-scope-global-cache-watchpoint-invalidate.js: Added.
(foo):
(bar):
- tests/stress/repeat-put-to-scope-global-with-same-value-watchpoint-invalidate.js: Added.
(foo):
(bar):
LayoutTests:
- js/regress/infer-constant-global-property-expected.txt: Added.
- js/regress/infer-constant-global-property.html: Added.
- js/regress/infer-constant-property-expected.txt: Added.
- js/regress/infer-constant-property.html: Added.
- js/regress/script-tests/infer-constant-global-property.js: Added.
- js/regress/script-tests/infer-constant-property.js: Added.
- 1:28 PM Changeset in webkit [170854] by
-
- 3 edits5 copies in trunk/Source/WebKit2
Add a stubbed out _WKSessionState class
https://bugs.webkit.org/show_bug.cgi?id=134690
Reviewed by Geoffrey Garen.
- UIProcess/API/Cocoa/_WKSessionState.h: Copied from Source/WebKit2/UIProcess/LegacySessionStateCoding.h.
- UIProcess/API/Cocoa/_WKSessionState.mm: Copied from Source/WebKit2/UIProcess/LegacySessionStateCoding.h.
(-[_WKSessionState initWithData:]):
(-[_WKSessionState data]):
- UIProcess/API/Cocoa/_WKSessionStateInternal.h: Copied from Source/WebKit2/UIProcess/LegacySessionStateCoding.h.
- UIProcess/Cocoa/SessionStateCoding.h: Copied from Source/WebKit2/UIProcess/LegacySessionStateCoding.h.
- UIProcess/Cocoa/SessionStateCoding.mm: Copied from Source/WebKit2/UIProcess/LegacySessionStateCoding.h.
(WebKit::encodeSessionState):
(WebKit::decodeSessionState):
- UIProcess/LegacySessionStateCoding.h:
- WebKit2.xcodeproj/project.pbxproj:
- 12:52 PM Changeset in webkit [170853] by
-
- 3 edits in trunk/Source/WebKit2
Some of the WKPreferences (API) property getters read like questions
https://bugs.webkit.org/show_bug.cgi?id=134678
<rdar://problem/17576847>
Reviewed by Dan Bernstein.
- UIProcess/API/Cocoa/WKPreferences.h:
- UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences javaScriptIsEnabled]):
(-[WKPreferences javaIsEnabled]):
(-[WKPreferences plugInsAreEnabled]):
(-[WKPreferences isJavaScriptEnabled]): Deleted.
(-[WKPreferences isJavaEnabled]): Deleted.
(-[WKPreferences arePlugInsEnabled]): Deleted.
- 11:50 AM Changeset in webkit [170852] by
-
- 2 edits in trunk/Source/WebKit2
ServicesOverlayController menus show up in the wrong place.
<rdar://problem/17130576> and https://bugs.webkit.org/show_bug.cgi?id=134684
Reviewed by Tim Horton.
- WebProcess/WebPage/mac/ServicesOverlayController.mm:
(WebKit::ServicesOverlayController::selectedTelephoneNumberRangesChanged): Handle cases where
the telephone number is in a subframe.
(WebKit::ServicesOverlayController::handleClick): The click point is always in main frame document
coordinates, so convert it to window coordinates using the main frame’s FrameView.
- 11:31 AM Changeset in webkit [170851] by
-
- 4 edits in trunk/Source/JavaScriptCore
Add missing ENABLE(FTL_JIT) guards
https://bugs.webkit.org/show_bug.cgi?id=134680
Patch by Tibor Meszaros <tmeszaros.u-szeged@partner.samsung.com> on 2014-07-07
Reviewed by Darin Adler.
- ftl/FTLDWARFDebugLineInfo.cpp:
- ftl/FTLDWARFDebugLineInfo.h:
- ftl/FTLGeneratedFunction.h:
- 11:30 AM Changeset in webkit [170850] by
-
- 5 edits in branches/safari-537.75-branch/Source
Versioning.
- 11:21 AM Changeset in webkit [170849] by
-
- 2 edits in trunk/Source/WebCore
[iOS WebGL] Fix crash with too many nested glsl functions.
https://bugs.webkit.org/show_bug.cgi?id=134683
<rdar://problem/17541529>
Patch by Alex Christensen <achristensen@webkit.org> on 2014-07-07
Reviewed by Geoffrey Garen.
This fixes the Khronos WebGL 1.0.3 test nested-functions-should-not-crash.html.
- platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE):
Add SH_LIMIT_CALL_STACK_DEPTH to extraCompileOptions.
- 11:18 AM Changeset in webkit [170848] by
-
- 2 edits in trunk/Tools
update-webkitgtk-libs script fails by unsatisfied dependencies
https://bugs.webkit.org/show_bug.cgi?id=134547
Reviewed by Martin Robinson.
Install libxcb-xfixes0-dev, needed to build Mesa.
- gtk/install-dependencies:
- 10:52 AM Changeset in webkit [170847] by
-
- 1 edit2 adds in trunk/LayoutTests
Add test to ensure that SVGDocumentExtensions::rebuildElements() doesn't rebuild invalid elements
https://bugs.webkit.org/show_bug.cgi?id=134417
<rdar://problem/17479854>
Reviewed by David Kilzer.
Add a test that implicitly checks that the list of SVG elements to be rebuilt doesn't contain
removed elements. Run this test in DRT with Guard Malloc/MallocScribble (or the platform-
specific equivalent) enabled.
- svg/custom/overwrite-page-that-has-use-elements-expected.txt: Added.
- svg/custom/overwrite-page-that-has-use-elements.html: Added.
- 10:20 AM Changeset in webkit [170846] by
-
- 2 edits in trunk/LayoutTests
Unreviewed Mac gardening after r170817.
- platform/mac-wk2/TestExpectations:
- 9:21 AM Changeset in webkit [170845] by
-
- 2 edits in trunk/Source/WebKit2
[Cocoa] Assertion failure in NavigationState::LoaderClient::didStartProvisionalLoadForFrame (navigationID) when navigating through the page cache
https://bugs.webkit.org/show_bug.cgi?id=134682
Reviewed by Tim Horton.
- UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::LoaderClient::didStartProvisionalLoadForFrame): Replaced the
assertion with a FIXME.
(WebKit::NavigationState::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
Ditto.
(WebKit::NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame): Ditto.
(WebKit::NavigationState::LoaderClient::didCommitLoadForFrame): Ditto.
(WebKit::NavigationState::LoaderClient::didFinishDocumentLoadForFrame): Ditto.
(WebKit::NavigationState::LoaderClient::didFinishLoadForFrame): Ditto.
(WebKit::NavigationState::LoaderClient::didFailLoadWithErrorForFrame): Ditto.
- 4:48 AM Changeset in webkit [170844] by
-
- 2 edits in trunk/Source/WebKit2
[EFL] Fix cursor artifacts on naver map site.
https://bugs.webkit.org/show_bug.cgi?id=134649
Patch by KwangHyuk Kim <hyuki.kim@samsung.com> on 2014-07-07
Reviewed by Gyuyoung Kim.
Old evas cursor and ecore x cursor are reset before new cursor is applied.
- UIProcess/API/efl/EwkView.cpp:
(EwkView::updateCursor):
- 2:04 AM Changeset in webkit [170843] by
-
- 5 edits in trunk/Source
Enable ARMv7 disassembler for the GTK port
https://bugs.webkit.org/show_bug.cgi?id=134676
Reviewed by Benjamin Poulain.
Source/JavaScriptCore:
- CMakeLists.txt: Add ARMv7DOpcode.cpp file to the build.
- disassembler/ARMv7/ARMv7DOpcode.cpp: Include the string.h header for strlen().
Source/WTF:
- wtf/Platform.h: Enable the ARMv7 disassembler for the GTK port when
targeting the ARMv7 architecture.
- 12:38 AM Changeset in webkit [170842] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed GTK gardening.
Remove failure expectations for tests that have been passing after r168046, r168350, r168400,
r168479, r169309, r169620, r169689 and r169799.
Patch by Lorenzo Tilve <ltilve@igalia.com> on 2014-07-07
- platform/gtk/TestExpectations:
- 12:16 AM Changeset in webkit [170841] by
-
- 6 edits6 adds in trunk
[CSS Blending]The background images set on the root element will blend on an initial white backdrop.
https://bugs.webkit.org/show_bug.cgi?id=134342
Reviewed by Dean Jackson.
Source/WebCore:
Tests: css3/blending/background-blend-mode-body-image.html
css3/blending/background-blend-mode-body-transparent-color-and-image.html
css3/blending/background-blend-mode-body-transparent-image.html
- rendering/RenderBox.cpp:
(WebCore::RenderBox::paintFillLayers):
If the background layers have blend modes, we paint the base background color first,
before starting a new transparency layer. After creating the transparency layer,
the base background will be skipped, and the background layers will blend on top of
a transparent backdrop.
(WebCore::RenderBox::paintFillLayer):
- rendering/RenderBox.h:
- rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
This method is able to paint only the base background color (BaseBackgroundColorOnly),
skipping the background-color and background-images. This option is available only
on bottom layer of the root renderer and only if the background color is not opaque,
otherwise the method will return early.
Another option is to paint the root background without using the base background color
(BaseBackgroundColorSkip).
- rendering/RenderBoxModelObject.h:
Adding the BaseBackgroundColorUsage enum.
LayoutTests:
- css3/blending/background-blend-mode-body-image-expected.html: Added.
- css3/blending/background-blend-mode-body-image.html: Added.
- css3/blending/background-blend-mode-body-transparent-color-and-image-expected.html: Added.
- css3/blending/background-blend-mode-body-transparent-color-and-image.html: Added.
- css3/blending/background-blend-mode-body-transparent-image-expected.html: Added.
- css3/blending/background-blend-mode-body-transparent-image.html: Added.
- 12:14 AM WebKitGTK/KeepingTheTreeGreen edited by
- (diff)
Jul 6, 2014:
- 11:26 PM Changeset in webkit [170840] by
-
- 2 edits in trunk/Source/WebKit2
[iOS][WK2] The tap highlight ID is not invalidated when a long press ends
https://bugs.webkit.org/show_bug.cgi?id=134660
Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-07-06
Reviewed by Darin Adler.
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _cancelInteraction]):
(-[WKContentView _finishInteraction]):
(cancelPotentialTapIfNecessary):
I messed that up in r170600. I only accounted for the web process being too fast.
If the web process is too slow, _cancelInteraction or _finishInteraction happen before
_didGetTapHighlightForRequest:, and we also need to nuke the tap highlight.
- 11:24 PM Changeset in webkit [170839] by
-
- 5 edits in trunk/Source/JavaScriptCore
[ARMv7] Use 16 bits instructions for push/pop when possible
https://bugs.webkit.org/show_bug.cgi?id=134656
Reviewed by Andreas Kling.
- assembler/ARMv7Assembler.h:
(JSC::ARMv7Assembler::pop):
(JSC::ARMv7Assembler::push):
(JSC::ARMv7Assembler::ARMInstructionFormatter::oneWordOp7Imm9):
Add the 16 bits version of push and pop.
- assembler/MacroAssemblerARMv7.h:
(JSC::MacroAssemblerARMv7::pop):
(JSC::MacroAssemblerARMv7::push):
Use the new push/pop instead of a regular load/store.
- disassembler/ARMv7/ARMv7DOpcode.cpp:
(JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterList):
- disassembler/ARMv7/ARMv7DOpcode.h:
(JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::registerMask):
Fix the disassembler for push/pop:
-The register mask was on 7 bits for some reason.
-The code printing the registers was comparing a register ID with a register
mask.
- 11:04 PM Changeset in webkit [170838] by
-
- 5 edits in trunk/Source/WebKit2
[WK2] Don't support dynamically enabling the RemoteLayerTree debug indicator
https://bugs.webkit.org/show_bug.cgi?id=134644
Reviewed by Darin Adler.
- UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::setShouldShowDebugIndicator): Deleted.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::preferencesDidChange):
- UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
- UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::initializeDebugIndicator):
(WebKit::RemoteLayerTreeDrawingAreaProxy::setShouldShowDebugIndicator): Deleted.
The indicator depends on the live layer tree commits coming in, including layer creation,
so it can't be turned on after the root layer is created. Even a refresh is insufficient
to get it working; the debug indicator really needs to exist from the first commit.
So, don't even attempt to dynamically enable the indicator; create it at
RemoteLayerTreeDrawingAreaProxy construction time if the pref is enabled.
- 10:02 PM Changeset in webkit [170837] by
-
- 18 edits in trunk
Turn on img@sizes compile flag
https://bugs.webkit.org/show_bug.cgi?id=134634
Reviewed by Benjamin Poulain.
Source/JavaScriptCore:
- Configurations/FeatureDefines.xcconfig: Moved compile flag to alphabetical order.
Source/WebCore:
- Configurations/FeatureDefines.xcconfig: Moved compile flag to alphabetical order.
Source/WebKit:
- mac/Configurations/FeatureDefines.xcconfig: Moved compile flag to alphabetical order.
Source/WebKit2:
- Configurations/FeatureDefines.xcconfig: Moved compile flag to alphabetical order.
Source/WTF:
- wtf/FeatureDefines.h: Added compile flag definition.
Tools:
- Scripts/webkitperl/FeatureList.pm: Turn on the img@sizes feature.
WebKitLibraries:
- win/tools/vsprops/FeatureDefines.props: Added compile flag.
LayoutTests:
- TestExpectations: Turned on layout tests for the img@sizes feature.
- 9:49 PM Changeset in webkit [170836] by
-
- 27 edits in branches/ftlopt/Source/JavaScriptCore
Add more coverage for the profile_types_with_high_fidelity op code.
https://bugs.webkit.org/show_bug.cgi?id=134616
Patch by Saam Barati <sbarati@apple.com> on 2014-07-03
Reviewed by Filip Pizlo.
More operations are now being recorded by the profile_types_with_high_fidelity
opcode. Specifically: function parameters, function return values,
function 'this' value, get_by_id, get_by_value, resolve nodes, function return
values at the call site. Added more flags to the profile_types_with_high_fidelity
opcode so more focused tasks can take place when the instruction is
being linked in CodeBlock. Re-worked the type profiler to search
through character offset ranges when asked for the type of an expression
at a given offset. Removed redundant calls to Structure::toStructureShape
in HighFidelityLog and TypeSet by caching calls based on StructureID.
- bytecode/BytecodeList.json:
- bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::scopeDependentProfile):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::returnStatementTypeSet):
- bytecode/TypeLocation.h:
- bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::highFidelityTypeProfileExpressionInfoForBytecodeOffset):
(JSC::UnlinkedCodeBlock::addHighFidelityTypeProfileExpressionInfo):
- bytecode/UnlinkedCodeBlock.h:
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitMove):
(JSC::BytecodeGenerator::emitProfileTypesWithHighFidelity):
(JSC::BytecodeGenerator::emitGetFromScopeWithProfile):
(JSC::BytecodeGenerator::emitPutToScope):
(JSC::BytecodeGenerator::emitPutToScopeWithProfile):
(JSC::BytecodeGenerator::emitPutById):
(JSC::BytecodeGenerator::emitPutByVal):
- bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitHighFidelityTypeProfilingExpressionInfo):
- bytecompiler/NodesCodegen.cpp:
(JSC::ResolveNode::emitBytecode):
(JSC::BracketAccessorNode::emitBytecode):
(JSC::DotAccessorNode::emitBytecode):
(JSC::FunctionCallValueNode::emitBytecode):
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::FunctionCallBracketNode::emitBytecode):
(JSC::FunctionCallDotNode::emitBytecode):
(JSC::CallFunctionCallDotNode::emitBytecode):
(JSC::ApplyFunctionCallDotNode::emitBytecode):
(JSC::PostfixNode::emitResolve):
(JSC::PostfixNode::emitBracket):
(JSC::PostfixNode::emitDot):
(JSC::PrefixNode::emitResolve):
(JSC::PrefixNode::emitBracket):
(JSC::PrefixNode::emitDot):
(JSC::ReadModifyResolveNode::emitBytecode):
(JSC::AssignResolveNode::emitBytecode):
(JSC::AssignDotNode::emitBytecode):
(JSC::ReadModifyDotNode::emitBytecode):
(JSC::AssignBracketNode::emitBytecode):
(JSC::ReadModifyBracketNode::emitBytecode):
(JSC::ReturnNode::emitBytecode):
(JSC::FunctionBodyNode::emitBytecode):
- inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableAtOffset):
(Inspector::InspectorRuntimeAgent::getRuntimeTypeForVariableInTextRange): Deleted.
- inspector/agents/InspectorRuntimeAgent.h:
- inspector/protocol/Runtime.json:
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::getFromScopeCommon):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- llint/LLIntSlowPaths.h:
- llint/LowLevelInterpreter.asm:
- runtime/HighFidelityLog.cpp:
(JSC::HighFidelityLog::processHighFidelityLog):
(JSC::HighFidelityLog::actuallyProcessLogThreadFunction):
(JSC::HighFidelityLog::recordTypeInformationForLocation): Deleted.
- runtime/HighFidelityLog.h:
(JSC::HighFidelityLog::recordTypeInformationForLocation):
- runtime/HighFidelityTypeProfiler.cpp:
(JSC::HighFidelityTypeProfiler::getTypesForVariableInAtOffset):
(JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableAtOffset):
(JSC::HighFidelityTypeProfiler::getLocalTypesForVariableAtOffset):
(JSC::HighFidelityTypeProfiler::insertNewLocation):
(JSC::HighFidelityTypeProfiler::findLocation):
(JSC::HighFidelityTypeProfiler::getTypesForVariableInRange): Deleted.
(JSC::HighFidelityTypeProfiler::getGlobalTypesForVariableInRange): Deleted.
(JSC::HighFidelityTypeProfiler::getLocalTypesForVariableInRange): Deleted.
(JSC::HighFidelityTypeProfiler::getLocationBasedHash): Deleted.
- runtime/HighFidelityTypeProfiler.h:
(JSC::LocationKey::LocationKey): Deleted.
(JSC::LocationKey::hash): Deleted.
(JSC::LocationKey::operator==): Deleted.
- runtime/Structure.cpp:
(JSC::Structure::toStructureShape):
- runtime/Structure.h:
- runtime/TypeSet.cpp:
(JSC::TypeSet::TypeSet):
(JSC::TypeSet::addTypeForValue):
(JSC::TypeSet::seenTypes):
(JSC::TypeSet::removeDuplicatesInStructureHistory): Deleted.
- runtime/TypeSet.h:
(JSC::StructureShape::setConstructorName):
- runtime/VM.cpp:
(JSC::VM::getTypesForVariableAtOffset):
(JSC::VM::dumpHighFidelityProfilingTypes):
(JSC::VM::getTypesForVariableInRange): Deleted.
- runtime/VM.h:
- 8:42 PM Changeset in webkit [170835] by
-
- 2 edits in trunk/Tools
Unreviewed. Adding myself to committers.
- Scripts/webkitpy/common/config/contributors.json:
- 7:06 PM Changeset in webkit [170834] by
-
- 2 edits in trunk/Source/JavaScriptCore
Flags value of SourceCodeKey should be unique for each case.
https://bugs.webkit.org/show_bug.cgi?id=134435
Patch by Daewoong Jang <daewoong.jang@navercorp.com> on 2014-07-06
Reviewed by Darin Adler.
Different combinations of CodeType and JSParserStrictness could generate same m_flags value because
the value of CodeType and the value of JSParserStrictness shares a bit inside m_flags member variable.
Shift the value of CodeType one bit farther to the left so those values don't overlap.
- runtime/CodeCache.h:
(JSC::SourceCodeKey::SourceCodeKey):
- 6:22 PM Changeset in webkit [170833] by
-
- 4 edits in trunk/Source/WebCore
Generate isMathMLFoo() toMathMLFoo() by using NODE_TYPE_CASTS macro and generateTypeHelpers
https://bugs.webkit.org/show_bug.cgi?id=134647
Reviewed by Andreas Kling.
Use type cast macro and generation tag for isFoo() and toFoo() in some MathML classes.
No new tests, no behavior change.
- mathml/MathMLElement.h: Place MathMLElementTypeHelpers.h to the bottom of the
file so that functions from that file can use the Element|Node classes and other things defined in this file.
- mathml/MathMLMencloseElement.h:
(WebCore::toMathMLMencloseElement): Deleted.
- mathml/mathtags.in:
- 6:18 PM Changeset in webkit [170832] by
-
- 10 edits in trunk/Source/WebCore
CSS JIT: Ensure resolvingMode size is 1 byte
https://bugs.webkit.org/show_bug.cgi?id=134662
Reviewed by Benjamin Poulain.
Since selector compiler uses MacroAssembler::branch8 for SelectorChecker::Mode,
we should ensure sizeof(SelectorChecker::Mode) == 1.
Old implementation works only in little endianness environments.
- css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::matchedResult):
(WebCore::ElementRuleCollector::matchedRuleList):
(WebCore::ElementRuleCollector::collectMatchingRules):
(WebCore::ElementRuleCollector::sortAndTransferMatchedRules):
(WebCore::ElementRuleCollector::hasAnyMatchingRules):
- css/ElementRuleCollector.h:
(WebCore::ElementRuleCollector::ElementRuleCollector):
- css/SelectorChecker.cpp:
(WebCore::SelectorChecker::match):
(WebCore::SelectorChecker::matchRecursively):
(WebCore::SelectorChecker::checkOne):
- css/SelectorChecker.h:
- css/StyleInvalidationAnalysis.cpp:
(WebCore::invalidateStyleRecursively):
- css/StyleResolver.cpp:
(WebCore::StyleResolver::pseudoStyleRulesForElement):
- css/StyleResolver.h:
(WebCore::checkRegionSelector):
- cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::jumpIfNotResolvingStyle):
(WebCore::SelectorCompiler::elementIsActiveForStyleResolution):
(WebCore::SelectorCompiler::elementIsHoveredForStyleResolution):
- dom/SelectorQuery.cpp:
(WebCore::SelectorDataList::selectorMatches):
- 5:01 PM Changeset in webkit [170831] by
-
- 3 edits in trunk/Source/WebKit2
Speculative fix for: NetworkProcess sometimes hangs under copyDefaultCredentialForProtectionSpace
https://bugs.webkit.org/show_bug.cgi?id=134666
Reviewed by Tim Horton.
- Shared/mac/SecItemRequestData.cpp:
(WebKit::SecItemRequestData::encode): Encode whether or not the query dictionary exists.
(WebKit::SecItemRequestData::decode): Only fail when query dictionary fails to decode if we expect one.
- UIProcess/mac/SecItemShimProxy.cpp:
(WebKit::SecItemShimProxy::secItemRequest): If the request is of type Invalid, log an error message asking
for a bug, and respond with an "invalid parameter" error.
- 1:05 PM Changeset in webkit [170830] by
-
- 5 edits in trunk/Source
Don't throttle layer flushes when the main resource is a GIF
https://bugs.webkit.org/show_bug.cgi?id=134650
Source/WebCore:
<rdar://problem/17490712>
Reviewed by Simon Fraser.
Avoid throttling big image animations.
- page/FrameView.cpp:
(WebCore::determineLayerFlushThrottleState):
Disable for image documents.
(WebCore::FrameView::disableLayerFlushThrottlingTemporarilyForInteraction):
(WebCore::FrameView::updateLayerFlushThrottling):
Refactor a bit.
- page/LayerFlushThrottleState.h:
Rename the flag.
Source/WebKit2:
Reviewed by Simon Fraser.
- WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::adjustLayerFlushThrottling):
- 11:03 AM Changeset in webkit [170829] by
-
- 2 edits in trunk/Source/WebCore
Inline NodeListsNodeData helpers more aggressively.
<https://webkit.org/b/134654>
Get rid of call overhead costs when retrieving NodeLists and
HTMLCollections from Document. These functions have very few clients,
so there's no real reason to keep them out of line.
Reviewed by Antti Koivisto.
- dom/NodeRareData.h:
(WebCore::NodeListsNodeData::addCacheWithAtomicName):
(WebCore::NodeListsNodeData::addCacheWithName):
- 11:01 AM Changeset in webkit [170828] by
-
- 4 edits in trunk/Source/WebCore
Inline Node's rare data getters.
<https://webkit.org/b/134652>
There was a fair bit of overhead when calling Node::ensureRareData()
from Document's collection getters. This patch inlines the case where
we've already materialized the rare data.
Reviewed by Antti Koivisto.
- dom/Node.cpp:
(WebCore::Node::materializeRareData):
(WebCore::Node::rareData): Deleted.
(WebCore::Node::ensureRareData): Deleted.
- dom/Node.h:
- dom/NodeRareData.h:
(WebCore::Node::rareData):
(WebCore::Node::ensureRareData):