Timeline
Aug 5, 2013:
- 11:45 PM Changeset in webkit [153742] by
-
- 3 edits in trunk/Source/WebCore
[WebGL] validateRenderingState method name change
https://bugs.webkit.org/show_bug.cgi?id=119485
According to validateRenderingState method functionality its name should be
changed. This method validates only vertex attributes.
Patch by Przemyslaw Szymanski <p.szymanski3@samsung.com> on 2013-08-05
Reviewed by Dean Jackson.
No new tests. Covered by existing tests. No changes in functionality.
- html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::validateVertexAttributes):
(WebCore::WebGLRenderingContext::drawArrays):
(WebCore::WebGLRenderingContext::drawElements):
- html/canvas/WebGLRenderingContext.h:
- 11:21 PM Changeset in webkit [153741] by
-
- 1 edit in trunk/Websites/webkit.org/demos/srcset/index.html
Forgot to add alt text to the example image :(
- demos/srcset/index.html:
- 11:01 PM Changeset in webkit [153740] by
-
- 1 edit4 moves1 add in trunk/Websites/webkit.org
Move previous commit into /demos.
- demos/srcset/image-1x.png: Renamed from Websites/webkit.org/blog-files/srcset/image-1x.png.
- demos/srcset/image-2x.png: Renamed from Websites/webkit.org/blog-files/srcset/image-2x.png.
- demos/srcset/image-src.png: Renamed from Websites/webkit.org/blog-files/srcset/image-src.png.
- demos/srcset/index.html: Renamed from Websites/webkit.org/blog-files/srcset/index.html.
- 8:16 PM Changeset in webkit [153739] by
-
- 2 edits in trunk/Source/WebKit/win
Another Windows release build fix.
- WebKitLogging.cpp: Wrap the implementation file in !LOG_DISABLED #if's too.
- 8:10 PM Changeset in webkit [153738] by
-
- 2 edits in trunk/Source/WTF
Build fix for Windows.
- wtf/Assertions.cpp: Include StringExtras.h rather than StdLibExtras.h, since the former is where
strncasecmp is declared.
- 8:03 PM Changeset in webkit [153737] by
-
- 2 edits in trunk/Source/WebKit/win
Build fix for Windows release build.
- WebKitLogging.h: Wrap things in !LOG_DISABLED so that we don't attempt to use macros that have not been defined.
- 7:53 PM Changeset in webkit [153736] by
-
- 44 edits1 delete in trunk/Source
Logging should be configurable using human-readable channel names rather than crazy bitmasks
<http://webkit.org/b/119031>
Implement shared logic for initializing logging channels based on human-readable channel names in WTF,
and rework the WebCore, WebKit and WebKit2 logging initialization on top of it.
Logging channels may now be enabled by providing a comma-separated list of channel names, with the special
"all" name enabling all channels. Channel names prefixed with a leading "-" will result in the named channel
being disabled. For instance, specifying "all,-history,-loading" will result in all logging channels except
for history and loading being enabled.
For OS X developers, this also changes the name of the user defaults used to enable logging. This is done to allow
the old user defaults to remain set for those people that need to switch between version of WebKit before and
after this change. Where the old user default keys were WebCoreLogLevel, WebKitLogLevel and WebKit2LogLevel,
the new user default keys are WebCoreLogging, WebKitLogging and WebKit2Logging.
For GTK developers, this changes the separator used in the WEBKIT_DEBUG environment variable to a comma for
consistency with the other platforms and to enable more code sharing.
While doing this work I've also taken the opportunity to eliminate the need to touch multiple files when
adding a new logging channel. Now only the header in the relevant project needs to be updated.
Reviewed by Sam Weinig.
Source/WebCore:
- GNUmakefile.list.am: Remove the now-unused InitializeLogging.h
- Target.pri: Ditto.
- WebCore.xcodeproj/project.pbxproj: Ditto.
- platform/InitializeLogging.h: Removed. Ditto.
- platform/Logging.cpp: Use WEBCORE_LOG_CHANNELS to define all of the channels.
(WebCore::logChannelByName): Renamed to match our naming conventions. Calls through to the new WTF function
to find a log channel rather than repeating the names of the log channels a further two times each.
(WebCore::initializeLoggingChannelsIfNecessary): Pass the channels and the log level string to the new
WTF function that handles the initialization.
- platform/Logging.h: Declare a WEBCORE_LOG_CHANNELS macro that can be used to apply a preprocessor macro
across the set of all logging channels. Use this macro to declare the logging channels.
- platform/blackberry/LoggingBlackBerry.cpp:
(WebCore::logLevelString): Pull the value out of the WEBKIT_DEBUG environment variable.
- platform/efl/LoggingEfl.cpp:
(WebCore::logLevelString): Pull the value out of the WEBKIT_DEBUG environment variable, and then prepend
NotYetImplemented to it so that that channel will be enabled by default.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSink): Accommodate the rename to logChannelByName.
- platform/gtk/LoggingGtk.cpp:
(WebCore::logLevelString): Pull the value out of the WEBKIT_DEBUG environment variable, and then prepend
NotYetImplemented to it so that that channel will be enabled by default.
- platform/mac/LoggingMac.mm:
(WebCore::logLevelString): Pull the value out of the WebCoreLogging user default key.
- platform/qt/LoggingQt.cpp:
(WebCore::logLevelString): Pull the value out of the QT_WEBKIT_LOG environment variable, and then prepend
NotYetImplemented to it so that the channel will be enabled by default.
- platform/win/LoggingWin.cpp:
(WebCore::logLevelString): Pull the value out of the WebCoreLogging environment variable.
Source/WebKit/blackberry:
- Api/BlackBerryGlobal.cpp: Switch from WebCore's InitializeLogging.h to Logging.h.
Source/WebKit/efl:
- ewk/ewk_main.cpp: Switch from WebCore's InitializeLogging.h to Logging.h.
Source/WebKit/gtk:
- webkit/webkitglobals.cpp: Switch from WebCore's InitializeLogging.h to Logging.h.
Source/WebKit/mac:
- Misc/WebKitLogging.h: Declare a WEBKIT_LOG_CHANNELS macro that can be used to apply a preprocessor macro
across the set of all logging channels. Use this macro to declare the logging channels.
- Misc/WebKitLogging.m: Use WEBKIT_LOG_CHANNELS to define all of the channels. Pass the channels and the
preference value to the new WTF function that handles the initialization.
- WebView/WebPreferenceKeysPrivate.h: Remove a key that does not need to be here.
- WebView/WebView.mm: Switch from WebCore's InitializeLogging.h to Logging.h.
Source/WebKit/qt:
- WebCoreSupport/InitWebCoreQt.cpp: Switch from WebCore's InitializeLogging.h to Logging.h.
Source/WebKit/win:
- WebKitLogging.cpp: Declare a WEBKIT_LOG_CHANNELS macro that can be used to apply a preprocessor macro across
the set of all logging channels. Use this macro to declare the logging channels.
- WebKitLogging.h: Use WEBKIT_LOG_CHANNELS to define all of the channels. Pass the channels to the new WTF
function that handles the initialization. As per the previous implementation a developer needs to hard-code
their desired log level here.
- WebView.cpp: Switch from WebCore's InitializeLogging.h to Logging.h.
Source/WebKit2:
- NetworkProcess/NetworkProcess.cpp: Switch from WebCore's InitializeLogging.h to Logging.h.
- Platform/Logging.cpp: Use WEBKIT2_LOG_CHANNELS to define all of the channels.
(WebKit::initializeLogChannelsIfNecessary): Pass the channels and the log level string to the new WTF function
that handles the initialization.
(WebKit::logChannelByName): Renamed to match our naming conventions. Calls through to the new WTF function
to find a log channel rather than repeating the names of the log channels a further two times each.
(WebKit::logLevelString): Provide a no-op implementation.
- Platform/Logging.h: Declare a WEBKIT2_LOG_CHANNELS macro that can be used to apply a preprocessor macro
across the set of all logging channels. Use this macro to declare the logging channels.
- Platform/efl/LoggingEfl.cpp:
(WebKit::logLevelString): Pull the value out of the WEBKIT_DEBUG environment variable.
- Platform/gtk/LoggingGtk.cpp:
(WebKit::logLevelString): Ditto.
- Platform/mac/Logging.mac.mm:
(WebKit::logLevelString): Pull the value out of the WebKit2Logging user default key.
- Platform/qt/LoggingQt.cpp:
(WebKit::logLevelString): Pull the value out of the QT_WEBKIT_LOG environment variable.
- Shared/WebKit2Initialize.cpp: Switch from WebCore's InitializeLogging.h to Logging.h.
- UIProcess/WebContext.cpp: Switch from WebCore's InitializeLogging.h to Logging.h.
Source/WTF:
- wtf/Assertions.cpp:
(WTFLogChannelByName): Iterate over the provided array of log channels, returning the first whose name
matches case-insensitively.
(setStateOfAllChannels): Helper function to set the state of all channels to a single value.
(WTFInitializeLogChannelStatesFromString): Parse a string containing a case-insensitive, comma-separated list
of channel names to enable or disable, with the latter being prefixed by a "-".
- wtf/Assertions.h: Update the layout of WTFLogChannel to include only the state of the channel and its name.
Declare WTFLogChannelByName and WTFInitializeLogChannelStatesFromString.
- wtf/RefCountedLeakCounter.cpp: Update to the new format of WTFLogChannel.
- 7:03 PM Changeset in webkit [153735] by
-
- 1 edit5 adds in trunk/Websites/webkit.org
Upload example for a blog post.
- blog-files/srcset/image-1x.png: Added.
- blog-files/srcset/image-2x.png: Added.
- blog-files/srcset/image-src.png: Added.
- blog-files/srcset/index.html: Added.
- 7:02 PM Changeset in webkit [153734] by
-
- 3 edits in trunk/Source/WebCore
Editor::updateMarkersForWordsAffectedByEditing(bool) shouldn't compute start and end of words when there are nor markers
https://bugs.webkit.org/show_bug.cgi?id=119501
Reviewed by Enrica Casucci.
Exit early in updateMarkersForWordsAffectedByEditing before calling startOfWord and endOfWord if there are no document markers.
- dom/DocumentMarkerController.h:
(WebCore::DocumentMarkerController::hasMarkers): Added.
- editing/Editor.cpp:
(WebCore::Editor::updateMarkersForWordsAffectedByEditing):
- 6:13 PM Changeset in webkit [153733] by
-
- 9 edits2 adds in trunk
Update HTMLPreloadScanner to handle img srcset
https://bugs.webkit.org/show_bug.cgi?id=119360
Reviewed by Sam Weinig.
This patch is a merge of similar patches from Yoav Weiss <yoav@yoav.ws>
and Dean Jackson.
Source/WebCore:
Test: fast/preloader/image-srcset.html
- html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::parseAttribute): Move srcset parsing into
HTMLParserIdioms, and call it when we hit src or srcset.
- html/HTMLImageElement.h: Remove code that was moved to HTMLParserIdioms.
- html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::pumpTokenizer): Pass device scale into preloader.
(WebCore::HTMLDocumentParser::insert):
- html/parser/HTMLPreloadScanner.cpp:
(WebCore::TokenPreloadScanner::StartTagScanner::StartTagScanner): Takes device scale as a parameter.
(WebCore::TokenPreloadScanner::StartTagScanner::processAttributes): Resolve between src and srcSet if necessary.
(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): Add support for srcset attribute.
(WebCore::TokenPreloadScanner::StartTagScanner::setUrlToLoad): New flag to indicate if we should
replace any existing value.
(WebCore::TokenPreloadScanner::TokenPreloadScanner): Takes device scale.
(WebCore::TokenPreloadScanner::scanCommon): Pass device scale.
(WebCore::HTMLPreloadScanner::HTMLPreloadScanner):
- html/parser/HTMLPreloadScanner.h: New attribute to constructor for device scale. New member
variable on TokenPreloadScanner that holds the srcset value.
- html/parser/HTMLParserIdioms.cpp:
(WebCore::ImageWithScale::operator==): Used for sorting.
(WebCore::compareByScaleFactor): Used for sorting.
(WebCore::bestFitSourceForImageAttributes): New method that takes the code from HTMLImageElement
for parsing src and srcset attributes, and finding the best match.
- html/parser/HTMLParserIdioms.h:
LayoutTests:
New test to make sure the HTML preloader takes the
value of srcset if available.
- fast/preloader/image-srcset-expected.txt: Added.
- fast/preloader/image-srcset.html: Added.
- 5:41 PM Changeset in webkit [153732] by
-
- 7 edits1 add in trunk/Source/ThirdParty/ANGLE
Added optimizations to Windows ANGLE builds.
https://bugs.webkit.org/show_bug.cgi?id=119500
Reviewed by Brent Fulgham.
- ANGLE.vcxproj/ANGLERelease.props: Added.
- ANGLE.vcxproj/libEGL.vcxproj:
- ANGLE.vcxproj/libGLESv2.vcxproj:
- ANGLE.vcxproj/preprocessor.vcxproj:
- ANGLE.vcxproj/translator_common.vcxproj:
- ANGLE.vcxproj/translator_glsl.vcxproj:
- ANGLE.vcxproj/translator_hlsl.vcxproj:
Use ANGLERelease.props for Release, Release_WinCairo, and Production configurations.
- 5:39 PM Changeset in webkit [153731] by
-
- 2 edits in trunk/Source/WebKit
Gardening: fix build after r153728.
Not reviewed.
- WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
- 5:28 PM Changeset in webkit [153730] by
-
- 2 edits in trunk/Source/WTF
Disable <meter> by default on iOS, it is enabled through the xconfig files
https://bugs.webkit.org/show_bug.cgi?id=119503
Patch by Benjamin Poulain <bpoulain@apple.com> on 2013-08-05
Reviewed by Alexey Proskuryakov.
- wtf/FeatureDefines.h:
- 4:06 PM Changeset in webkit [153729] by
-
- 2 edits in trunk/LayoutTests
<rdar://problem/13128990> chunked-progress-event-expectedLength.html is flaky on Mac
https://bugs.webkit.org/show_bug.cgi?id=119498
Reviewed by Brady Eidson.
- http/tests/xmlhttprequest/resources/chunked-transfer.php: This test relies on length not being known upfront, which is not the case when the resource is served form cache.
- 3:11 PM Changeset in webkit [153728] by
-
- 122 edits15 moves13 adds in trunk/Source
Move TypedArray implementation into JSC
https://bugs.webkit.org/show_bug.cgi?id=119489
Reviewed by Filip Pizlo.
Source/JavaScriptCore:
Move TypedArray implementation into JSC in advance of re-implementation
- GNUmakefile.list.am:
- JSCTypedArrayStubs.h:
- JavaScriptCore.xcodeproj/project.pbxproj:
- runtime/ArrayBuffer.cpp: Renamed from Source/WTF/wtf/ArrayBuffer.cpp.
(JSC::ArrayBuffer::transfer):
(JSC::ArrayBuffer::addView):
(JSC::ArrayBuffer::removeView):
- runtime/ArrayBuffer.h: Renamed from Source/WTF/wtf/ArrayBuffer.h.
(JSC::ArrayBufferContents::ArrayBufferContents):
(JSC::ArrayBufferContents::data):
(JSC::ArrayBufferContents::sizeInBytes):
(JSC::ArrayBufferContents::transfer):
(JSC::ArrayBufferContents::copyTo):
(JSC::ArrayBuffer::isNeutered):
(JSC::ArrayBuffer::~ArrayBuffer):
(JSC::ArrayBuffer::clampValue):
(JSC::ArrayBuffer::create):
(JSC::ArrayBuffer::createUninitialized):
(JSC::ArrayBuffer::ArrayBuffer):
(JSC::ArrayBuffer::data):
(JSC::ArrayBuffer::byteLength):
(JSC::ArrayBuffer::slice):
(JSC::ArrayBuffer::sliceImpl):
(JSC::ArrayBuffer::clampIndex):
(JSC::ArrayBufferContents::tryAllocate):
(JSC::ArrayBufferContents::~ArrayBufferContents):
- runtime/ArrayBufferView.cpp: Renamed from Source/WTF/wtf/ArrayBufferView.cpp.
(JSC::ArrayBufferView::ArrayBufferView):
(JSC::ArrayBufferView::~ArrayBufferView):
(JSC::ArrayBufferView::neuter):
- runtime/ArrayBufferView.h: Renamed from Source/WTF/wtf/ArrayBufferView.h.
(JSC::ArrayBufferView::buffer):
(JSC::ArrayBufferView::baseAddress):
(JSC::ArrayBufferView::byteOffset):
(JSC::ArrayBufferView::setNeuterable):
(JSC::ArrayBufferView::isNeuterable):
(JSC::ArrayBufferView::verifySubRange):
(JSC::ArrayBufferView::clampOffsetAndNumElements):
(JSC::ArrayBufferView::setImpl):
(JSC::ArrayBufferView::setRangeImpl):
(JSC::ArrayBufferView::zeroRangeImpl):
(JSC::ArrayBufferView::calculateOffsetAndLength):
- runtime/Float32Array.h: Renamed from Source/WTF/wtf/Float32Array.h.
(JSC::Float32Array::set):
(JSC::Float32Array::getType):
(JSC::Float32Array::create):
(JSC::Float32Array::createUninitialized):
(JSC::Float32Array::Float32Array):
(JSC::Float32Array::subarray):
- runtime/Float64Array.h: Renamed from Source/WTF/wtf/Float64Array.h.
(JSC::Float64Array::set):
(JSC::Float64Array::getType):
(JSC::Float64Array::create):
(JSC::Float64Array::createUninitialized):
(JSC::Float64Array::Float64Array):
(JSC::Float64Array::subarray):
- runtime/Int16Array.h: Renamed from Source/WTF/wtf/Int16Array.h.
(JSC::Int16Array::getType):
(JSC::Int16Array::create):
(JSC::Int16Array::createUninitialized):
(JSC::Int16Array::Int16Array):
(JSC::Int16Array::subarray):
- runtime/Int32Array.h: Renamed from Source/WTF/wtf/Int32Array.h.
(JSC::Int32Array::getType):
(JSC::Int32Array::create):
(JSC::Int32Array::createUninitialized):
(JSC::Int32Array::Int32Array):
(JSC::Int32Array::subarray):
- runtime/Int8Array.h: Renamed from Source/WTF/wtf/Int8Array.h.
(JSC::Int8Array::getType):
(JSC::Int8Array::create):
(JSC::Int8Array::createUninitialized):
(JSC::Int8Array::Int8Array):
(JSC::Int8Array::subarray):
- runtime/IntegralTypedArrayBase.h: Renamed from Source/WTF/wtf/IntegralTypedArrayBase.h.
(JSC::IntegralTypedArrayBase::set):
(JSC::IntegralTypedArrayBase::IntegralTypedArrayBase):
- runtime/TypedArrayBase.h: Renamed from Source/WTF/wtf/TypedArrayBase.h.
(JSC::TypedArrayBase::data):
(JSC::TypedArrayBase::set):
(JSC::TypedArrayBase::setRange):
(JSC::TypedArrayBase::zeroRange):
(JSC::TypedArrayBase::length):
(JSC::TypedArrayBase::byteLength):
(JSC::TypedArrayBase::item):
(JSC::TypedArrayBase::checkInboundData):
(JSC::TypedArrayBase::TypedArrayBase):
(JSC::TypedArrayBase::create):
(JSC::TypedArrayBase::createUninitialized):
(JSC::TypedArrayBase::subarrayImpl):
(JSC::TypedArrayBase::neuter):
- runtime/Uint16Array.h: Renamed from Source/WTF/wtf/Uint16Array.h.
(JSC::Uint16Array::getType):
(JSC::Uint16Array::create):
(JSC::Uint16Array::createUninitialized):
(JSC::Uint16Array::Uint16Array):
(JSC::Uint16Array::subarray):
- runtime/Uint32Array.h: Renamed from Source/WTF/wtf/Uint32Array.h.
(JSC::Uint32Array::getType):
(JSC::Uint32Array::create):
(JSC::Uint32Array::createUninitialized):
(JSC::Uint32Array::Uint32Array):
(JSC::Uint32Array::subarray):
- runtime/Uint8Array.h: Renamed from Source/WTF/wtf/Uint8Array.h.
(JSC::Uint8Array::getType):
(JSC::Uint8Array::create):
(JSC::Uint8Array::createUninitialized):
(JSC::Uint8Array::Uint8Array):
(JSC::Uint8Array::subarray):
- runtime/Uint8ClampedArray.h: Renamed from Source/WTF/wtf/Uint8ClampedArray.h.
(JSC::Uint8ClampedArray::getType):
(JSC::Uint8ClampedArray::create):
(JSC::Uint8ClampedArray::createUninitialized):
(JSC::Uint8ClampedArray::zeroFill):
(JSC::Uint8ClampedArray::set):
(JSC::Uint8ClampedArray::Uint8ClampedArray):
(JSC::Uint8ClampedArray::subarray):
- runtime/VM.h:
Source/WebCore:
Update WebCore for new location of TypedArray implementation.
- ForwardingHeaders/runtime/ArrayBuffer.h: Added.
- ForwardingHeaders/runtime/ArrayBufferView.h: Added.
- ForwardingHeaders/runtime/Float32Array.h: Added.
- ForwardingHeaders/runtime/Float64Array.h: Added.
- ForwardingHeaders/runtime/Int16Array.h: Added.
- ForwardingHeaders/runtime/Int32Array.h: Added.
- ForwardingHeaders/runtime/Int8Array.h: Added.
- ForwardingHeaders/runtime/IntegralTypedArrayBase.h: Added.
- ForwardingHeaders/runtime/TypedArrayBase.h: Added.
- ForwardingHeaders/runtime/Uint16Array.h: Added.
- ForwardingHeaders/runtime/Uint32Array.h: Added.
- ForwardingHeaders/runtime/Uint8Array.h: Added.
- ForwardingHeaders/runtime/Uint8ClampedArray.h: Added.
- Modules/webaudio/AnalyserNode.h:
(WebCore::AnalyserNode::getFloatFrequencyData):
(WebCore::AnalyserNode::getByteFrequencyData):
(WebCore::AnalyserNode::getByteTimeDomainData):
- Modules/webaudio/AsyncAudioDecoder.cpp:
- Modules/webaudio/AsyncAudioDecoder.h:
(WebCore::AsyncAudioDecoder::DecodingTask::audioData):
- Modules/webaudio/AudioBuffer.h:
- Modules/webaudio/AudioContext.cpp:
- Modules/webaudio/AudioParam.h:
- Modules/webaudio/AudioParamTimeline.h:
- Modules/webaudio/PeriodicWave.h:
- Modules/webaudio/RealtimeAnalyser.cpp:
- Modules/webaudio/RealtimeAnalyser.h:
- Modules/webaudio/ScriptProcessorNode.cpp:
- Modules/webaudio/WaveShaperProcessor.h:
- Modules/websockets/ThreadableWebSocketChannel.h:
- Modules/websockets/WebSocket.cpp:
- Modules/websockets/WebSocket.h:
- Modules/websockets/WebSocketChannel.cpp:
- Modules/websockets/WebSocketChannel.h:
- Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
- Modules/websockets/WorkerThreadableWebSocketChannel.h:
- WebCore.exp.in:
- bindings/js/JSArrayBufferCustom.cpp:
- bindings/js/JSArrayBufferViewHelper.h:
- bindings/js/JSAudioContextCustom.cpp:
- bindings/js/JSCryptoCustom.cpp:
- bindings/js/JSDictionary.h:
- bindings/js/JSFileReaderCustom.cpp:
- bindings/js/JSWebGLRenderingContextCustom.cpp:
- bindings/js/JSXMLHttpRequestCustom.cpp:
- bindings/js/SerializedScriptValue.cpp:
(WebCore::SerializedScriptValue::transferArrayBuffers):
- bindings/js/SerializedScriptValue.h:
- bindings/scripts/CodeGeneratorJS.pm:
(AddIncludesForType):
(GenerateHeader):
(NativeToJSValue):
- dom/MessageEvent.h:
- fileapi/FileReader.cpp:
- fileapi/FileReader.h:
- fileapi/FileReaderLoader.cpp:
- fileapi/FileReaderLoader.h:
- fileapi/FileReaderSync.cpp:
- fileapi/FileReaderSync.h:
- fileapi/WebKitBlobBuilder.cpp:
- fileapi/WebKitBlobBuilder.h:
- html/HTMLMediaElement.cpp:
- html/ImageData.h:
- html/canvas/ArrayBuffer.idl:
- html/canvas/ArrayBufferView.idl:
- html/canvas/CanvasRenderingContext2D.cpp:
- html/canvas/DataView.h:
- html/canvas/Float32Array.idl:
- html/canvas/Float64Array.idl:
- html/canvas/Int16Array.idl:
- html/canvas/Int32Array.idl:
- html/canvas/Int8Array.idl:
- html/canvas/Uint16Array.idl:
- html/canvas/Uint32Array.idl:
- html/canvas/Uint8Array.idl:
- html/canvas/Uint8ClampedArray.idl:
- html/canvas/WebGLBuffer.h:
(WebCore::WebGLBuffer::elementArrayBuffer):
- html/canvas/WebGLGetInfo.cpp:
- html/canvas/WebGLGetInfo.h:
- html/canvas/WebGLRenderingContext.cpp:
- html/canvas/WebGLRenderingContext.h:
- inspector/InspectorMemoryAgent.cpp:
- page/Crypto.cpp:
- page/Crypto.h:
- platform/graphics/GraphicsContext3D.cpp:
- platform/graphics/ImageBuffer.h:
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
- platform/graphics/cg/ImageBufferDataCG.h:
- platform/graphics/filters/FEBlend.cpp:
- platform/graphics/filters/FEColorMatrix.cpp:
- platform/graphics/filters/FEComponentTransfer.cpp:
- platform/graphics/filters/FEComposite.cpp:
- platform/graphics/filters/FEConvolveMatrix.cpp:
- platform/graphics/filters/FECustomFilter.cpp:
- platform/graphics/filters/FEDisplacementMap.cpp:
- platform/graphics/filters/FEDropShadow.cpp:
- platform/graphics/filters/FEGaussianBlur.cpp:
- platform/graphics/filters/FELighting.h:
- platform/graphics/filters/FEMorphology.cpp:
- platform/graphics/filters/FETurbulence.cpp:
- platform/graphics/filters/FilterEffect.cpp:
- platform/graphics/filters/FilterEffect.h:
- platform/graphics/mac/GraphicsContext3DMac.mm:
- platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
- testing/Internals.h:
- xml/XMLHttpRequest.cpp:
- xml/XMLHttpRequest.h:
(WebCore::XMLHttpRequest::optionalResponseArrayBuffer):
Source/WTF:
Remove TypedArray implementation from WTF
- GNUmakefile.list.am:
- WTF.xcodeproj/project.pbxproj:
- wtf/Forward.h:
- 3:11 PM Changeset in webkit [153727] by
-
- 4 edits2 copies in branches/safari-537-branch
Merged r153725. <rdar://problem/14637103>
- 3:05 PM Changeset in webkit [153726] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r153724. <rdar://problem/14610818>
- 2:56 PM Changeset in webkit [153725] by
-
- 4 edits2 adds in trunk
<rdar://problem/14637103> REGRESSION (r153060?): Microphone appears in the way
of text when dictating an e-mail
https://bugs.webkit.org/show_bug.cgi?id=119496
Reviewed by Ryosuke Niwa.
Test: platform/mac/editing/input/firstrectforcharacterrange-caret-in-br.html
- rendering/RenderObject.cpp: (WebCore::RenderObject::absoluteBoundingBoxRectForRange): FloatRect::unite() doesn't preserve empty rects, which we need here. We alrady handle the case of collapsed range in Editor::firstRectForRange(), and this is similar, but we can't currently cover both with one simple fix.
- 2:26 PM Changeset in webkit [153724] by
-
- 2 edits in trunk/Source/WebKit2
Ignore the Apple Java placeholder plug-in
https://bugs.webkit.org/show_bug.cgi?id=119494
<rdar://problem/14610818>
Reviewed by Beth Dakin.
Never attempt to load the Java placeholder plug-in.
- UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
(WebKit::PluginInfoStore::shouldUsePlugin):
- 2:20 PM Changeset in webkit [153723] by
-
- 3 edits6 adds in trunk
Region based columns not painted correctly in non-default writing-modes
https://bugs.webkit.org/show_bug.cgi?id=118506
Patch by Morten Stenshorne <mstensho@opera.com> on 2013-08-05
Reviewed by David Hyatt.
Source/WebCore:
The column translation offset was calculated incorrectly.
The dirty rect intersection check was also wrong.
Added some documentation, to make it clear what's going on.
Tests: fast/multicol/newmulticol/hide-box-horizontal-bt.html
fast/multicol/newmulticol/hide-box-vertical-lr.html
fast/multicol/newmulticol/hide-box-vertical-rl.html
- rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::collectLayerFragments):
LayoutTests:
- fast/multicol/newmulticol/hide-box-horizontal-bt-expected.html: Added.
- fast/multicol/newmulticol/hide-box-horizontal-bt.html: Added.
- fast/multicol/newmulticol/hide-box-vertical-lr-expected.html: Added.
- fast/multicol/newmulticol/hide-box-vertical-lr.html: Added.
- fast/multicol/newmulticol/hide-box-vertical-rl-expected.html: Added.
- fast/multicol/newmulticol/hide-box-vertical-rl.html: Added.
- 2:17 PM Changeset in webkit [153722] by
-
- 3 edits6 adds in trunk
Region based columns not clipped properly
https://bugs.webkit.org/show_bug.cgi?id=118499
Patch by Morten Stenshorne <mstensho@opera.com> on 2013-08-05
Reviewed by David Hyatt.
Source/WebCore:
Need to call RenderRegion::overflowRectForFlowThreadPortion() first,
and THEN clip in the column gaps. overflowRectForFlowThreadPortion()
expands the logical left and right to the flow thread's overflow
rectangle, effectively defeating inline direction clipping completely.
Tests: fast/multicol/newmulticol/clipping-overflow-hidden.html
fast/multicol/newmulticol/clipping-top-overflow.html
fast/multicol/newmulticol/clipping.html
- rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::flowThreadPortionOverflowRect):
LayoutTests:
- fast/multicol/newmulticol/clipping-expected.html: Added.
- fast/multicol/newmulticol/clipping-overflow-hidden-expected.html: Added.
- fast/multicol/newmulticol/clipping-overflow-hidden.html: Added.
- fast/multicol/newmulticol/clipping-top-overflow-expected.html: Added.
- fast/multicol/newmulticol/clipping-top-overflow.html: Added.
- fast/multicol/newmulticol/clipping.html: Added.
- 1:26 PM Changeset in webkit [153721] by
-
- 3 edits in trunk/Tools
[GTK] Implement leak checking with valgrind
https://bugs.webkit.org/show_bug.cgi?id=118785
Patch by Brian Holt <brian.holt@samsung.com> on 2013-08-05
Reviewed by Dirk Pranke.
Launch the DRT under Valgrind to generate xml files with details
of leaks found.
- Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
- Scripts/webkitpy/port/gtk.py:
(GtkPort.init):
(GtkPort.default_timeout_ms): Allow extra time to run under
Valgrind.
(GtkPort.setup_environ_for_server): Pass Valgrind instructions
using environment variables.
- 12:52 PM Changeset in webkit [153720] by
-
- 17 edits1 add in trunk/Source/JavaScriptCore
Copied space should be able to handle more than one copied backing store per JSCell
https://bugs.webkit.org/show_bug.cgi?id=119471
Reviewed by Mark Hahnenberg.
This allows a cell to call copyLater() multiple times for multiple different
backing stores, and then have copyBackingStore() called exactly once for each
of those. A token tells it which backing store to copy. All backing stores
must be named using the CopyToken, an enumeration which currently cannot
exceed eight entries.
When copyBackingStore() is called, it's up to the callee to (a) use the token
to decide what to copy and (b) call its base class's copyBackingStore() in
case the base class had something that needed copying. The only exception is
that JSCell never asks anything to be copied, and so if your base is JSCell
then you don't have to do anything.
- GNUmakefile.list.am:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.xcodeproj/project.pbxproj:
- heap/CopiedBlock.h:
- heap/CopiedBlockInlines.h:
(JSC::CopiedBlock::reportLiveBytes):
- heap/CopyToken.h: Added.
- heap/CopyVisitor.cpp:
(JSC::CopyVisitor::copyFromShared):
- heap/CopyVisitor.h:
- heap/CopyVisitorInlines.h:
(JSC::CopyVisitor::visitItem):
- heap/CopyWorkList.h:
(JSC::CopyWorklistItem::CopyWorklistItem):
(JSC::CopyWorklistItem::cell):
(JSC::CopyWorklistItem::token):
(JSC::CopyWorkListSegment::get):
(JSC::CopyWorkListSegment::append):
(JSC::CopyWorkListSegment::data):
(JSC::CopyWorkListIterator::get):
(JSC::CopyWorkListIterator::operator*):
(JSC::CopyWorkListIterator::operator->):
(JSC::CopyWorkList::append):
- heap/SlotVisitor.h:
- heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::copyLater):
- runtime/ClassInfo.h:
- runtime/JSCell.cpp:
(JSC::JSCell::copyBackingStore):
- runtime/JSCell.h:
- runtime/JSObject.cpp:
(JSC::JSObject::visitButterfly):
(JSC::JSObject::copyBackingStore):
- runtime/JSObject.h:
- 12:38 PM Changeset in webkit [153719] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r152884. <rdar://problem/14472043>
- 12:35 PM Changeset in webkit [153718] by
-
- 7 edits in branches/safari-537-branch/Source/WebCore
Merged r152876. <rdar://problem/14472043>
- 12:31 PM Changeset in webkit [153717] by
-
- 11 edits in branches/safari-537-branch
Merged r153628. <rdar://problem/14498362>
- 12:27 PM Changeset in webkit [153716] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153377. <rdar://problem/13011371>
- 12:25 PM Changeset in webkit [153715] by
-
- 17 edits6 copies in branches/safari-537-branch
Merged r152861. <rdar://problem/13011371>
- 11:04 AM Changeset in webkit [153714] by
-
- 5 edits in branches/safari-537-branch/Source/WebCore
Merged r153706. <rdar://problem/14637544>
- 10:49 AM Changeset in webkit [153713] by
-
- 3 edits in branches/safari-537-branch/Source/WebCore
Merged r153699. <rdar://problem/14643481>
- 10:42 AM Changeset in webkit [153712] by
-
- 5 edits in branches/safari-537-branch/Source/WebCore
Merged r153696. <rdar://problem/14643349>
- 10:33 AM Changeset in webkit [153711] by
-
- 3 edits in branches/safari-537-branch/Source/WebCore
Merged r153695. <rdar://problem/14616012>
- 10:27 AM Changeset in webkit [153710] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153591. <rdar://problem/14616012>
- 10:20 AM Changeset in webkit [153709] by
-
- 2 edits in branches/safari-537-branch/Source/WTF
Merged r153455. <rdar://problem/14528244>
- 10:13 AM Changeset in webkit [153708] by
-
- 4 edits3 adds in branches/safari-537-branch
Merge patch for <rdar://problem/14624998>
- 9:26 AM Changeset in webkit [153707] by
-
- 4 edits in trunk/Source/WebCore
XMLTreeViewer should be created only in the XML viewer mode
https://bugs.webkit.org/show_bug.cgi?id=119483
Reviewed by Alexey Proskuryakov.
XMLTreeViewer is created even for the XSL transform which is avoided by the patch.
The XMLTreeViewer::hasNoStyleInformation() is moved to XMLDocumentParserLibxml2.cpp
as static inline method as XMLTreeViewer should not have the responsibility for it.
Also removes an unnecessary conditional check while deciding for XML viewer mode.
Blink patch review links:
https://codereview.chromium.org/19552003/
https://codereview.chromium.org/22150003/
No new tests as the patch is about code refactoring.
- xml/XMLTreeViewer.cpp:
- xml/XMLTreeViewer.h:
- xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::hasNoStyleInformation):
(WebCore::XMLDocumentParser::doEnd):
- 8:29 AM Changeset in webkit [153706] by
-
- 5 edits in trunk/Source/WebCore
Loading a video with a custom URL scheme will result in stalling playback
https://bugs.webkit.org/show_bug.cgi?id=119469
Reviewed by Eric Carlson.
Break the assumption that only one AVAssetResourceRequest will be outstanding simultaneously
by storing a HashMap of AVAssetResourceRequests and their resulting WebCoreAVFResourceLoader.
When loading is stopped (due to completion or error), notify the MediaPlayerPrivateAVFoundation
parent so that the map can be emptied.
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource): Store the request
in m_resourceLoaderMap.
(WebCore::MediaPlayerPrivateAVFoundationObjC::didCancelLoadingRequest): Pull the request from
m_resourceLoaderMap.
(WebCore::MediaPlayerPrivateAVFoundationObjC::didStopLoadingRequest): Remove the requset from
m_resourceLoaderMap.
- platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.h:
- platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
(WebCore::WebCoreAVFResourceLoader::create): Return a PassRefPtr, rather than a PassOwnPtr.
(WebCore::WebCoreAVFResourceLoader::stopLoading): Call didStopLoadingRequest.
- 7:23 AM Changeset in webkit [153705] by
-
- 47 edits in trunk/LayoutTests
Make tests platform agnostic, fix async tests, remove broken blend modes: hue, saturation, color, luminosity, soft-light.
The test suite should now pass on windows.
https://bugs.webkit.org/show_bug.cgi?id=119463
Patch by Mihai Tica <mitica@adobe.com> on 2013-08-05
Reviewed by Dirk Schulze.
- fast/canvas/canvas-blending-clipping-expected.txt:
- fast/canvas/canvas-blending-clipping.html:
- fast/canvas/canvas-blending-color-over-color-expected.txt:
- fast/canvas/canvas-blending-color-over-color.html:
- fast/canvas/canvas-blending-color-over-gradient-expected.txt:
- fast/canvas/canvas-blending-color-over-gradient.html:
- fast/canvas/canvas-blending-color-over-image-expected.txt:
- fast/canvas/canvas-blending-color-over-image.html:
- fast/canvas/canvas-blending-color-over-pattern-expected.txt:
- fast/canvas/canvas-blending-color-over-pattern.html:
- fast/canvas/canvas-blending-fill-style-expected.txt:
- fast/canvas/canvas-blending-fill-style.html:
- fast/canvas/canvas-blending-global-alpha-expected.txt:
- fast/canvas/canvas-blending-global-alpha.html:
- fast/canvas/canvas-blending-gradient-over-color-expected.txt:
- fast/canvas/canvas-blending-gradient-over-color.html:
- fast/canvas/canvas-blending-gradient-over-gradient-expected.txt:
- fast/canvas/canvas-blending-gradient-over-gradient.html:
- fast/canvas/canvas-blending-gradient-over-image-expected.txt:
- fast/canvas/canvas-blending-gradient-over-image.html:
- fast/canvas/canvas-blending-gradient-over-pattern-expected.txt:
- fast/canvas/canvas-blending-gradient-over-pattern.html:
- fast/canvas/canvas-blending-helpers.js:
(separateBlendFunctions.hardLight):
(nonSeparateBlendFunctions.hue):
(nonSeparateBlendFunctions.saturation):
(nonSeparateBlendFunctions.color):
(nonSeparateBlendFunctions.luminosity):
- fast/canvas/canvas-blending-image-over-color-expected.txt:
- fast/canvas/canvas-blending-image-over-color.html:
- fast/canvas/canvas-blending-image-over-gradient-expected.txt:
- fast/canvas/canvas-blending-image-over-gradient.html:
- fast/canvas/canvas-blending-image-over-image-expected.txt:
- fast/canvas/canvas-blending-image-over-image.html:
- fast/canvas/canvas-blending-image-over-pattern-expected.txt:
- fast/canvas/canvas-blending-image-over-pattern.html:
- fast/canvas/canvas-blending-pattern-over-color-expected.txt:
- fast/canvas/canvas-blending-pattern-over-color.html:
- fast/canvas/canvas-blending-pattern-over-gradient-expected.txt:
- fast/canvas/canvas-blending-pattern-over-gradient.html:
- fast/canvas/canvas-blending-pattern-over-image-expected.txt:
- fast/canvas/canvas-blending-pattern-over-image.html:
- fast/canvas/canvas-blending-pattern-over-pattern-expected.txt:
- fast/canvas/canvas-blending-pattern-over-pattern.html:
- fast/canvas/canvas-blending-shadow-expected.txt:
- fast/canvas/canvas-blending-shadow.html:
- fast/canvas/canvas-blending-text-expected.txt:
- fast/canvas/canvas-blending-text.html:
- fast/canvas/canvas-blending-transforms-expected.txt:
- fast/canvas/canvas-blending-transforms.html:
- platform/win/TestExpectations:
- 6:09 AM Changeset in webkit [153704] by
-
- 10 edits2 adds in trunk
Spatial Navigation should avoid unwanted calculation while deciding focus candidate.
https://bugs.webkit.org/show_bug.cgi?id=117265
Patch by Abhijeet Kandalkar <abhijeet.k@samsung.com> on 2013-08-05
Reviewed by Antonio Gomes.
Source/WebCore:
Spatial Navigation should consider only those nodes as candidate which are exactly in the focus-direction.
e.g. If we are moving down then the nodes that are above CURRENT focused node should be considered as invalid.
Added isValidCandidate() which checks whether node is exactly in the focus-direction.
Test: fast/spatial-navigation/snav-search-optimization.html
- page/FocusController.cpp:
(WebCore::FocusController::findFocusCandidateInContainer):
(WebCore::FocusController::advanceFocusDirectionally):
- page/Page.cpp:
(WebCore::Page::Page):
- page/Page.h:
(WebCore::Page::setLastSpatialNavigationCandidateCount):
(WebCore::Page::lastSpatialNavigationCandidateCount):
- page/SpatialNavigation.cpp:
(WebCore::isValidCandidate):
- page/SpatialNavigation.h:
- testing/Internals.cpp:
(WebCore::Internals::lastSpatialNavigationCandidateCount):
- testing/Internals.h:
- testing/Internals.idl:
LayoutTests:
Added testcases to count how many target nodes were tested before choosing a final target.
- fast/spatial-navigation/snav-search-optimization-expected.txt: Added.
- fast/spatial-navigation/snav-search-optimization.html: Added.
- 12:58 AM Changeset in webkit [153703] by
-
- 6 edits in trunk
[Automake] Define ENABLE_JIT through the Autoconf header
https://bugs.webkit.org/show_bug.cgi?id=119445
Reviewed by Martin Robinson.
.:
Instead of defining the ENABLE_JIT value through JSC_CPPFLAGS, the feature define is
set to be either enabled or disabled through the Autoconf header, based on the value
passed through the configuration flag. The 'auto' value is used as default, meaning
that the feature is enabled or disabled in the Platform.h header based on the platform
configuration (OS, architecture etc.).
- Source/autotools/FindDependencies.m4: Remove the JSC_CPPFLAGS definition.
- Source/autotools/ReadCommandLineArguments.m4: Change the default value to 'auto' instead
of 'autodetect', as used by other configuration options that take a similar approach to enabling
a specific feature.
- Source/autotools/SetupAutoconfHeader.m4: Set a strict value for the ENABLE_JIT define through
the Autoconf header if the feature was specifically enabled or disabled.
Source/JavaScriptCore:
- GNUmakefile.am: Remove JSC_CPPFLAGS from the cpp flags for the JSC library.
- 12:16 AM Changeset in webkit [153702] by
-
- 3 edits3 adds in trunk
Source/WebCore: [CSS Background Blending] Specifying background-image and background-color
with opaque image doesn't trigger blending. The fix consists of adding a
check whether blend mode is set in hasOpaqueImage.
https://bugs.webkit.org/show_bug.cgi?id=119434
Patch by Mihai Tica <mitica@adobe.com> on 2013-08-05
Reviewed by Dirk Schulze.
Test: css3/compositing/background-blend-mode-separate-layer-declaration.html
- rendering/style/FillLayer.cpp:
(WebCore::FillLayer::hasOpaqueImage):
LayoutTests: [CSS Background Blending] Specifying background-image and background-color with opaque
image doesn't trigger blending. Adding ref test to validate the fix.
https://bugs.webkit.org/show_bug.cgi?id=119434i
Patch by Mihai Tica <mitica@adobe.com> on 2013-08-05
Reviewed by Dirk Schulze.
- css3/compositing/background-blend-mode-separate-layer-declaration-expected.html: Added.
- css3/compositing/background-blend-mode-separate-layer-declaration.html: Added.
- css3/compositing/resources/gray_square.svg: Added.
Aug 4, 2013:
- 2:29 PM Changeset in webkit [153701] by
-
- 8 edits1 add in trunk
Background doesn't fully repaint when body has margins.
https://bugs.webkit.org/show_bug.cgi?id=119033
Reviewed by Simon Fraser.
Ensure that background-color changes do not leave unpainted areas when
body has margins.
Both <body> and <html> background-color get propagated up to the viewport.
If <body> has background-color attribute set, while <html> doesn't, the color is
applied not only on the <body> but on both the <html> and the viewport. However,
it's not enough to mark the RenderView dirty because with tiles backing on,
there could be areas outside of the viewport that need repaint. By marking
the RenderView's graphics layer dirty instead, we ensure that all the related
tiles get marked dirty too and the new background color covers all areas.
Manual test added. When forcing top-level composition on (even with embedded iframe to
make sure we don't do paintsIntoWindow rendering), the test case execution changes so much,
that the repaint rects don't reflect the functionality difference anymore.
.:
Reviewed by Simon Fraser.
- ManualTests/compositing/background-color-change-on-body-with-margin.html: Added.
Source/WebCore:
- page/FrameView.cpp:
(WebCore::FrameView::reset):
(WebCore::FrameView::layout):
- page/FrameView.h:
(WebCore::FrameView::needsFullRepaint):
- rendering/RenderBox.cpp:
(WebCore::RenderBox::styleWillChange):
- rendering/RenderObjectChildList.cpp:
(WebCore::RenderObjectChildList::removeChildNode):
- rendering/RenderView.cpp:
(WebCore::RenderView::repaintRootContents):
(WebCore::RenderView::repaintViewAndCompositedLayers):
- rendering/RenderView.h:
- 9:17 AM Changeset in webkit [153700] by
-
- 3 edits in trunk/Source/WebCore
Document needn't expose its active element.
<http://webkit.org/b/119466>
Reviewed by Antonio Gomes.
The Document::m_activeElement pointer is only used inside updateHoverActiveState(),
so we can remove the activeElement()/setActiveElement() accessors.
- dom/Document.h:
- dom/Document.cpp:
(WebCore::Document::updateHoverActiveState):
- 8:57 AM Changeset in webkit [153699] by
-
- 3 edits in trunk/Source/WebCore
Inserting a rule into an empty style sheet shouldn't trigger style recalc unless necessary.
<http://webkit.org/b/119475>
<rdar://problem/14643481>
Reviewed by Antti Koivisto.
This is kind of a cheesy optimization, but it turns out that the use case is quite common.
The pattern goes like this:
(1) Create <style> element.
(2) Add it to the document's <head>.
(3) .addRule() one rule through the CSSOM API.
Prior to this patch, (3) would always cause a full (deferred) style recalc.
Now that we exclude empty style sheets from the document's (effective) active set,
we can piggyback on the style invalidation analysis when transitioning from an empty
sheet to a single-rule sheet.
In other words, add a special code path for the first rule insertion into an empty,
in-document style sheet to minimize the amount of invalidation that happens.
- css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::didMutateRules):
(WebCore::CSSStyleSheet::insertRule):
- css/CSSStyleSheet.h:
(WebCore::CSSStyleSheet::RuleMutationScope::RuleMutationScope):
(WebCore::CSSStyleSheet::RuleMutationScope::~RuleMutationScope):
- 7:35 AM Changeset in webkit [153698] by
-
- 2 edits in trunk/Source/WebCore
[GTK] Fix a C++11 warning.
Rubber-stamped by Martin Robinson.
- platform/gtk/FileSystemGtk.cpp:
(WebCore::sharedResourcesPath): Fix a C++11 warning.
- 6:03 AM Changeset in webkit [153697] by
-
- 2 edits in trunk/Source/WebCore
[GTK] Remove legacy hack in CodeGeneratorGObject.pm
https://bugs.webkit.org/show_bug.cgi?id=117545
Patch by Diego Pino Garcia <Diego Pino Garcia> on 2013-08-04
Reviewed by Carlos Garcia Campos.
There's a checking that sets gtype to uint in case it's ushort. gtype
is a value obtained from GetGValueTypeName(), which never returns
ushort.
- bindings/scripts/CodeGeneratorGObject.pm:
(GenerateProperty): remove unnecessary glitch
- 12:41 AM Changeset in webkit [153696] by
-
- 5 edits in trunk/Source/WebCore
[Mac] Disable screen font substitution at WebCore-level in OS X 10.9+
<http://webkit.org/b/119474>
<rdar://problem/14643349>
Reviewed by Dan Bernstein.
Disable screen font substitution by default in Settings so internal WebCore clients
such as SVG-as-image will get the right default setting.
- page/Settings.cpp:
(WebCore::Settings::Settings):
(WebCore::Settings::shouldEnableScreenFontSubstitutionByDefault):
(WebCore::Settings::setScreenFontSubstitutionEnabled):
- page/Settings.h:
(WebCore::Settings::screenFontSubstitutionEnabled):
- page/Settings.in:
- page/mac/SettingsMac.mm:
(WebCore::Settings::shouldEnableScreenFontSubstitutionByDefault):
Aug 3, 2013:
- 9:13 PM Changeset in webkit [153695] by
-
- 3 edits in trunk/Source/WebCore
Refine the unavailable plug-in indicator
https://bugs.webkit.org/show_bug.cgi?id=119400
<rdar://problem/14616012>
Reviewed by Oliver Hunt.
Add a border, flip the text and background colors, and make the indicator
much higher contrast, to be more visible on a variety of sites.
Also, refine the arrow to be less blocky and inlaid inside a circle.
- rendering/RenderEmbeddedObject.cpp:
(WebCore::replacementTextRoundedRectPressedColor):
(WebCore::replacementTextRoundedRectColor):
(WebCore::replacementTextColor):
(WebCore::unavailablePluginBorderColor):
(WebCore::drawReplacementArrow):
(WebCore::RenderEmbeddedObject::paintReplaced):
(WebCore::RenderEmbeddedObject::getReplacementTextGeometry):
(WebCore::RenderEmbeddedObject::unavailablePluginIndicatorBounds):
(WebCore::RenderEmbeddedObject::isInUnavailablePluginIndicator):
- rendering/RenderEmbeddedObject.h:
- 9:00 PM Changeset in webkit [153694] by
-
- 4 edits in trunk/Source/WebKit2
Unreviewed, build and style fix for r153693.
- UIProcess/WebProcessProxy.cpp:
- WebProcess/Plugins/PDF/PDFPlugin.h:
- WebProcess/WebPage/WebPage.cpp:
- 8:50 PM Changeset in webkit [153693] by
-
- 6 edits in trunk/Source/WebKit2
Remove SimplePDFPlugin
https://bugs.webkit.org/show_bug.cgi?id=119437
Reviewed by Alexey Proskuryakov.
- UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getPlugins):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createPlugin):
Don't add SimplePDFPlugin, nor try to instantiate it.
- WebProcess/Plugins/PDF/PDFPlugin.h:
- WebProcess/Plugins/PDF/PDFPlugin.mm:
Merge previously inherited behavior in from SimplePDFPlugin.
- WebKit2.xcodeproj/project.pbxproj:
- WebProcess/Plugins/PDF/SimplePDFPlugin.h: Removed.
- WebProcess/Plugins/PDF/SimplePDFPlugin.mm: Removed.
Remove SimplePDFPlugin.
- 5:31 PM Changeset in webkit [153692] by
-
- 15 edits in trunk/Source/WebKit2
Remove pageOverlayShouldApplyFadeWhenPainting() and adopt composited fade for the Mac port
https://bugs.webkit.org/show_bug.cgi?id=119411
Reviewed by Simon Fraser.
Mac is the only holdout that performs non-composited fades of page
overlays. We should adopt that mechanism (as a precursor to doing a
CA-accelerated fade) and remove the now-unnecessary property.
- WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
(WKBundlePageOverlayFractionFadedIn):
Always return 1 (fully-faded-in) so that clients who attempt to use this
to bake the fade opacity into their painting will paint at full opacity,
allowing us to do the composited fade separately.
- WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
- WebProcess/WebPage/DrawingArea.h:
- WebProcess/WebPage/DrawingAreaImpl.cpp:
- WebProcess/WebPage/DrawingAreaImpl.h:
- WebProcess/WebPage/LayerTreeHost.h:
- WebProcess/WebPage/PageOverlay.cpp:
(WebKit::PageOverlay::PageOverlay):
(WebKit::PageOverlay::setPage):
(WebKit::PageOverlay::setNeedsDisplay):
(WebKit::PageOverlay::fadeAnimationTimerFired):
- WebProcess/WebPage/PageOverlay.h:
Remove pageOverlayShouldApplyFadeWhenPainting and fractionFadedIn().
- WebProcess/WebPage/FindController.cpp:
(WebKit::FindController::drawRect):
Draw the find overlay without taking the PageOverlay's fade into account.
- WebProcess/WebPage/TapHighlightController.cpp:
(WebKit::TapHighlightController::drawRect):
Remove pageOverlayShouldApplyFadeWhenPainting. Since it's always
"false" for all ports now, take the second path here.
- WebProcess/WebPage/mac/LayerTreeHostMac.h:
- WebProcess/WebPage/mac/LayerTreeHostMac.mm:
(WebKit::LayerTreeHostMac::setPageOverlayOpacity):
- WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
- WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::setPageOverlayOpacity):
Implement setPageOverlayOpacity for DrawingAreaImpl
and TiledCoreAnimationDrawingArea.
- 5:12 PM Changeset in webkit [153691] by
-
- 7 edits in trunk/Source/JavaScriptCore
hasIndexingHeader() ought really to be a property of an object and its structure, not just its structure
https://bugs.webkit.org/show_bug.cgi?id=119470
Reviewed by Oliver Hunt.
Structure can still tell you if the object "could" (in the conservative sense)
have an indexing header; that's used by the compiler.
Most of the time if you want to know if there's an indexing header, you ask the
JSObject.
In some cases, the JSObject wants to know if it would have an indexing header if
it had a different structure; then it uses Structure::hasIndexingHeader(JSCell*).
- dfg/DFGRepatch.cpp:
(JSC::DFG::tryCachePutByID):
(JSC::DFG::tryBuildPutByIdList):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
- runtime/ButterflyInlines.h:
(JSC::Butterfly::create):
(JSC::Butterfly::growPropertyStorage):
(JSC::Butterfly::growArrayRight):
(JSC::Butterfly::resizeArray):
- runtime/JSObject.cpp:
(JSC::JSObject::copyButterfly):
(JSC::JSObject::visitButterfly):
- runtime/JSObject.h:
(JSC::JSObject::hasIndexingHeader):
(JSC::JSObject::setButterfly):
- runtime/Structure.h:
(JSC::Structure::couldHaveIndexingHeader):
(JSC::Structure::hasIndexingHeader):
- 10:49 AM Changeset in webkit [153690] by
-
- 2 edits in trunk/LayoutTests
webaudio/audiobuffersource-loop-points.html always times out
https://bugs.webkit.org/show_bug.cgi?id=119467
Skip this test.
- platform/mac-wk2/TestExpectations:
- 8:56 AM BadContent edited by
- Add a spamming account to the blocked list. (diff)
- 6:43 AM Changeset in webkit [153689] by
-
- 6 edits4 adds in trunk
PreloadScanner preloads external CSS with non-matching media attribute
https://bugs.webkit.org/show_bug.cgi?id=106198
Patch by Yoav Weiss <yoav@yoav.ws> on 2013-08-03
Reviewed by Dean Jackson.
Source/WebCore:
Test: http/tests/loading/preload-css-test.html
- html/parser/HTMLPreloadScanner.cpp:
Remove m_linkMediaAttributeIsScreen
Remove MediaQueryEvaluator calls
Add m_mediaAttribute that gets the value of the "media" attribute
Pass m_mediaAttribute to PreloadRequest
(WebCore::TokenPreloadScanner::StartTagScanner::StartTagScanner):
(WebCore::TokenPreloadScanner::StartTagScanner::createPreloadRequest):
(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute):
(WebCore::TokenPreloadScanner::StartTagScanner::resourceType):
(WebCore::TokenPreloadScanner::StartTagScanner::shouldPreload):
- html/parser/HTMLResourcePreloader.cpp:
Add MediaQueryEvaluator calls to see if "media" matches
Perform preload only to resource with a matching media (if media exists)
(WebCore::PreloadRequest::isSafeToSendToAnotherThread):
(WebCore::mediaAttributeMatches):
(WebCore::HTMLResourcePreloader::preload):
- html/parser/HTMLResourcePreloader.h:
Add a constructor with a mediaAttribute value
Add m_mediaAttribute & its getter.
(WebCore::PreloadRequest::create):
(WebCore::PreloadRequest::media):
(WebCore::PreloadRequest::PreloadRequest):
LayoutTests:
- http/tests/loading/preload-css-test-expected.txt: Added.
- http/tests/loading/preload-css-test.html: Added.
- http/tests/loading/resources/big_mq.css: Added.
- http/tests/loading/resources/small_mq.css: Added.
- http/tests/local/link-stylesheet-load-order-preload-expected.txt:
- 3:15 AM Changeset in webkit [153688] by
-
- 4 edits in trunk/Source/WebCore
RenderBoxModelObject::firstLetterRemainingText should be a RenderTextFragment*.
<http://webkit.org/b/119181>
Reviewed by Sam Weinig.
De-generalize this code a bit since we know that the firstLetterRemainingText() is always
going to be a RenderTextFragment.
- rendering/RenderBoxModelObject.h:
- rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::firstLetterRemainingText):
(WebCore::RenderBoxModelObject::setFirstLetterRemainingText):
Make these two deal in RenderTextFragment*.
- rendering/RenderBlock.cpp:
(WebCore::RenderBlock::updateFirstLetterStyle):
Tighten up some pointer types so we don't have to cast as much.
Aug 2, 2013:
- 10:11 PM Changeset in webkit [153687] by
-
- 4 edits in trunk/Source/WebCore
Introduce toSVGMaskElement(), and use it
https://bugs.webkit.org/show_bug.cgi?id=119443
Reviewed by Andreas Kling.
As a step to change static_cast with toSVGXXX, static_cast<SVGMaskElement*> can
be changed with toSVGMaskElement().
Blink merge from https://src.chromium.org/viewvc/blink?view=rev&revision=155432
- rendering/svg/RenderSVGResourceMasker.cpp:
(WebCore::RenderSVGResourceMasker::applyResource):
(WebCore::RenderSVGResourceMasker::resourceBoundingBox):
- rendering/svg/RenderSVGResourceMasker.h:
- svg/SVGMaskElement.h:
(WebCore::toSVGMaskElement):
- 8:33 PM Changeset in webkit [153686] by
-
- 3 edits in trunk/Source/WTF
Remove a bunch of redundant checks for empty string in StringImpl
https://bugs.webkit.org/show_bug.cgi?id=118768
Reviewed by Ryosuke Niwa.
The first thing done by createUninitialized() is check if the length passed
is zero. Internally, there are many cases for which we know the check will never succeed.
Clang is usually really smart for those kind of things, but there are a few cases where
the condition to avoid returning empty() is not simply a check for the length.
This patch adds an internal initializer to deal with that.
- wtf/text/StringImpl.cpp:
(WTF::StringImpl::createUninitializedInternal):
(WTF::StringImpl::createUninitializedInternalNonEmpty):
(WTF::StringImpl::createInternal): Create internal has a special case for null pointer
for the characters. The test also check length, the second check for length cannot fail.
(WTF::StringImpl::create8BitIfPossible): ditto.
(WTF::StringImpl::lower): 3 of the calls cannot be reached for empty length. On an empty length,
the test for (noUpper && !(ored & ~0x7F)) would have caused the function to return "this".
For the last createUninitialized(), there is no guarantee the realLength is not zero.
(WTF::StringImpl::replace): The first thing we do in replace(UChar,UChar) is check if there is anything
to replace. The check for length will never succeed as there must be a character to replace at that point.
- wtf/text/StringImpl.h:
- 8:09 PM Changeset in webkit [153685] by
-
- 3 edits2 adds in trunk
REGRESSION (r153005): Crash in SpaceSplitString::spaceSplitStringContainsValue on Facebook
https://bugs.webkit.org/show_bug.cgi?id=119384
Patch by Benjamin Poulain <bpoulain@apple.com> on 2013-08-02
Reviewed by Alexey Proskuryakov.
Source/WebCore:
When removing the "rel" attribute from HTMLAnchorElement, we parse the attribute for no value.
Following r153005, we no longer checked for null String, which caused a crash in that case.
Creating a SpaceSplitString from a null string causes the SpaceSplitString to be null. In that case
SpaceSplitString::contains() would always return false.
This patch modify SpaceSplitString::spaceSplitStringContainsValue() to follow the exact same
behavior.
Test: fast/dom/HTMLAnchorElement/remove-rel-attribute.html
- dom/SpaceSplitString.cpp:
(WebCore::SpaceSplitString::spaceSplitStringContainsValue):
LayoutTests:
- fast/dom/HTMLAnchorElement/remove-rel-attribute.html: Added.
- fast/dom/HTMLAnchorElement/remove-rel-attribute-expected.txt: Added.
- 5:54 PM Changeset in webkit [153684] by
-
- 5 edits2 copies in branches/safari-537-branch
Merged r153681. <rdar://problem/14638695>
- 5:51 PM Changeset in webkit [153683] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153672. <rdar://problem/14631785>
- 5:24 PM Changeset in webkit [153682] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153632. <rdar://problem/14628760>
- 5:06 PM Changeset in webkit [153681] by
-
- 5 edits2 adds in trunk
Force elements with perspective or preserve-3d to disallow direct composited backgrounds
https://bugs.webkit.org/show_bug.cgi?id=119462
<rdar://problem/14607548>
Reviewed by Simon Fraser.
Source/WebCore:
Bug 119461 (http://wkb.ug/119461) describes how a directly composited
background color can intersect with its children. It's not clear exactly
what the best way to fix that is, but for the moment we should disallow
any element that has perspective or a preserve-3d transform style from
getting a directly composited background.
Test: compositing/background-color/no-composited-background-color-when-perspective.html
- rendering/RenderLayerBacking.cpp:
(WebCore::hasPerspectiveOrPreserves3D): New static helper.
(WebCore::supportsDirectBoxDecorationsComposition): Return false if the above function is true.
LayoutTests:
- compositing/background-color/no-composited-background-color-when-perspective-expected.html: Added.
- compositing/background-color/no-composited-background-color-when-perspective.html: Added.
- compositing/geometry/preserve-3d-switching-expected.txt: Rebaselined.
- compositing/overflow-trumps-transform-style-expected.txt: Rebaselined.
- 5:05 PM Changeset in webkit [153680] by
-
- 4 edits in trunk/Source/WebCore
Update binding test results
- 5:04 PM Changeset in webkit [153679] by
-
- 5 edits2 adds in trunk
Give the error object's stack property accessor attributes.
https://bugs.webkit.org/show_bug.cgi?id=119404
Source/JavaScriptCore:
Patch by Chris Curtis <chris_curtis@apple.com> on 2013-08-02
Reviewed by Geoffrey Garen.
Changed the attributes of error object's stack property to allow developers to write
and delete the stack property. This will match the functionality of Chrome. Firefox
allows developers to write the error's stack, but not delete it.
- interpreter/Interpreter.cpp:
(JSC::Interpreter::addStackTraceIfNecessary):
- runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::finishCreation):
LayoutTests:
Patch by Chris Curtis <chris_curtis@apple.com> on 2013-08-02
Reviewed by Geoffrey Garen.
- fast/dom/DOMException/stack-trace-expected.txt:
New tests to show that the error object's stack property is writable and deleteable.
- fast/js/error-object-write-and-detele-for-stack-property-expected.txt: Added.
- fast/js/error-object-write-and-detele-for-stack-property.html: Added.
- 5:01 PM Changeset in webkit [153678] by
-
- 2 edits in trunk/LayoutTests
Unreviewed. Skip failing canvas blending tests on AppleWin port.
https://bugs.webkit.org/show_bug.cgi?id=119463.
- platform/win/TestExpectations:
- 4:40 PM Changeset in webkit [153677] by
-
- 12 edits in trunk/Source
Remove no-arguments constructor to PropertySlot
https://bugs.webkit.org/show_bug.cgi?id=119460
Reviewed by Geoff Garen.
This constructor was unsafe if getValue is subsequently called,
and the property is a getter. Simplest to just remove it.
Source/WebCore:
- bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::getOwnPropertyDescriptor):
(WebCore::DialogHandler::returnValue):
- bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::getOwnPropertyDescriptorDelegate):
- bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::getOwnPropertyDescriptorDelegate):
- bindings/js/JSPluginElementFunctions.cpp:
(WebCore::runtimeObjectCustomGetOwnPropertyDescriptor):
- bindings/js/JSStorageCustom.cpp:
(WebCore::JSStorage::deleteProperty):
(WebCore::JSStorage::putDelegate):
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateGetOwnPropertyDescriptorBody):
- bridge/runtime_array.cpp:
(JSC::RuntimeArray::getOwnPropertyDescriptor):
- bridge/runtime_method.cpp:
(JSC::RuntimeMethod::getOwnPropertyDescriptor):
- bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::getOwnPropertyDescriptor):
Source/WebKit2:
- WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::JSNPObject::getOwnPropertyDescriptor):
- 4:23 PM Changeset in webkit [153676] by
-
- 2 edits in trunk/Source/WTF
Gardening: Touched a line in Platform.h to get all bots to do a clean build.
Not reviewed.
- wtf/Platform.h:
- 4:09 PM Changeset in webkit [153675] by
-
- 1 edit in branches/safari-537-branch/Source/JavaScriptCore/dfg/DFGAbstractState.cpp
Apply patch from <rdar://problem/14580940>.
- 3:38 PM Changeset in webkit [153674] by
-
- 2 edits in trunk/Source/JavaScriptCore
Incorrect type speculation reported by ToPrimitive
https://bugs.webkit.org/show_bug.cgi?id=119458
Reviewed by Mark Hahnenberg.
Make sure that we report the correct type possibilities for the output
from ToPrimitive
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- 3:30 PM Changeset in webkit [153673] by
-
- 12 edits in trunk/Source/JavaScriptCore
Remove no-arguments constructor to PropertySlot
https://bugs.webkit.org/show_bug.cgi?id=119460
Reviewed by Geoff Garen.
This constructor was unsafe if getValue is subsequently called,
and the property is a getter. Simplest to just remove it.
- runtime/Arguments.cpp:
(JSC::Arguments::defineOwnProperty):
- runtime/JSActivation.cpp:
(JSC::JSActivation::getOwnPropertyDescriptor):
- runtime/JSFunction.cpp:
(JSC::JSFunction::getOwnPropertyDescriptor):
(JSC::JSFunction::getOwnNonIndexPropertyNames):
(JSC::JSFunction::put):
(JSC::JSFunction::defineOwnProperty):
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::defineOwnProperty):
- runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::hasOwnPropertyForWrite):
- runtime/JSNameScope.cpp:
(JSC::JSNameScope::put):
- runtime/JSONObject.cpp:
(JSC::Stringifier::Holder::appendNextProperty):
(JSC::Walker::walk):
- runtime/JSObject.cpp:
(JSC::JSObject::hasProperty):
(JSC::JSObject::hasOwnProperty):
(JSC::JSObject::reifyStaticFunctionsForDelete):
- runtime/Lookup.h:
(JSC::getStaticPropertyDescriptor):
(JSC::getStaticFunctionDescriptor):
(JSC::getStaticValueDescriptor):
- runtime/ObjectConstructor.cpp:
(JSC::defineProperties):
- runtime/PropertySlot.h:
- 3:11 PM Changeset in webkit [153672] by
-
- 2 edits in trunk/Source/WebCore
Removing a <link> element with an empty stylesheet shouldn't trigger style recalc.
<http://webkit.org/b/119442>
<rdar://problem/14631785>
Reviewed by Antti Koivisto.
Let Document decide whether or not to do a style recalc after a <link> element is removed.
This avoids unnecessary work when removing a <link> that refers to an empty style sheet.
Some Facebook pages have a <link rel="stylesheet" href="data:text/css;base64,"> that gets
removed during the initial page load, causing style recalc.
- html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::removedFrom):
Use DeferRecalcStyleIfNeeded. Since the style sheet is being removed, it will either
cause a recalc (because it's no longer in the set of active sheets) or do nothing.
- 2:50 PM Changeset in webkit [153671] by
-
- 3 edits in trunk/Source/JavaScriptCore
DFG validation can cause assertion failures due to dumping
https://bugs.webkit.org/show_bug.cgi?id=119456
Reviewed by Geoffrey Garen.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::hasHash):
(JSC::CodeBlock::isSafeToComputeHash):
(JSC::CodeBlock::hash):
(JSC::CodeBlock::dumpAssumingJITType):
- bytecode/CodeBlock.h:
- 2:35 PM Changeset in webkit [153670] by
-
- 2 edits in trunk/Source/WebKit2
[Forms: color] WebColorPickerMac deconstructor shouldn't assert a variable
<rdar://problem/14627633> and https://bugs.webkit.org/show_bug.cgi?id=119419
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-08-02
Reviewed by Tim Horton.
- UIProcess/mac/WebColorPickerMac.mm:
(WebKit::WebColorPickerMac::~WebColorPickerMac): If the m_colorPickerUI variable
is not null, then properly destroy it first before destroying WebColorPickerMac object.
- 2:32 PM Changeset in webkit [153669] by
-
- 7 edits in trunk
Have vm's exceptionStack match java's vm's exceptionStack.
https://bugs.webkit.org/show_bug.cgi?id=119362
Source/JavaScriptCore:
Patch by Chris Curtis <chris_curtis@apple.com> on 2013-08-02
Reviewed by Geoffrey Garen.
The error object's stack is only updated if it does not exist yet. This matches
the functionality of other browsers, and Java VMs.
- interpreter/Interpreter.cpp:
(JSC::Interpreter::addStackTraceIfNecessary):
(JSC::Interpreter::throwException):
- runtime/VM.cpp:
(JSC::VM::clearExceptionStack):
- runtime/VM.h:
(JSC::VM::lastExceptionStack):
LayoutTests:
Patch by Chris Curtis <chris_curtis@apple.com> on 2013-08-02
Reviewed by Geoffrey Garen.
All modifications to the tests below are column number changes. If the thrown
object was created by the user the column number references the error object,
otherwise it references the the throw.
- fast/events/window-onerror5-expected.txt:
- fast/js/line-column-numbers-expected.txt:
- fast/js/stack-trace-expected.txt:
- http/tests/workers/worker-importScriptsOnError-expected.txt:
- 2:30 PM Changeset in webkit [153668] by
-
- 3 edits in trunk/Source/WebCore
Remove WebCore folder from include statements
https://bugs.webkit.org/show_bug.cgi?id=119438
Reviewed by Darin Adler.
This aligns the style of the changed files with the other WebCore code.
- platform/network/curl/CurlDownload.cpp:
- platform/network/curl/CurlDownload.h:
- 2:27 PM Changeset in webkit [153667] by
-
- 2 edits in trunk/Source/WebKit2
[Forms: color] The positioning of the popover color well is inverted
<rdar://problem/14635621> and https://bugs.webkit.org/show_bug.cgi?id=119455
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-08-02
Reviewed by Tim Horton.
This patch converts the coordinates of the <input type='color'> element to
the window's base coordinate system.
- UIProcess/mac/WebColorPickerMac.mm:
(-[WKColorPopoverMac initWithFrame:inView:]):
- 2:07 PM Changeset in webkit [153666] by
-
- 2 edits in trunk/LayoutTests
webaudio/javascriptaudionode-downmix8-2channel-input.html sometimes asserts
https://bugs.webkit.org/show_bug.cgi?id=119459
- platform/mac-wk2/TestExpectations:
- 1:28 PM Changeset in webkit [153665] by
-
- 6 edits in branches/safari-537-branch/Source/WebCore
Merged r153641. <rdar://problem/14629045>
- 1:10 PM Changeset in webkit [153664] by
-
- 10 edits2 adds in trunk/Source/ThirdParty/ANGLE
Soft link ANGLE on Windows.
https://bugs.webkit.org/show_bug.cgi?id=119452
Reviewed by Dean Jackson.
- ANGLE.vcxproj/libEGL.vcxproj:
- ANGLE.vcxproj/libEGL.vcxproj.filters:
- ANGLE.vcxproj/libGLESv2.vcxproj:
- ANGLE.vcxproj/libGLESv2.vcxproj.filters:
Added soft linking headers.
- ANGLE.vcxproj/libEGLCommon.props:
- ANGLE.vcxproj/libGLESv2Common.props:
- ANGLE.vcxproj/translatorCommon.props:
Added ANGLE_WEBKIT_WIN macro definition for egl.h and gl2.h.
- include/EGL/egl.h:
- include/GLES2/gl2.h:
Conditionally include soft linking headers based on ANGLE_WEBKIT_WIN macro.
- include/EGL/eglsoftlinking.h: Added.
- include/GLES2/gl2softlinking.h: Added.
- 12:56 PM Changeset in webkit [153663] by
-
- 5 edits4 copies in branches/safari-537-branch
Merged r153649. <rdar://problem/14601124>
- 12:51 PM Changeset in webkit [153662] by
-
- 2 edits in branches/safari-537-branch/Source/WTF
Merged r153635. <rdar://problem/14528244>
- 12:34 PM Changeset in webkit [153661] by
-
- 2 edits in trunk/Source/WebCore
FormAssociatedElement shouldn't create out-of-tree FormAttributeTargetObserver
https://bugs.webkit.org/show_bug.cgi?id=119309
Reviewed by Kent Tamura.
Merge https://chromium.googlesource.com/chromium/blink/+/6fbdcbf311de539107bc28711b3f7a527176e97b.
I'm not merging the test since the attached test case only works when the shadow DOM API is enabled.
- html/FormAssociatedElement.cpp:
(WebCore::FormAssociatedElement::formAttributeChanged):
(WebCore::FormAssociatedElement::resetFormAttributeTargetObserver):
- 11:52 AM Changeset in webkit [153660] by
-
- 9 edits in trunk
compareDocumentPosition() should report PRECEDING or FOLLOWING information even if nodes are disconnected
https://bugs.webkit.org/show_bug.cgi?id=119316
Reviewed by Ryosuke Niwa.
Source/WebCore:
As per the latest specification, compareDocumentPosition() should report PRECEDING or FOLLOWING
information even if nodes are disconnected:
This behavior is consistent with both IE10, Firefox 22 and since recently Blink.
No new tests, covered by existing tests.
- dom/Node.cpp:
(WebCore::compareDetachedElementsPosition):
(WebCore::Node::compareDocumentPosition):
LayoutTests:
Update fast/dom/compare-document-position-disconnected-nodes.html to check that compareDocumentPosition()
now returns one of the following values for disconnected nodes:
- DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_PRECEDING
- DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | DOCUMENT_POSITION_FOLLOWING
Several dom/xhtml/level3 are skipped and marked as WonfFix because they are outdated and no longer match
the DOM4 specification. They expect compareDocumentPosition() not to return PRECEDING / FOLLOWING
information for disconnected nodes.
- TestExpectations:
- dom/xhtml/level3/core/nodecomparedocumentposition38-expected.txt:
- fast/dom/compare-document-position-disconnected-nodes-expected.txt:
- fast/dom/compare-document-position-disconnected-nodes.html:
- fast/dom/shadow/compare-document-position-expected.txt:
- fast/dom/shadow/compare-document-position.html:
- 11:45 AM Changeset in webkit [153659] by
-
- 2 edits in trunk/Source/JavaScriptCore
REGRESSION(FTL): Fix mips implementation of ctiVMThrowTrampolineSlowpath.
https://bugs.webkit.org/show_bug.cgi?id=119447
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-08-02
Reviewed by Geoffrey Garen.
Fix .cpload, update call frame and do not restore registers from JIT stack frame in
mips implementation of ctiVMThrowTrampolineSlowpath. This change is similar to
r153583 (sh4) and r153648 (ARM).
- jit/JITStubsMIPS.h:
- 11:42 AM Changeset in webkit [153658] by
-
- 1 edit45 adds in trunk/LayoutTests
Implement canvas blending test that should validate the following scenarios:
Validate that all blending operators work as expected for the following layer combinations:
https://bugs.webkit.org/show_bug.cgi?id=119082
Patch by Mihai Tica <mitica@adobe.com> on 2013-08-02
Reviewed by Dirk Schulze.
- fast/canvas/canvas-blending-clipping-expected.txt: Added.
- fast/canvas/canvas-blending-clipping.html: Added.
- fast/canvas/canvas-blending-color-over-color-expected.txt: Added.
- fast/canvas/canvas-blending-color-over-color.html: Added.
- fast/canvas/canvas-blending-color-over-gradient-expected.txt: Added.
- fast/canvas/canvas-blending-color-over-gradient.html: Added.
- fast/canvas/canvas-blending-color-over-image-expected.txt: Added.
- fast/canvas/canvas-blending-color-over-image.html: Added.
- fast/canvas/canvas-blending-color-over-pattern-expected.txt: Added.
- fast/canvas/canvas-blending-color-over-pattern.html: Added.
- fast/canvas/canvas-blending-fill-style-expected.txt: Added.
- fast/canvas/canvas-blending-fill-style.html: Added.
- fast/canvas/canvas-blending-global-alpha-expected.txt: Added.
- fast/canvas/canvas-blending-global-alpha.html: Added.
- fast/canvas/canvas-blending-gradient-over-color-expected.txt: Added.
- fast/canvas/canvas-blending-gradient-over-color.html: Added.
- fast/canvas/canvas-blending-gradient-over-gradient-expected.txt: Added.
- fast/canvas/canvas-blending-gradient-over-gradient.html: Added.
- fast/canvas/canvas-blending-gradient-over-image-expected.txt: Added.
- fast/canvas/canvas-blending-gradient-over-image.html: Added.
- fast/canvas/canvas-blending-gradient-over-pattern-expected.txt: Added.
- fast/canvas/canvas-blending-gradient-over-pattern.html: Added.
- fast/canvas/canvas-blending-helpers.js: Added.
(separateBlendFunctions.normal):
(separateBlendFunctions.multiply):
(separateBlendFunctions.screen):
(separateBlendFunctions.overlay):
(separateBlendFunctions.darken):
(separateBlendFunctions.lighten):
(separateBlendFunctions.colorDodge):
(separateBlendFunctions.colorBurn):
(separateBlendFunctions.hardLight):
(separateBlendFunctions.softLight):
(separateBlendFunctions.difference):
(separateBlendFunctions.exclusion):
(applyBlendMode):
(luminosity):
(clipColor):
(setLuminosity):
(saturation):
(setSaturation):
(nonSeparateBlendFunctions.hue):
(nonSeparateBlendFunctions.saturation):
(nonSeparateBlendFunctions.color):
(nonSeparateBlendFunctions.luminosity):
(drawColorInContext):
(drawBackdropColorInContext):
(drawSourceColorInContext):
(fillPathWithColorInContext):
(fillPathWithBackdropInContext):
(fillPathWithSourceInContext):
(applyTransformsToContext):
(drawBackdropColorWithShadowInContext):
(drawSourceColorRectOverShadow):
(.backdropImage.onload):
(drawColorImageInContext):
(drawBackdropColorImageInContext):
(drawSourceColorImageInContext):
(drawColorPatternInContext):
(drawBackdropColorPatternInContext):
(drawSourceColorPatternInContext):
(drawGradientInContext):
(drawBackdropColorGradientInContext):
(drawSourceColorGradientInContext):
(blendColors):
(separateBlendColors):
(nonSeparateBlendColors):
- fast/canvas/canvas-blending-image-over-color-expected.txt: Added.
- fast/canvas/canvas-blending-image-over-color.html: Added.
- fast/canvas/canvas-blending-image-over-gradient-expected.txt: Added.
- fast/canvas/canvas-blending-image-over-gradient.html: Added.
- fast/canvas/canvas-blending-image-over-image-expected.txt: Added.
- fast/canvas/canvas-blending-image-over-image.html: Added.
- fast/canvas/canvas-blending-image-over-pattern-expected.txt: Added.
- fast/canvas/canvas-blending-image-over-pattern.html: Added.
- fast/canvas/canvas-blending-pattern-over-color-expected.txt: Added.
- fast/canvas/canvas-blending-pattern-over-color.html: Added.
- fast/canvas/canvas-blending-pattern-over-gradient-expected.txt: Added.
- fast/canvas/canvas-blending-pattern-over-gradient.html: Added.
- fast/canvas/canvas-blending-pattern-over-image-expected.txt: Added.
- fast/canvas/canvas-blending-pattern-over-image.html: Added.
- fast/canvas/canvas-blending-pattern-over-pattern-expected.txt: Added.
- fast/canvas/canvas-blending-pattern-over-pattern.html: Added.
- fast/canvas/canvas-blending-shadow-expected.txt: Added.
- fast/canvas/canvas-blending-shadow.html: Added.
- fast/canvas/canvas-blending-text-expected.txt: Added.
- fast/canvas/canvas-blending-text.html: Added.
- fast/canvas/canvas-blending-transforms-expected.txt: Added.
- fast/canvas/canvas-blending-transforms.html: Added.
- 11:27 AM Changeset in webkit [153657] by
-
- 9 edits in trunk/Source/JavaScriptCore
hasIndexingHeader should be a property of the Structure, not just the IndexingType
https://bugs.webkit.org/show_bug.cgi?id=119422
Reviewed by Oliver Hunt.
This simplifies some code and also allows Structure to claim that an object
has an indexing header even if it doesn't have indexed properties.
I also changed some calls to use hasIndexedProperties() since in some cases,
that's what we actually meant. Currently the two are synonyms.
- dfg/DFGRepatch.cpp:
(JSC::DFG::tryCachePutByID):
(JSC::DFG::tryBuildPutByIdList):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):
- runtime/ButterflyInlines.h:
(JSC::Butterfly::create):
(JSC::Butterfly::growPropertyStorage):
(JSC::Butterfly::growArrayRight):
(JSC::Butterfly::resizeArray):
- runtime/IndexingType.h:
- runtime/JSObject.cpp:
(JSC::JSObject::copyButterfly):
(JSC::JSObject::visitButterfly):
(JSC::JSObject::setPrototype):
- runtime/JSObject.h:
(JSC::JSObject::setButterfly):
- runtime/JSPropertyNameIterator.cpp:
(JSC::JSPropertyNameIterator::create):
- runtime/Structure.h:
(JSC::Structure::hasIndexingHeader):
- 11:16 AM Changeset in webkit [153656] by
-
- 5 edits in tags/Safari-537.54.1/Source
Versioning.
- 11:03 AM Changeset in webkit [153655] by
-
- 2 edits in trunk/Source/WebCore
Revert r153632, since it caused fast/forms/change-form-element-document-crash.html
to assert.
- html/FormAssociatedElement.cpp:
(WebCore::FormAssociatedElement::formAttributeChanged):
(WebCore::FormAssociatedElement::resetFormAttributeTargetObserver):
- 10:50 AM Changeset in webkit [153654] by
-
- 1 copy in tags/Safari-537.54.1
New Tag.
- 9:40 AM Changeset in webkit [153653] by
-
- 2 edits in branches/safari-537-branch/LayoutTests
Bot greening: changed test to not use test functions not yet available in this branch.
Not reviewed.
- fast/js/script-tests/dfg-make-rope-side-effects.js:
(f):
- 9:02 AM Changeset in webkit [153652] by
-
- 4 edits in trunk/Source
Implement atk_text_get_text_*_offset for WORD
https://bugs.webkit.org/show_bug.cgi?id=114871
Reviewed by Martin Robinson.
Source/WebCore:
Re-implement this functions without using GailTextUtil nor Pango.
- accessibility/atk/WebKitAccessibleInterfaceText.cpp:
(textForObject): Made the parameter a const, to avoid warnings.
(getSelectionOffsetsForObject): Add special cases for END boundaries.
(emptyTextSelectionAtOffset): Convenience function to be used in
early returns from functions returning both text and offsets.
(webkitAccessibleTextGetChar): Use emptyTextSelectionAtOffset(),
and remove checks that are now done outside of this function, in
webkitAccessibleTextGetTextForOffset().
(nextWordStartPosition): Helper function to reliably find the
start of the next word as and user would do it by navigating with
Ctrl and the arrows (considering spaces and punctuation).
(previousWordEndPosition): Similar to nextWordStartPosition, but
written to help find the end of the previous one.
(wordAtPositionForAtkBoundary): Helper function to find the word
at a given position considering values of AtkTextBoundary.
(numberOfReplacedElementsBeforeOffset): Helper function to help
figure out how many embedded objects we have exposed for an
AtkText object, used to adjust offsets coming from outside.
(webkitAccessibleTextGetWordForBoundary): New function,
implementing atk_text_get_text_*_offset for WORD.
(webkitAccessibleTextGetTextForOffset): Replace usage of Gail for
WORD boundaries with webkitAccessibleTextGetWordForBoundary().
Also, moved the initialization of the start and end offsets to the
bottom, into the gail/pango section, since those values will be
from now on initialized in getSelectionOffsetsForObject().
(webkitAccessibleTextGetSelection): Removed the initialization of
the start and end offsets, since those values will be from now on
initialized in getSelectionOffsetsForObject().
Source/WebKit/gtk:
Updated current unit tests and add a new one specific for embedded
objects, to ensure we are covering even more cases than before.
- tests/testatk.c:
(testWebkitAtkGetTextAtOffsetWithEmbeddedObjects): New.
(main): Added new test to the test suite.
- 8:52 AM Changeset in webkit [153651] by
-
- 2 edits in trunk/Tools
[EFL] REGRESSION after r153432: some accessibility tests crash.
https://bugs.webkit.org/show_bug.cgi?id=119333
Patch by Mario Sanchez Prada <mario.prada@samsung.com> on 2013-08-02
Reviewed by Gustavo Noronha Silva.
Add missing null-check to avoid dereferencing a non-existent parent.
- WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::attributesOfElement): Ditto.
- 8:40 AM Changeset in webkit [153650] by
-
- 3 edits in trunk/Source/WebCore
Buildfix for !ENABLE(SVG) platforms after r153581.
https://bugs.webkit.org/show_bug.cgi?id=119444
Reviewed by Andreas Kling.
Adding missing guards.
- css/StylePropertyShorthand.cpp:
(WebCore::matchingShorthandsForLonghand):
- css/StylePropertyShorthand.h:
- 8:18 AM Changeset in webkit [153649] by
-
- 5 edits2 copies2 adds in trunk
REGRESSION (r130783): Scrolling is broken going back to a cached page from a page that still has outstanding subresources.
<rdar://problem/14601124> and https://bugs.webkit.org/show_bug.cgi?id=119416
Reviewed by Darin Adler.
Source/WebCore:
Test: http/tests/loading/unfinished-load-back-to-cached-page-callbacks.html
- loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::stopLoading): Always explicitly cancel the Document parser when stopLoading is called.
LayoutTests:
- http/tests/loading/resources/page-with-slow-loading-subresource.html: Added.
- http/tests/loading/resources/slowimage.php: Added.
- http/tests/loading/unfinished-load-back-to-cached-page-callbacks-expected.txt:
- http/tests/loading/unfinished-load-back-to-cached-page-callbacks.html:
- http/tests/loading/unfinished-main-resource-back-to-cached-page-callbacks-expected.txt: Copied from LayoutTests/http/tests/loading/unfinished-load-back-to-cached-page-callbacks-expected.txt.
- http/tests/loading/unfinished-main-resource-back-to-cached-page-callbacks.html: Copied from LayoutTests/http/tests/loading/unfinished-load-back-to-cached-page-callbacks.html.
- 7:59 AM Changeset in webkit [153648] by
-
- 3 edits in trunk/Source/JavaScriptCore
REGRESSION: ARM still crashes after change set r153612.
https://bugs.webkit.org/show_bug.cgi?id=119433
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-08-02
Reviewed by Michael Saboff.
Update call frame and do not restore registers from JIT stack frame in ARM and ARMv7
implementations of ctiVMThrowTrampolineSlowpath. This change is similar to r153583
for sh4 architecture.
- jit/JITStubsARM.h:
- jit/JITStubsARMv7.h:
- 7:58 AM Changeset in webkit [153647] by
-
- 36 edits4 adds in trunk
<input type="search"> doesn't correctly handle the "size" attribute
https://bugs.webkit.org/show_bug.cgi?id=119174
Source/WebCore:
We weren't taking into account the decorations for search fields (results and close buttons)
when computing the preferred logical width for these fields based on the "size" attribute
and as a result we would not guarantee that we could show the number of characters set by
the "size" attribute.
To make the process of reporting extra width due to decorations cleaner, we add a new decorationWidth()
method for InputType subclasses to override and called through HTMLInputElement::decorationWidth()
and have NumberInputType and SearchInputType return custom decoration widths.
Reviewed by Darin Adler.
Test: fast/forms/search/search-size-with-decorations.html
- html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::decorationWidth):
- html/HTMLInputElement.h:
- html/InputType.cpp:
(WebCore::InputType::decorationWidth):
- html/InputType.h:
Expose a new method to get the width for the input's decoration through the InputType.
- html/NumberInputType.cpp:
(WebCore::NumberInputType::decorationWidth):
- html/NumberInputType.h:
Override InputType::decorationWidth() to return the decoration width for a number input
using the same code previously used in RenderTextControlSingleLine::preferredContentLogicalWidth().
- html/SearchInputType.cpp:
(WebCore::SearchInputType::sizeShouldIncludeDecoration):
Override InputType::sizeShouldIncludeDecoration() to return true since search fields
have custom decoration adding to the size of the field.
(WebCore::SearchInputType::decorationWidth):
Return the combined size of the results and cancel buttons, as available.
- html/SearchInputType.h:
- rendering/RenderTextControlSingleLine.cpp:
(WebCore::RenderTextControlSingleLine::preferredContentLogicalWidth):
Remove the code specific to NumberInputType (which was moved to InputType::decorationWidth())
and replace it with a call to HTMLInputElement::decorationWidth() since this method will now
return the extra decoration width for an input element should it have any.
LayoutTests:
New test fast/forms/search/search-size-with-decorations.html that checks the different
decorations for search fields and the resulting sizes.
Also rebaselining the following tests since the rendering of search fields changed:
fast/forms/search-cancel-button-style-sharing.html
fast/forms/search-display-none-cancel-button.html
fast/forms/searchfield-heights.html
fast/forms/control-restrict-line-height.html
fast/forms/placeholder-pseudo-style.html
fast/forms/search-rtl.html
fast/css/text-overflow-input.html
fast/forms/placeholder-position.html
fast/repaint/search-field-cancel.html
fast/forms/input-appearance-height.html
fast/forms/search-vertical-alignment.html
fast/forms/box-shadow-override.html
fast/forms/search/search-size-with-decorations.html
fast/css/input-search-padding.html
fast/forms/search-styled.html
Reviewed by Darin Adler.
- fast/forms/placeholder-position-expected.txt:
- fast/forms/search/search-size-with-decorations-expected.txt: Added.
- fast/forms/search/search-size-with-decorations.html: Added.
- fast/repaint/search-field-cancel-expected.txt:
- platform/mac/fast/css/input-search-padding-expected.txt:
- platform/mac/fast/css/text-overflow-input-expected.png:
- platform/mac/fast/css/text-overflow-input-expected.txt:
- platform/mac/fast/forms/box-shadow-override-expected.png:
- platform/mac/fast/forms/box-shadow-override-expected.txt:
- platform/mac/fast/forms/control-restrict-line-height-expected.png:
- platform/mac/fast/forms/control-restrict-line-height-expected.txt:
- platform/mac/fast/forms/input-appearance-height-expected.png:
- platform/mac/fast/forms/input-appearance-height-expected.txt:
- platform/mac/fast/forms/placeholder-position-expected.png:
- platform/mac/fast/forms/placeholder-pseudo-style-expected.png:
- platform/mac/fast/forms/placeholder-pseudo-style-expected.txt:
- platform/mac/fast/forms/search-cancel-button-style-sharing-expected.png:
- platform/mac/fast/forms/search-cancel-button-style-sharing-expected.txt:
- platform/mac/fast/forms/search-display-none-cancel-button-expected.txt:
- platform/mac/fast/forms/search-rtl-expected.png:
- platform/mac/fast/forms/search-rtl-expected.txt:
- platform/mac/fast/forms/search-styled-expected.txt:
- platform/mac/fast/forms/search-vertical-alignment-expected.png:
- platform/mac/fast/forms/search-vertical-alignment-expected.txt:
- platform/mac/fast/forms/search/search-size-with-decorations-expected.png: Added.
- platform/mac/fast/forms/searchfield-heights-expected.png:
- platform/mac/fast/forms/searchfield-heights-expected.txt:
- platform/mac/fast/repaint/search-field-cancel-expected.png:
- 7:46 AM Changeset in webkit [153646] by
-
- 5 edits in trunk/Source/JavaScriptCore
REGRESSION(r153612): It made jsc and layout tests crash
https://bugs.webkit.org/show_bug.cgi?id=119440
Reviewed by Csaba Osztrogonác.
Made the changes if changeset r153612 only apply to 32 bit builds.
- jit/JITExceptions.cpp:
- jit/JITExceptions.h:
- jit/JITStubs.cpp:
(JSC::cti_vm_throw_slowpath):
- jit/JITStubs.h:
- 5:19 AM Changeset in webkit [153645] by
-
- 3 edits in trunk/Source/WebCore
[WIN] Fix build without precompiled header.
- accessibility/win/AccessibilityObjectWrapperWin.h: Added missing include.
- rendering/RenderThemeWin.cpp: Ditto.
- 4:37 AM Changeset in webkit [153644] by
-
- 2 edits in trunk/Source/JavaScriptCore
Add JSCTestRunnerUtils to the list of forwarding headers to fix build.
- CMakeLists.txt:
- 3:49 AM Changeset in webkit [153643] by
-
- 2 edits in trunk/Source/WebCore
Remove redundant call of argsList->current() from loops in CSSParser.
https://bugs.webkit.org/show_bug.cgi?id=119432
Reviewed by Christophe Dumez.
while loops in CSSParser call argList->current() function at the start
of each iteration, but this is redundant because argsList->next() at
the end of the iteration calls the argList->current() and returns the
result.
Blink merge from https://src.chromium.org/viewvc/blink?view=rev&revision=155402
- css/CSSParser.cpp:
(WebCore::CSSParser::parseMixFunction):
(WebCore::CSSParser::parseCustomFilterFunctionWithInlineSyntax):
- 2:22 AM Changeset in webkit [153642] by
-
- 1 edit in trunk/Source/WebCore/ChangeLog
Correct bugzilla link in my last commit.
- 2:15 AM Changeset in webkit [153641] by
-
- 6 edits in trunk/Source/WebCore
Removing an empty style sheet shouldn't trigger style recalc.
<http://webkit.org/b/119248>
<rdar://problem/14629045>
Reviewed by Antti Koivisto.
Teach DocumentStyleSheetCollection to filter out empty style sheets when deciding whether
or not to trigger a style recalc. We can then be clever when an empty style sheet is removed
from the document, and avoid causing extra work.
Some pages use this pattern:
(1) Create a <style> element.
(2) Add it to the document's <head> element.
(3) Insert some CSS as a text child of the <style> element.
Since the <style> element is already inside the document at (3), we had to treat this as an
old style sheet being removed, even though it was just an empty sheet of nothing.
With this patch, Document gains enough smarts to know that removing/adding an empty sheet
won't affect layout/rendering in any meaningful way, thus a style recalc can be avoided.
- dom/Document.h:
- dom/Document.cpp:
(WebCore::Document::styleResolverChanged):
Add a DeferRecalcStyleIfNeeded mode to styleResolverChanged().
- css/CSSStyleSheet.h:
- css/CSSStyleSheet.cpp:
(WebCore::CSSStyleSheet::clearOwnerNode):
Use DeferRecalcStyleIfNeeded when saying bye from a CSSStyleSheet and let Document decide
if removing the sheet should trigger style recalc instead of always assuming it should.
- dom/DocumentStyleSheetCollection.cpp:
(WebCore::filterEnabledNonemptyCSSStyleSheets):
(WebCore::DocumentStyleSheetCollection::updateActiveStyleSheets):
Exclude empty sheets from the activeAuthorStyleSheets() collection. They are still
visible through CSSOM's document.styleSheets.
- 1:58 AM Changeset in webkit [153640] by
-
- 5 edits3 adds in trunk
Frame flattening: Change the logic on whether resize event needs to be dispatched.
https://bugs.webkit.org/show_bug.cgi?id=119394
Reviewed by Simon Fraser.
http://trac.webkit.org/changeset/149287 changed the logic so that resize events are
sent out from FrameView::setFrameRect() too. Checking whether frame flattening is
enabled is sufficient enough to ensure that no extra resize events are dispatched.
Source/WebCore:
Test: fast/frames/flattening/iframe-flattening-resize-event-count.html
- page/FrameView.cpp:
(WebCore::FrameView::FrameView):
(WebCore::FrameView::setFrameRect):
(WebCore::FrameView::frameFlatteningEnabled):
(WebCore::FrameView::supportsFrameFlattening):
(WebCore::FrameView::avoidScrollbarCreation):
(WebCore::FrameView::calculateScrollbarModesForLayout):
(WebCore::FrameView::layout):
(WebCore::FrameView::isInChildFrameWithFrameFlattening):
- page/FrameView.h:
- rendering/RenderFrameBase.cpp:
(WebCore::RenderFrameBase::layoutWithFlattening):
LayoutTests:
- fast/frames/flattening/iframe-flattening-resize-event-count-expected.txt: Added.
- fast/frames/flattening/iframe-flattening-resize-event-count.html: Added.
- fast/frames/flattening/resources/iframe-to-resize.html: Added.
- 1:32 AM Changeset in webkit [153639] by
-
- 2 edits in trunk/Tools
Add --rmdir option to git svn dcommit
https://bugs.webkit.org/show_bug.cgi?id=119398
Reviewed by Ryosuke Niwa.
Add this option tells git-svn to remove empty directories
from the svn tree so they do not leave over there.
- Scripts/webkitpy/common/checkout/scm/git.py:
(Git.push_local_commits_to_server):
- 1:20 AM Changeset in webkit [153638] by
-
- 2 edits in trunk/Source/WTF
Check WTF::Vector size with '0' inline capacity
https://bugs.webkit.org/show_bug.cgi?id=119397
Reviewed by Andreas Kling.
Putting in place the compile assertion that had been removed with r153514.
- wtf/SizeLimits.cpp:
- 12:51 AM Changeset in webkit [153637] by
-
- 2 edits in trunk/Source/WTF
<http://webkit.org/b/119169> RetainPtr should support ARC for Objective-C objects.
While RetainPtr is not necessary under ARC, having it available makes it easier to transition
existing code from manual retain / release to ARC.
Under ARC, the object member of RetainPtr is treated as a strong reference by the compiler.
This means that merely assigning to the member variable is sufficient to retain the object,
and clearing the member variable is sufficient to release it. We still need to explicitly
CFRetain / CFRelease CoreFoundation types so the explicit calls to these functions are
moved in to helper functions and overloading is used to have the Objective-C object versions
of them be no-ops under ARC.
Reviewed by Anders Carlsson.
- wtf/RetainPtr.h:
(WTF::retain): Continue to always CFRetain / CFRelease CoreFoundation objects. Only CFRetain / CFRelease
Objective-C objects when using manual retain / release.
(WTF::release): Ditto.
(WTF::adoptNSReference): Adopting references will be handled automatically by the compiler
when possible under ARC by eliminating redundant retain / release pairs.
(WTF::RetainPtr::ImplicitConversionToBoolIsNotAllowed): A new method that exists only to be used by the
conversion to the unspecified bool type.
(WTF::RetainPtr::operator UnspecifiedBoolType): Switch to using a pointer to a member function as the
unspecified bool type to avoid warnings from the compiler when casting Objective-C object types under ARC.
(WTF::RetainPtr::RetainPtr): Switch to our retain / release helper functions.
(WTF::RetainPtr::~RetainPtr): Ditto.
(WTF::::RetainPtr): Ditto.
(WTF::::clear): Ditto.
(WTF::=): Ditto.
(WTF::adoptCF): Annotate the argument with CF_RELEASES_ARGUMENT on both the declaration and the definition.
(WTF::adoptNS): Ditto for NS_RELEASES_ARGUMENT.
Aug 1, 2013:
- 11:09 PM Changeset in webkit [153636] by
-
- 2 edits in trunk/Source/WTF
<rdar://problem/14235491> FastMalloc zone enumerator responding to MALLOC_PTR_REGION_RANGE_TYPE with individual allocations
Teach PageMapMemoryUsageRecorder::recordPendingRegions to only record data of the type that it's asked for.
This also fixes the vmmap output to associate some regions with the FastMalloc malloc zone that were previously
associated with it only via the VM tag, meaning they were incorrectly being omitted from the malloc statistics
section of the report.
Reviewed by Dan Bernstein.
- wtf/FastMalloc.cpp:
(WTF::PageMapMemoryUsageRecorder::recordPendingRegions): Report the individual allocations only when requested. Add
the ability to report the regions containing pointers separately from the allocations.
- 11:01 PM Changeset in webkit [153635] by
-
- 2 edits in trunk/Source/WTF
<rdar://problem/14528244> False-positive leaks from FastMalloc.
A logic error in the page map enumeration code within FastMalloc could result in a subset of the memory regions
owned by FastMalloc being skipped by the malloc zone enumeration code used by leaks and other performance tools.
If the only reference to an allocated object lived within one of the skipped memory regions, leaks would believe
it had been leaked since it would not find any references to the object.
The logic error manifested when a FastMalloc span owned a region of memory that crossed a 16MB address space boundary,
and when there was one or more other spans immediately after it in the address space. Crossing the 16MB address space
boundary means that the start and end points of the span are in different leaf nodes of the page map trie, and the
code within the page map's visitValues method didn't correctly account this case when skipping to the end of the span
after visiting it. It would resume iterating from the start of the next leaf node rather than continuing to skip values
until the end of the span was passed. The value representing the end of the span would then be processed as if it were
the start of a new span, and more values would be skipped even though they may contain actual spans.
The solution is to rework the algorithm used in visitValues so that it will skip the correct number of values even when
some of the values are in different leaf nodes. This is a more involved change than it may seem since it's also necessary
to deal with the case where a memory region spans two separate root nodes, which can happen if the region happens to cross
a 64GB boundary in the address space.
Reviewed by Geoff Garen.
- wtf/TCPageMap.h:
(TCMalloc_PageMap3::visitValues): Use a single loop to iterate, with the loop index being the key in to the page map in the
same form as used by get and set. This allows us to correctly deal with the index being skipped to a different intermediate or
root node as a result of visiting a span that crosses a 16MB boundary in memory.
(TCMalloc_PageMap2::visitValues): Ditto, but without having to deal with intermediate nodes.
- 7:39 PM Changeset in webkit [153634] by
-
- 3 edits2 deletes in trunk
Unreviewed, rolling out r153608.
http://trac.webkit.org/changeset/153608
https://bugs.webkit.org/show_bug.cgi?id=119425
Snorkled fast/multicol/overflow-content-expected.html
(Requested by kling on #webkit).
Source/WebCore:
- css/StyleResolver.cpp:
(WebCore::StyleResolver::applyMatchedProperties):
LayoutTests:
- fast/css/identical-logical-height-decl-expected.html: Removed.
- fast/css/identical-logical-height-decl.html: Removed.
- 7:07 PM Changeset in webkit [153633] by
-
- 14 edits in trunk/Source
[Forms: color] <input type='color'> popover color well implementation
<rdar://problem/14411008> and https://bugs.webkit.org/show_bug.cgi?id=119356
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-08-01
Reviewed by Benjamin Poulain.
Source/JavaScriptCore:
- Configurations/FeatureDefines.xcconfig: Added and enabled INPUT_TYPE_COLOR_POPOVER.
Source/WebCore:
- Configurations/FeatureDefines.xcconfig: Added and enabled INPUT_TYPE_COLOR_POPOVER.
Source/WebKit/mac:
- Configurations/FeatureDefines.xcconfig: Added and enabled INPUT_TYPE_COLOR_POPOVER.
Source/WebKit2:
This patch adds an popover implementation of <input type='color'>.
- Configurations/FeatureDefines.xcconfig: Added and enabled INPUT_TYPE_COLOR_POPOVER.
- UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::createColorPicker): Updated to pass the
coordinates of the <input type='color'> element and the WKView
object for the window.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::viewWillStartLiveResize): Close popover color
picker when the view is resized.
(WebKit::WebPageProxy::viewInWindowStateDidChange): Close popover color
picker when the view is no longer in the window.
(WebKit::WebPageProxy::showColorPicker): Updated to show either a color panel
or a popover color picker depending on whether INPUT_TYPE_COLOR_POPOVER is enabled.
- UIProcess/mac/WebColorPickerMac.h:
- UIProcess/mac/WebColorPickerMac.mm:
(WebKit::WebColorPickerMac::create):
(WebKit::WebColorPickerMac::~WebColorPickerMac):
(WebKit::WebColorPickerMac::WebColorPickerMac):
(WebKit::WebColorPickerMac::endPicker):
(WebKit::WebColorPickerMac::setSelectedColor):
(WebKit::WebColorPickerMac::showColorPicker):
Methods updated to handle both the color panel implementation and
the popover implementation; also renamed m_panel to m_colorPickerUI.
(-[WKColorPopoverMac initWithFrame:WebCore::inView:]):
(-[WKColorPopoverMac setAndShowPicker:WebKit::withColor:]):
(-[WKColorPopoverMac dealloc]):
(-[WKColorPopoverMac invalidate]):
(-[WKColorPopoverMac windowWillClose:]):
(-[WKColorPopoverMac didChooseColor:]):
(-[WKColorPopoverMac setColor:]):
WKColorPopoverMac provides the popover implementation of <input type='color'>.
(-[WKColorPanelMac didChooseColor:]): Updated to match the interface of
WKColorPickerMac::didChooseColor.
Source/WTF:
- wtf/FeatureDefines.h: Added and enabled INPUT_TYPE_COLOR_POPOVER.
- 6:57 PM Changeset in webkit [153632] by
-
- 2 edits in trunk/Source/WebCore
FormAssociatedElement shouldn't create out-of-tree FormAttributeTargetObserver
https://bugs.webkit.org/show_bug.cgi?id=119309
Reviewed by Kent Tamura.
Merge https://chromium.googlesource.com/chromium/blink/+/6fbdcbf311de539107bc28711b3f7a527176e97b.
I'm not merging the test since the attached test case only works when the shadow DOM API is enabled.
- html/FormAssociatedElement.cpp:
(WebCore::FormAssociatedElement::formAttributeChanged):
(WebCore::FormAssociatedElement::resetFormAttributeTargetObserver):
- 6:00 PM Changeset in webkit [153631] by
-
- 11 edits6 adds in trunk
selectors should match attribute name with case sensitivity based on element & document type
https://bugs.webkit.org/show_bug.cgi?id=71152
Reviewed by Darin Adler.
Source/WebCore:
Support case-sensitive attribute name selecting for non HTML. In order to do this we have to
store the attribute name in the selector as-is when css parsing, and get the lowercase localName
on demand for case-insensitive matching. The only time we want case-insensitive matching is when
we try to match a HTML element in a HTML document.
Tests: fast/dom/SelectorAPI/attrname-case-insensitive.html
fast/dom/SelectorAPI/attrname-case-sensitive.xhtml
svg/css/case-sensitive-attrname-selectors.html
- css/CSSGrammar.y.in: do not lowercase attribute selector name.
- css/CSSParserValues.h:
(WebCore::CSSParserSelector::setAttribute):
- css/CSSSelector.cpp:
(WebCore::CSSSelector::setAttribute):
- css/CSSSelector.h: allow access to lowered version of attribute localName if needed.
(WebCore::CSSSelector::attributeCanonicalLocalName):
- css/SelectorChecker.cpp:
(WebCore::anyAttributeMatches): do only case-insensitive matching for HTML.
(WebCore::SelectorChecker::checkOne):
- css/SelectorChecker.h:
(WebCore::SelectorChecker::checkExactAttribute): do only case-insensitive matching for HTML.
- css/SelectorCheckerFastPath.cpp:
(WebCore::HTMLNames::checkExactAttributeValue):
- css/SelectorCheckerFastPath.h:
(WebCore::SelectorCheckerFastPath::matchesRightmostAttributeSelector):
- dom/Attribute.h:
(WebCore::Attribute::matches): use more convenient parameters.
LayoutTests:
Results matches FireFox nightly.
- fast/dom/SelectorAPI/attrname-case-insensitive-expected.txt: Added.
- fast/dom/SelectorAPI/attrname-case-insensitive.html: Check that in HTML documents CSS selectors
use case-insensitive attribute name matching for HTML elements, case-sensitive otherwise.
- fast/dom/SelectorAPI/attrname-case-sensitive-expected.txt: Added.
- fast/dom/SelectorAPI/attrname-case-sensitive.xhtml: Check that in XHTML documents CSS selectors
always use case-sensitive attribute name matching.
- svg/css/case-sensitive-attrname-selectors-expected.txt: Added.
- svg/css/case-sensitive-attrname-selectors.html: Check that in HTML documents CSS selectors in stylesheets
use case-insensitive attribute name matching for HTML elements, case-sensitive otherwise.
- 5:44 PM Changeset in webkit [153630] by
-
- 4 edits in branches/safari-537-branch
Bot greening. Merge r153629.
2013-08-01 Alexey Proskuryakov <ap@apple.com>
<rdar://problem/14625616> http/tests/download/basic-ascii.html and http/tests/download/literal-utf-8.html fails
Changed the PHP files to not have a BOM, which confuses some versions of PHP.
They are both ASCII anyway.
- http/tests/download/resources/basic-ascii.php:
- http/tests/download/resources/literal-utf-8.php:
- 5:23 PM Changeset in webkit [153629] by
-
- 3 edits in trunk/LayoutTests
<rdar://problem/14625616> http/tests/download/basic-ascii.html and http/tests/download/literal-utf-8.html fails
Changed the PHP files to not have a BOM, which confuses some versions of PHP.
They are both ASCII anyway.
- http/tests/download/resources/basic-ascii.php:
- http/tests/download/resources/literal-utf-8.php:
- 5:07 PM Changeset in webkit [153628] by
-
- 11 edits in trunk
[Windows] WebKit1 Fullscreen Video Play is Broken
https://bugs.webkit.org/show_bug.cgi?id=119415
Reviewed by Jer Noble.
Source/WebCore:
- platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h: Add
call for ACFPlayerLayerSetFrame
- platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::MediaPlayerPrivateAVFoundationCF::platformSetVisible):
Tear down video player when leaving Fullscreen mode and not using
the newer Fullscreen feature.
(WebCore::AVFWrapper::disconnectAndDeleteAVFWrapper):
Disconnect from notifications for AVCFPlayerItemPresentationSizeChangedNotification,
AVCFPlayerItemDuratoinChangedNotification, and disconnect any
LegibleOutput items added to the player item.
(WebCore::AVFWrapper::createPlayerItem): Add notifications for
AVCFPlayerItemPresentationSizeChanged.
(WebCore::LayerClient::platformCALayerLayoutSublayersOfLayer): Notify
the AVCFPLayerLayer when the display size has changed.
- platform/graphics/ca/win/CACFLayerTreeHost.h:
(WebCore::CACFLayerTreeHost::manualCreateRenderer): Added.
- platform/graphics/ca/win/WKCACFViewLayerTreeHost.h:
(WebCore::WKCACFViewLayerTreeHost::manualCreateRenderer): Added.
- platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp:
(WebCore::MediaPlayerPrivateFullscreenWindow::createWindow): Minor
cleanups.
(WebCore::MediaPlayerPrivateFullscreenWindow::setRootChildLayer):
Make sure a Direct3D renderer is created when building the full screen
window for Video playback.
Source/WebKit/win:
- WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings): Set accelerated
rendering on by default on systems that support it.
- WebView.cpp:
(WebView::exitFullscreen): Clean up Fullscreen video controller
once it is no longer used. This was preventing users from being
able to reenter Fullscreen mode after leaving it.
(WebView::fullScreenClientForceRepaint): Change assert to
match the member actually being used in the method.
Tools:
- WinLauncher/WinLauncher.cpp:
(dllLauncherEntryPoint): Activate full screen mode via
IWebPreferencesInternal interface.
- 5:02 PM Changeset in webkit [153627] by
-
- 5 edits12 adds in trunk
srcset algorithm breaks base64 src attributes
https://bugs.webkit.org/show_bug.cgi?id=119413
Reviewed by Darin Adler.
Source/WebCore:
Base64 encoded src attributes typically have a COMMA
character which was breaking in the candidate matching
algorithm. Make sure to handle that case, and to unescape
any incoming URLs.
Slight cleanup of the srcset matching algorithm. The
candidates are now gathered from a single update
method. I've renamed the methods in the process.
This means we now reparse the srcset attribute if
only the src changes, but I think the code is
cleaner this way.
Tests: fast/hidpi/image-srcset-data-src.html
fast/hidpi/image-srcset-data-srcset.html
fast/hidpi/image-srcset-nomodifier.html
fast/hidpi/image-srcset-viewport-modifiers.html
- html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::HTMLImageElement): No need to initialise m_bestFitImageURL.
(WebCore::HTMLImageElement::imageSourceURL): Use isEmpty() rather than checking for nullAtom.
(WebCore::HTMLImageElement::determineBestImageForScaleFactor): New renamed method that selects the best
candidate for the image source.
(WebCore::HTMLImageElement::collectImageCandidatesFromSrcSet): Gather the srcset images. Changes include
simplifying the whitespace and skipping candidates that we don't yet support.
(WebCore::HTMLImageElement::collectImageCandidateFromSrc): Add the src attribute to the list of candidates.
(WebCore::HTMLImageElement::parseAttribute): Now both attributes call determineBestImageForScaleFactor.
- html/HTMLImageElement.h: No need for m_srcImageIndex any more.
LayoutTests:
Four new tests that exercise candidate matching. In particular:
- base64 encoded src attributes
- base64 encoded srcset attributes that are escaped
- attributes without scale modifiers
- attributes that have modifiers other than scale
- fast/hidpi/image-srcset-change-dynamically-from-js.html: Minor change to add scale modifier.
- fast/hidpi/image-srcset-data-src.html: Added.
- fast/hidpi/image-srcset-data-srcset.html: Added.
- fast/hidpi/image-srcset-nomodifier.html: Added.
- fast/hidpi/image-srcset-viewport-modifiers.html: Added.
- platform/mac/fast/hidpi/image-srcset-data-src-expected.png: Added.
- platform/mac/fast/hidpi/image-srcset-data-src-expected.txt: Added.
- platform/mac/fast/hidpi/image-srcset-data-srcset-expected.png: Added.
- platform/mac/fast/hidpi/image-srcset-data-srcset-expected.txt: Added.
- platform/mac/fast/hidpi/image-srcset-nomodifier-expected.png: Added.
- platform/mac/fast/hidpi/image-srcset-nomodifier-expected.txt: Added.
- platform/mac/fast/hidpi/image-srcset-viewport-modifiers-expected.png: Added.
- platform/mac/fast/hidpi/image-srcset-viewport-modifiers-expected.txt: Added.
- 5:02 PM Changeset in webkit [153626] by
-
- 3 edits3 copies in branches/safari-537-branch
Merged r153615. <rdar://problem/14625273>
- 5:01 PM Changeset in webkit [153625] by
-
- 12 edits3 adds in trunk/LayoutTests
Minor cleanup for srcset tests
https://bugs.webkit.org/show_bug.cgi?id=119407
Reviewed by Tim Horton.
Other than small typos and style tweaks, there are three
main changes here:
- Collect duplicated code into a helper file.
- Make sure the tests that add or remove the attributes
can run standalone outside of DRT.
- Update the -simple test with new images that make it
more clear what srcset is doing.
- fast/hidpi/image-srcset-change-dynamically-from-js.html:
- fast/hidpi/image-srcset-invalid-inputs-correct-src.html:
- fast/hidpi/image-srcset-invalid-inputs-except-one.html:
- fast/hidpi/image-srcset-invalid-inputs.html:
- fast/hidpi/image-srcset-only-src-attribute.html:
- fast/hidpi/image-srcset-remove-dynamically-from-js.html:
- fast/hidpi/image-srcset-same-alternative-for-both-attributes.html:
- fast/hidpi/image-srcset-simple.html:
- fast/hidpi/image-srcset-src-selection.html:
- fast/hidpi/resources/image-set-1x.png: Added.
- fast/hidpi/resources/image-set-2x.png: Added.
- fast/hidpi/resources/srcset-helper.js: Added.
- platform/mac/fast/hidpi/image-srcset-simple-expected.png:
- platform/mac/fast/hidpi/image-srcset-simple-expected.txt:
- 5:00 PM Changeset in webkit [153624] by
-
- 6 edits27 adds in trunk
Implement img element's srcset attribute
https://bugs.webkit.org/show_bug.cgi?id=110252
Patch by Romain Perier <Romain Perier> on 2013-08-01
Reviewed by Dean Jackson.
Source/WebCore:
Tests: fast/hidpi/image-srcset-simple.html
fast/hidpi/image-srcset-src-selection.html
fast/hidpi/image-srcset-simple.html
fast/hidpi/image-srcset-src-selection.html
fast/hidpi/image-srcset-only-src-attribute.html
fast/hidpi/image-srcset-same-alternative-for-both-attributes.html
fast/hidpi/image-srcset-invalid-inputs.html
fast/hidpi/image-srcset-invalid-inputs-except-one.html
fast/hidpi/image-srcset-invalid-inputs-correct-src.html
fast/hidpi/image-srcset-change-dynamically-from-js.html
fast/hidpi/image-srcset-remove-dynamically-from-js.html
- html/HTMLAttributeNames.in: Add srcset attribute.
- html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::HTMLImageElement):
Adding initialization for new variables member.
(WebCore::HTMLImageElement::imageSourceURL):
Override this method to return the choosen image transparently to the ImageLoader.
(WebCore::HTMLImageElement::updateBestImageForScaleFactor):
New method to select the good image candidate dependending on the scale factor. This method is separated from
parsing because it will be useful for selecting a new image candidate on the fly if the device scale factor changes.
(WebCore::HTMLImageElement::updateImagesFromSrcSet):
New method for parsing the srcset attribute and build a list of images with the corresponding scale factor.
(WebCore::HTMLImageElement::parseAttribute):
Adding support for processing the image candidates, select the good one and call ImageLoader for rendering.
- html/HTMLImageElement.h:
- Adding new methods declarations.
- Adding new type definition.
- Adding new variable member to store the URL of the choosen image.
- Adding new variable member to store the index of the src image.
- Adding new Vector to store the list of images after parsing.
- html/HTMLImageElement.idl: Adding srcset attribute for the differents existing bidings.
LayoutTests:
- fast/hidpi/image-srcset-simple.html: Ensures that the good image
is selected from srcset by the user agent according to the choosen scale factor.
- fast/hidpi/image-srcset-src-selection.html: Ensures that the image
from the src attribute is collected by the parsing algorithm and selected by the user agent
when no other candidate matches the scale factor.
- fast/hidpi/image-srcset-only-src-attribute.html: Ensures that the algorithms used for srcset
does not change the behaviour of the src attribute when the srcset attribute is not defined,
even using scale factor greater than 1.
- fast/hidpi/image-srcset-same-alternative-for-both-attributes.html: Ensures that the good image
is selected by the user agent when src and srcset contain an image with a scale factor of 1.
- fast/hidpi/image-srcset-invalid-inputs.html: Ensures that the parsing and the selection
algorithms support invalid inputs. Theses ones are simply ignored.
- fast/hidpi/image-srcset-invalid-inputs-except-one.html: Ensures that a valid image
is selected even if this one is part of a set containing invalid inputs.
- fast/hidpi/image-srcset-invalid-inputs-correct-src.html: Ensures that the image from
the src attribute is choosen when srcset contains only invalid inputs, this selection
should not depend on the scale factor.
- fast/hidpi/image-srcset-change-dynamically-from-js.html: Ensures that src and srcset attributes
can be changed dynamically from javascript.
- fast/hidpi/image-srcset-remove-dynamically-from-js.html: Ensures that src attribute
can be removed dynamically from javascript.
- platform/mac/fast/hidpi/image-srcset-simple-expected.png:
- platform/mac/fast/hidpi/image-srcset-simple-expected.txt:
- platform/mac/fast/hidpi/image-srcset-src-selection-expected.png:
- platform/mac/fast/hidpi/image-srcset-src-selection-expected.txt:
- platform/mac/fast/hidpi/image-srcset-only-src-attribute-expected.png:
- platform/mac/fast/hidpi/image-srcset-only-src-attribute-expected.txt:
- platform/mac/fast/hidpi/image-srcset-same-alternative-for-both-attributes-expected.png:
- platform/mac/fast/hidpi/image-srcset-same-alternative-for-both-attributes-expected.txt:
- platform/mac/fast/hidpi/image-srcset-invalid-inputs-expected.png:
- platform/mac/fast/hidpi/image-srcset-invalid-inputs-expected.txt:
- platform/mac/fast/hidpi/image-srcset-invalid-inputs-except-one-expected.png:
- platform/mac/fast/hidpi/image-srcset-invalid-inputs-except-one-expected.txt:
- platform/mac/fast/hidpi/image-srcset-invalid-inputs-correct-src-expected.png:
- platform/mac/fast/hidpi/image-srcset-invalid-inputs-correct-src-expected.txt:
- platform/mac/fast/hidpi/image-srcset-change-dynamically-from-js-expected.png:
- platform/mac/fast/hidpi/image-srcset-change-dynamically-from-js-expected.txt:
- platform/mac/fast/hidpi/image-srcset-remove-dynamically-from-js-expected.png:
- platform/mac/fast/hidpi/image-srcset-remove-dynamically-from-js-expected.txt:
- 4:44 PM Changeset in webkit [153623] by
-
- 2 edits2 adds4 deletes in trunk/LayoutTests
[CSS Shapes] New positioning model: support for stacked floats with shape-outside
https://bugs.webkit.org/show_bug.cgi?id=118087
Reviewed by Alexandru Chiculita.
Import new test for stacked floats from the CSSWG's repository to
replace the old tests. The simple horizontal rectangle test is no
longer applicable now that float stacking ignores shapes, so it has
just been removed.
- TestExpectations: Remove skipping for replaced tests.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-stacked-000-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-stacked-000.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rectangle-horizontal-multiple-expected.html: Removed.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rectangle-horizontal-multiple.html: Removed.
- fast/shapes/shape-outside-floats/shape-outside-floats-stacked-expected.html: Removed.
- fast/shapes/shape-outside-floats/shape-outside-floats-stacked.html: Removed.
- 4:17 PM Changeset in webkit [153622] by
-
- 4 edits in trunk/LayoutTests
Update polygon shape-outside tests for upstream changes
https://bugs.webkit.org/show_bug.cgi?id=119414
Reviewed by Alexandru Chiculita.
The refs were updated upstream to make them work properly in Blink.
This pulls in that change to keep things in sync.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-001-expected.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-001.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-002-expected.html:
- 3:53 PM Changeset in webkit [153621] by
-
- 3 edits in branches/safari-537-branch/Source/JavaScriptCore
Merge patch for <rdar://problem/14527940>.
- 3:42 PM Changeset in webkit [153620] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153595. <rdar://problem/14615802>
- 3:40 PM Changeset in webkit [153619] by
-
- 3 edits4 copies in branches/safari-537-branch
Merged r153553. <rdar://problem/14612613>
- 3:36 PM Changeset in webkit [153618] by
-
- 2 edits in trunk/Tools
Unreviewed. Add an alternative address to show my affiliation in team.html.
- Scripts/webkitpy/common/config/contributors.json:
- 3:34 PM Changeset in webkit [153617] by
-
- 3 edits in branches/safari-537-branch/Source/WTF
Merged r153514. <rdar://problem/14598360>
- 3:27 PM Changeset in webkit [153616] by
-
- 3 edits in trunk/Source/WebKit2
Lots of leaks under WebContext::pluginInfoStoreDidLoadPlugins()
https://bugs.webkit.org/show_bug.cgi?id=119412
Reviewed by Simon Fraser.
For some sick reason, the WKContextClient plugInInformationBecameAvailable callback function
expects a +1 reference to the plug-in array. Isolate that hack to WebContextClient so that
we don't leak the array if there is no WKContextClient.
- UIProcess/WebContext.cpp:
(WebKit::WebContext::pluginInfoStoreDidLoadPlugins):
- UIProcess/WebContextClient.cpp:
(WebKit::WebContextClient::plugInInformationBecameAvailable):
- 3:18 PM Changeset in webkit [153615] by
-
- 3 edits3 adds in trunk
DFG is not enforcing correct ordering of ToString conversion in MakeRope
https://bugs.webkit.org/show_bug.cgi?id=119408
Reviewed by Filip Pizlo.
Source/JavaScriptCore:
Construct ToString and Phantom nodes in advance of MakeRope
nodes to ensure that ordering is ensured, and correct values
will be reified on OSR exit.
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
LayoutTests:
Add tests
- fast/js/dfg-make-rope-side-effects-expected.txt: Added.
- fast/js/dfg-make-rope-side-effects.html: Added.
- fast/js/script-tests/dfg-make-rope-side-effects.js: Added.
(f):
(k.valueOf):
(k.toString):
- 3:15 PM Changeset in webkit [153614] by
-
- 3 edits in branches/safari-537-branch/Source/WebKit2
Merged r153499. <rdar://problem/14267833>
- 3:14 PM Changeset in webkit [153613] by
-
- 4 edits3 adds in trunk
DFG optimizations don't handle neutered arrays properly
https://bugs.webkit.org/show_bug.cgi?id=119409
Reviewed by Mark Hahnenberg and Oliver Hunt.
Source/WebCore:
Test: fast/js/dfg-typed-array-neuter.
- bindings/js/SerializedScriptValue.cpp:
(WebCore::neuterView):
(WebCore::SerializedScriptValue::transferArrayBuffers):
(WebCore::SerializedScriptValue::create):
- bindings/js/SerializedScriptValue.h:
LayoutTests:
- fast/js/dfg-typed-array-neuter-expected.txt: Added.
- fast/js/dfg-typed-array-neuter.html: Added.
- fast/js/script-tests/dfg-typed-array-neuter.js: Added.
(foo):
(bar):
- 2:57 PM Changeset in webkit [153612] by
-
- 5 edits in trunk/Source/JavaScriptCore
REGRESSION: Crash beneath cti_vm_throw_slowpath due to invalid CallFrame pointer
https://bugs.webkit.org/show_bug.cgi?id=119140
Reviewed by Filip Pizlo.
Ensure that ExceptionHandler is returned by functions in two registers by encoding the value as a 64 bit int.
- jit/JITExceptions.cpp:
(JSC::encode):
- jit/JITExceptions.h:
- jit/JITStubs.cpp:
(JSC::cti_vm_throw_slowpath):
- jit/JITStubs.h:
- 2:50 PM Changeset in webkit [153611] by
-
- 2 edits in trunk/Source/WebKit2
Remove return statement in void function
https://bugs.webkit.org/show_bug.cgi?id=119379
Reviewed by Darin Adler.
It does not make sense to return a value in void function.
- WebProcess/WebProcess.cpp:
(WebKit::addCaseFoldedCharacters):
- 2:48 PM Changeset in webkit [153610] by
-
- 2 edits in trunk/Source/WebKit2
[WK2] Add USE(SOUP) guard in WebProcess::destroyPrivateBrowsingSession
https://bugs.webkit.org/show_bug.cgi?id=119381
Reviewed by Darin Adler.
The is a followup to r153355. I missed to add USE(SOUP) guard in
WebProcess::destroyPrivateBrowsingSession.
- WebProcess/WebProcess.cpp:
(WebKit::WebProcess::destroyPrivateBrowsingSession):
- 2:41 PM Changeset in webkit [153609] by
-
- 2 edits in trunk/Source/WTF
REGRESSION(r145592): AutodrainedPool.h. RunLoopTimer.h, SchedulePair.h are being copied into the wrong location
https://bugs.webkit.org/show_bug.cgi?id=112833
Reviewed by Sam Weinig.
AutodrainedPool.h and SchedulePair.h should just be project headers, not
private headers, so they get copied into <build dir>/usr/local/include/wtf
not <build dir>/usr/local/include
- WTF.xcodeproj/project.pbxproj:
- 2:25 PM Changeset in webkit [153608] by
-
- 3 edits2 adds in trunk
REGRESSION (Safari 6 - ToT): Incorrectly assumes that RenderStyle data can be shared
https://bugs.webkit.org/show_bug.cgi?id=113058
Source/WebCore:
Before sharing CSS properties with an element in the cache, we need to
check that the new element is suitable for this, just like we check
elements before inserting them into the cache.
Patch by Morten Stenshorne <mstensho@opera.com> on 2013-08-01
Reviewed by Andreas Kling.
Test: fast/css/identical-logical-height-decl.html
- css/StyleResolver.cpp:
(WebCore::StyleResolver::applyMatchedProperties):
LayoutTests:
Patch by Morten Stenshorne <mstensho@opera.com> on 2013-08-01
Reviewed by Andreas Kling.
- fast/css/identical-logical-height-decl-expected.html: Added.
- fast/css/identical-logical-height-decl.html: Added.
- 2:13 PM Changeset in webkit [153607] by
-
- 29 edits in trunk/Source/WebCore
Fixed expected test results for run-bindings-tests after r153532, r153537.
https://bugs.webkit.org/show_bug.cgi?id=119410.
Reviewed by Simon Fraser.
No new tests.
- bindings/scripts/test/JS/JSFloat64Array.cpp:
(WebCore::JSFloat64ArrayConstructor::getOwnPropertySlot):
(WebCore::JSFloat64ArrayPrototype::getOwnPropertySlot):
(WebCore::JSFloat64Array::getOwnPropertySlot):
(WebCore::JSFloat64Array::getOwnPropertySlotByIndex):
- bindings/scripts/test/JS/JSFloat64Array.h:
- bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::JSTestActiveDOMObjectConstructor::getOwnPropertySlot):
(WebCore::JSTestActiveDOMObjectPrototype::getOwnPropertySlot):
(WebCore::JSTestActiveDOMObject::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestActiveDOMObject.h:
- bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::JSTestCustomNamedGetterConstructor::getOwnPropertySlot):
(WebCore::JSTestCustomNamedGetterPrototype::getOwnPropertySlot):
(WebCore::JSTestCustomNamedGetter::getOwnPropertySlot):
(WebCore::JSTestCustomNamedGetter::getOwnPropertySlotByIndex):
- bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
- bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructorConstructor::getOwnPropertySlot):
(WebCore::JSTestEventConstructor::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestEventConstructor.h:
- bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTargetConstructor::getOwnPropertySlot):
(WebCore::JSTestEventTargetPrototype::getOwnPropertySlot):
(WebCore::JSTestEventTarget::getOwnPropertySlot):
(WebCore::JSTestEventTarget::getOwnPropertySlotByIndex):
- bindings/scripts/test/JS/JSTestEventTarget.h:
- bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::JSTestExceptionConstructor::getOwnPropertySlot):
(WebCore::JSTestException::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestException.h:
- bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfaceConstructor::getOwnPropertySlot):
(WebCore::JSTestInterfacePrototype::getOwnPropertySlot):
(WebCore::JSTestInterface::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestInterface.h:
- bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::JSTestMediaQueryListListenerConstructor::getOwnPropertySlot):
(WebCore::JSTestMediaQueryListListenerPrototype::getOwnPropertySlot):
(WebCore::JSTestMediaQueryListListener::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
- bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorConstructor::getOwnPropertySlot):
(WebCore::JSTestNamedConstructor::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestNamedConstructor.h:
- bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNodeConstructor::getOwnPropertySlot):
(WebCore::JSTestNode::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestNode.h:
- bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjConstructor::getOwnPropertySlot):
(WebCore::JSTestObjPrototype::getOwnPropertySlot):
(WebCore::JSTestObj::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestObj.h:
- bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructorsConstructor::getOwnPropertySlot):
(WebCore::JSTestOverloadedConstructors::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
- bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterfaceConstructor::getOwnPropertySlot):
(WebCore::JSTestSerializedScriptValueInterface::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
- bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsConstructor::getOwnPropertySlot):
(WebCore::JSTestTypedefsPrototype::getOwnPropertySlot):
(WebCore::JSTestTypedefs::getOwnPropertySlot):
- bindings/scripts/test/JS/JSTestTypedefs.h:
- 2:07 PM Changeset in webkit [153606] by
-
- 2 edits in trunk/LayoutTests
Mark some ref tests that sometimes file becaues of colorspace
issues as both Pass and ImageOnlyFailure.
- platform/mac/TestExpectations:
- 2:01 PM Changeset in webkit [153605] by
-
- 3 edits in branches/safari-537-branch/Source/WebCore
Merged r153494. <rdar://problem/14588132>
- 1:56 PM Changeset in webkit [153604] by
-
- 4 edits in branches/safari-537-branch/Source/WebKit2
Merged r153488. <rdar://problem/13368226>
- 1:54 PM Changeset in webkit [153603] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r153482. <rdar://problem/14582393>
- 1:34 PM Changeset in webkit [153602] by
-
- 3 edits in trunk/LayoutTests
REGRESSION (r153448) video-controls-captions-trackmenu.html is failing
https://bugs.webkit.org/show_bug.cgi?id=119376
Reviewed by Simon Fraser.
Call showMenu() before attempting to click on the caption menu items.
- media/video-controls-captions-trackmenu.html:
- platform/mac/TestExpectations:
- 1:24 PM Changeset in webkit [153601] by
-
- 2 edits in trunk/Source/WebCore
Copy eglplatform.h to be found by Windows WebGL build.
https://bugs.webkit.org/show_bug.cgi?id=119299
Reviewed by Brent Fulgham.
- WebCore.vcxproj/WebCorePreBuild.cmd: Copy eglplatform.h.
- 1:21 PM Changeset in webkit [153600] by
-
- 3 edits in trunk/Source/ThirdParty/ANGLE
Fixed wrong static_casting in ANGLE from r153064.
https://bugs.webkit.org/show_bug.cgi?id=119296
Reviewed by Dean Jackson.
- src/compiler/Intermediate.cpp:
(TIntermediate::promoteConstantUnion):
Undid erroneous static_cast change.
- src/compiler/intermediate.h:
(TIntermConstantUnion::getIConst):
(TIntermConstantUnion::getFConst):
(TIntermConstantUnion::getBConst):
Made getters use size_t instead of int.
- 1:10 PM Changeset in webkit [153599] by
-
- 2 edits in trunk/Source/WebCore
Crash in WebCore: WebCore::AudioSession::beganAudioInterruption + 62
https://bugs.webkit.org/show_bug.cgi?id=119406
Reviewed by Eric Carlson.
Unregister for AudioSession interruption events when being destroyed.
- platform/audio/ios/AudioDestinationIOS.cpp:
(WebCore::AudioDestinationIOS::~AudioDestinationIOS):
- 1:04 PM Changeset in webkit [153598] by
-
- 26 edits2 deletes in branches/safari-537-branch
<rdar://problem/14616729> REGRESSION (r144350): Overflow bounding boxes are way
too big; prevents VoiceOver taps from activating the right elements
Reviewed by Darin Adler.
Source/WebCore:
This is a partial-rollout of http://trac.webkit.org/changeset/144350 which is the
change that caused this regression. This patch rolls out most of that patch, and
it only leaves in the part that added a paintContainer variable to PaintInfo since
that is now used in other places in the code. All uses of the paintContainer that
were added with this patch have been removed since they contribute to the
regression.
- rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):
(WebCore::RenderBlock::paintContinuationOutlines):
(WebCore::RenderBlock::addFocusRingRects):
- rendering/RenderBlock.h:
- rendering/RenderBox.cpp:
(WebCore::RenderBox::addFocusRingRects):
- rendering/RenderBox.h:
- rendering/RenderInline.cpp:
(WebCore::RenderInline::addFocusRingRects):
(WebCore::RenderInline::paintOutline):
- rendering/RenderInline.h:
- rendering/RenderLineBoxList.cpp:
(WebCore::RenderLineBoxList::paint):
- rendering/RenderListBox.cpp:
(WebCore::RenderListBox::addFocusRingRects):
- rendering/RenderListBox.h:
- rendering/RenderObject.cpp:
(WebCore::RenderObject::paintFocusRing):
(WebCore::RenderObject::paintOutline):
- rendering/RenderObject.h:
(WebCore::RenderObject::addFocusRingRects):
- rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::paint):
- rendering/RenderTable.cpp:
(WebCore::RenderTable::paintObject):
- rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::paintOutlineForRowIfNeeded):
- rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::paint):
- rendering/RenderTextControl.cpp:
(WebCore::RenderTextControl::addFocusRingRects):
- rendering/RenderTextControl.h:
- rendering/RenderWidget.cpp:
(WebCore::RenderWidget::paint):
- rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::paint):
(WebCore::RenderSVGContainer::addFocusRingRects):
- rendering/svg/RenderSVGContainer.h:
- rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::paint):
(WebCore::RenderSVGImage::addFocusRingRects):
- rendering/svg/RenderSVGImage.h:
- rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::paint):
(WebCore::RenderSVGShape::addFocusRingRects):
- rendering/svg/RenderSVGShape.h:
LayoutTests:
Rollout http://trac.webkit.org/changeset/144350
- compositing/sub-layer-focus-ring-expected.html: Removed.
- compositing/sub-layer-focus-ring.html: Removed.
- 12:39 PM Changeset in webkit [153597] by
-
- 1 edit in branches/safari-537-branch/LayoutTests/ChangeLog
Rollout of r153596, it had already been merged.
- 12:33 PM Changeset in webkit [153596] by
-
- 1 edit in branches/safari-537-branch/LayoutTests/ChangeLog
Merged r153498. <rdar://problem/14597172>
- 12:19 PM Changeset in webkit [153595] by
-
- 2 edits in trunk/Source/WebCore
Layout should force a StyleResolver rebuild if there isn't one at all.
<http://webkit.org/b/119378>
Reviewed by Antti Koivisto.
We can't tell if viewport-dependent media queries have been invalidated at layout,
unless we have a StyleResolver to ask about this.
In case there isn't one, take the same path as we would with an invalidated query
instead of relying on ensureStyleResolver() to build it.
- page/FrameView.cpp:
(WebCore::FrameView::layout):
- 11:58 AM Changeset in webkit [153594] by
-
- 3 edits in trunk/LayoutTests
Crashing Test: fast/forms/color/input-color-onchange-event.html
<rdar://problem/14621667> and https://bugs.webkit.org/show_bug.cgi?id=119403
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-08-01
Reviewed by Tim Horton.
- platform/mac-wk2/TestExpectations:
- platform/mac/TestExpectations:
- 11:43 AM Changeset in webkit [153593] by
-
- 1 edit in trunk/Tools/Scripts/webkitpy/common/config/contributors.json
Adding myself to list of reviewers since I am one (see https://www.webkit.org/blog/2691/antoine-quint-is-now-a-webkit-reviewer/).
- 11:12 AM Changeset in webkit [153592] by
-
- 2 edits in trunk/Source/WebCore
[BlackBerry] Crash at absoluteClippedOverflowRect() in PluginView::calculateClipRect()
https://bugs.webkit.org/show_bug.cgi?id=119401
Patch by Jacky Jiang <zhajiang@blackberry.com> on 2013-08-01.
Reviewed by George Staikos.
JIRA 462881
The renderer of the PluginView's element has been detached due to transition
to a new load. We should return an empty contentRect if there even isn't
a renderer. This is a speculative fix based on the stack trace provided.
- plugins/blackberry/PluginViewBlackBerry.cpp:
(WebCore::PluginView::calculateClipRect):
- 10:59 AM Changeset in webkit [153591] by
-
- 2 edits in trunk/Source/WebCore
Unavailable plug-in indicator arrow should be inside the rounded rect, not in its own circle
https://bugs.webkit.org/show_bug.cgi?id=119400
<rdar://problem/14616012>
Reviewed by Anders Carlsson.
- rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::getReplacementTextGeometry):
Shift the arrow in by 9px, and make the text's rounded rect include it,
instead of having the arrow in a separate circle.
- 10:39 AM Changeset in webkit [153590] by
-
- 2 edits in trunk/Tools
Duplicate property names can cause test to fail
https://bugs.webkit.org/show_bug.cgi?id=119399
Reviewed by Dirk Pranke.
This problem was noticed when porting the patch for
http://wkb.ug/119357 to Blink: a test would fail because the converted
and test property lists weren't the same length, but they contained
all of the same property names. It looks like this is actually caused
by a bug in converting the HTML, which is being currently rewritten.
In the meantime, as long as this compares the number of unique
properties, it makes the test more robust.
- Scripts/webkitpy/w3c/test_converter_unittest.py:
(verify_prefixed_properties):
- 10:07 AM Changeset in webkit [153589] by
-
- 2 edits1 add1 delete in trunk/Source/WebCore
Merge FrameWinCE into FrameWin
https://bugs.webkit.org/show_bug.cgi?id=117988
Reviewed by Brent Fulgham.
Reuse the code from FrameWin.cpp instead of duplicating it.
- PlatformWinCE.cmake:
- page/win/FrameGdiWin.cpp: Added.
(WebCore::imageFromRect):
- page/wince/FrameWinCE.cpp: Removed.
- 9:53 AM Changeset in webkit [153588] by
-
- 6 edits in trunk/Source/WebCore
Made OESTextureHalfFloat work on Windows.
https://bugs.webkit.org/show_bug.cgi?id=119298
Reviewed by Christophe Dumez.
- DerivedSources.cpp: Added JSOESTextureHalfFloat.cpp inside of #if ENABLE(WEBGL).
- WebCore.vcxproj/WebCore.vcxproj:
- WebCore.vcxproj/WebCore.vcxproj.filters:
Added JSOESTextureHalfFloat.cpp and JSOESTextureHalfFloat.h.
- html/canvas/OESTextureHalfFloat.idl: Added newline to end of file.
- html/canvas/WebGLObject.cpp: Removed unused #includes.
- 9:47 AM Changeset in webkit [153587] by
-
- 2 edits in trunk/Tools
Unreviewed. Adding my expertise.
- Scripts/webkitpy/common/config/contributors.json:
- 9:23 AM Changeset in webkit [153586] by
-
- 7 edits in trunk/Source
Rearrange the code of FrameWin
https://bugs.webkit.org/show_bug.cgi?id=117984
Reviewed by Brent Fulgham.
Source/WebCore:
Move code from the CG implementation into the general file so we can
share the code with Windows CE port in a next step. In a first step
it only shares more code between the CG and Cairo implementations.
Also use OwnPtr instead of plain pointers to make ownership more clear.
- page/win/FrameCGWin.cpp:
(WebCore::imageFromRect):
- page/win/FrameCairoWin.cpp:
(WebCore::imageFromRect):
- page/win/FrameWin.cpp:
(WebCore::imageFromSelection):
(WebCore::Frame::dragImageForSelection):
(WebCore::Frame::nodeImage):
- page/win/FrameWin.h:
Source/WebKit/win:
- WebView.cpp:
(WebView::generateSelectionImage):
- 8:35 AM Changeset in webkit [153585] by
-
- 2 edits in trunk/LayoutTests
http/tests/multipart/invalid-image-data-standalone.html needs to skipped, not
just marked as failing, otherwise it gets listed as a test that times out.
- platform/mac/TestExpectations:
- 8:03 AM Changeset in webkit [153584] by
-
- 2 edits in trunk/Tools
Unreviewed. Add myself as a committer. Yoo-hoo! \o/
- Scripts/webkitpy/common/config/contributors.json:
- 6:28 AM Changeset in webkit [153583] by
-
- 2 edits in trunk/Source/JavaScriptCore
REGRESSION(FTL): Fix sh4 implementation of ctiVMThrowTrampolineSlowpath.
https://bugs.webkit.org/show_bug.cgi?id=119391
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-08-01
Reviewed by Csaba Osztrogonác.
- jit/JITStubsSH4.h: Fix ctiVMThrowTrampolineSlowpath implementation:
- Call frame is in r14 register.
- Do not restore registers from JIT stack frame here.
- 6:03 AM Changeset in webkit [153582] by
-
- 3 edits24 adds in trunk
mask-repeat: round bug
Source/WebCore:
Added the round functionality to -webkit-mask-repeat and background-repeat. The tile size of the
image is scaled so that the image can fit a whole number of times in the background.
https://bugs.webkit.org/show_bug.cgi?id=119080
Patch by Andrei Parvu <parvu@adobe.com> on 2013-08-01
Reviewed by Dirk Schulze.
Tests: css3/masking/mask-repeat-round-auto1.html
css3/masking/mask-repeat-round-auto2.html
css3/masking/mask-repeat-round-border.html
css3/masking/mask-repeat-round-content.html
css3/masking/mask-repeat-round-padding.html
css3/background/background-repeat-round-auto1.html
css3/background/background-repeat-round-auto2.html
css3/background/background-repeat-round-border.html
css3/background/background-repeat-round-content.html
css3/background/background-repeat-round-padding.html
- rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry):
LayoutTests:
Added tests for the -webkit-mask-repeat: round property.
https://bugs.webkit.org/show_bug.cgi?id=119080
Patch by Andrei Parvu <parvu@adobe.com> on 2013-08-01
Reviewed by Dirk Schulze.
- css3/masking/mask-repeat-round-auto1-expected.html: Added.
- css3/masking/mask-repeat-round-auto1.html: Added.
- css3/masking/mask-repeat-round-auto2-expected.html: Added.
- css3/masking/mask-repeat-round-auto2.html: Added.
- css3/masking/mask-repeat-round-border-expected.html: Added.
- css3/masking/mask-repeat-round-border.html: Added.
- css3/masking/mask-repeat-round-content-expected.html: Added.
- css3/masking/mask-repeat-round-content.html: Added.
- css3/masking/mask-repeat-round-padding-expected.html: Added.
- css3/masking/mask-repeat-round-padding.html: Added.
- css3/masking/resources/circle.png: Added.
- css3/background/background-repeat-round-auto1-expected.html: Added.
- css3/background/background-repeat-round-auto1.html: Added.
- css3/background/background-repeat-round-auto2-expected.html: Added.
- css3/background/background-repeat-round-auto2.html: Added.
- css3/background/background-repeat-round-border-expected.html: Added.
- css3/background/background-repeat-round-border.html: Added.
- css3/background/background-repeat-round-content-expected.html: Added.
- css3/background/background-repeat-round-content.html: Added.
- css3/background/background-repeat-round-padding-expected.html: Added.
- css3/background/background-repeat-round-padding.html: Added.
- css3/background/resources/circle.png: Added.
- 5:26 AM Changeset in webkit [153581] by
-
- 10 edits in trunk/Source/WebCore
Reduce CSSProperty's StylePropertyMetadata memory footprint by half when used inside a ImmutableStylePropertySet.
https://bugs.webkit.org/show_bug.cgi?id=117715
Reviewed by Andreas Kling.
Today CSSProperty holds its metadata in the following way :
| m_propertyID : 14 We use 14 bits because CSSPropertyIDs start at 1001. |
| m_shorthandID : 14 id of the shorthand this property was set, 0 if not part of a shorthand|
| m_important : 1 |
| m_implicit : 1 |
| m_inherited : 1 |
The proposal to decrease the memory footprint on CSSProperty's metadata
only stand when stored inside ImmutableStylePropertySet which uses a custom
way to allocate and lay out the StylePropertyMetadata and the CSSValues in
memory because the idea behind is that the content will not change.
The MutableStylePropertySet uses a regular vector to retrieve, remove
and modify the CSSProperties. ImmutableStylePropertySet is used by default
when parsing up until someone start to access the CSSOM like
div.style which will convert the immutable to a mutable set. It is also good
to note that a CSSProperty is created for every single statement inside a block
in a stylesheet so we do have quite a bunch around. Another consideration is
that the only client to the m_shorthandID is the inspector which uses it
to group the longhands into a shorthand drop down list.
The new proposal is the following one :
- Reduce m_propertyID to 10 bits by not starting the CSSPropertyIDs from
1001 but rather 0 (or 3 as two are hardcoded CSSPropertyInvalid and CSSPropertyVariable).
- Use the fact that we statically know which longhand belong to which shorthand. So
we create a static mapping between longhands and shorthands.
Here is the new layout :
| m_propertyID : 10 (up to 1024 properties), we have less than 400 today |
| m_isSetFromShorthand : 1 and then use the mapping in StylePropertyShorthand |
| m_indexInShorthandsVector : 2 |
| m_important : 1 (unchanged) |
| m_implicit : 1 (unchanged) |
| m_inherited : 1 (unchanged) |
it was set from using the new code in StylePropertyShorthand.
- m_indexInShorthandsVector : 2 bits, unfortunately there are few longhands which belong to multiple
shorthands so we need to store which was this longhand was part at parsing time. Notice
that it does not store the CSSPropertyID of the matching shorthand but rather its position
in the vector of matching shorthands. CSSProperty::m_shorthandID() method make it transparent
for call sites and return the actual CSSPropertyID of the shorthand. So far 2 bits seems
enough as there is only few longhands with ambiguity and they belong to 3 shorthands.
Profiling the benchmark with Intel Vtune to find out the performance regression
showed that copying uint16_t, so StylePropertyMetadata, is not
a fast operation in term of assembly code and has a big penalty on Windows
MSVC over unsigned for example. The latter produces a much faster code
when using unsigned over uint16_t (45% difference in the benchmark).
The patch avoid the copies of StylePropertyMetadata when applicable (by using const ref).
The second part of the fix is avoiding the conversion from an int (enum) to
an uint16_t in a tight loop such as StylePropertySet::findPropertyIndex
(which is the hotspot of the benchmark).
On my Windows 7 64 bits Core i5 machine CSSPropertySetterGetter results are :
- avg : 2714 runs/s with the patch
- avg : 2696 runs/s without the patch
According to Andreas Kling this patch save up ~1.8Mb on membuster.
No new tests : refactor, old ones should cover.
- css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::getBackgroundShorthandValue):
- css/CSSParser.cpp:
(WebCore::CSSParser::addPropertyWithPrefixingVariant):
(WebCore::CSSParser::addProperty):
- css/CSSProperty.cpp:
(WebCore::StylePropertyMetadata::shorthandID):
(WebCore::borderDirections):
- css/CSSProperty.h:
(WebCore::StylePropertyMetadata::StylePropertyMetadata): Use uint16_t type for bitfields so sizeof() returns 2 bytes.
(WebCore::CSSProperty::CSSProperty):
(WebCore::CSSProperty::isSetFromShorthand):
(WebCore::CSSProperty::shorthandID):
- css/StylePropertySet.cpp:
(WebCore::ImmutableStylePropertySet::ImmutableStylePropertySet):
(WebCore::getIndexInShorthandVectorForPrefixingVariant):
(WebCore::MutableStylePropertySet::appendPrefixingVariantProperty):
(WebCore::MutableStylePropertySet::setPrefixingVariantProperty):
- css/StylePropertySet.h:
(WebCore::StylePropertySet::PropertyReference::shorthandID):
- css/StylePropertyShorthand.cpp:
(WebCore::backgroundShorthand):
(WebCore::backgroundPositionShorthand):
(WebCore::backgroundRepeatShorthand):
(WebCore::borderShorthand):
(WebCore::borderAbridgedShorthand):
(WebCore::borderBottomShorthand):
(WebCore::borderColorShorthand):
(WebCore::borderImageShorthand):
(WebCore::borderLeftShorthand):
(WebCore::borderRadiusShorthand):
(WebCore::webkitBorderRadiusShorthand):
(WebCore::borderRightShorthand):
(WebCore::borderSpacingShorthand):
(WebCore::borderStyleShorthand):
(WebCore::borderTopShorthand):
(WebCore::borderWidthShorthand):
(WebCore::listStyleShorthand):
(WebCore::fontShorthand):
(WebCore::marginShorthand):
(WebCore::markerShorthand):
(WebCore::outlineShorthand):
(WebCore::overflowShorthand):
(WebCore::paddingShorthand):
(WebCore::transitionShorthand):
(WebCore::webkitAnimationShorthand):
(WebCore::webkitAnimationShorthandForParsing):
(WebCore::webkitBorderAfterShorthand):
(WebCore::webkitBorderBeforeShorthand):
(WebCore::webkitBorderEndShorthand):
(WebCore::webkitBorderStartShorthand):
(WebCore::webkitColumnsShorthand):
(WebCore::webkitColumnRuleShorthand):
(WebCore::webkitFlexFlowShorthand):
(WebCore::webkitFlexShorthand):
(WebCore::webkitMarginCollapseShorthand):
(WebCore::webkitGridColumnShorthand):
(WebCore::webkitGridRowShorthand):
(WebCore::webkitMarqueeShorthand):
(WebCore::webkitMaskShorthand):
(WebCore::webkitMaskPositionShorthand):
(WebCore::webkitMaskRepeatShorthand):
(WebCore::webkitTextEmphasisShorthand):
(WebCore::webkitTextStrokeShorthand):
(WebCore::webkitTransitionShorthand):
(WebCore::webkitTransformOriginShorthand):
(WebCore::widthShorthand):
(WebCore::heightShorthand):
(WebCore::matchingShorthandsForLonghand):
(WebCore::indexOfShorthandForLonghand):
- css/StylePropertyShorthand.h:
(WebCore::StylePropertyShorthand::StylePropertyShorthand):
(WebCore::StylePropertyShorthand::id):
- css/makeprop.pl:
- 4:06 AM Changeset in webkit [153580] by
-
- 4 edits in trunk/Source/WebKit2
[Qt] Enable QML handling of crashed/unresponsive QtWebProcess
https://bugs.webkit.org/show_bug.cgi?id=108474
Forward the processDidCrash, didRelaunchProcess, processDidBecomeUnresponsive
and processDidBecomeResponsive signals to QML's WebView.experimental.
Patch by Milian Wolff <milian.wolff@kdab.com> on 2013-08-01
Reviewed by Jocelyn Turcotte.
- UIProcess/API/qt/qquickwebview.cpp:
(QQuickWebViewPrivate::processDidCrash):
(QQuickWebViewPrivate::didRelaunchProcess):
(QQuickWebViewPrivate::processDidBecomeUnresponsive):
(QQuickWebViewPrivate::processDidBecomeResponsive):
- UIProcess/API/qt/qquickwebview_p.h:
- UIProcess/API/qt/qquickwebview_p_p.h:
(QQuickWebViewPrivate):
- 2:42 AM Changeset in webkit [153579] by
-
- 62 edits6 adds in trunk/LayoutTests
[Qt] Unreviewed expected pixel test result update after r153522.
- platform/qt-5.0-wk2/compositing/overflow/overflow-compositing-descendant-expected.png:
- platform/qt-5.0-wk2/compositing/overflow/scroll-ancestor-update-expected.png:
- platform/qt-5.0-wk2/compositing/visibility/visibility-simple-video-layer-expected.png:
- platform/qt-5.0-wk2/css2.1/20110323/replaced-min-max-001-expected.png:
- platform/qt-5.0-wk2/css2.1/t170602-bdr-conflct-w-14-d-expected.png:
- platform/qt-5.0-wk2/css2.1/t170602-bdr-conflct-w-24-d-expected.png:
- platform/qt-5.0-wk2/css2.1/t170602-bdr-conflct-w-34-d-expected.png:
- platform/qt-5.0-wk2/css2.1/t170602-bdr-conflct-w-44-d-expected.png:
- platform/qt-5.0-wk2/css2.1/t170602-bdr-conflct-w-54-d-expected.png:
- platform/qt-5.0-wk2/css2.1/t170602-bdr-conflct-w-64-d-expected.png:
- platform/qt-5.0-wk2/css2.1/t170602-bdr-conflct-w-74-d-expected.png:
- platform/qt-5.0-wk2/css2.1/t170602-bdr-conflct-w-84-d-expected.png:
- platform/qt-5.0-wk2/css3/compositing/effect-background-blend-mode-expected.png: Added.
- platform/qt-5.0-wk2/css3/compositing/effect-background-blend-mode-stacking-expected.png:
- platform/qt-5.0-wk2/fast/backgrounds/size/backgroundSize09-expected.png: Added.
- platform/qt-5.0-wk2/fast/backgrounds/size/backgroundSize10-expected.png: Added.
- platform/qt-5.0-wk2/fast/backgrounds/size/backgroundSize11-expected.png: Added.
- platform/qt-5.0-wk2/fast/backgrounds/size/contain-and-cover-expected.png: Added.
- platform/qt-5.0-wk2/fast/backgrounds/size/contain-and-cover-zoomed-expected.png:
- platform/qt-5.0-wk2/fast/borders/border-image-side-reduction-expected.png:
- platform/qt-5.0-wk2/fast/fast-mobile-scrolling/no-fixed-position-elements-expected.png: Added.
- platform/qt-5.0-wk2/fast/repaint/block-layout-inline-children-replaced-expected.png:
- platform/qt-5.0-wk2/fast/repaint/fixed-position-transparency-with-overflow-expected.png:
- platform/qt-5.0-wk2/fast/replaced/width100percent-image-expected.png:
- platform/qt-5.0-wk2/scrollbars/overflow-scrollbar-combinations-expected.png:
- platform/qt-5.0-wk2/svg/W3C-SVG-1.1/animate-elem-30-t-expected.png:
- platform/qt-5.0-wk2/svg/W3C-SVG-1.1/animate-elem-40-t-expected.png:
- platform/qt-5.0-wk2/svg/W3C-SVG-1.1/coords-viewattr-02-b-expected.png:
- platform/qt-5.0-wk2/svg/custom/createImageElement-expected.png:
- platform/qt-5.0-wk2/svg/custom/createImageElement2-expected.png:
- platform/qt-5.0-wk2/svg/custom/image-parent-translation-expected.png:
- platform/qt-5.0-wk2/svg/custom/js-update-image-and-display-expected.png:
- platform/qt-5.0-wk2/svg/custom/js-update-image-and-display2-expected.png:
- platform/qt-5.0-wk2/svg/custom/js-update-image-and-display3-expected.png:
- platform/qt-5.0-wk2/svg/custom/js-update-image-expected.png:
- platform/qt-5.0-wk2/svg/custom/pointer-events-image-css-transform-expected.png:
- platform/qt-5.0-wk2/svg/custom/pointer-events-image-expected.png:
- platform/qt-5.0-wk2/svg/custom/text-image-opacity-expected.png:
- platform/qt-5.0-wk2/svg/custom/use-on-g-containing-foreignObject-and-image-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-dom-height-attr-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-dom-preserveAspectRatio-attr-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-dom-width-attr-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-dom-x-attr-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-dom-y-attr-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-svgdom-height-prop-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-svgdom-preserveAspectRatio-prop-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-svgdom-width-prop-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-svgdom-x-prop-expected.png:
- platform/qt-5.0-wk2/svg/dynamic-updates/SVGImageElement-svgdom-y-prop-expected.png:
- platform/qt-5.0-wk2/svg/hixie/perf/004-expected.png:
- platform/qt-5.0-wk2/svg/transforms/animated-path-inside-transformed-html-expected.png:
- platform/qt-5.0-wk2/svg/wicd/test-rightsizing-b-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug101674-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug11026-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug1188-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug1296-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug1430-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug2981-2-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug4284-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug4427-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug56563-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug625-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/bugs/bug97383-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/core/bloomberg-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/core/misc-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/other/cell_widths-expected.png:
- platform/qt-5.0-wk2/tables/mozilla_expected_failures/bugs/bug6933-expected.png:
- 2:17 AM Changeset in webkit [153578] by
-
- 2 edits in trunk/Tools
Unreviewed, rolling out r153518.
http://trac.webkit.org/changeset/153518
https://bugs.webkit.org/show_bug.cgi?id=119386
The Jhbuild dep bump of GTK+ is not actually required by
layout testing, is causing pango dep problems (Requested by
zdobersek on #webkit).
Patch by Commit Queue <commit-queue@webkit.org> on 2013-08-01
- gtk/jhbuild.modules:
- 2:13 AM Changeset in webkit [153577] by
-
- 2 edits in trunk/Tools
Unreviewed. Add myself as a committer.
- Scripts/webkitpy/common/config/contributors.json:
- 12:33 AM Changeset in webkit [153576] by
-
- 5 edits in branches/safari-537-branch/Source
Versioning.
- 12:07 AM Changeset in webkit [153575] by
-
- 2 edits in trunk/Tools
Unreviewed. Add myself as a committer.
- Scripts/webkitpy/common/config/contributors.json:
- 12:02 AM Changeset in webkit [153574] by
-
- 2 edits in trunk/Tools
Unreviewed. Add myself as a committer.
- Scripts/webkitpy/common/config/contributors.json:
Jul 31, 2013:
- 11:44 PM Changeset in webkit [153573] by
-
- 1 copy in tags/Safari-537.54
New tag.
- 10:55 PM Changeset in webkit [153572] by
-
- 2 edits in trunk/Tools
Unreviewed. Add myself as a committer.
- Scripts/webkitpy/common/config/contributors.json:
- 10:23 PM Changeset in webkit [153571] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening
https://bugs.webkit.org/show_bug.cgi?id=119283
Unreviewed GTK gardening.
- platform/gtk/TestExpectations: Remove duplicated entry.
- 9:41 PM Changeset in webkit [153570] by
-
- 2 edits in trunk/Tools
Unreviewed. Add myself as a committer.
- Scripts/webkitpy/common/config/contributors.json:
- 9:25 PM Changeset in webkit [153569] by
-
- 2 edits in trunk/LayoutTests
Skip media/track/track-language-preference.html and media/track/track-prefer-captions.html
rather than just marking them as [ Pass Fail ] since they timeout so often and slow
everything down.
- platform/mac/TestExpectations:
- 9:06 PM Changeset in webkit [153568] by
-
- 2 edits in trunk/LayoutTests
Clobbering window.console is not cool because it makes debugging tests
harder.
- media/video-test.js:
(logConsole):
- 8:43 PM Changeset in webkit [153567] by
-
- 2 edits in trunk/LayoutTests
r153462 erroneously unskipped http/tests/multipart/invalid-image-data-standalone.html
so put it back.
- platform/mac/TestExpectations:
- 8:42 PM Changeset in webkit [153566] by
-
- 3 edits in trunk/Source/WebCore
FINALize StyleSheet subclasses.
<http://webkit.org/b/119370>
Reviewed by Anders Carlsson.
CSSStyleSheet and XSLStyleSheet have no further subclasses so make them final.
- css/CSSStyleSheet.h:
- xml/XSLStyleSheet.h:
- 8:34 PM Changeset in webkit [153565] by
-
- 2 edits in trunk/LayoutTests
compositing/patterns/direct-pattern-compositing tests suffer
from colorspace issues that cause image failures on some machines.
- platform/mac/TestExpectations:
- 8:30 PM Changeset in webkit [153564] by
-
- 2 edits in trunk/LayoutTests
media/video-controls-captions-trackmenu.html either crashes,
fails or passes.
- platform/mac/TestExpectations:
- 8:17 PM Changeset in webkit [153563] by
-
- 2 edits in trunk/LayoutTests
Gardening:
webkit.org/b/119374 fast/workers/termination-early.html [ Pass Crash ]
webkit.org/b/119375 fast/workers/worker-call.html [ Failure ]
- platform/mac/TestExpectations:
- 7:20 PM Changeset in webkit [153562] by
-
- 5 edits in trunk/Source/WebKit/blackberry
[BlackBerry] Page scrolls when width equals device width and initial scale is greater than 0.92
https://bugs.webkit.org/show_bug.cgi?id=119365
Patch by Jacky Jiang <zhajiang@blackberry.com> on 2013-07-31
Reviewed by Rob Buis.
Internally reviewed by Gen Mak and Konrad Piascik.
JIRA 445423
layoutSize (deviceScreenSize/devicePixelRatio) is FloatSize as devicePixelRatio
is float. We have to round that to IntSize as ScrollView needs IntSize
fixedLayoutSize. Based on conversion result, zoomToFitWidthScale will
hardly equal to zoomToFitHeightScale in this case. And unfortunately
zoomToFitHeightScale is a little bit greater than zoomToFitWidthScale
in this case so that we have to pick up zoomToFitHeightScale which makes
the page scollable horizontally.
The way to fix that is to define an accurate contentsSize area which
potentially has float layoutSize rounding error and can cause upexpected
scroll based on the ideal contentsSize area first, and then don't scroll
only if the scale is zoomToFitScale as "contentsSize > visibleViewportSize"
still works well if the scale is larger than zoomToFitScale.
- Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::hasFloatLayoutSizeRoundingError):
- Api/WebPage_p.h:
- WebKitSupport/WebKitThreadViewportAccessor.cpp:
(BlackBerry::WebKit::WebKitThreadViewportAccessor::cannotScrollIfHasFloatLayoutSizeRoundingError):
- WebKitSupport/WebKitThreadViewportAccessor.h:
- 7:17 PM Changeset in webkit [153561] by
-
- 6 edits in trunk/Source/WebCore
Introduce toSVGFontFaceElement, and use it
https://bugs.webkit.org/show_bug.cgi?id=119330
Reviewed by Andreas Kling.
As a step to change static_cast with toSVGXXX, static_cast<SVGFontFaceElement*> can
be changed with toSVGFontFaceElement().
Blink merge from https://src.chromium.org/viewvc/blink?view=rev&revision=155082
- css/CSSFontFaceSource.cpp:
(WebCore::CSSFontFaceSource::getFontData):
- svg/SVGFontFaceElement.h:
(WebCore::toSVGFontFaceElement):
- svg/SVGFontFaceFormatElement.cpp:
(WebCore::SVGFontFaceFormatElement::childrenChanged):
- svg/SVGFontFaceSrcElement.cpp:
(WebCore::SVGFontFaceSrcElement::childrenChanged):
- svg/SVGFontFaceUriElement.cpp:
(WebCore::SVGFontFaceUriElement::childrenChanged):
- 6:49 PM Changeset in webkit [153560] by
-
- 2 edits in branches/safari-537-branch/LayoutTests
Merge r153498.
2013-07-30 Alexey Proskuryakov <ap@apple.com>
REGRESSION(r139282): Fix document leak when selection is created inside the document
https://bugs.webkit.org/show_bug.cgi?id=119122
OK'd by Ryosuke Niwa.
The added test was very flaky. Trying to make it better with a gc() call at the beginning.
- editing/selection/leak-document-with-selection-inside.html:
- 6:34 PM Changeset in webkit [153559] by
-
- 5 edits in trunk/Source/WebCore
Introduce toSVGSMILElement, and use it
https://bugs.webkit.org/show_bug.cgi?id=119260
Reviewed by Darin Adler.
As a step to change static_cast with toSVGXXX, static_cast<SVGSMILElement*> can
be changed with toSVGSMILElement().
Blink merge from https://src.chromium.org/viewvc/blink?view=rev&revision=155048
- svg/SVGAElement.cpp:
(WebCore::SVGAElement::defaultEventHandler):
- svg/animation/SMILTimeContainer.cpp:
(WebCore::SMILTimeContainer::updateDocumentOrderIndexes):
- svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::connectConditions):
(WebCore::SVGSMILElement::disconnectConditions):
- svg/animation/SVGSMILElement.h:
(WebCore::toSVGSMILElement):
- 6:31 PM Changeset in webkit [153558] by
-
- 2 edits in branches/safari-537-branch/LayoutTests
Merge r151893
2013-06-23 Brent Fulgham <bfulgham@gmail.com>
AX: Rebaseline test after r151868
https://bugs.webkit.org/show_bug.cgi?id=117892
Rubber stamped by Chris Fleizach.
- platform/mac/accessibility/lists-expected.txt:
- 6:25 PM Changeset in webkit [153557] by
-
- 3 edits in branches/safari-537-branch/LayoutTests
Merge r152847
2013-07-18 Zalan Bujtas <Alan Bujtas>
fullscreen/full-screen-iframe-with-max-width-height.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=118820
Reviewed by Andreas Kling.
Don't start the test until after the iframe has finished loading.
- fullscreen/full-screen-iframe-with-max-width-height-expected.txt:
- fullscreen/full-screen-iframe-with-max-width-height.html:
- platform/mac/TestExpectations:
- 6:09 PM Changeset in webkit [153556] by
-
- 9 edits in trunk/Source/JavaScriptCore
More cleanup in PropertySlot
https://bugs.webkit.org/show_bug.cgi?id=119359
Reviewed by Geoff Garen.
m_slotBase is overloaded to store the (receiver) thisValue and the object that contains the property,
This is confusing, and means that slotBase cannot be typed correctly (can only be a JSObject).
- dfg/DFGRepatch.cpp:
(JSC::DFG::tryCacheGetByID):
(JSC::DFG::tryBuildGetByIDList):
- No need to ASSERT slotBase is an object.
- jit/JITStubs.cpp:
(JSC::tryCacheGetByID):
(JSC::DEFINE_STUB_FUNCTION):
- No need to ASSERT slotBase is an object.
- runtime/JSObject.cpp:
(JSC::JSObject::getOwnPropertySlotByIndex):
(JSC::JSObject::fillGetterPropertySlot):
- Pass an object through to setGetterSlot.
- runtime/JSObject.h:
(JSC::PropertySlot::getValue):
- Moved from PropertySlot (need to know anout JSObject).
- runtime/PropertySlot.cpp:
(JSC::PropertySlot::functionGetter):
- update per member name changes
- runtime/PropertySlot.h:
(JSC::PropertySlot::PropertySlot):
- Argument to constructor set to 'thisValue'.
(JSC::PropertySlot::slotBase):
- This returns a JSObject*.
(JSC::PropertySlot::setValue):
(JSC::PropertySlot::setCustom):
(JSC::PropertySlot::setCacheableCustom):
(JSC::PropertySlot::setCustomIndex):
(JSC::PropertySlot::setGetterSlot):
(JSC::PropertySlot::setCacheableGetterSlot):
- slotBase is a JSObject*, make setGetterSlot set slotBase for consistency.
- runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayEntry::get):
- Pass an object through to setGetterSlot.
- runtime/SparseArrayValueMap.h:
- Pass an object through to setGetterSlot.
- 6:08 PM Changeset in webkit [153555] by
-
- 3 edits in trunk/LayoutTests
Clobbering window.console is not cool
https://bugs.webkit.org/show_bug.cgi?id=119364
Reviewed by Tim Horton.
full-screen-test.js overrides window.console, which is hella
confusing if you're trying to use console.log to debug a fullscreen test.
- fullscreen/full-screen-test.js:
(logConsole):
- fullscreen/resources/not-allowed.html:
- 5:57 PM Changeset in webkit [153554] by
-
- 2 edits in trunk/LayoutTests
Gardening: changing expectation for fast/forms/color/input-color-onchange-event.html
to "Crash Pass" instead of "Skip".
Not reviewed.
- 5:51 PM Changeset in webkit [153553] by
-
- 3 edits4 adds in trunk
Reuse of XMLHttpRequests causes character corruption in response text
https://bugs.webkit.org/show_bug.cgi?id=119358
Reviewed by Anders Carlsson.
Source/WebCore:
Merge https://chromium.googlesource.com/chromium/blink/+/6496e7bb9a0b46bc79032b86d5993b25f127a4cb
Test: http/tests/xmlhttprequest/reopen-encoding.html
- xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::clearResponseBuffers):
(WebCore::XMLHttpRequest::didFinishLoading):
LayoutTests:
- http/tests/xmlhttprequest/reopen-encoding-expected.txt: Added.
- http/tests/xmlhttprequest/reopen-encoding.html: Added.
- http/tests/xmlhttprequest/resources/get-utf-8.cgi: Added.
- http/tests/xmlhttprequest/resources/get-windows-1251.cgi: Added.
- 5:28 PM Changeset in webkit [153552] by
-
- 2 edits in trunk/LayoutTests
Bot greening.
Not reviewed.
- TestExpectations:
- Skipping fast/forms/color/input-color-onchange-event.html which will crash with a failed assertion on debug builds. This should be un-skipped when https://bugs.webkit.org/show_bug.cgi?id=119094 is fixed.
- 5:21 PM Changeset in webkit [153551] by
-
- 19 edits in trunk/Source/WebCore
Make ActiveDOMObject overrides private
https://bugs.webkit.org/show_bug.cgi?id=119352
Reviewed by Sam Weinig.
There is no need to call these through derived classes. And it's quite harmful for
anyone except for ScriptExecutionContext to call suspend/resume in particular -
ScriptExecutionContext won't know, and it will try to manage the state on its own.
- Modules/filesystem/DOMFileSystem.h:
- Modules/filesystem/FileWriter.h:
- Modules/geolocation/Geolocation.h:
- Modules/indexeddb/IDBDatabase.h:
- Modules/indexeddb/IDBRequest.h:
- Modules/indexeddb/IDBTransaction.h:
- Modules/mediasource/MediaSource.h:
- Modules/notifications/Notification.h:
- Modules/notifications/NotificationCenter.h:
- Modules/websockets/WebSocket.h:
- fileapi/FileReader.h:
- html/HTMLMediaElement.h:
- html/canvas/WebGLRenderingContext.h:
- page/DOMTimer.h:
- page/EventSource.h:
- page/SuspendableTimer.h:
- workers/AbstractWorker.h:
- xml/XMLHttpRequest.h:
- 5:10 PM Changeset in webkit [153550] by
-
- 3 edits in trunk/Tools
W3C test import script prefixes some properties that it shouldn't
https://bugs.webkit.org/show_bug.cgi?id=119357
Reviewed by Dirk Pranke.
Some prefixed properties also have unprefixed implemetations, but when
the implementations aren't identical, they aren't declared in
CSSPropertyNames.in on the same line. This fixes the import script so
that it catches all instances of prefixed properties that have an
unprefixed variant, and does not add the prefix in those cases.
- Scripts/webkitpy/w3c/test_converter.py:
(W3CTestConverter.read_webkit_prefixed_css_property_list): Read all of
the properties on every line and record if they are prefixed or not.
Use this information to only return prefixed properties that do not
have any unprefixed variant. The prefixed property list has also
changed to not include the '-webkit-' prefix, making it much easier to
do the comparison, and removing the need to remove the prefix later.
(W3CTestConverter.add_webkit_prefix_to_unprefixed_properties): This no
longer needs to remove the '-webkit-' prefix, but needs to add it in
the case where a property that needs a prefix is found.
- Scripts/webkitpy/w3c/test_converter_unittest.py:
(W3CTestConverterTest.test_read_prefixed_property_list): Remove assert
for '-webkit-' prefix, as it is no longer included in the properties
in the prefixed property list.
- 5:06 PM Changeset in webkit [153549] by
-
- 6 edits in trunk/Source
Remove didFinishLoad order quirk
https://bugs.webkit.org/show_bug.cgi?id=119354
<rdar://problem/11510686>
Reviewed by Alexey Proskuryakov.
Source/WebCore:
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
Remove the quirk.
- page/Settings.in:
Remove the setting controlling the quirk.
Source/WebKit/mac:
- Misc/WebKitVersionChecks.h:
- WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Don't set the now-removed preference.
- 5:03 PM Changeset in webkit [153548] by
-
- 3 edits in trunk/Source/WebCore
Replace CRASH() on overflow with Checked<>
https://bugs.webkit.org/show_bug.cgi?id=119327
Reviewed by Oliver Hunt.
Use a checked type that allows us to automate bound checks. We use a
non-recording Checked<> to keep the behavior.
No behavior change, no new tests needed.
- dom/Text.cpp:
(WebCore::Text::wholeText):
- platform/audio/AudioArray.h:
(WebCore::AudioArray::allocate):
- 4:57 PM Changeset in webkit [153547] by
-
- 4 edits in trunk/Source/JavaScriptCore
Reduce JSC API static value setter/getter overhead.
https://bugs.webkit.org/show_bug.cgi?id=119277
Patch by Yi Shen <max.hong.shen@gmail.com> on 2013-07-31
Reviewed by Geoffrey Garen.
Add property name to the static value entry, so that OpaqueJSString::create() doesn't
need to get called every time when set or get the static value.
- API/JSCallbackObjectFunctions.h:
(JSC::::put):
(JSC::::putByIndex):
(JSC::::getStaticValue):
- API/JSClassRef.cpp:
(OpaqueJSClassContextData::OpaqueJSClassContextData):
- API/JSClassRef.h:
(StaticValueEntry::StaticValueEntry):
- 4:54 PM Changeset in webkit [153546] by
-
- 13 edits in trunk/Source
Use emptyString instead of String("")
https://bugs.webkit.org/show_bug.cgi?id=119335
Reviewed by Darin Adler.
Use emptyString() instead of String("") because it is better style and
faster. This is a followup to r116908, removing all occurrences of
String("") from WebKit.
Source/JavaScriptCore:
- runtime/RegExpConstructor.cpp:
(JSC::constructRegExp):
- runtime/RegExpPrototype.cpp:
(JSC::regExpProtoFuncCompile):
- runtime/StringPrototype.cpp:
(JSC::stringProtoFuncMatch):
(JSC::stringProtoFuncSearch):
Source/WebCore:
No behavior change, no new tests needed.
- platform/graphics/blackberry/LayerAnimation.h:
(WebCore::LayerAnimation::name):
- platform/mac/PlatformEventFactoryMac.mm:
(WebCore::textFromEvent):
(WebCore::unmodifiedTextFromEvent):
(WebCore::keyIdentifierForKeyEvent):
Source/WebKit/mac:
- WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::userAgent):
Source/WebKit/qt:
- WebCoreSupport/ChromeClientQt.cpp:
(WebCore::ChromeClientQt::runJavaScriptPrompt):
Source/WebKit2:
- Shared/mac/WebEventFactory.mm:
(WebKit::textFromEvent):
(WebKit::unmodifiedTextFromEvent):
- 4:21 PM Changeset in webkit [153545] by
-
- 3 edits in trunk/Tools
Update location of w3c shapes tests to reflect new import location
https://bugs.webkit.org/show_bug.cgi?id=118156
Reviewed by Dirk Pranke.
Partial imports should not be imported to the same place as the full
import, so this adds an option to allow importing to a different
location than the default. In doing that, I found that imports from
contributor directories didn't seem to be working correctly, so I
updated the import to be smarter about both contributor directories
and the test status directories. It should now be more likely that the
script guesses the root directory properly.
- Scripts/webkitpy/w3c/test_importer.py: Remove comment about the
script not working with the full set of contributors, as that is
no longer true, and I didn't see a good way to keep that behavior.
Also update documentation to properly explain what happens when a
contributor dir is imported.
(main): Attempt to find the proper repo dir by looking at the
directory above the "test status" in the given path, this is still
not exactly right, but is less error prone than just trimming.
(parse_args): Add -d option to set the import directory.
(TestImporter.init): Stop appending the subdirs to the
destination_directory because it was making things more complex
and isn't really needed.
(TestImporter.update_test_status): Remove hardcoded strings and use
the TEST_STATUS constants instead.
- Scripts/webkitpy/w3c/test_importer_unittest.py:
(TestImporterTest.test_import_dir_with_no_tests_and_no_hg): Add
support for new option.
(TestImporterTest.test_import_dir_with_no_tests): Ditto.
- 4:08 PM Changeset in webkit [153544] by
-
- 2 edits in trunk/Tools
[Windows] Winlauncher shouldn't look for Safari Install Directory
https://bugs.webkit.org/show_bug.cgi?id=119351
Reviewed by Darin Adler.
- win/DLLLauncher/DLLLauncherMain.cpp: Don't check registry for
the Safari install location. Instead, use the proper support
library path for the build architecture.
- 2:09 PM Changeset in webkit [153543] by
-
- 1 edit2 adds2 deletes in trunk/LayoutTests
Convert SVG test from r153433 to a reftest
https://bugs.webkit.org/show_bug.cgi?id=119346
Reviewed by Philip Rogers.
Reftest taken from https://chromium.googlesource.com/chromium/blink/+/ac10e305a870c8fd500b42e90075aee3aa48da8d.
- platform/qt/svg/animations/attributeNameAndAttributeTypeMissmatch-expected.txt: Removed.
- svg/animations/attributeNameAndAttributeTypeMismatch-expected.html: Added.
- svg/animations/attributeNameAndAttributeTypeMismatch.html: Added.
- svg/animations/attributeNameAndAttributeTypeMissmatch.svg: Removed.
- 2:04 PM Changeset in webkit [153542] by
-
- 1 edit5 adds in trunk/Websites/webkit.org
Upload images for a potential blog post
- blog-files/size-matters: Added.
- blog-files/size-matters/JavaScript-growth.png: Added.
- blog-files/size-matters/WebCore-growth-baseline.png: Added.
- blog-files/size-matters/WebCore-growth.png: Added.
- blog-files/size-matters/WebKit-growth.png: Added.
- 1:47 PM Changeset in webkit [153541] by
-
- 34 edits2 adds in trunk
<input type=color> Mac UI behaviour
<rdar://problem/10269922> and https://bugs.webkit.org/show_bug.cgi?id=61276
Source/JavaScriptCore:
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-07-31
Reviewed by Brady Eidson.
- Configurations/FeatureDefines.xcconfig: Enabled INPUT_TYPE_COLOR.
Source/WebCore:
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-07-31
Reviewed by Brady Eidson.
This patch turns on INPUT_TYPE_COLOR and implements it using the native
Mac color panel.
No new tests added.
Currently, there are no automated ways to test the types of changes made in this patch. (i.e. checking
which color is being displayed in the color panel, checking which color element is currently
associated to the color panel, checking the state of color elements after directing away and
being directed back to its page, etc.)
- Configurations/FeatureDefines.xcconfig: Enabled INPUT_TYPE_COLOR.
- WebCore.exp.in:
- WebCore.xcodeproj/project.pbxproj:
- html/ColorInputType.cpp:
(WebCore::ColorInputType::handleDOMActivateEvent): Reattaches the color picker if
a color picker has already been shown for an element
(WebCore::ColorInputType::shouldResetOnDocumentActivation): Always returns true, needed to
detach the color picker when caching a page.
- html/ColorInputType.h:
- html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::documentDidResumeFromPageCache): For <input type='color'>,
don't reset the element.
(WebCore::HTMLInputElement::documentWillSuspendForPageCache): For <input type='color'>, call detach().
- html/HTMLInputElement.h:
- platform/ColorChooser.h:
(WebCore::ColorChooser::reattachColorChooser): Added definition.
Source/WebKit/mac:
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-07-31
Reviewed by Brady Eidson.
- Configurations/FeatureDefines.xcconfig: Enabled INPUT_TYPE_COLOR.
- WebCoreSupport/WebChromeClient.h:
- WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::createColorPicker): Added stub implementation.
Source/WebKit2:
Implemented <input type='color'> on Mac using the native color picker.
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-07-31
Reviewed by Brady Eidson.
Code for WebColorPickerMac is derived from Chromium's color_chooser_mac.mm:
https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/ui/cocoa/color_chooser_mac.mm
- Configurations/FeatureDefines.xcconfig: Enabled INPUT_TYPE_COLOR.
- UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::createColorPicker): Replaced stub implementation
and return a WebColorPickerMac object.
- UIProcess/WebColorPicker.cpp:
(WebKit::WebColorPicker::invalidate): Updated to call endChooser().
(WebKit::WebColorPicker::showColorPicker): Added stub implementation.
- UIProcess/WebColorPicker.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::close): Removed invalidation of removed color picker objects.
(WebKit::WebPageProxy::showColorPicker): Updated so that it works for
multiple <input type='color'> elements on a page.
(WebKit::WebPageProxy::didEndColorPicker): Removed cleanup of removed color picker objects.
(WebKit::WebPageProxy::resetStateAfterProcessExited): Removed cleanup of removed color picker objects.
- UIProcess/mac/WebColorPickerMac.h: Added.
- UIProcess/mac/WebColorPickerMac.mm: Added.
(WebKit::WebColorPickerMac::create):
(WebKit::WebColorPickerMac::~WebColorPickerMac):
(WebKit::WebColorPickerMac::WebColorPickerMac):
(WebKit::WebColorPickerMac::endPicker):
(WebKit::WebColorPickerMac::setSelectedColor):
(WebKit::WebColorPickerMac::didChooseColor):
(WebKit::WebColorPickerMac::showColorPicker):
WebColorPickerMac contains a reference to a WKColorPanelMac object
and is responsible for maintaining the color picker UI.
(-[WKColorPanelMac setAndShowPicker:withColor:]):
(-[WKColorPanelMac invalidate]):
(-[WKColorPanelMac windowWillClose:]):
(-[WKColorPanelMac didChooseColor:]):
(-[WKColorPanelMac setColor:]):
WKColorPanelMac is a wrapper for a NSColorPanel object and
is responsible for the color picker UI.
- WebKit2.xcodeproj/project.pbxproj:
- WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createColorChooser): Updated to always create a
WebColorChooser object.
- WebProcess/WebCoreSupport/WebColorChooser.cpp:
(WebKit::WebColorChooser::reattachColorChooser): Sets the page's
active color chooser to the current object and pings the UIProcess
to show the color picker.
(WebKit::WebColorChooser::setSelectedColor): Only sets the color in the
color picker if the WebColorChooser object is the active color element.
- WebProcess/WebCoreSupport/WebColorChooser.h:
Source/WTF:
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-07-31
Reviewed by Brady Eidson.
- wtf/FeatureDefines.h: Enabled INPUT_TYPE_COLOR on Mac port.
LayoutTests:
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-07-31
Reviewed by Brady Eidson.
Updated tests to reflect <input type='color'> being implemented with a native color picker.
- fast/forms/color/input-color-onchange-event-expected.txt:
- platform/mac/TestExpectations: Enabled fast/form/color tests on Mac.
- platform/mac/accessibility/color-well-expected.txt:
- platform/mac/accessibility/role-subrole-roledescription-expected.txt:
- platform/mac/accessibility/role-subrole-roledescription.html:
- platform/mac/fast/forms/color/input-appearance-color-expected.txt: Updated test expectations
on Mac to reflect the fact that the list attribute for <input type='color'> is not yet supported.
- 1:24 PM Changeset in webkit [153540] by
-
- 3 edits3 adds in trunk
DFG doesn't account for inlining of functions with switch statements that haven't been executed by the baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=119349
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
Prior to this patch, the baseline JIT was responsible for resizing the ctiOffsets Vector for
SimpleJumpTables to be equal to the size of the branchOffsets Vector. The DFG implicitly relied
on code it compiled with any switch statements to have been run in the baseline JIT first.
However, if the DFG chooses to inline a function that has never been compiled by the baseline
JIT then this resizing never happens and we crash at link time in the DFG.
We can fix this by also doing the resize in the DFG to catch this case.
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
LayoutTests:
- fast/js/dfg-inline-switch-imm-expected.txt: Added.
- fast/js/dfg-inline-switch-imm.html: Added.
- fast/js/script-tests/dfg-inline-switch-imm.js: Added.
(foo):
(bar):
- 12:55 PM Changeset in webkit [153539] by
-
- 5 edits2 copies in branches/safari-537-branch
Merged r153511. <rdar://problem/14213012>
- 12:51 PM Changeset in webkit [153538] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r153487. <rdar://problem/14502050>
- 12:32 PM Changeset in webkit [153537] by
-
- 3 edits in trunk/Source/JavaScriptCore
Speculative Windows build fix.
Reviewed by NOBODY
- runtime/JSString.cpp:
(JSC::JSRopeString::getIndexSlowCase):
- runtime/JSString.h:
- 12:27 PM Changeset in webkit [153536] by
-
- 3 edits in trunk/LayoutTests
RenderEmbeddedObject::isReplacementObscured is wrong if an obscuring element has pointer-events: none set
https://bugs.webkit.org/show_bug.cgi?id=119348
Reviewed by Dean Jackson.
Change the expected outcome of the test to want a visually-obscured
but clickable embed (because the obscuring element has pointer-events: none)
to be considered obscured.
Also, adjust the test so that it runs all of the subtests even if
some of them fail.
- plugins/unavailable-plugin-indicator-obscurity-expected.txt:
- plugins/unavailable-plugin-indicator-obscurity.html:
- 12:26 PM Changeset in webkit [153535] by
-
- 9 edits in trunk/Tools
Update scripts to reference contributors.json instead of committers.py in messaging
https://bugs.webkit.org/show_bug.cgi?id=119342
Reviewed by Ryosuke Niwa.
Change the scripts to point people to contributors.json instead of
committers.py since the latter no longer contains the list of
contributors.
- Scripts/webkitpy/common/config/committervalidator.py:
(CommitterValidator._contributors_json_path):
(CommitterValidator._flag_permission_rejection_message):
- Scripts/webkitpy/common/config/committervalidator_unittest.py:
(CommitterValidatorTest.test_flag_permission_rejection_message):
- Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
(Bugzilla._commit_queue_flag):
- Scripts/webkitpy/common/watchlist/watchlistparser.py:
(WatchListParser._validate):
- Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py:
(WatchListParserTest.test_cc_rule_with_invalid_email):
- Scripts/webkitpy/tool/bot/feeders_unittest.py:
- Scripts/webkitpy/tool/commands/queues_unittest.py:
- Scripts/webkitpy/tool/steps/validatereviewer.py:
(ValidateReviewer.run):
- 12:22 PM Changeset in webkit [153534] by
-
- 2 edits in trunk/Tools
Unreviewed. Re-enable WinEWS tests following r153527.
- Scripts/webkitpy/common/config/ews.json:
- 12:20 PM Changeset in webkit [153533] by
-
- 2 edits in trunk/LayoutTests
Unreviewed gardening. AppleWin port.
- platform/win/editing/selection/move-left-right-expected.txt:
- 12:03 PM Changeset in webkit [153532] by
-
- 80 edits in trunk/Source
Some cleanup in JSValue::get
https://bugs.webkit.org/show_bug.cgi?id=119343
Reviewed by Geoff Garen.
Source/JavaScriptCore:
JSValue::get is implemented to:
1) Check if the value is a cell – if not, synthesize a prototype to search,
2) call getOwnPropertySlot on the cell,
3) if this returns false, cast to JSObject to get the prototype, and walk the prototype chain.
By all rights this should crash when passed a string and accessing a property that does not exist, because
the string is a cell, getOwnPropertySlot should return false, and the cast to JSObject should be unsafe.
To work around this, JSString::getOwnPropertySlot actually implements 'get' functionality - searching the
prototype chain, and faking out a return value of undefined if no property is found.
This is a huge hazard, since fixing JSString::getOwnPropertySlot or calling getOwnPropertySlot on cells
from elsewhere would introduce bugs. Fortunately it is only ever called in this one place.
The fix here is to move getOwnPropertySlot onto JSObjecte and end this madness - cells don't have property
slots anyway.
Interesting changes are in JSCJSValueInlines.h, JSString.cpp - the rest is pretty much all JSCell -> JSObject.
Source/WebCore:
- WebCore.exp.in:
- bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::getOwnPropertySlot):
(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
(GenerateConstructorDeclaration):
(GenerateConstructorHelperMethods):
- bridge/objc/objc_runtime.h:
- bridge/objc/objc_runtime.mm:
(JSC::Bindings::ObjcFallbackObjectImp::getOwnPropertySlot):
- bridge/runtime_array.cpp:
(JSC::RuntimeArray::getOwnPropertySlot):
(JSC::RuntimeArray::getOwnPropertySlotByIndex):
- bridge/runtime_array.h:
- bridge/runtime_method.cpp:
(JSC::RuntimeMethod::getOwnPropertySlot):
- bridge/runtime_method.h:
- bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::getOwnPropertySlot):
- bridge/runtime_object.h:
- getOwnPropertySlot, JSCell -> JSObject
Source/WebKit2:
- WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::JSNPObject::getOwnPropertySlot):
- WebProcess/Plugins/Netscape/JSNPObject.h:
- getOwnPropertySlot, JSCell -> JSObject
- 11:48 AM Changeset in webkit [153531] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION (r153406): DOM intervals are not properly restarted when resumed
https://bugs.webkit.org/show_bug.cgi?id=119345
Reviewed by Sam Weinig.
- page/SuspendableTimer.cpp: (WebCore::SuspendableTimer::suspend): Call base class version of repeatInterval(), not our version that will just return the current value of m_savedRepeatInterval in this situation.
- 11:44 AM Changeset in webkit [153530] by
-
- 2 edits in trunk/Source/WebCore
Avoid calling nextRenderer() in some cases
https://bugs.webkit.org/show_bug.cgi?id=119313
Reviewed by Andreas Kling.
Merge https://chromium.googlesource.com/chromium/blink/+/3207cfda52082f4fd6a04c7819c18a980de58beb.
- dom/Text.cpp:
(WebCore::Text::textRendererIsNeeded):
- 11:41 AM Changeset in webkit [153529] by
-
- 8 edits in trunk/Source/WebCore
Convert most callers of setInlineStyleProperty passing strings to enums or doubles instead
https://bugs.webkit.org/show_bug.cgi?id=119304
Reviewed by Andreas Kling.
Merge https://chromium.googlesource.com/chromium/blink/+/8157dd9381716759f183fabbfed29c52962be746
- editing/DeleteButtonController.cpp:
(WebCore::DeleteButtonController::createDeletionUI):
(WebCore::DeleteButtonController::show):
- html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::updatePlaceholderVisibility):
- html/ImageDocument.cpp:
(WebCore::ImageDocument::resizeImageToFit):
(WebCore::ImageDocument::restoreImageSize):
(WebCore::ImageDocument::windowSizeChanged):
- html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):
(WebCore::MediaControlTextTrackContainerElement::updateTimerFired):
- html/track/TextTrackCue.cpp:
(WebCore::TextTrackCue::setFontSize):
- html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGenericBoxElement::applyCSSProperties):
(WebCore::TextTrackCueGeneric::setFontSize):
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::resize):
- 11:18 AM Changeset in webkit [153528] by
-
- 27 edits in trunk/LayoutTests
[CSS Shapes] Stop using internals in shape-outside tests
https://bugs.webkit.org/show_bug.cgi?id=119229
Reviewed by Alexandru Chiculita.
We no longer need to use window.internals for shape-outside, since it
is enabled by default on ports where it is compiled in. To make the
w3c spec test cleaner, that reference has been removed from all of the
tests.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-circle-000.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-000.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-001-expected.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-001.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-002-expected.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-002.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-003.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-004.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-000.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-001.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-002.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-000.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-001.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-002.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-001.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-002.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-003.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-004.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-square-000.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-square-border-000.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-vertical-rectangle-000.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-vertical-rectangle-001-expected.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-vertical-rectangle-001.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-vertical-rectangle-002-expected.html:
- csswg/submitted/shapes/shape-outside/shape-outside-floats-vertical-rectangle-002.html:
- csswg/submitted/shapes/shape-outside/w3c-import.log:
- 11:03 AM Changeset in webkit [153527] by
-
- 2 edits in trunk/Source/JavaScriptCore
[Win] JavaScript crash.
https://bugs.webkit.org/show_bug.cgi?id=119339
Reviewed by Mark Hahnenberg.
- jit/JITStubsX86.h: Implement ctiVMThrowTrampoline and
ctiVMThrowTrampolineSlowpath the same way as the gcc x86 version does.
- 10:47 AM Changeset in webkit [153526] by
-
- 1 edit2 adds in trunk/LayoutTests
Test assignment to indexed window properties
https://bugs.webkit.org/show_bug.cgi?id=119307
Reviewed by Geoffrey Garen.
Merge https://chromium.googlesource.com/chromium/blink/+/bdeca10fa79477f669cab1e5b081a480e743fd3f
- http/tests/security/xss-DENIED-window-index-assign-expected.txt: Added.
- http/tests/security/xss-DENIED-window-index-assign.html: Added.
- 9:52 AM Changeset in webkit [153525] by
-
- 1 edit2 adds in trunk/LayoutTests
Add a test to ensure SelectElement removes an option when null is assigned by indexed setter
https://bugs.webkit.org/show_bug.cgi?id=119311
Reviewed by Alexey Proskuryakov.
Merge a test in https://chromium.googlesource.com/chromium/blink/+/da5c8d908b87f75c5ba3d1457c2353642e999963
even though the regression never existed in WebKit.
- fast/forms/select/select-assign-null-expected.txt: Added.
- fast/forms/select/select-assign-null.html: Added.
- 9:24 AM Changeset in webkit [153524] by
-
- 2 edits in trunk/Tools
Unreviewed: Adding myself to the committers' list.
- Scripts/webkitpy/common/config/contributors.json:
- 9:08 AM Changeset in webkit [153523] by
-
- 2 edits in trunk/Source/WebCore
[Coordinated Graphics] Use m_ prefix only for member variable
https://bugs.webkit.org/show_bug.cgi?id=119250
Patch by Jae Hyun Park <jae.park@company100.net> on 2013-07-31
Reviewed by Noam Rosenthal.
WebKit coding style suggests to use m_ prefix only for data members.
This patch also removes unnecessary copy by passing const-reference
parameter values.
- platform/graphics/texmap/coordinated/CoordinatedCustomFilterProgram.h:
(WebCore::CoordinatedCustomFilterProgram::create):
- 7:39 AM Changeset in webkit [153522] by
-
- 2 edits in trunk/Source/WebCore
[Qt] Images are down-scaled badly
https://bugs.webkit.org/show_bug.cgi?id=119263
Reviewed by Jocelyn Turcotte.
QPainter only does bilinear filtering, which means it will downscaling beyond
0.5x will start skipping pixel and start to degrade the end result. Scaling in
QImage and QPixmap however uses a better but much more expensive sampling that
counts all pixels.
To get the high quality downscaling we must therefore prescale the images before
painting them. To avoid a performance impact on repeated paints the prescaled
image are saved in the QPixmapCache.
- platform/graphics/qt/ImageQt.cpp:
(WebCore::BitmapImage::draw):
- 7:35 AM Changeset in webkit [153521] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Remove flaky tests from TestExpectations.
- platform/gtk/TestExpectations: Remove tests no longer flaky after
webkit.org/b/100688 was fixed in r140166.
- 6:09 AM Changeset in webkit [153520] by
-
- 6 edits in trunk
[Qt] Build WebKit with C++11
https://bugs.webkit.org/show_bug.cgi?id=119337
Reviewed by Csaba Osztrogonác.
Source/WebKit2:
We no longer need to enable C++11 specifically for WebKit2.
- WebKit2.pri:
Tools:
Enable building with C++11.
- qmake/mkspecs/features/default_pre.prf:
- qmake/mkspecs/features/unix/default_post.prf:
- qmake/mkspecs/features/unix/default_pre.prf:
- 5:49 AM Changeset in webkit [153519] by
-
- 2 edits in trunk/Tools
[Qt] ASSERTS trigger in release builds
https://bugs.webkit.org/show_bug.cgi?id=119336
Reviewed by Jocelyn Turcotte.
Ensure the qmake also defaults to release if no configuration is known.
- qmake/mkspecs/features/default_post.prf:
- 5:42 AM Changeset in webkit [153518] by
-
- 2 edits in trunk/Tools
[texmap][GStreamer][GTK] composited video shows tearing
https://bugs.webkit.org/show_bug.cgi?id=118253
Reviewed by Martin Robinson.
- gtk/jhbuild.modules: Bump the Jhbuild versions of the Gdk-Pixbuf and GTK+ packages to 2.27.3 and 3.8.2, respectively.
The first is required by the second, and the GTK+ bump introduces proper display framerate synchronization that removes
screen tearing when enabling accelerated compositing and performing graphically heavy operations like viewing HD videos.
- 5:12 AM Changeset in webkit [153517] by
-
- 2 edits in trunk/Source/WebKit/qt
[Qt][WK1] navigator.plugins shows too few entries.
https://bugs.webkit.org/show_bug.cgi?id=119332
Reviewed by Jocelyn Turcotte.
Based on input by Choon Sik Cho.
PlatformStrategiesQt::getPluginInfo was using the
WTF::Vector::resize method wrongly.
This patch removes the call to Vector::resize as
Vector::append will take care of increasing capacity
if needed.
- WebCoreSupport/PlatformStrategiesQt.cpp:
(PlatformStrategiesQt::getPluginInfo):
- 4:56 AM Changeset in webkit [153516] by
-
- 5 edits6 adds in trunk/Source
[Qt] Add interface API for origin whitelisting
https://bugs.webkit.org/show_bug.cgi?id=117823
Patch by Deepjyoti Saha <deesaha@cisco.com> on 2013-07-31
Reviewed by Jocelyn Turcotte.
Adding interface APIs in QWebSecurityOrigin to add and remove whiteList entires.
Re-used most of the test cases written by Carol Szabo <carol.szabo@nokia.com>
for https://bugs.webkit.org/show_bug.cgi?id=31875 and added the same.
- Api/qwebsecurityorigin.cpp:
(QWebSecurityOrigin::addAccessWhitelistEntry):
(QWebSecurityOrigin::removeAccessWhitelistEntry):
- Api/qwebsecurityorigin.h:
- tests/qwebsecurityorigin: Added.
- tests/qwebsecurityorigin/qwebsecurityorigin.pro: Added.
- tests/qwebsecurityorigin/resources: Added.
- tests/qwebsecurityorigin/resources/test.html: Added.
- tests/qwebsecurityorigin/tst_qwebsecurityorigin.cpp: Added.
(tst_QWebSecurityOrigin::tst_QWebSecurityOrigin):
(tst_QWebSecurityOrigin::~tst_QWebSecurityOrigin):
(tst_QWebSecurityOrigin::init):
(tst_QWebSecurityOrigin::cleanup):
(tst_QWebSecurityOrigin::whiteList_data):
(tst_QWebSecurityOrigin::whiteList):
- tests/qwebsecurityorigin/tst_qwebsecurityorigin.qrc: Added.
- 2:44 AM Changeset in webkit [153515] by
-
- 6 edits in trunk/Source/WebCore
Remove guessesVector param from isUngrammatical
https://bugs.webkit.org/show_bug.cgi?id=119241
Reviewed by Ryosuke Niwa.
TextCheckingHelper::isUngrammatical(Vector<String>& guessesVector) doesn't return
guesses for ungrammatical phrases through its parameter.
Editor::isSelectionUngrammatical() uses it to check whether the selection
is ungrammatical.
r71009 showed that isUngrammatical(Vector<String>& guessesVector) had not supported
grammar guesses.
The grammar guesses can be retrieved by guessesForMisspelledOrUngrammaticalRange
when UNIFIED_TEXT_CHECKING is on.
No new tests, this is dead code due to no WebKit port implements grammar using
legacy text checker.
- WebCore.exp.in: Removed ZN7WebCore6Editor32guessesForUngrammaticalSelectionEv.
- editing/Editor.cpp:
(WebCore::Editor::isSelectionUngrammatical):
(WebCore::Editor::guessesForMisspelledOrUngrammatical):
- editing/Editor.h: Removed guessesForUngrammaticalSelection. Dead code.
- editing/TextCheckingHelper.cpp:
(WebCore::TextCheckingHelper::isUngrammatical):
- editing/TextCheckingHelper.h:
- 1:12 AM Changeset in webkit [153514] by
-
- 3 edits in trunk/Source/WTF
Shrink Vectors with inline capacity.
<http://webkit.org/b/119295>
<rdar://problem/14598360>
Reviewed by Anders Carlsson.
Pack Vector::m_size next to VectorBufferBase::m_capacity so there's no space wasted
on padding when sizeof(T) >= 8. Since m_size is not conceptually part of the buffer,
I just using'ed it into Vector.
- wtf/SizeLimits.cpp:
- wtf/Vector.h:
(WTF::VectorBufferBase::VectorBufferBase):
(WTF::VectorBuffer::VectorBuffer):
(WTF::Vector::Vector):
(WTF::::Vector):
- 1:06 AM Changeset in webkit [153513] by
-
- 3 edits in trunk/Source/WebCore
Unnecessary const_cast<TextCheckingHelper*>(this)->findFirstBadGrammar
https://bugs.webkit.org/show_bug.cgi?id=119244
Reviewed by Ryosuke Niwa.
Added missing const modifier to findFirstBadGrammar (and findFirstGrammarDetail
respectively) to call it in 'isUngrammatical() const' without const casting.
No new tests, no behavior change.
- editing/TextCheckingHelper.cpp:
(WebCore::TextCheckingHelper::findFirstGrammarDetail):
(WebCore::TextCheckingHelper::findFirstBadGrammar):
Added const.
(WebCore::TextCheckingHelper::isUngrammatical):
Now const_cast can be removed.
- editing/TextCheckingHelper.h:
- 12:23 AM Changeset in webkit [153512] by
-
- 3 edits in trunk/Source/WebCore
findFirstGrammarDetail doesn't need to be exposed.
https://bugs.webkit.org/show_bug.cgi?id=119249
Reviewed by Darin Adler.
Make TextCheckingHelper::findFirstGrammarDetail private.
Remove badGrammarPhraseLength param. It's not used any longer.
No new tests, no behavior change.
- editing/TextCheckingHelper.cpp:
(WebCore::TextCheckingHelper::findFirstGrammarDetail):
(WebCore::TextCheckingHelper::findFirstBadGrammar):
- editing/TextCheckingHelper.h:
Jul 30, 2013:
- 10:57 PM Changeset in webkit [153511] by
-
- 5 edits2 adds in trunk
DHTML drag can result in a null-deref under WebDragClient::startDrag
https://bugs.webkit.org/show_bug.cgi?id=119297
<rdar://problem/14213012>
Reviewed by Simon Fraser.
Test: fast/events/setDragImage-in-document-element-crash.html
- page/mac/FrameSnapshottingMac.mm:
(WebCore::snapshotDragImage):
We shouldn't waste time painting an empty image, nor should we return
an image with no size.
Add a test that ensures that using a zero-size in-document non-<img>
element for setDragImage() doesn't crash.
- fast/events/setDragImage-in-document-element-crash-expected.txt: Added.
- fast/events/setDragImage-in-document-element-crash.html: Added.
- WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::convertImageToBitmap):
ShareableBitmap::createShareable can return null, but shouldn't dereference that.
- 9:59 PM Changeset in webkit [153510] by
-
- 4 edits3 adds in trunk
Dotted borders render w/ artifacts and sometimes as solid lines
https://bugs.webkit.org/show_bug.cgi?id=3964
Patch by Pravin D <pravind@samsung.com> on 2013-07-30
Reviewed by Elliott Sprehn.
Source/WebCore:
While drawing the dotted border, the common borders are drawn by the cells sharing them. The dotted borders
become(tend) solid when the starting and the end points of the border drawn by the two cells don't match. This
fixes the same.
Test: fast/table/border-collapsing/dotted-collapsed-border.html
- rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::alignLeftRightBorderPaintRect):
(WebCore::RenderTableCell::alignTopBottomBorderPaintRect):
Helper function to decide if border's start point requires any adjustment.
(WebCore::RenderTableCell::paintCollapsedBorders):
Added logic to handle dotted borders so that they do not become solid.
- rendering/RenderTableCell.h: Helper function declarations.
LayoutTests:
- fast/table/border-collapsing/dotted-collapsed-border-expected.txt: Added.
- fast/table/border-collapsing/dotted-collapsed-border.html: Added.
- platform/qt/fast/table/border-collapsing/dotted-collapsed-border-expected.png: Added.
- 9:55 PM Changeset in webkit [153509] by
-
- 4 edits4 adds in trunk
Gmail reply email - Bold and Italic style get stuck
https://bugs.webkit.org/show_bug.cgi?id=118185
Patch by Vani Hegde <vani.hegde@samsung.com> on 2013-07-30
Reviewed by Ryosuke Niwa.
Source/WebCore:
When bold/italic style is applied to a content with mixed editability,
style is applied appropriately for the first time.
But after this, style toggling does not work any more. Same behavior
can be observed when the content on which style is applied contains
text node without renderer (Ex: text node corresponding to tab/space etc)
When bold/italic style is applied on a selection, we actually apply the
style only for text nodes that have renderers and also are contenteditable.
Similarly during style toggling, to check whether a style has been already
applied on a selection
Tests: editing/style/toggle-style-bold-italic-mixed-editability.html
editing/style/toggle-style-bold-italic.html
- editing/EditingStyle.cpp:
(WebCore::EditingStyle::triStateOfStyle):
A particular selection on which style is applied may contain text nodes
without renderers(text nodes corresponding to tab/space) or text nodes
that are not contenteditable. We do not apply style to such text nodes.
Hence, even during style toggling we should not consider the styles
present in such nodes.
LayoutTests:
Layout tests added to test bold/italic style toggling on a content
with mixed editability.
- editing/editing.js:
(runDumpAsTextEditingTest): Replaced markupResultList with
elementsForDumpingMarkupList to store all markup data to be logged
at the end of test.
(debugForDumpAsText): Changed to use elementsForDumpingMarkupList.
(startNewMarkupGroup): Added utility function to hold intermediate
data by separating <ol>.
- editing/style/toggle-style-bold-italic-expected.txt: Added.
- editing/style/toggle-style-bold-italic-mixed-editability-expected.txt: Added.
- editing/style/toggle-style-bold-italic-mixed-editability.html: Added.
- editing/style/toggle-style-bold-italic.html: Added.
- 6:59 PM Changeset in webkit [153508] by
-
- 4 edits4 adds in trunk
XMLSerializer should reset default namespace when necessary
https://bugs.webkit.org/show_bug.cgi?id=16739
XMLSerializer's handling of namespaces seems to be pretty broken
https://bugs.webkit.org/show_bug.cgi?id=106531
Reviewed by Ryosuke Niwa.
Source/WebCore:
Write out empty default namespace declaration if the element is not in any namespace, as
described in http://www.whatwg.org/specs/web-apps/current-work/multipage/the-xhtml-syntax.html#xml-fragment-serialization-algorithm.
Tests: fast/dom/XMLSerializer-element-empty-namespace.html
fast/dom/XMLSerializer-element-empty-namespace2.html
- editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::appendNamespace):
(WebCore::MarkupAccumulator::appendOpenTag):
- editing/MarkupAccumulator.h:
LayoutTests:
Add tests based on the testcases of both bugs.
- fast/dom/XMLSerializer-element-empty-namespace-expected.txt: Added.
- fast/dom/XMLSerializer-element-empty-namespace.html: Added.
- fast/dom/XMLSerializer-element-empty-namespace2-expected.txt: Added.
- fast/dom/XMLSerializer-element-empty-namespace2.html: Added.
- 6:50 PM Changeset in webkit [153507] by
-
- 2 edits in trunk/Source/WebCore
Don't post accessibility notification on object in detached document.
https://bugs.webkit.org/show_bug.cgi?id=119286
Reviewed by Ryosuke Niwa.
Don't post accessibility notification on object in detached document.
This can happen if an accessibility notification is queued on a node,
then that node is reparented to a different document that's not attached
anywhere before the accessibility notification is fired.
- accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::notificationPostTimerFired):
- 6:18 PM Changeset in webkit [153506] by
-
- 5 edits in branches/safari-537-branch/Source
Versioning.
- 6:13 PM Changeset in webkit [153505] by
-
- 1 copy in tags/Safari-537.53
New Tag.
- 5:58 PM Changeset in webkit [153504] by
-
- 13 edits in trunk/Source/WebKit2
Rename <input type='color'> functions in WebPageProxy, WebColorPicker
<rdar://problem/14549771> and https://bugs.webkit.org/show_bug.cgi?id=119097
Patch by Ruth Fong <ruth_fong@apple.com> on 2013-07-30
Reviewed by Tim Horton.
In bug 119025, WebColorChooserProxy was renamed WebColorPicker. This patch makes the UIProcess consistent
by renaming UIProcess INPUT_TYPE_COLOR functions from ...colorChooser to ...colorPicker.
- UIProcess/WebColorPicker.cpp:
(WebKit::WebColorPicker::endPicker):
- UIProcess/WebColorPicker.h:
- UIProcess/WebColorPickerResultListenerProxy.cpp:
(WebKit::WebColorPickerResultListenerProxy::setColor):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showColorPicker):
(WebKit::WebPageProxy::setColorPickerColor):
(WebKit::WebPageProxy::endColorPicker):
(WebKit::WebPageProxy::didEndColorPicker):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/qt/WebColorPickerQt.cpp:
(WebKit::WebColorPickerQt::createItem):
(WebKit::WebColorPickerQt::notifyColorSelected):
(WebKit::WebColorPickerQt::endPicker):
- UIProcess/qt/WebColorPickerQt.h:
- WebProcess/WebCoreSupport/WebColorChooser.cpp:
(WebKit::WebColorChooser::WebColorChooser):
(WebKit::WebColorChooser::setSelectedColor):
(WebKit::WebColorChooser::endChooser):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didEndColorPicker):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- 5:19 PM Changeset in webkit [153503] by
-
- 2 edits in trunk/Tools
Unreviewed: Adding myself to the committers' list.
- Scripts/webkitpy/common/config/contributors.json:
- 4:13 PM Changeset in webkit [153502] by
-
- 2 edits in trunk/Source/WebCore
Content filter replacement data uses the encoding from the blocked page's response headers
https://bugs.webkit.org/show_bug.cgi?id=119237
Reviewed by Darin Adler.
When a document specifies an encoding in an HTTP response header, or
when the embedder specifies an override encoding, and the content filter
blocks the document, we interpret the content filter's replacement data
using this encoding. This might be the wrong.
Forget about encodings determined from these sources. The replacement
data will specify an encoding in a <meta charset>, so let that be used
instead.
No new tests. We don't currently have a mechanism for testing the
content filter from WebKit.
- loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::commitData): Pretend as if no encoding is
specified if the content filter blocked the load.
(WebCore::DocumentLoader::dataReceived): Stopped calling commitLoad()
before early-returning if the content filter needs more data. This isn't
necessary.
- 3:43 PM Changeset in webkit [153501] by
-
- 1 edit3 adds in trunk/LayoutTests
REGRESSION: Crash when opening a message on Gmail
https://bugs.webkit.org/show_bug.cgi?id=119105
Landing missing test results.
- fast/js/dfg-get-by-id-unset-then-proto-expected.txt: Added.
- fast/js/dfg-get-by-id-unset-then-proto-less-warmup-expected.txt: Added.
- fast/js/dfg-get-by-id-unset-then-proto-more-warmup-expected.txt: Added.
- 3:41 PM Changeset in webkit [153500] by
-
- 4 edits3 adds in trunk
GetByVal on Arguments does the wrong size load when checking the Arguments object length
https://bugs.webkit.org/show_bug.cgi?id=119281
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
This leads to out of bounds accesses and subsequent crashes.
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnArguments):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
LayoutTests:
- fast/js/dfg-strict-mode-arguments-get-beyond-length-expected.txt: Added.
- fast/js/dfg-strict-mode-arguments-get-beyond-length.html: Added.
- fast/js/script-tests/dfg-strict-mode-arguments-get-beyond-length.js: Added.
(foo):
(bar):
- 3:20 PM Changeset in webkit [153499] by
-
- 3 edits in trunk/Source/WebKit2
Speculative fix for crash due to string access on multiple threads
https://bugs.webkit.org/show_bug.cgi?id=119279
<rdar://problem/14267833>
Reviewed by Darin Adler.
We can't use String::isolatedCopy for passing the local storage directory to the storage thread since
that returns a String that's copied and then destroyed after the call to bind returns, leaving a small window
where the refcount can be accessed simultaneously from two threads.
Work around this by passing a PassRefPtr<StringImpl> to bind instead; the act of copying the PassRefPtr will
clear out the original and so when the original is destroyed the underlying StringImpl pointer will be null.
- UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::setLocalStorageDirectory):
(WebKit::LocalStorageDatabaseTracker::setLocalStorageDirectoryInternal):
- UIProcess/Storage/LocalStorageDatabaseTracker.h:
- 3:17 PM Changeset in webkit [153498] by
-
- 2 edits in trunk/LayoutTests
REGRESSION(r139282): Fix document leak when selection is created inside the document
https://bugs.webkit.org/show_bug.cgi?id=119122
OK'd by Ryosuke Niwa.
The added test was very flaky. Trying to make it better with a gc() call at the beginning.
- editing/selection/leak-document-with-selection-inside.html:
- 3:12 PM Changeset in webkit [153497] by
-
- 2 edits in trunk/Source/JavaScriptCore
Add an assertion to SpeculateCellOperand
https://bugs.webkit.org/show_bug.cgi?id=119276
Reviewed by Michael Saboff.
More assertions are better
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::compile):
- 3:01 PM Changeset in webkit [153496] by
-
- 3 edits in trunk/LayoutTests
[Mac] can-read-in-dragstart-event.html and can-read-in-copy-and-cut-events.html fail
https://bugs.webkit.org/show_bug.cgi?id=113094
The test still fails on WK1, and needs to be marked accordingly.
- platform/mac-wk2/TestExpectations:
- platform/mac/TestExpectations:
- 2:44 PM Changeset in webkit [153495] by
-
- 12 edits in trunk
Add 'colno' attribute to ErrorEvent interface
https://bugs.webkit.org/show_bug.cgi?id=119257
Reviewed by Darin Adler.
Source/WebCore:
Add 'colno' attribute to ErrorEvent interface to match the latest specification:
http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#errorevent
The 'colno' attribute is already supported by IE10 and Blink.
No new tests, covered by existing tests.
- dom/ErrorEvent.cpp:
(WebCore::ErrorEventInit::ErrorEventInit):
(WebCore::ErrorEvent::ErrorEvent):
- dom/ErrorEvent.h:
- dom/ErrorEvent.idl:
LayoutTests:
Update several test cases to check the new ErrorEvent.colno
attribute.
- fast/events/constructors/error-event-constructor-expected.txt:
- fast/events/constructors/error-event-constructor.html:
- fast/events/window-onerror9-expected.txt:
- fast/events/window-onerror9.html:
- fast/workers/worker-script-error-expected.txt:
- fast/workers/worker-script-error.html:
- http/tests/workers/worker-importScriptsOnError-expected.txt:
- 2:32 PM Changeset in webkit [153494] by
-
- 3 edits in trunk/Source/WebCore
Inactive style sheets should not trigger style recalc when loaded.
<http://webkit.org/b/119236>
<rdar://problem/14588132>
Reviewed by Antti Koivisto.
Style sheets that are either alternate sheets or are excluded by their media query should not trigger
a full style recalc when they finish loading, since the end result will not be observably different.
The sheets are still inspectable through document.styleSheets.
Changed enums from Blocking/NonBlocking to ActiveSheet/InactiveSheet to clarify what's going on.
- html/HTMLLinkElement.h:
- html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::HTMLLinkElement):
(WebCore::HTMLLinkElement::setDisabledState):
(WebCore::HTMLLinkElement::process):
(WebCore::HTMLLinkElement::startLoadingDynamicSheet):
(WebCore::HTMLLinkElement::addPendingSheet):
(WebCore::HTMLLinkElement::removePendingSheet):
- 2:27 PM Changeset in webkit [153493] by
-
- 7 edits in trunk/Source
Fix typo in enum name ("SelectionInSnaphot" -> "SelectionInSnapshot")
https://bugs.webkit.org/show_bug.cgi?id=119275
Reviewed by Simon Fraser.
- WebCore.exp.in:
- page/FrameView.cpp:
(WebCore::FrameView::paintContentsForSnapshot):
- page/FrameView.h:
Fix typo.
- WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
(WebKit::imageForRect):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::scaledSnapshotWithOptions):
Fix typo.
- 2:19 PM Changeset in webkit [153492] by
-
- 3 edits in trunk/Source/WebCore
Compile fix for WebGL on 32-bit Windows.
https://bugs.webkit.org/show_bug.cgi?id=119235
Reviewed by Darin Adler.
- platform/graphics/GLContext.cpp:
Created GLNativeWindowType typedef.
(WebCore::GLContext::createContextForWindow):
- platform/graphics/GLContext.h:
Replaced uint64_t with GLNativeWindowType.
- 2:06 PM Changeset in webkit [153491] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r153486. <rdar://problem/14440207>
- 2:00 PM Changeset in webkit [153490] by
-
- 1 edit in branches/safari-537-branch/Source/WebKit2/ChangeLog
Merged r153449. <rdar://problem/14440207>
- 1:33 PM Changeset in webkit [153489] by
-
- 2 edits in trunk/Tools
Unreviewed, add my new email to contributors.json.
- Scripts/webkitpy/common/config/contributors.json:
- 12:45 PM Changeset in webkit [153488] by
-
- 4 edits in trunk/Source/WebKit2
Plug-in process crashes if plug-in is destroyed as a result of sending NPObjectMessageReceiver::Deallocate
https://bugs.webkit.org/show_bug.cgi?id=119270
<rdar://problem/13368226>
Reviewed by Darin Adler.
Normally we use the PluginDestructionProtector RAII object to prevent plug-ins from being destroyed while
they're executing code. However, in the case of the NPObjectMessageReceiver::Deallocate message, we can't do this
since we don't know the plug-in or connection.
Instead, add a counter to Connection that keeps track of whether sendSync is currently called and defer plug-in
destruction if it is. (This approach is actually more robust and we should investigate getting rid of the destruction protector).
- Platform/CoreIPC/Connection.cpp:
(CoreIPC::Connection::Connection):
(CoreIPC::Connection::sendSyncMessage):
- Platform/CoreIPC/Connection.h:
(CoreIPC::Connection::inSendSync):
- PluginProcess/PluginControllerProxy.cpp:
(WebKit::PluginControllerProxy::destroy):
- 12:42 PM Changeset in webkit [153487] by
-
- 2 edits in trunk/Source/WebKit2
Null deref under WebPage::scaledSnapshotWithOptions
https://bugs.webkit.org/show_bug.cgi?id=119243
<rdar://problem/14502050>
Reviewed by Darin Adler.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::scaledSnapshotWithOptions):
WebFrame::coreFrame() can be null (if the Frame is already torn down),
so we should check it.
- 12:38 PM Changeset in webkit [153486] by
-
- 2 edits in trunk/Source/WebKit2
Null deref under PluginView::handlesPageScaleFactor()
https://bugs.webkit.org/show_bug.cgi?id=119231
<rdar://problem/14440207>
Reviewed by Darin Adler.
Null-check the PluginView in the caller as well.
- WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::handlesPageScaleGesture):
- 12:01 PM Changeset in webkit [153485] by
-
- 5 edits in trunk/Source
[WIN] Remove dependency on CoreFoundation from DownloadBundle
https://bugs.webkit.org/show_bug.cgi?id=119247
Reviewed by Anders Carlsson.
- platform/network/cf/DownloadBundle.h:
- platform/network/curl/DownloadBundle.h:
- platform/network/win/DownloadBundleWin.cpp:
(WebCore::DownloadBundle::magicNumber):
(WebCore::DownloadBundle::appendResumeData):
(WebCore::DownloadBundle::extractResumeData):
- 11:54 AM Changeset in webkit [153484] by
-
- 1 edit2 deletes in trunk/Source/WebKit2
Remove unused Download*.cpp files
https://bugs.webkit.org/show_bug.cgi?id=119248
Reviewed by Anders Carlsson.
- Shared/Downloads/cfnet/DownloadCFNet.cpp: Removed.
- Shared/Downloads/curl/DownloadCurl.cpp: Removed.
- 11:54 AM Changeset in webkit [153483] by
-
- 14 edits1 move in trunk/Source
Move WindowsExtras.h from WebCore to WTF
https://bugs.webkit.org/show_bug.cgi?id=118125
Reviewed by Anders Carlsson.
Move it to WTF to be able to use the functions in WTF too.
Source/WebCore:
- platform/PlatformKeyboardEvent.h:
- platform/PlatformMouseEvent.h:
- platform/PlatformWheelEvent.h:
- platform/graphics/win/MediaPlayerPrivateFullscreenWindow.h:
- platform/win/MIMETypeRegistryWin.cpp:
- platform/win/PasteboardWin.cpp:
- platform/win/PopupMenuWin.cpp:
- platform/win/RunLoopWin.cpp:
- platform/win/SharedTimerWin.cpp:
- platform/win/WindowMessageListener.h:
- plugins/win/PluginDatabaseWin.cpp:
Source/WTF:
- wtf/WindowsExtras.h: Renamed from Source/WebCore/platform/win/WindowsExtras.h.
(WTF::getRegistryValue):
(WTF::getWindowPointer):
(WTF::setWindowPointer):
- wtf/win/MainThreadWin.cpp:
(WTF::initializeMainThreadPlatform):
- 11:28 AM Changeset in webkit [153482] by
-
- 2 edits in trunk/Source/WebKit2
Page for WKPageLoaderClient processDidCrash callback always reports a process identifier of 0
https://bugs.webkit.org/show_bug.cgi?id=119269
<rdar://problem/14582393>
Reviewed by Anders Carlsson.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processIdentifier):
Return 0 if the page is closed instead of requiring isValid().
- 10:40 AM Changeset in webkit [153481] by
-
- 4 edits in trunk/Source/WebKit2
[WK2] Move the implementation of WebEditorClient::checkTextOfParagraph to WebEditorClient.cpp
https://bugs.webkit.org/show_bug.cgi?id=119034
Reviewed by Anders Carlsson.
The Mac and EFL ports use the same implementation of
WebEditorClient::checkTextOfParagraph and GTK will use the same
implementation too. So rather than duplicating the same code in
platform specific files, move the implementation to platform agnostic
WebProcess/WebCoreSupport/WebEditorClient.cpp.
- WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::checkTextOfParagraph):
- WebProcess/WebCoreSupport/efl/WebEditorClientEfl.cpp:
- WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
- 10:38 AM Changeset in webkit [153480] by
-
- 34 edits in trunk
Pass column as 4th argument to WorkerGlobalScope.onerror and Window.onerror handlers
https://bugs.webkit.org/show_bug.cgi?id=119251
Reviewed by Geoffrey Garen.
Source/WebCore:
As per the latest specification, the WorkerGlobalScope.onerror and Window.onerror event
handlers should be given the column as fourth argument:
http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerglobalscope
http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#onerroreventhandler
The column argument is already supported by IE10 and Blink.
No new tests, covered by existing tests.
- bindings/js/JSErrorHandler.cpp:
(WebCore::JSErrorHandler::handleEvent):
- bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::evaluate):
- dom/ErrorEvent.cpp:
(WebCore::ErrorEvent::ErrorEvent):
- dom/ErrorEvent.h:
(WebCore::ErrorEvent::create):
(WebCore::ErrorEvent::colno):
- dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::sanitizeScriptError):
(WebCore::ScriptExecutionContext::reportException):
(WebCore::ScriptExecutionContext::dispatchErrorEvent):
- dom/ScriptExecutionContext.h:
- workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerExceptionTask::performTask):
LayoutTests:
Update several tests to make use of the new column argument passed to
WorkerGlobalScope.onerror and Window.onerror handlers.
- fast/events/window-onerror1-expected.txt:
- fast/events/window-onerror1.html:
- fast/events/window-onerror11-expected.txt:
- fast/events/window-onerror11.html:
- fast/events/window-onerror12-expected.txt:
- fast/events/window-onerror12.html:
- fast/events/window-onerror13.html:
- fast/events/window-onerror14.html:
- fast/events/window-onerror16.html:
- fast/events/window-onerror2-expected.txt:
- fast/events/window-onerror2.html:
- fast/events/window-onerror4-expected.txt:
- fast/events/window-onerror4.html:
- fast/events/window-onerror5-expected.txt:
- fast/events/window-onerror5.html:
- fast/events/window-onerror6-expected.txt:
- fast/events/window-onerror6.html:
- fast/events/window-onerror7-expected.txt:
- fast/events/window-onerror7.html:
- fast/events/window-onerror8-expected.txt:
- fast/events/window-onerror8.html:
- fast/events/window-onerror9-expected.txt:
- fast/events/window-onerror9.html:
- fast/workers/resources/worker-script-error-handled.js:
(onerror):
- fast/workers/worker-script-error-expected.txt:
- 10:30 AM Changeset in webkit [153479] by
-
- 2 edits in trunk/Source/WebKit2
[WebKit2] [Gtk] WebKitResponsePolicyDecision URI response property incorrect
https://bugs.webkit.org/show_bug.cgi?id=119258
Patch by Brian Holt <brian.holt@samsung.com> on 2013-07-30
Reviewed by Martin Robinson.
Corrected the installed URI response property from PROP_REQUEST to
PROP_RESPONSE and type from WEBKIT_TYPE_URI_REQUEST to
WEBKIT_TYPE_URI_RESPONSE.
- UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
(webkit_response_policy_decision_class_init):
- 10:27 AM Changeset in webkit [153478] by
-
- 3 edits in trunk/Source/WebCore
Use OwnPtr in RenderThemeWin and ScrollbarThemeWin
https://bugs.webkit.org/show_bug.cgi?id=117978
Reviewed by Brent Fulgham.
Use OwnPtr to avoid manual deletion of objects.
- platform/win/ScrollbarThemeWin.cpp:
(WebCore::ScrollbarThemeWin::paintTrackPiece):
- rendering/RenderThemeWin.cpp:
(WebCore::drawControl):
- 10:01 AM Changeset in webkit [153477] by
-
- 18 edits in trunk
Fix problems with divot and lineStart mismatches.
https://bugs.webkit.org/show_bug.cgi?id=118662.
Reviewed by Oliver Hunt.
Source/JavaScriptCore:
r152494 added the recording of lineStart values for divot positions.
This is needed for the computation of column numbers. Similarly, it also
added the recording of line numbers for the divot positions. One problem
with the approach taken was that the line and lineStart values were
recorded independently, and hence were not always guaranteed to be
sampled at the same place that the divot position is recorded. This
resulted in potential mismatches that cause some assertions to fail.
The solution is to introduce a JSTextPosition abstraction that records
the divot position, line, and lineStart as a single quantity. Wherever
we record the divot position as an unsigned int previously, we now record
its JSTextPosition which captures all 3 values in one go. This ensures
that the captured line and lineStart will always match the captured divot
position.
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitCall):
(JSC::BytecodeGenerator::emitCallEval):
(JSC::BytecodeGenerator::emitCallVarargs):
(JSC::BytecodeGenerator::emitConstruct):
(JSC::BytecodeGenerator::emitDebugHook):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::emitExpressionInfo):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- bytecompiler/NodesCodegen.cpp:
(JSC::ThrowableExpressionData::emitThrowReferenceError):
(JSC::ResolveNode::emitBytecode):
(JSC::BracketAccessorNode::emitBytecode):
(JSC::DotAccessorNode::emitBytecode):
(JSC::NewExprNode::emitBytecode):
(JSC::EvalFunctionCallNode::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::DeleteResolveNode::emitBytecode):
(JSC::DeleteBracketNode::emitBytecode):
(JSC::DeleteDotNode::emitBytecode):
(JSC::PrefixNode::emitResolve):
(JSC::PrefixNode::emitBracket):
(JSC::PrefixNode::emitDot):
(JSC::UnaryOpNode::emitBytecode):
(JSC::BinaryOpNode::emitStrcat):
(JSC::BinaryOpNode::emitBytecode):
(JSC::ThrowableBinaryOpNode::emitBytecode):
(JSC::InstanceOfNode::emitBytecode):
(JSC::emitReadModifyAssignment):
(JSC::ReadModifyResolveNode::emitBytecode):
(JSC::AssignResolveNode::emitBytecode):
(JSC::AssignDotNode::emitBytecode):
(JSC::ReadModifyDotNode::emitBytecode):
(JSC::AssignBracketNode::emitBytecode):
(JSC::ReadModifyBracketNode::emitBytecode):
(JSC::ForInNode::emitBytecode):
(JSC::WithNode::emitBytecode):
(JSC::ThrowNode::emitBytecode):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- parser/ASTBuilder.h:
- Replaced ASTBuilder::PositionInfo with JSTextPosition.
(JSC::ASTBuilder::BinaryOpInfo::BinaryOpInfo):
(JSC::ASTBuilder::AssignmentInfo::AssignmentInfo):
(JSC::ASTBuilder::createResolve):
(JSC::ASTBuilder::createBracketAccess):
(JSC::ASTBuilder::createDotAccess):
(JSC::ASTBuilder::createRegExp):
(JSC::ASTBuilder::createNewExpr):
(JSC::ASTBuilder::createAssignResolve):
(JSC::ASTBuilder::createExprStatement):
(JSC::ASTBuilder::createForInLoop):
(JSC::ASTBuilder::createReturnStatement):
(JSC::ASTBuilder::createBreakStatement):
(JSC::ASTBuilder::createContinueStatement):
(JSC::ASTBuilder::createLabelStatement):
(JSC::ASTBuilder::createWithStatement):
(JSC::ASTBuilder::createThrowStatement):
(JSC::ASTBuilder::appendBinaryExpressionInfo):
(JSC::ASTBuilder::appendUnaryToken):
(JSC::ASTBuilder::unaryTokenStackLastStart):
(JSC::ASTBuilder::assignmentStackAppend):
(JSC::ASTBuilder::createAssignment):
(JSC::ASTBuilder::setExceptionLocation):
(JSC::ASTBuilder::makeDeleteNode):
(JSC::ASTBuilder::makeFunctionCallNode):
(JSC::ASTBuilder::makeBinaryNode):
(JSC::ASTBuilder::makeAssignNode):
(JSC::ASTBuilder::makePrefixNode):
(JSC::ASTBuilder::makePostfixNode):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- parser/Lexer.cpp:
(JSC::::lex):
- Added support for capturing the appropriate JSTextPositions instead of just the character offset.
- parser/Lexer.h:
(JSC::Lexer::currentPosition):
(JSC::::lexExpectIdentifier):
- Added support for capturing the appropriate JSTextPositions instead of just the character offset.
- parser/NodeConstructors.h:
(JSC::Node::Node):
(JSC::ResolveNode::ResolveNode):
(JSC::EvalFunctionCallNode::EvalFunctionCallNode):
(JSC::FunctionCallValueNode::FunctionCallValueNode):
(JSC::FunctionCallResolveNode::FunctionCallResolveNode):
(JSC::FunctionCallBracketNode::FunctionCallBracketNode):
(JSC::FunctionCallDotNode::FunctionCallDotNode):
(JSC::CallFunctionCallDotNode::CallFunctionCallDotNode):
(JSC::ApplyFunctionCallDotNode::ApplyFunctionCallDotNode):
(JSC::PostfixNode::PostfixNode):
(JSC::DeleteResolveNode::DeleteResolveNode):
(JSC::DeleteBracketNode::DeleteBracketNode):
(JSC::DeleteDotNode::DeleteDotNode):
(JSC::PrefixNode::PrefixNode):
(JSC::ReadModifyResolveNode::ReadModifyResolveNode):
(JSC::ReadModifyBracketNode::ReadModifyBracketNode):
(JSC::AssignBracketNode::AssignBracketNode):
(JSC::AssignDotNode::AssignDotNode):
(JSC::ReadModifyDotNode::ReadModifyDotNode):
(JSC::AssignErrorNode::AssignErrorNode):
(JSC::WithNode::WithNode):
(JSC::ForInNode::ForInNode):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- parser/Nodes.cpp:
(JSC::StatementNode::setLoc):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- parser/Nodes.h:
(JSC::Node::lineNo):
(JSC::Node::startOffset):
(JSC::Node::lineStartOffset):
(JSC::Node::position):
(JSC::ThrowableExpressionData::ThrowableExpressionData):
(JSC::ThrowableExpressionData::setExceptionSourceCode):
(JSC::ThrowableExpressionData::divot):
(JSC::ThrowableExpressionData::divotStart):
(JSC::ThrowableExpressionData::divotEnd):
(JSC::ThrowableSubExpressionData::ThrowableSubExpressionData):
(JSC::ThrowableSubExpressionData::setSubexpressionInfo):
(JSC::ThrowableSubExpressionData::subexpressionDivot):
(JSC::ThrowableSubExpressionData::subexpressionStart):
(JSC::ThrowableSubExpressionData::subexpressionEnd):
(JSC::ThrowablePrefixedSubExpressionData::ThrowablePrefixedSubExpressionData):
(JSC::ThrowablePrefixedSubExpressionData::setSubexpressionInfo):
(JSC::ThrowablePrefixedSubExpressionData::subexpressionDivot):
(JSC::ThrowablePrefixedSubExpressionData::subexpressionStart):
(JSC::ThrowablePrefixedSubExpressionData::subexpressionEnd):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- parser/Parser.cpp:
(JSC::::Parser):
(JSC::::parseInner):
- Use JSTextPosition instead of passing line and lineStart explicitly.
(JSC::::didFinishParsing):
- Remove setting of m_lastLine value. We always pass in the value from m_lastLine anyway. So, this assignment is effectively a nop.
(JSC::::parseVarDeclaration):
(JSC::::parseVarDeclarationList):
(JSC::::parseForStatement):
(JSC::::parseBreakStatement):
(JSC::::parseContinueStatement):
(JSC::::parseReturnStatement):
(JSC::::parseThrowStatement):
(JSC::::parseWithStatement):
(JSC::::parseTryStatement):
(JSC::::parseBlockStatement):
(JSC::::parseFunctionDeclaration):
(JSC::LabelInfo::LabelInfo):
(JSC::::parseExpressionOrLabelStatement):
(JSC::::parseExpressionStatement):
(JSC::::parseAssignmentExpression):
(JSC::::parseBinaryExpression):
(JSC::::parseProperty):
(JSC::::parsePrimaryExpression):
(JSC::::parseMemberExpression):
(JSC::::parseUnaryExpression):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- parser/Parser.h:
(JSC::Parser::next):
(JSC::Parser::nextExpectIdentifier):
(JSC::Parser::getToken):
(JSC::Parser::tokenStartPosition):
(JSC::Parser::tokenEndPosition):
(JSC::Parser::lastTokenEndPosition):
(JSC::::parse):
- Use JSTextPosition instead of passing line and lineStart explicitly.
- parser/ParserTokens.h:
(JSC::JSTextPosition::JSTextPosition):
(JSC::JSTextPosition::operator+):
(JSC::JSTextPosition::operator-):
(JSC::JSTextPosition::operator int):
- Added JSTextPosition.
- parser/SyntaxChecker.h:
(JSC::SyntaxChecker::makeFunctionCallNode):
(JSC::SyntaxChecker::makeAssignNode):
(JSC::SyntaxChecker::makePrefixNode):
(JSC::SyntaxChecker::makePostfixNode):
(JSC::SyntaxChecker::makeDeleteNode):
(JSC::SyntaxChecker::createResolve):
(JSC::SyntaxChecker::createBracketAccess):
(JSC::SyntaxChecker::createDotAccess):
(JSC::SyntaxChecker::createRegExp):
(JSC::SyntaxChecker::createNewExpr):
(JSC::SyntaxChecker::createAssignResolve):
(JSC::SyntaxChecker::createForInLoop):
(JSC::SyntaxChecker::createReturnStatement):
(JSC::SyntaxChecker::createBreakStatement):
(JSC::SyntaxChecker::createContinueStatement):
(JSC::SyntaxChecker::createWithStatement):
(JSC::SyntaxChecker::createLabelStatement):
(JSC::SyntaxChecker::createThrowStatement):
(JSC::SyntaxChecker::appendBinaryExpressionInfo):
(JSC::SyntaxChecker::operatorStackPop):
- Use JSTextPosition instead of passing line and lineStart explicitly.
LayoutTests:
Added regression test cases from https://bugs.webkit.org/show_bug.cgi?id=118662
and https://bugs.webkit.org/show_bug.cgi?id=118664.
- fast/js/line-column-numbers-expected.txt:
- fast/js/line-column-numbers.html:
- fast/js/script-tests/line-column-numbers.js:
(try.toFuzz1):
(try.toFuzz2):
- 9:33 AM Changeset in webkit [153476] by
-
- 2 edits in trunk/Source/WebCore
Added include directories to Visual Studio for WebGL.
https://bugs.webkit.org/show_bug.cgi?id=119161
Reviewed by Brent Fulgham.
- WebCore.vcxproj/WebCoreCommon.props: Added more include directories.
- 9:32 AM Changeset in webkit [153475] by
-
- 12 edits in trunk/Source/WebCore
Unreviewed, rolling out r151957 and r152531.
http://trac.webkit.org/changeset/151957
http://trac.webkit.org/changeset/152531
https://bugs.webkit.org/show_bug.cgi?id=119267
They revealed a bug on Mac I can't fix (Requested by Ossy on
#webkit).
Patch by Commit Queue <commit-queue@webkit.org> on 2013-07-30
- platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::frameIsCompleteAtIndex):
(WebCore::BitmapImage::frameDurationAtIndex):
- platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::frameDurationAtIndex):
(WebCore::ImageSource::frameHasAlphaAtIndex):
(WebCore::ImageSource::frameIsCompleteAtIndex):
- platform/graphics/ImageSource.h:
- platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::ImageExtractor::extractImage):
- platform/graphics/cg/ImageSourceCG.cpp:
(WebCore::ImageSource::frameIsCompleteAtIndex):
(WebCore::ImageSource::frameDurationAtIndex):
(WebCore::ImageSource::frameHasAlphaAtIndex):
- platform/graphics/efl/GraphicsContext3DEfl.cpp:
(WebCore::GraphicsContext3D::ImageExtractor::extractImage):
- platform/image-decoders/ImageDecoder.cpp:
(WebCore::ImageDecoder::frameHasAlphaAtIndex):
- platform/image-decoders/ImageDecoder.h:
- platform/image-decoders/gif/GIFImageDecoder.cpp:
(WebCore::GIFImageDecoder::haveDecodedRow):
(WebCore::GIFImageDecoder::gifComplete):
(WebCore::GIFImageDecoder::decode):
(WebCore::GIFImageDecoder::initFrameBuffer):
- platform/image-decoders/gif/GIFImageDecoder.h:
- platform/image-decoders/gif/GIFImageReader.h:
(GIFImageReader::frameContext):
- 9:26 AM Changeset in webkit [153474] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Updated TestExpectations
- platform/gtk/TestExpectations: Mark transitions/created-while-suspended.html
as slow after r153396.
- 9:18 AM Changeset in webkit [153473] by
-
- 3 edits in trunk/WebKitLibraries
Missing the rename REGISTER_PROCOTOL_HANDLER Macro to NAVIGATOR_CONTENT_UTILS in WebKitLibraries.
https://bugs.webkit.org/show_bug.cgi?id=119239
According to "https://bugs.webkit.org/show_bug.cgi?id=94920", REGISTER_PROCOTOL_HANDLER macro was changed to NAVIGATOR_CONTENT_UTILS.
But, FeatureDefines.props and FeatureDefinesCairo.props was not changed.
Patch by Sanghyun Park <sh919.park@samsung.com> on 2013-07-30
Reviewed by Brent Fulgham.
- win/tools/vsprops/FeatureDefines.props:
- win/tools/vsprops/FeatureDefinesCairo.props:
- 8:38 AM WebKitGTK/2.0.x edited by
- added https://bugs.webkit.org/show_bug.cgi?id=119258 to 2.0.5 (diff)
- 7:12 AM Changeset in webkit [153472] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Update TestExpectations
Some GTK tests are flaky or time out after the FTL merge.
- platform/gtk/TestExpectations:
- 6:52 AM Changeset in webkit [153471] by
-
- 4 edits in trunk/Source/WebInspectorUI
Web Inspector: doesn't use localized user interface at remote inspector
https://bugs.webkit.org/show_bug.cgi?id=119252
Patch by Roland Takács <rtakacs@inf.u-szeged.hu> on 2013-07-30
Reviewed by Timothy Hatcher.
Added a flag in order to not use localizedStrings in remote inspector.
- UserInterface/InspectorFrontendHostStub.js:
- UserInterface/LoadLocalizedStrings.js:
- UserInterface/Main.js:
(WebInspector.UIString):
- 6:51 AM Changeset in webkit [153470] by
-
- 2 edits in trunk/Tools
[EFL] REGRESSION after r153439: layout tests do not run.
https://bugs.webkit.org/show_bug.cgi?id=119240
Patch by Krzysztof Czech <k.czech@samsung.com> on 2013-07-30
Reviewed by Christophe Dumez.
Changed attribute name from check_xvfb to check_driver.
- Scripts/webkitpy/port/efl.py:
(EflPort.check_sys_deps):
- 6:49 AM Changeset in webkit [153469] by
-
- 3 edits in trunk/Source/WebCore
Remove using namespace std from SpatialNavigation
https://bugs.webkit.org/show_bug.cgi?id=119242
Reviewed by Antonio Gomes.
"using namespace" statements in headers are dangerous and should be
avoided. check-webkit-style has been changed to flag them as an error
since r152719. Use explicit std:: qualifiers instead.
No behavior change, no new tests needed.
- page/SpatialNavigation.cpp:
(WebCore::scrollInDirection):
- page/SpatialNavigation.h:
(WebCore::maxDistance):
- 6:38 AM Changeset in webkit [153468] by
-
- 2 edits in trunk/LayoutTests
[GTK] fast/regions/firstletter-inside-flowthread.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=106592
Unreviewed gardening.
Patch by Manuel Rego Casasnovas <Manuel Rego Casasnovas> on 2013-07-30
- platform/gtk/TestExpectations: Unflag test as it is passing without
problems now.
- 6:34 AM Changeset in webkit [153467] by
-
- 2 edits in trunk
[Qt] Workaround to make syncqt run and generate forwarding headers in SVN repositories too.
https://bugs.webkit.org/show_bug.cgi?id=118725.
Reviewed by Tor Arne Vestbø.
- .qmake.conf:
- 6:14 AM Changeset in webkit [153466] by
-
- 4 edits in trunk
Unreviewed. Update NEWS and Versions.m4 for 2.1.4 release.
.:
- Source/autotools/Versions.m4: Bump version numbers.
Source/WebKit/gtk:
- NEWS: Added release notes for 2.1.4.
- 5:12 AM Changeset in webkit [153465] by
-
- 2 edits in trunk/LayoutTests
[Mac] can-read-in-dragstart-event.html and can-read-in-copy-and-cut-events.html fail
https://bugs.webkit.org/show_bug.cgi?id=113094
The test can-read-in-copy-and-cut-events.html now passes on mac-wk2.
- platform/mac/TestExpectations:
- 5:01 AM Changeset in webkit [153464] by
-
- 2 edits in trunk/Source/WebCore
[Qt][Win] Extend disabling of whole-program-optimizations to MSVC 2012
https://bugs.webkit.org/show_bug.cgi?id=119238
Reviewed by Jocelyn Turcotte.
As suggested in https://bugreports.qt-project.org/browse/QTBUG-20556,
the WebKit build with MSVC 2012 is affected by the same size
limitations.
- WebCore.pri:
- 4:42 AM Changeset in webkit [153463] by
-
- 2 edits in trunk/LayoutTests
Mark compositing/patterns tests as passing for mac-wk2
https://bugs.webkit.org/show_bug.cgi?id=119246
These tests run fine on WK2.
- platform/mac-wk2/TestExpectations:
- 4:23 AM Changeset in webkit [153462] by
-
- 1 edit in trunk/LayoutTests/platform/mac/TestExpectations
REGRESSION: iframes with composited contents are not transparent in WK1
https://bugs.webkit.org/show_bug.cgi?id=76478
Unskip these tests since the root cause has been fixed long ago already.
- 4:14 AM Changeset in webkit [153461] by
-
- 2 edits in trunk/Source/WebCore
REGRESION(r151091) ASSERTION FAILED: m_readableData m_writableData https://bugs.webkit.org/show_bug.cgi?id=119142
Reviewed by Jocelyn Turcotte.
Remove invalid assert.
Covered by existing tests.
- platform/qt/PasteboardQt.cpp:
(WebCore::Pasteboard::readData):
Jul 29, 2013:
- 11:42 PM Changeset in webkit [153460] by
-
- 13 edits in trunk/Source
Unreviewed. Fix make distcheck.
Source/JavaScriptCore:
- GNUmakefile.list.am: Add missing files to compilation.
- bytecode/CodeBlock.cpp: Add a ENABLE(FTL_JIT) #if block to
include FTL header files not included in the compilation.
- dfg/DFGDriver.cpp: Ditto.
- dfg/DFGPlan.cpp: Ditto.
Source/ThirdParty/ANGLE:
- GNUmakefile.am: Add missing header files to compilation.
Source/WebCore:
- GNUmakefile.list.am: Add missing header file to compilation.
Source/WebKit2:
- GNUmakefile.list.am: Add missing header file to compilation.
Source/WTF:
- GNUmakefile.list.am: Add missing files to compilation.
- 9:51 PM Changeset in webkit [153459] by
-
- 8 edits in branches/safari-537-branch/Source/WebKit2
Merged r153458. <rdar://problem/14568841>
- 9:45 PM Changeset in webkit [153458] by
-
- 8 edits in trunk/Source/WebKit2
[wk2] Flush the WebProcess’ implicit transaction when using endDeferringViewInWindowChangesSync
https://bugs.webkit.org/show_bug.cgi?id=119225
<rdar://problem/14568841>
Reviewed by Simon Fraser.
Tell CoreAnimation to flush the implicit transaction before replying
when using endDeferringViewInWindowChangesSync, as that method's contract
is that the WebProcess is totally ready to be in-window when it returns.
- UIProcess/API/mac/WKView.mm:
(-[WKView endDeferringViewInWindowChanges]):
Adopt viewInWindowStateDidChange.
(-[WKView endDeferringViewInWindowChangesSync]):
Adopt viewInWindowStateDidChange, asking it to send a reply only if we're going to wait for one.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::viewInWindowStateDidChange):
(WebKit::WebPageProxy::viewStateDidChange):
Pull viewInWindowStateDidChange out of viewStateDidChange.
Request a reply from SetIsInWindow if we're told to.
- UIProcess/WebPageProxy.h: Add WantsReplyOrNot and viewInWindowStateDidChange.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didUpdateInWindowStateTimerFired):
Don't build this version on Mac, we'll have a WebPageMac version.
(WebKit::WebPage::setIsInWindow):
Only start the timer to send the didUpdateInWindowState reply if we're asked to.
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
Add an argument to the SetIsInWindow message for whether the WebProcess
should inform the UIProcess when SetIsInWindow completes or not.
- WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::didUpdateInWindowStateTimerFired):
Tell CA to flush the implicit transaction before telling the UIProcess that
we're finished moving in-window.
- 9:33 PM Changeset in webkit [153457] by
-
- 14 edits3 adds in trunk
Eager stack trace for error objects.
https://bugs.webkit.org/show_bug.cgi?id=118918
Source/JavaScriptCore:
Patch by Chris Curtis <chris_curtis@apple.com> on 2013-07-29
Reviewed by Geoffrey Garen.
Chrome and Firefox give error objects the stack property and we wanted to match
that functionality. This allows developers to see the stack without throwing an object.
- runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::finishCreation):
For error objects that are not thrown as an exception, we pass the stackTrace in
as a parameter. This allows the error object to have the stack property.
- interpreter/Interpreter.cpp:
(JSC::stackTraceAsString):
Helper function used to eliminate duplicate code.
(JSC::Interpreter::addStackTraceIfNecessary):
When an error object is created by the user the vm->exceptionStack is not set.
If the user throws this error object later the stack that is in the error object
may not be the correct stack for the throw, so when we set the vm->exception stack,
the stack property on the error object is set as well.
- runtime/ErrorConstructor.cpp:
(JSC::constructWithErrorConstructor):
(JSC::callErrorConstructor):
- runtime/NativeErrorConstructor.cpp:
(JSC::constructWithNativeErrorConstructor):
(JSC::callNativeErrorConstructor):
These functions indicate that the user created an error object. For all error objects
that the user explicitly creates, the topCallFrame is at a new frame created to
handle the user's call. In this case though, the error object needs the caller's
frame to create the stack trace correctly.
- interpreter/Interpreter.h:
- runtime/ErrorInstance.h:
(JSC::ErrorInstance::create):
LayoutTests:
Patch by Chris Curtis <chris_curtis@apple.com> on 2013-07-29
Reviewed by Geoffrey Garen.
Added tests to ensure that the stack property was present at creation for all
error Objects. This test will fail without this patch.
- fast/js/script-tests/stack-at-creation-for-error-objects.js: Added.
(checkStack):
- fast/js/stack-at-creation-for-error-objects-expected.txt: Added.
- fast/js/stack-at-creation-for-error-objects.html: Added.
- inspector/console/console-format-expected.txt:
- inspector/console/console-format.html:
This test was modified by removing the error object from being evaluated. Prior to this patch
error objects did not have the stack property, so the stack information was not being
displayed. The stack trace includes a file path specific to the machine that is running
the test. The results would have differed from one computer to the next. There
is not an easy way to capture the error object to treat it differently. By removing
the error object there is no need to add extra code to treat it differently.
Also there are other tests inside inspector/console that test the stack trace,
so the testing suite does not lose error testing by removing it.
The .stack property was added to the error objects at creation time.
- fast/js/exception-properties-expected.txt:
- fast/js/script-tests/exception-properties.js:
The column numbers are modified in the following test. When error objects are explicitly
invoked, the column number points to the beginning "(" instead of end ")".
Functionality between browsers do not match either. Firefox does not output column
numbers. Chrome points columns numbers to the beginning of the "new" call.
- fast/js/line-column-numbers-expected.txt:
- fast/js/stack-trace-expected.txt:
- 9:14 PM Changeset in webkit [153456] by
-
- 2 edits in trunk/Source/WebCore
[Gtk] Improve string use in PasteboardGtk
https://bugs.webkit.org/show_bug.cgi?id=119204
Reviewed by Martin Robinson.
Use emptyString() instead of "" and use ASCIILiteral where appropriate.
No behavior change, no new tests needed.
- platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::documentFragment):
Use emptyString() instead of "".
(WebCore::Pasteboard::types):
Use ASCIILiteral where appropriate.
- 8:33 PM Changeset in webkit [153455] by
-
- 2 edits in trunk/Source/WTF
<rdar://problem/14528244> Tons of FastMalloc leaks reported by leaks of objects that have already been deallocated
Reviewed by Sam Weinig.
- wtf/FastMalloc.cpp:
(WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Mark objects in the transfer cache as being free.
- 6:15 PM Changeset in webkit [153454] by
-
- 8 edits in trunk/Source/JavaScriptCore
Some cleanup in PropertySlot
https://bugs.webkit.org/show_bug.cgi?id=119189
Reviewed by Geoff Garen.
PropertySlot represents a property in one of four states - value, getter, custom, or custom-index.
The state is currently tracked redundantly by two mechanisms - the custom getter function (m_getValue)
is set to a special value to indicate the type (other than custom), and the type is also tracked by
an enum - but only if cacheable. Cacheability can typically be determined by the value of m_offset
(this is invalidOffset if not cacheable).
- Internally, always track the type of the property using an enum value, PropertyType.
- Use m_offset to indicate cacheable.
- Keep the external interface (CachedPropertyType) unchanged.
- Better pack data into the m_data union.
Performance neutral.
- dfg/DFGRepatch.cpp:
(JSC::DFG::tryCacheGetByID):
(JSC::DFG::tryBuildGetByIDList):
- cachedPropertyType() -> isCacheable*()
- jit/JITPropertyAccess.cpp:
(JSC::JIT::privateCompileGetByIdProto):
(JSC::JIT::privateCompileGetByIdSelfList):
(JSC::JIT::privateCompileGetByIdProtoList):
(JSC::JIT::privateCompileGetByIdChainList):
(JSC::JIT::privateCompileGetByIdChain):
- cachedPropertyType() -> isCacheable*()
- jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::privateCompileGetByIdProto):
(JSC::JIT::privateCompileGetByIdSelfList):
(JSC::JIT::privateCompileGetByIdProtoList):
(JSC::JIT::privateCompileGetByIdChainList):
(JSC::JIT::privateCompileGetByIdChain):
- cachedPropertyType() -> isCacheable*()
- jit/JITStubs.cpp:
(JSC::tryCacheGetByID):
- cachedPropertyType() -> isCacheable*()
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- cachedPropertyType() -> isCacheable*()
- runtime/PropertySlot.cpp:
(JSC::PropertySlot::functionGetter):
- refactoring described above.
- runtime/PropertySlot.h:
(JSC::PropertySlot::PropertySlot):
(JSC::PropertySlot::getValue):
(JSC::PropertySlot::isCacheable):
(JSC::PropertySlot::isCacheableValue):
(JSC::PropertySlot::isCacheableGetter):
(JSC::PropertySlot::isCacheableCustom):
(JSC::PropertySlot::cachedOffset):
(JSC::PropertySlot::customGetter):
(JSC::PropertySlot::setValue):
(JSC::PropertySlot::setCustom):
(JSC::PropertySlot::setCacheableCustom):
(JSC::PropertySlot::setCustomIndex):
(JSC::PropertySlot::setGetterSlot):
(JSC::PropertySlot::setCacheableGetterSlot):
(JSC::PropertySlot::setUndefined):
(JSC::PropertySlot::slotBase):
(JSC::PropertySlot::setBase):
- refactoring described above.
- 6:10 PM Changeset in webkit [153453] by
-
- 3 edits in branches/safari-537-branch/Source/WebKit2
Merged r153449. <rdar://problem/14440207>
- 6:07 PM Changeset in webkit [153452] by
-
- 4 edits in branches/safari-537-branch/Source/WebCore
Merged r153447. <rdar://problem/14556632>
- 6:06 PM Changeset in webkit [153451] by
-
- 2 edits in trunk/Source/WebCore
Page count can be incorrect if there is a pending style recalc
https://bugs.webkit.org/show_bug.cgi?id=119232
Reviewed by Beth Dakin.
If style is changed in a way that schedules a style recalc on the Document,
and then Page::pageCount() is called, we may give the wrong answer because
the existing code only checked FrameView::needsLayout(), not whether a style
recale was pending.
Fix by having Page::pageCount() call updateLayoutIgnorePendingStylesheets()
as we do for other properties that require layer, and are exposed to JS
or via API.
- page/Page.cpp:
(WebCore::Page::pageCount):
- 5:25 PM Changeset in webkit [153450] by
-
- 5 edits2 moves in trunk/Source/WebCore
Moved GLContext.cpp and .h out of cairo directory to be used by non-cairo ports.
https://bugs.webkit.org/show_bug.cgi?id=119223
Reviewed by Kenneth Rohde Christiansen.
- GNUmakefile.list.am:
- PlatformGTK.cmake:
- WebCore.vcxproj/WebCore.vcxproj:
- WebCore.vcxproj/WebCore.vcxproj.filters:
Changed location of GLContext.cpp and GLContext.h.
- platform/graphics/GLContext.cpp: Copied from WebCore/platform/graphics/cairo/GLContext.cpp.
- platform/graphics/GLContext.h: Copied from WebCore/platform/graphics/cairo/GLContext.h.
- platform/graphics/cairo/GLContext.cpp: Removed.
- platform/graphics/cairo/GLContext.h: Removed.
- 5:20 PM Changeset in webkit [153449] by
-
- 3 edits in trunk/Source/WebKit2
Null deref under PluginView::handlesPageScaleFactor()
https://bugs.webkit.org/show_bug.cgi?id=119231
<rdar://problem/14440207>
Reviewed by Simon Fraser.
- WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::handlesPageScaleFactor):
- WebProcess/Plugins/PluginView.h:
Null-check m_plugin and check m_isInitialized.
Make pageScaleFactor() and handlesPageScaleFactor const.
- 5:15 PM Changeset in webkit [153448] by
-
- 3 edits in trunk/Source/WebCore
TextTrackRepresentation captions often disappear then appear again.
https://bugs.webkit.org/show_bug.cgi?id=119228
Reviewed by Simon Fraser.
Calling updateTextTrackDisplay() will cause the entire DOM subtree containing the active cues
to be torn down and rebuilt. Only call into this method when text tracks have actually changed.
Add an enum parameter to configureTextTrackDisplay() which allows the caller to specify that
method should assume that the list of visible text tracks has changed, forcing a call to
updateTextTrackDisplay().
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::updateActiveTextTrackCues): Remove the unnecessary call to updateTextTrackDisplay().
(WebCore::HTMLMediaElement::textTrackModeChanged): Pass AssumeVisibleTextTracksChanged to configureTextTrackDisplay().
(WebCore::HTMLMediaElement::configureTextTrackDisplay): Check the passed flags and exit early only if
AssumeVisibleTextTracksChanged is not set.
- html/HTMLMediaElement.h:
- 5:12 PM Changeset in webkit [153447] by
-
- 4 edits in trunk/Source/WebCore
Fix crash due to unexpected Node deletion during MutationObserver registration book-keeping
https://bugs.webkit.org/show_bug.cgi?id=119124
Reviewed by Sam Weinig.
Merge https://chromium.googlesource.com/chromium/blink/+/b6afb927695b3acf2c75c25f05e99682660993e2
No new tests since I could not reproduce the crash with the test attached in the Blink change.
The bug was caused by Node::unregisterMutationObserver removing the MutationObserverRegistration
that holds the last ref to the node. Avoid that by explicitly allocating a local RefPtr to the node
in MutationObserverRegistration::unregister. Also rename it to unregisterAndDelete to clarify
the semantics and make it a static member function to be even safer.
- dom/MutationObserver.cpp:
(WebCore::MutationObserver::disconnect):
- dom/MutationObserverRegistration.cpp:
(WebCore::MutationObserverRegistration::unregisterAndDelete):
- dom/MutationObserverRegistration.h:
- 4:57 PM Changeset in webkit [153446] by
-
- 8 edits in branches/safari-537-branch/Source/JavaScriptCore
Merged r153071. <rdar://problem/14583789>
- 4:31 PM Changeset in webkit [153445] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153418. <rdar://problem/14572855>
- 4:00 PM Changeset in webkit [153444] by
-
- 2 edits in trunk/Tools
Unreviewed, rolling out r152860.
http://trac.webkit.org/changeset/152860
https://bugs.webkit.org/show_bug.cgi?id=119227
Disable WinEWS tests until tests stop crashing (Requested by
rfong on #webkit).
- Scripts/webkitpy/common/config/ews.json:
- 3:40 PM Changeset in webkit [153443] by
-
- 2 edits2 moves in trunk/Source/WebCore
Moved GLTransportSurface.h and .cpp out of efl-specific directory.
https://bugs.webkit.org/show_bug.cgi?id=119163
Reviewed by Alexis Menard.
- PlatformEfl.cmake: Changed directory of GLTransportSurface.cpp.
- platform/graphics/surfaces/GLTransportSurface.cpp: Copied from WebCore/platform/graphics/surfaces/efl/GLTransportSurface.cpp.
- platform/graphics/surfaces/GLTransportSurface.h: Copied from WebCore/platform/graphics/surfaces/efl/GLTransportSurface.h.
- platform/graphics/surfaces/efl/GLTransportSurface.cpp: Removed.
- platform/graphics/surfaces/efl/GLTransportSurface.h: Removed.
- 2:55 PM Changeset in webkit [153442] by
-
- 3 edits in branches/safari-537-branch/Source/JavaScriptCore
Merge patch from <rdar://problem/14579343>
- 2:25 PM Changeset in webkit [153441] by
-
- 3 edits1 add in trunk/Source/WebCore
Speculative implementation of missing GraphicsContext3D methods on Windows.
https://bugs.webkit.org/show_bug.cgi?id=119167
Reviewed by Dean Jackson.
- WebCore.vcxproj/WebCore.vcxproj:
- WebCore.vcxproj/WebCore.vcxproj.filters:
- platform/graphics/win/GraphicsContext3DWin.cpp: Added.
(WebCore::GraphicsContext3DPrivate::GraphicsContext3DPrivate):
(WebCore::GraphicsContext3DPrivate::~GraphicsContext3DPrivate):
(WebCore::GraphicsContext3D::create):
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(WebCore::GraphicsContext3D::setContextLostCallback):
(WebCore::GraphicsContext3D::setErrorMessageCallback):
(WebCore::GraphicsContext3D::makeContextCurrent):
(WebCore::GraphicsContext3D::platformGraphicsContext3D):
(WebCore::GraphicsContext3D::platformTexture):
(WebCore::GraphicsContext3D::isGLES2Compliant):
(WebCore::GraphicsContext3D::platformLayer):
- 1:10 PM Changeset in webkit [153440] by
-
- 2 edits in trunk/Source/WTF
Reintroduce convenience CheckedInt*, CheckedUint* types
https://bugs.webkit.org/show_bug.cgi?id=119213
Reviewed by Oliver Hunt.
Reintroduce CheckedInt* and CheckedUint* types that were previously provided for convenience
through the CheckedInt header that was removed in r153095. The types are now based on the
Checked class, using the RecordOverflow class as the overflow handler.
- wtf/CheckedArithmetic.h:
- 1:09 PM Changeset in webkit [153439] by
-
- 4 edits1 add in trunk/Tools
[GTK] Add WestonDriver, use it when appropriate
https://bugs.webkit.org/show_bug.cgi?id=119100
Reviewed by Dirk Pranke.
Introduce the WestonDriver, a Driver-implementing class that sets up an instance of Weston, the Wayland compositor,
and sets up an environment that enables the test runner to run inside it.
The design very much mimics the XvfbDriver class. It is currently used by the GTK port when the WAYLAND_DISPLAY
environment variable is set, that is when NRWT is being run under a Wayland display.
- Scripts/webkitpy/port/base.py:
(Port.to.setup_environ_for_server): Also copy the XDG_RUNTIME_DIR env from the original environment for Linux-using ports.
- Scripts/webkitpy/port/gtk.py:
(GtkPort):
(GtkPort._driver_class): Make the method memoized - the display type is not going to change during the testing, so we
should only check once for the presence of the WAYLAND_DISPLAY env and determine the proper driver class to use based on that.
(GtkPort.check_sys_deps): Call the static check_driver method on the class as returned by the _driver_class method
instead of hard-coding the XvfbDriver class in the check.
- Scripts/webkitpy/port/westondriver.py: Added.
(WestonDriver):
(WestonDriver.check_driver): Similarly to XvfbDriver, this checks for existance of the weston executable.
(WestonDriver.init): Again, like in XvfbDriver, we use a small delay between launching the Weston display and launching the driver.
(WestonDriver._start): Sets up the driver-specific temporary directory, launches the Weston display, sets up the environment for the
driver and then launches the driver in said environment, using the driver's Weston display.
(WestonDriver.stop): Cleans up the Weston instance and the temporary directory.
(WestonDriver._ensure_driver_tmpdir_subdirectory): A helper function that creates a subdirectory in the driver's temporary directory
and returns the absolute path to it.
- Scripts/webkitpy/port/xvfbdriver.py:
(XvfbDriver.check_driver): Renamed from check_xvfb.
(XvfbDriver._start): Access the FileSystem object through the Port's Host object, instead of the Port's private member.
- 12:25 PM Changeset in webkit [153438] by
-
- 2 edits in trunk/Source/WebCore
Max IOSurfaceDimension should be an inclusive upper bound
https://bugs.webkit.org/show_bug.cgi?id=119206
<rdar://problem/14555311>
Reviewed by Simon Fraser.
The maxIOSurfaceDimension value should be an inclusive upper bound.
Change the greater than or equal to into a greater than. This will
allow canvas elements of this dimension to be accelerated.
- platform/graphics/cg/ImageBufferCG.cpp:
(WebCore::ImageBuffer::ImageBuffer): Change >= to >
- 12:20 PM Changeset in webkit [153437] by
-
- 4 edits6 adds4 deletes in trunk/LayoutTests
[CSS Shapes] New positioning model: update percentage rectangle and inset rectangle tests
https://bugs.webkit.org/show_bug.cgi?id=118086
Patch by Bem Jones-Bey <Bem Jones-Bey> on 2013-07-29
Reviewed by Dirk Schulze.
Update percentage based tests to work with the new positioning model.
Also move the tests to be W3C spec tests, so they have been impored
back here from the CSSWG repo.
- TestExpectations: Remove skipping for replaced tests.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-003-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-003.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-004-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-horizontal-rectangle-004.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-002-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-002.html: Added.
- csswg/submitted/shapes/shape-outside/w3c-import.log:
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-inset-rectangle-percentage-expected.html: Removed.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-inset-rectangle-percentage.html: Removed.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rectangle-percentage-expected.html: Removed.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rectangle-percentage.html: Removed.
- 11:51 AM Changeset in webkit [153436] by
-
- 7 edits8 adds2 deletes in trunk/Source
Source/ThirdParty/ANGLE: Separated translator into preprocessor, translator_common,
translator_hlsl (for libGLESv2), and translator_glsl
(for ANGLEWebKitBridge).
https://bugs.webkit.org/show_bug.cgi?id=119221
Reviewed by Brent Fulgham.
- ANGLE.vcxproj/ANGLEGenerated.vcxproj:
Removed unused preprocessor definitions.
- ANGLE.vcxproj/libEGL.vcxproj:
- ANGLE.vcxproj/libGLESv2.vcxproj:
Removed dependency on removed translator project.
- ANGLE.vcxproj/libGLESv2Common.props:
Link to translator_hlsl libraries.
- ANGLE.vcxproj/preprocessor.vcxproj: Added.
- ANGLE.vcxproj/preprocessor.vcxproj.filters: Added.
- ANGLE.vcxproj/translator.vcxproj: Removed.
- ANGLE.vcxproj/translator.vcxproj.filters: Removed.
- ANGLE.vcxproj/translator_common.vcxproj: Added.
- ANGLE.vcxproj/translator_common.vcxproj.filters: Added.
- ANGLE.vcxproj/translator_glsl.vcxproj: Added.
- ANGLE.vcxproj/translator_glsl.vcxproj.filters: Added.
- ANGLE.vcxproj/translator_hlsl.vcxproj: Added.
- ANGLE.vcxproj/translator_hlsl.vcxproj.filters: Added.
Source/WebKit: Separated translator into preprocessor, translator_common,
translator_hlsl (for libGLESv2), and translator_glsl (for ANGLEWebKitBridge).
These projects are still not built by default.
https://bugs.webkit.org/show_bug.cgi?id=119221
Reviewed by Brent Fulgham.
- WebKit.vcxproj/WebKit.sln:
Added separate ANGLE translator projects.
- 11:26 AM Changeset in webkit [153435] by
-
- 6 edits3 adds in trunk
[ATK] Implement attributesOfChildren() for AccessibilityUIElement
https://bugs.webkit.org/show_bug.cgi?id=118967
Reviewed by Gustavo Noronha Silva.
Tools:
Implemented AccessibilityUIElement::attributesOfChildren() both
in DumpRenderTree and the WebKitTestRunner.
- DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
(AccessibilityUIElement::attributesOfChildren): Implemented.
- WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::attributesOfChildren): Implemented.
LayoutTests:
Removed fixed tests from TestExpectations and added/updated expected
results for tests that are now dumping more useful information.
- platform/gtk/TestExpectations: Removed three fixed tests.
- platform/gtk/accessibility/image-map2-expected.txt: Updated.
- platform/gtk/accessibility/lists-expected.txt: Added.
- platform/gtk/accessibility/plugin-expected.txt: Added.
- platform/gtk/accessibility/table-with-aria-role-expected.txt: Added.
- 11:10 AM Changeset in webkit [153434] by
-
- 5 edits in trunk/Source/WebKit2
Remove setUnderlayPage() and associated code
https://bugs.webkit.org/show_bug.cgi?id=119220
<rdar://problem/14392426>
Reviewed by Jessie Berlin.
This is dead code, get rid of it.
- WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
- WebProcess/InjectedBundle/API/c/WKBundlePage.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
(WebKit::WebPage::layoutIfNeeded):
(WebKit::WebPage::drawRect):
- WebProcess/WebPage/WebPage.h:
- 10:45 AM Changeset in webkit [153433] by
-
- 3 edits2 adds in trunk
ASSERT_NOT_REACHED was touched in WebCore::SVGAnimatedType::valueAsString
https://bugs.webkit.org/show_bug.cgi?id=118744
Reviewed by Philip Rogers.
Source/WebCore:
If we have an <animateTransform> tag that sets the attributeName and attributeType
properties however they are not consistent and we shouldn't try to apply it.
It is already checked and catched in SVGAnimateElement::resetAnimatedType() but
DontApplyAnimation case isn't handled properly. The patch forces an early return
in this case.
Test: svg/animations/attributeNameAndAttributeTypeMissmatch.svg
- svg/SVGAnimateElement.cpp:
(WebCore::SVGAnimateElement::resetAnimatedType):
LayoutTests:
Adding test to check whether attributeName and attributeType are consistent in <animateTransform>.
- platform/qt/svg/animations/attributeNameAndAttributeTypeMissmatch-expected.txt: Added.
- svg/animations/attributeNameAndAttributeTypeMissmatch.svg: Added.
- 10:16 AM Changeset in webkit [153432] by
-
- 8 edits4 adds in trunk
[ATK] Implement allAttributes() for AccessibilityUIElement
https://bugs.webkit.org/show_bug.cgi?id=118966
Reviewed by Gustavo Noronha Silva.
Tools:
Implemented AccessibilityUIElement::allAttributes() both in
DumpRenderTree and the WebKitTestRunner.
- DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
(getAtkAttributeSetAsString): Moved up in the file, and refactored
to use StringBuilder and return a String instead of a gchar*.
(roleToString): Changed not to return the "AXRole: " prefix, so
we can use it as well from attributesOfElement().
(attributesOfElement): New function to dump attributes for an object.
(AccessibilityUIElement::allAttributes): Call attributesOfElement().
(AccessibilityUIElement::role): Updated to prefix "AXRole: ".
- WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(getAtkAttributeSetAsString): Refactored to use StringBuilder and return
a String instead of a gchar*.
(WTF::roleToString): Changed not to return the "AXRole: " prefix,
so we can use it as well from attributesOfElement().
(WTF::attributesOfElement): New function to dump attributes for an object.
(WTR::AccessibilityUIElement::allAttributes): Call attributesOfElement().
(WTR::AccessibilityUIElement::role): Updated to prefix "AXRole: ".
LayoutTests:
Removed fixed tests from TestExpectations and added/updated expected
results for tests that are now dumping more useful information.
- platform/gtk/TestExpectations: Removed four fixed tests.
- platform/gtk/accessibility/image-link-expected.txt: Updated.
- platform/gtk/accessibility/table-cell-spans-expected.txt: Updated
- platform/gtk/accessibility/table-cells-expected.txt: Updated
- platform/gtk/accessibility/table-detection-expected.txt: Added.
- platform/gtk/accessibility/table-one-cell-expected.txt: Added.
- platform/gtk/accessibility/table-with-rules-expected.txt: Added.
- platform/gtk/accessibility/transformed-element-expected.txt: Added.
- 10:10 AM Changeset in webkit [153431] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION(148300) GIFs not reanimated after resumeActiveDOMObjectAndAnimations
https://bugs.webkit.org/show_bug.cgi?id=119217
Reviewed by Tim Horton.
Commit 148300 introduced a new better was of restarting GIF animations after
they have been suspended. Unfortunately the method was not activated when a page
is resumed but only when it is returning from background.
This fixes GIF animations that are stopped during user interaction on Qt and other
platforms using suspendActiveDOMObjectAndAnimations.
- page/Frame.cpp:
(WebCore::Frame::resumeActiveDOMObjectsAndAnimations):
- 9:35 AM Changeset in webkit [153430] by
-
- 2 edits in trunk/Tools
Add support infrastructure for iOS WebKit port
https://bugs.webkit.org/show_bug.cgi?id=119168
Reviewed by Ryosuke Niwa.
Implement support infrastructure towards building iOS WebKit.
- Scripts/webkitdirs.pm:
(xcodeSDKPlatformName): Added.
(determineConfigurationProductDir):
(builtDylibPathForName):
(willUseIOSDeviceSDKWhenBuilding): Added.
(willUseIOSSimulatorSDKWhenBuilding): Added.
(isIOSWebKit): Added.
(copyInspectorFrontendFiles):
- 9:34 AM Changeset in webkit [153429] by
-
- 4 edits in trunk/Source/WebCore
Made EGL useable by non-cairo ports.
https://bugs.webkit.org/show_bug.cgi?id=119177
Reviewed by Brent Fulgham.
- platform/graphics/cairo/GLContext.h:
- platform/graphics/egl/GLContextEGL.cpp:
(WebCore::GLContextEGL::GLContextEGL):
- platform/graphics/egl/GLContextEGL.h:
Protected Cairo-specific code with #if USE(CAIRO)
- 9:25 AM Changeset in webkit [153428] by
-
- 9 edits2 adds in trunk
CoordinatedGraphics: Add API to get and set the active state of a WebView
https://bugs.webkit.org/show_bug.cgi?id=119067
Patch by Sergio Correia <Sergio Correia> on 2013-07-29
Reviewed by Noam Rosenthal.
Source/WebCore:
Added a method to return whether a scene is active or not.
No new tests, no behavior change.
- platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h:
(WebCore::CoordinatedGraphicsScene::isActive): Added method to return the
active state of the scene.
Source/WebKit2:
A view being in the "active" state generally means that it is not in the
"background", although this definition can vary depending on the platform
under consideration.
This patch adds the following APIs to WKView:
- bool WKViewIsActive(WKViewRef)
This API accepts a WKViewRef as parameter and returns a boolean indicating
whether the given view is active.
- void WKViewSetIsActive(WKViewRef, bool)
This API accepts a WKViewRef and a boolean as parameteres, and it sets the
active state of the given view to the given boolean argument.
- UIProcess/API/C/CoordinatedGraphics/WKView.cpp:
(WKViewIsActive): API added.
(WKViewSetIsActive): Ditto.
- UIProcess/API/C/CoordinatedGraphics/WKView.h: Export aforementioned API.
- UIProcess/CoordinatedGraphics/WebView.cpp:
(WebKit::WebView::initialize): Use new setActive method.
(WebKit::WebView::setActive): Added method to set the active state of the
view.
(WebKit::WebView::isActive): Added method to return the active state of
view.
(WebKit::WebView::enterAcceleratedCompositingMode): Use new setActive
method.
(WebKit::WebView::exitAcceleratedCompositingMode): Ditto.
- UIProcess/CoordinatedGraphics/WebView.h: Added declarations of isActive
and setActive.
Tools:
Added API tests for WKViewIsActive and WKViewSetIsActive.
- TestWebKitAPI/PlatformEfl.cmake:
- TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive.cpp: Added.
(TestWebKitAPI::didFinishLoadForFrame):
(TestWebKitAPI::webProcessCrashed):
(TestWebKitAPI::webProcessRelaunched):
(TestWebKitAPI::TEST):
- TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive_Bundle.cpp:
Bundle added to allow crashing the WebProcess and testing the active state of a view
under such condition.
(TestWebKitAPI::WKViewIsActiveSetIsActiveTest::WKViewIsActiveSetIsActiveTest):
(TestWebKitAPI::WKViewIsActiveSetIsActiveTest::didReceiveMessage):
- 8:46 AM Changeset in webkit [153427] by
-
- 4 edits in trunk/Source
[ATK] Issues with edge cases when getting offsets for a text range in AtkText
https://bugs.webkit.org/show_bug.cgi?id=118908
Reviewed by Martin Robinson.
Source/WebCore:
Reimplement getSelectionOffsetsForObject() just in term of
Positions instead of using ranges, which makes it simpler and
works better. Also, make sure we use the right Node as reference
for the accessibility object by getting the proper one both for
text control objects (e.g. input, text area) and normal ones.
- accessibility/atk/WebKitAccessibleInterfaceText.cpp:
(getNodeForAccessibilityObject): New helper function to ensure we
always get the relevant object from the DOM tree for a given
accessibility object, in the context of the implementation of
AtkText, so it works both with Text Controls and other elements.
(getSelectionOffsetsForObject): Rewritten this function in terms
of VisiblePositions and avoiding weird operations with ranges, so
we have more control to fine tune the results and give more
accurate ones. Besides, now it works better with edge cases.
Source/WebKit/gtk:
- tests/testatk.c:
(runGetTextTests): Updated unit tests to check more cases of
calling the atk_text_get_text_*_offset() functions for WORD.
- 8:36 AM Changeset in webkit [153426] by
-
- 3 edits in trunk/Source/WebKit2
Remove duplicated LayerTreeHost::supportsAcceleratedCompositing
https://bugs.webkit.org/show_bug.cgi?id=118949
Patch by Jae Hyun Park <jae.park@company100.net> on 2013-07-29
Reviewed by Noam Rosenthal.
- WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
- WebProcess/WebPage/LayerTreeHost.h:
(WebKit::LayerTreeHost::supportsAcceleratedCompositing):
- 8:30 AM Changeset in webkit [153425] by
-
- 2 edits in trunk/LayoutTests
fast/spatial-navigation test fail on mac-wk2
https://bugs.webkit.org/show_bug.cgi?id=96438
This test now passes on Mac so we don't need to skip it any longer.
Reviewed by Antonio Gomes.
- platform/mac/TestExpectations:
- 7:37 AM Changeset in webkit [153424] by
-
- 5 edits in trunk/Source/WebCore
Clean up DragImage
https://bugs.webkit.org/show_bug.cgi?id=118981
Reviewed by Anders Carlsson.
- dom/Clipboard.h: Add forward declaration for the Range class. This was not necessary until now as the forward
declaration was introduced in the DragImage header, from where it's being removed due to not being required in that class.
- page/Frame.h: Ditto.
- platform/DragImage.cpp: Remove the unnecessary DragController and FontRenderingMode header inclusions.
The latter is already included in the header.
- platform/DragImage.h: Remove the forward declaration for the Range class - it's not used by the DragImage class at all.
- 6:50 AM Changeset in webkit [153423] by
-
- 2 edits in trunk/Source/WebCore/platform/gtk/po
Updated Telugu [te] Translations for WebKitGTK+ HEAD
https://bugs.webkit.org/show_bug.cgi?id=117501
Patch by Krishnababu Krothapalli <k.meetme@gmail.com> on 2013-07-29
Reviewed by Gustavo Noronha.
- te.po: Updated.
- 6:34 AM Changeset in webkit [153422] by
-
- 2 edits in trunk/Source/WebCore/platform/gtk/po
[l10n] [mr] Updated WebKitGTK+ Translation(s) in Marathi [mr] language
https://bugs.webkit.org/show_bug.cgi?id=119001
Patch by Sandeep Shedmake <sandeep.shedmake@gmail.com> on 2013-07-29
Reviewed by Gustavo Noronha.
- mr.po: Updated.
- 6:23 AM Changeset in webkit [153421] by
-
- 6 edits in trunk
[Automake] Remove references to non-existent *_CFLAGS and *_LIBS variables
https://bugs.webkit.org/show_bug.cgi?id=119212
Reviewed by Carlos Garcia Campos.
Source/WebKit2:
- GNUmakefile.am: Remove references to GLOBALDEPS_(CFLAGS|LIBS) and CLUTTER_(CFLAGS|LIBS)
variables that are not defined during the configuration process.
Tools:
- GNUmakefile.am: Remove references to GLOBALDEPS_(CFLAGS|LIBS) and CLUTTER_(CFLAGS|LIBS)
variables that are not defined during the configuration process.
- TestWebKitAPI/GNUmakefile.am: Ditto.
- WebKitTestRunner/GNUmakefile.am: Ditto.
- 12:45 AM Changeset in webkit [153420] by
-
- 2 edits in trunk/Source/WebCore
[EFL] Improve string use in ErrorsEfl
https://bugs.webkit.org/show_bug.cgi?id=119207
Reviewed by Christophe Dumez.
Use ASCIILiteral for constant strings becoming WTFStrings.
No behavior change.
- platform/efl/ErrorsEfl.cpp:
(WebCore::cancelledError):
(WebCore::blockedError):
(WebCore::cannotShowURLError):
(WebCore::interruptedForPolicyChangeError):
(WebCore::cannotShowMIMETypeError):
(WebCore::fileDoesNotExistError):
(WebCore::pluginWillHandleLoadError):
(WebCore::downloadCancelledByUserError):
(WebCore::printerNotFoundError):
(WebCore::invalidPageRangeToPrint):
- 12:17 AM Changeset in webkit [153419] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] Simplify context_menu_spelling_items_availability unit test
https://bugs.webkit.org/show_bug.cgi?id=119085
Reviewed by Gyuyoung Kim.
Use findContextMenuItem method to check whether the item
appears in context menu.
- UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:
(EWK2TextCheckerTest::findContextMenuItem):
Do not report failure inside the method.
It doesn't allow to test the negative test cases.
(EWK2TextCheckerTest::checkCorrectnessOfSpellingItems):
Use findContextMenuItem method.
(EWK2TextCheckerTest::toogleCheckSpellingWhileTyping):
(EWK2TextCheckerTest::selectLearnSpelling):
(EWK2TextCheckerTest::selectIgnoreSpelling):
Verify the return value of findContextMenuItem.
(TEST_F):
Reset wasContextMenuShown variable, it's needed after r152153.
Use waitUntilTrue method.
Jul 28, 2013:
- 11:23 PM Changeset in webkit [153418] by
-
- 2 edits in trunk/Source/WebCore
Don't update the text track override CSS every time a media element is created.
<http://webkit.org/b/119199>
<rdar://problem/14572855>
Reviewed by Darin Adler.
We should only have to update the CSS if the accessibility caption preferences are changed.
This was forcing a full style recalc in every Document any time a media element is instantiated.
- page/CaptionUserPreferencesMediaAF.cpp:
(WebCore::CaptionUserPreferencesMediaAF::setInterestedInCaptionPreferenceChanges):
- 9:37 PM Changeset in webkit [153417] by
-
- 4 edits2 copies in branches/safari-537-branch
Merged r153399. <rdar://problem/14549536>
- 9:27 PM Changeset in webkit [153416] by
-
- 8 edits in branches/safari-537-branch/Source/WebKit2
Merged r153404. <rdar://problem/14444331>
- 9:22 PM Changeset in webkit [153415] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r153402. <rdar://problem/14517068>
- 8:08 PM Changeset in webkit [153414] by
-
- 2 edits in trunk/Tools
Include <stdio.h> to declare perror()
https://bugs.webkit.org/show_bug.cgi?id=119198
Reviewed by Andreas Kling.
Silences an implicit declaration warning.
- DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c:
- 6:16 PM Changeset in webkit [153413] by
-
- 2 edits in trunk/Source/WebCore
Stop exporting Widget::frameRectsChanged()
https://bugs.webkit.org/show_bug.cgi?id=119196
Reviewed by Darin Adler.
The definition is inlined in a private header, so there's no need to
export a symbol to link against. On the Mac, since we compile with
-fvisibility-inlines-hidden, removing the symbol from the export file
silences an ld warning about exporting a hidden symbol.
- WebCore.exp.in: Removed ZN7WebCore6Widget17frameRectsChangedEv.
- 4:36 PM Changeset in webkit [153412] by
-
- 2 edits in trunk/Source/WebCore
Clean up CSSPrimitiveValue::equals a bit
https://bugs.webkit.org/show_bug.cgi?id=119195
Reviewed by Andreas Kling.
- css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::equals):
This should not change behavior, but is quite a bit clearer.
- 3:08 PM Changeset in webkit [153411] by
-
- 2 edits in trunk/LayoutTests
fast/forms/input-in-table-cell-no-value.html fails on platform without ENABLE(INPUT_TYPE_DATE)
https://bugs.webkit.org/show_bug.cgi?id=90987
This test now passes on Mac so we don't need to skip it any longer.
Reviewed by Anders Carlsson.
- platform/mac/TestExpectations:
- 11:04 AM Changeset in webkit [153410] by
-
- 3 edits in trunk/Source/JavaScriptCore
REGRESSION: Crash when opening Facebook.com
https://bugs.webkit.org/show_bug.cgi?id=119155
Reviewed by Andreas Kling.
Scope nodes are always objects, so we should be using SpecObjectOther
rather than SpecCellOther. Marking Scopes as CellOther leads to a
contradiction in the CFA, resulting in bogus codegen.
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
Jul 27, 2013:
- 11:48 PM Changeset in webkit [153409] by
-
- 6 edits in trunk
[EFL] Bump required version of EFL to 1.7
https://bugs.webkit.org/show_bug.cgi?id=119144
Reviewed by Christophe Dumez.
.:
We have supported 1.6 for Tizen build since r137203.
But Tizen now supports 1.7+ after Tizen released 2.0.
- Source/cmake/OptionsEfl.cmake:
Bumped EFL to 1.7 and removed promotion.
Source/WebCore:
- platform/efl/FileSystemEfl.cpp: Removed workaround code which was fixed at Eina 1.7
(WebCore::listDirectory):
Tools:
- MiniBrowser/efl/CMakeLists.txt: Bumped EFL to 1.7
- 10:14 PM Changeset in webkit [153408] by
-
- 19 edits in trunk/Source
Replace all uses of GraphicsLayer::create function with the one that takes a GraphicsLayerFactory
https://bugs.webkit.org/show_bug.cgi?id=119186
Patch by Jacky Jiang <zhajiang@blackberry.com> on 2013-07-27
Reviewed by Anders Carlsson.
Source/WebCore:
Remove GraphicsLayer::create(GraphicsLayerClient*) function since it's
been deprecated by r130072.
- WebCore.exp.in:
- WebCore.order:
- platform/graphics/GraphicsLayer.h:
- platform/graphics/blackberry/GraphicsLayerBlackBerry.cpp:
- platform/graphics/ca/GraphicsLayerCA.cpp:
- platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
Source/WebKit/blackberry:
Replace GraphicsLayer::create calls and add a new function WebPagePrivate::graphicsLayerFactory().
- Api/WebOverlay.cpp:
(BlackBerry::WebKit::WebOverlayPrivateWebKitThread::WebOverlayPrivateWebKitThread):
- Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::graphicsLayerFactory):
(BlackBerry::WebKit::WebPagePrivate::overlayLayer):
- Api/WebPage_p.h:
- WebKitSupport/FrameLayers.cpp:
(BlackBerry::WebKit::FrameLayers::addLayer):
- WebKitSupport/SelectionOverlay.cpp:
(BlackBerry::WebKit::SelectionOverlay::draw):
Source/WebKit/efl:
- WebCoreSupport/AcceleratedCompositingContextEfl.cpp:
(WebCore::AcceleratedCompositingContext::attachRootGraphicsLayer):
Source/WebKit/qt:
- WebCoreSupport/TextureMapperLayerClientQt.cpp:
(TextureMapperLayerClientQt::setRootGraphicsLayer):
Source/WebKit2:
- UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::getOrCreateLayer):
- 5:05 PM Changeset in webkit [153407] by
-
- 5 edits in trunk/Source/WebCore
HTMLParserScheduler gets into an inconsistent state when suspended for reasons
other than WillDeferLoading
https://bugs.webkit.org/show_bug.cgi?id=119172
Reviewed by Sam Weinig.
When loading is not deferred, even a suspended parser will be processing new data
from network, potentially starting its next chunk timer.
Limit suspending to when we can actually enforce it.
Here is what happens for each ReasonForSuspension:
- JavaScriptDebuggerPaused: continuing to parse is probably wrong, but in practice,
this is unlikely to happen while debugging, and wasn't properly prevented before
this patch anyway.
- WillDeferLoading: No change in behavior.
- DocumentWillBecomeInactive: This is about page cache, and documents are only allowed
to be cached when fully loaded.
- PageWillBeSuspended: This appears to be part of Frame::suspendActiveDOMObjectsAndAnimations()
implementation, I'm guessing that it is appropriate to continue loading.
- dom/Document.cpp:
(WebCore::Document::suspendScheduledTasks):
(WebCore::Document::resumeScheduledTasks):
Only suspend/resume parsing when loading is deferred. This is not expressed directly,
but it's important to do this to avoid executing JS behind alerts and other modal dialogs.
- html/parser/HTMLParserScheduler.h: Added m_suspended member variable for assertions.
- html/parser/HTMLParserScheduler.cpp:
(WebCore::HTMLParserScheduler::HTMLParserScheduler):
(WebCore::HTMLParserScheduler::continueNextChunkTimerFired):
(WebCore::HTMLParserScheduler::scheduleForResume):
(WebCore::HTMLParserScheduler::suspend):
(WebCore::HTMLParserScheduler::resume):
Update m_suspended and assert as appropriate. No behavior changes for release mode.
- page/Frame.cpp: (WebCore::Frame::suspendActiveDOMObjectsAndAnimations):
Added a FIXME.
- 5:04 PM Changeset in webkit [153406] by
-
- 6 edits in trunk/Source/WebCore
Make SuspendableTimer safer
https://bugs.webkit.org/show_bug.cgi?id=119127
Reviewed by Sam Weinig.
SuspendableTimer now enforces that it stays suspended until resumed (or until stopped
and started again). To ensure this, TimerBase is now a private base class, and parts of
its interface that clients use are reimplemented with suspend/resume in mind.
Derived classes are still allowed to override TimerBase virtual functions (notably
fired() and alignedFireTime()).
- dom/DocumentEventQueue.cpp:
(WebCore::DocumentEventQueueTimer): Removed an extraneous WTF_MAKE_NONCOPYABLE,
TimerBase has it already.
(WebCore::DocumentEventQueueTimer::create): Use our normal create() pattern.
(WebCore::DocumentEventQueue::DocumentEventQueue): Made the constructor private, accordingly.
(WebCore::DocumentEventQueue::cancelEvent): Use SuspendableTimer::cancel(), which
is a new name to disambiguate TimerBase::stop() and ActiveDOMObject::stop().
(WebCore::DocumentEventQueue::close): Ditto.
- page/DOMTimer.cpp:
(WebCore::DOMTimer::fired): Now that SuspendableTimer knows whether it's currently
suspended, assert that it's not.
(WebCore::DOMTimer::didStop): Separated ActiveDOMObject::stop() implementation from
additional cleanup, allowing for better SuspendableTimer encapsulation.
- page/DOMTimer.h: Added FINAL and OVVERIDE specifiers as appropriate.
- page/SuspendableTimer.h: Added FINAL (and OVERRIDE) qualifiers to ActiveDOMObject
methods. A derived class that wants to override current behavior is most likely not
a timer, and thus shouldn't be a derived class.
(WebCore::SuspendableTimer::isActive): SuspendableTimer with a next fire time is
active even if suspended, we shouldn't overwrite its saved data thinking that it's
inactive.
(WebCore::SuspendableTimer::isSuspended): Exposed to clients (m_suspended is no
longer debug only).
- page/SuspendableTimer.cpp:
(WebCore::SuspendableTimer::SuspendableTimer): Updated for new variable names.
(WebCore::SuspendableTimer::stop): This is ActiveDOMObject::stop(), which is called
before final destruction. We don't track this state directly, but can approximate
with setting m_suspended, so even if someone tries to start the timer afterwards,
it won't fire.
(WebCore::SuspendableTimer::suspend): Updated for new names.
(WebCore::SuspendableTimer::resume): Ditto.
(WebCore::SuspendableTimer::didStop): No-op default implementation for client hook.
(WebCore::SuspendableTimer::cancel): Equivalent of TimerBase::stop(), which also
works when suspended.
(WebCore::SuspendableTimer::startRepeating): Replacement for TimerBase function with
the same name, which works correctly when suspended. We don't want to actually start
the timer in this case.
(WebCore::SuspendableTimer::startOneShot): Ditto.
(WebCore::SuspendableTimer::repeatInterval): Ditto.
(WebCore::SuspendableTimer::augmentFireInterval): Ditto.
(WebCore::SuspendableTimer::augmentRepeatInterval): Ditto.
- 4:53 PM Changeset in webkit [153405] by
-
- 2 edits in branches/safari-537-branch/Source/ThirdParty
Merged r153403.
- 4:44 PM Changeset in webkit [153404] by
-
- 8 edits in trunk/Source/WebKit2
AX: VoiceOver not working with data detection page overlays
https://bugs.webkit.org/show_bug.cgi?id=118680
Reviewed by Sam Weinig.
Expose API in BundlePageOverlay so that accessibility attributes can be retrieved through the overlay.
This requires two methods in a new callback struct. One to copy the attribute names, and the other to
copy the attribute values. I've folded both parameterized and non-parameterized attribute names into one method
with a boolean to determine which one should be used. The non-parameterized attributes are not used or passed to the
overlay at this time as there are no clients with such a need.
- WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
(PageOverlayClientImpl::setAccessibilityClient):
(PageOverlayClientImpl::PageOverlayClientImpl):
(PageOverlayClientImpl::copyAccessibilityAttributeValue):
(PageOverlayClientImpl::copyAccessibilityAttributeNames):
(WKBundlePageOverlaySetAccessibilityClient):
- WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
- WebProcess/WebPage/PageOverlay.cpp:
(WebKit::PageOverlay::copyAccessibilityAttributeValue):
(WebKit::PageOverlay::copyAccessibilityAttributeNames):
- WebProcess/WebPage/PageOverlay.h:
(WebKit::PageOverlay::Client::copyAccessibilityAttributeValue):
(WebKit::PageOverlay::Client::copyAccessibilityAttributeNames):
(WebKit::PageOverlay::client):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::pageOverlayCopyAccessibilityAttributeValue):
(WebKit::WebPage::pageOverlayCopyAccessibilityAttributesNames):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
(-[WKAccessibilityWebPageObject accessibilityParameterizedAttributeNames]):
(-[WKAccessibilityWebPageObject _convertScreenPointToWindow:]):
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):
- 4:20 PM Changeset in webkit [153403] by
-
- 2 edits in trunk/Source/ThirdParty
Fix builds against an SDK.
- gtest/xcode/Config/FrameworkTarget.xcconfig: Ensure that gtest.framework is installed
in a location compatible with the SDK generation process.
- 4:14 PM Changeset in webkit [153402] by
-
- 2 edits in trunk/Source/WebKit2
If entering fullscreen for a window fails, don't leave things in a bad state
https://bugs.webkit.org/show_bug.cgi?id=119179
<rdar://problem/14517068>
Reviewed by Sam Weinig.
On Lion, attempting to take a video fullscreen when the Safari window is already
fullscreen can sometimes fail, and AppKit informs us via windowDidFailToEnterFullScreen:
When this happens we have to undo the work done when entering fullscreen, to
avoid leaving things in a bad state.
- UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
- 3:23 PM Changeset in webkit [153401] by
-
- 2 edits in trunk/Source/WebCore
Add assertions for CSSPrimitiveValue's m_value.valueID accessor
https://bugs.webkit.org/show_bug.cgi?id=119180
Reviewed by Andreas Kling.
- css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::operator CSSReflectionDirection):
(WebCore::CSSPrimitiveValue::operator ColumnSpan):
(WebCore::CSSPrimitiveValue::operator PrintColorAdjust):
(WebCore::CSSPrimitiveValue::operator EBorderStyle):
(WebCore::CSSPrimitiveValue::operator OutlineIsAuto):
(WebCore::CSSPrimitiveValue::operator CompositeOperator):
(WebCore::CSSPrimitiveValue::operator ControlPart):
(WebCore::CSSPrimitiveValue::operator EBackfaceVisibility):
(WebCore::CSSPrimitiveValue::operator EFillAttachment):
(WebCore::CSSPrimitiveValue::operator EFillBox):
(WebCore::CSSPrimitiveValue::operator EFillRepeat):
(WebCore::CSSPrimitiveValue::operator EBoxPack):
(WebCore::CSSPrimitiveValue::operator EBoxAlignment):
(WebCore::CSSPrimitiveValue::operator EBoxDecorationBreak):
(WebCore::CSSPrimitiveValue::operator BackgroundEdgeOrigin):
(WebCore::CSSPrimitiveValue::operator EBoxSizing):
(WebCore::CSSPrimitiveValue::operator EBoxDirection):
(WebCore::CSSPrimitiveValue::operator EBoxLines):
(WebCore::CSSPrimitiveValue::operator EBoxOrient):
(WebCore::CSSPrimitiveValue::operator ECaptionSide):
(WebCore::CSSPrimitiveValue::operator EClear):
(WebCore::CSSPrimitiveValue::operator ECursor):
(WebCore::CSSPrimitiveValue::operator CursorVisibility):
(WebCore::CSSPrimitiveValue::operator EDisplay):
(WebCore::CSSPrimitiveValue::operator EEmptyCell):
(WebCore::CSSPrimitiveValue::operator EAlignItems):
(WebCore::CSSPrimitiveValue::operator EJustifyContent):
(WebCore::CSSPrimitiveValue::operator EFlexDirection):
(WebCore::CSSPrimitiveValue::operator EAlignContent):
(WebCore::CSSPrimitiveValue::operator EFlexWrap):
(WebCore::CSSPrimitiveValue::operator EFloat):
(WebCore::CSSPrimitiveValue::operator LineBreak):
(WebCore::CSSPrimitiveValue::operator EListStylePosition):
(WebCore::CSSPrimitiveValue::operator EListStyleType):
(WebCore::CSSPrimitiveValue::operator EMarginCollapse):
(WebCore::CSSPrimitiveValue::operator EMarqueeBehavior):
(WebCore::CSSPrimitiveValue::operator RegionFragment):
(WebCore::CSSPrimitiveValue::operator EMarqueeDirection):
(WebCore::CSSPrimitiveValue::operator ENBSPMode):
(WebCore::CSSPrimitiveValue::operator EOverflow):
(WebCore::CSSPrimitiveValue::operator EPageBreak):
(WebCore::CSSPrimitiveValue::operator EPosition):
(WebCore::CSSPrimitiveValue::operator EResize):
(WebCore::CSSPrimitiveValue::operator ETableLayout):
(WebCore::CSSPrimitiveValue::operator ETextAlign):
(WebCore::CSSPrimitiveValue::operator TextAlignLast):
(WebCore::CSSPrimitiveValue::operator TextJustify):
(WebCore::CSSPrimitiveValue::operator TextDecoration):
(WebCore::CSSPrimitiveValue::operator TextDecorationStyle):
(WebCore::CSSPrimitiveValue::operator TextUnderlinePosition):
(WebCore::CSSPrimitiveValue::operator ETextSecurity):
(WebCore::CSSPrimitiveValue::operator ETextTransform):
(WebCore::CSSPrimitiveValue::operator EUnicodeBidi):
(WebCore::CSSPrimitiveValue::operator EUserDrag):
(WebCore::CSSPrimitiveValue::operator EUserModify):
(WebCore::CSSPrimitiveValue::operator EUserSelect):
(WebCore::CSSPrimitiveValue::operator EVerticalAlign):
(WebCore::CSSPrimitiveValue::operator EVisibility):
(WebCore::CSSPrimitiveValue::operator EWhiteSpace):
(WebCore::CSSPrimitiveValue::operator EWordBreak):
(WebCore::CSSPrimitiveValue::operator EOverflowWrap):
(WebCore::CSSPrimitiveValue::operator TextDirection):
(WebCore::CSSPrimitiveValue::operator WritingMode):
(WebCore::CSSPrimitiveValue::operator TextCombine):
(WebCore::CSSPrimitiveValue::operator RubyPosition):
(WebCore::CSSPrimitiveValue::operator TextEmphasisPosition):
(WebCore::CSSPrimitiveValue::operator TextOverflow):
(WebCore::CSSPrimitiveValue::operator TextEmphasisFill):
(WebCore::CSSPrimitiveValue::operator TextEmphasisMark):
(WebCore::CSSPrimitiveValue::operator TextOrientation):
(WebCore::CSSPrimitiveValue::operator EPointerEvents):
(WebCore::CSSPrimitiveValue::operator FontDescription::Kerning):
(WebCore::CSSPrimitiveValue::operator FontSmoothingMode):
(WebCore::CSSPrimitiveValue::operator FontWeight):
(WebCore::CSSPrimitiveValue::operator FontItalic):
(WebCore::CSSPrimitiveValue::operator FontSmallCaps):
(WebCore::CSSPrimitiveValue::operator TextRenderingMode):
(WebCore::CSSPrimitiveValue::operator ColorSpace):
(WebCore::CSSPrimitiveValue::operator Hyphens):
(WebCore::CSSPrimitiveValue::operator LineSnap):
(WebCore::CSSPrimitiveValue::operator LineAlign):
(WebCore::CSSPrimitiveValue::operator Order):
(WebCore::CSSPrimitiveValue::operator ESpeak):
(WebCore::CSSPrimitiveValue::operator BlendMode):
(WebCore::CSSPrimitiveValue::operator LineCap):
(WebCore::CSSPrimitiveValue::operator LineJoin):
(WebCore::CSSPrimitiveValue::operator WindRule):
(WebCore::CSSPrimitiveValue::operator EAlignmentBaseline):
(WebCore::CSSPrimitiveValue::operator EBorderCollapse):
(WebCore::CSSPrimitiveValue::operator EBorderFit):
(WebCore::CSSPrimitiveValue::operator EImageRendering):
(WebCore::CSSPrimitiveValue::operator ETransformStyle3D):
(WebCore::CSSPrimitiveValue::operator ColumnAxis):
(WebCore::CSSPrimitiveValue::operator ColumnProgression):
(WebCore::CSSPrimitiveValue::operator WrapFlow):
(WebCore::CSSPrimitiveValue::operator WrapThrough):
(WebCore::CSSPrimitiveValue::operator GridAutoFlow):
(WebCore::CSSPrimitiveValue::operator EBufferedRendering):
(WebCore::CSSPrimitiveValue::operator EColorInterpolation):
(WebCore::CSSPrimitiveValue::operator EColorRendering):
(WebCore::CSSPrimitiveValue::operator EDominantBaseline):
(WebCore::CSSPrimitiveValue::operator EShapeRendering):
(WebCore::CSSPrimitiveValue::operator ETextAnchor):
(WebCore::CSSPrimitiveValue::operator SVGWritingMode):
(WebCore::CSSPrimitiveValue::operator EVectorEffect):
(WebCore::CSSPrimitiveValue::operator EMaskType):
Assert that the CSSPrimitiveValue is holding a CSSValueID before accessing it.
- 2:40 PM Changeset in webkit [153400] by
-
- 2 edits in trunk/Source/WTF
REGRESSION(r153380): Can't open messages on Gmail
https://bugs.webkit.org/show_bug.cgi?id=119165
Patch by Ryosuke Niwa <rniwa@webkit.org> on 2013-07-27
Reviewed by Andreas Kling.
This bug was caused by r153380. The bug doesn't reproduce as long as WebKit is built by clang 4.2 and later
or final is disabled (it could be clang 4.1 and later but we don't have information about that).
Fix the bug by disabling final on earlier versions of clang. Unfortunately we can only check versions of
Apple clang since clang_major and clang_minor are vendor dependent.
- wtf/Compiler.h:
- 1:49 PM Changeset in webkit [153399] by
-
- 4 edits2 adds in trunk
Stop pretending to support <string> for text-align.
https://bugs.webkit.org/show_bug.cgi?id=119107
Reviewed by Andreas Kling.
Source/WebCore:
Test: fast/css/text-align-string-crash.html
- css/CSSParser.cpp:
(WebCore::CSSParser::parseValue):
Stop pretending to support <string> for text-align.
- css/DeprecatedStyleBuilder.cpp:
(WebCore::ApplyPropertyTextAlign::applyValue):
ASSERT that only value IDs get passed.
LayoutTests:
- fast/css/text-align-string-crash-expected.txt: Added.
- fast/css/text-align-string-crash.html: Added.
Jul 26, 2013:
- 9:48 PM Changeset in webkit [153398] by
-
- 5 edits in trunk/Source/WebCore
Introduce toSVGRectElement(), use it
https://bugs.webkit.org/show_bug.cgi?id=119126
Reviewed by Andreas Kling.
As a step to change static_cast with toSVGXXX, static_cast<SVGRectElement*> can
be changed with toSVGRectElement().
No new tests, no behavior change.
- rendering/svg/RenderSVGRect.cpp:
(WebCore::RenderSVGRect::updateShapeFromElement):
- rendering/svg/SVGPathData.cpp:
(WebCore::updatePathFromRectElement):
- rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::operator<<):
- svg/SVGRectElement.h:
(WebCore::toSVGRectElement):
- 6:17 PM Changeset in webkit [153397] by
-
- 4 edits in trunk/Source/WebCore
With frame flattening on, too many resize events fired if document is resized in onresize handler.
https://bugs.webkit.org/show_bug.cgi?id=119075
Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2013-07-26
Reviewed by Simon Fraser.
With http://trac.webkit.org/changeset/149287, WebCore also sends resize event in FrameView::setFrameRect. When
flattening an iframe, setFrameRect could be called multiple times from RenderFrameBase::layoutWithFlattening and
we could get multiple resize events. This patch adds a flag in FrameView to disallow sending resize events if
we are inside layoutWithFlattening. The resize event will be sent in performPostLayoutTasks after the iframe
is done laying out.
Manually tested by verifying the rendering slowness in www.hi-pda.com is fixed when frame flattening is enabled.
- page/FrameView.cpp:
(WebCore::FrameView::FrameView):
(WebCore::FrameView::setFrameRect):
- page/FrameView.h:
(WebCore::FrameView::setResizeEventAllowed):
(WebCore::FrameView::resizeEventAllowed):
- rendering/RenderFrameBase.cpp:
(WebCore::RenderFrameBase::layoutWithFlattening):
- 5:57 PM Changeset in webkit [153396] by
-
- 10 edits2 adds in trunk
Allow new transitions to run even when controller is suspended
https://bugs.webkit.org/show_bug.cgi?id=119171
<rdar://problem/14511404>
Reviewed by Simon Fraser.
Source/WebCore:
Expose a new property on AnimationController that allows newly created
animations to run even if the controller says it is suspended. See WebKit
ChangeLog for more details.
Test: transitions/created-while-suspended.html
- WebCore.exp.in: Export the new methods so WebView can use them.
- page/animation/AnimationController.cpp:
(WebCore::AnimationControllerPrivate::AnimationControllerPrivate): Initialize new flag to false.
(WebCore::AnimationControllerPrivate::startAnimationsIfNotSuspended): Check new flag is not true.
(WebCore::AnimationControllerPrivate::setAllowsNewAnimationsWhileSuspended): Expose setter.
(WebCore::AnimationController::allowsNewAnimationsWhileSuspended): "Public" getter.
(WebCore::AnimationController::setAllowsNewAnimationsWhileSuspended): "Public" setter.
- page/animation/AnimationController.h:
- page/animation/AnimationControllerPrivate.h:
(WebCore::AnimationControllerPrivate::allowsNewAnimationsWhileSuspended):
- page/animation/CompositeAnimation.cpp:
(WebCore::CompositeAnimation::CompositeAnimation): Only suspend if new flag is false. Everything else
relies on the m_suspended flag, so the real code change is this one line.
Source/WebKit/mac:
Expose a new SPI on WebView that triggers the (buggy) old behaviour
for animations, such that any newly created animations will start even
when the document is supposedly suspended. It turns out that client content was
unknowingly relying on this behaviour - e.g. suspending a view, loading a
bunch of new content, bringing the view on screen and then unsuspending. In this
situation, we were not running CSS transitions, because the page was suspended.
However, JS was still triggering them, and content was expecting a transitionEnd event.
- WebView/WebView.mm:
(-[WebView allowsNewCSSAnimationsWhileSuspended]): Calls into AnimationController.
(-[WebView setAllowsNewCSSAnimationsWhileSuspended:]): Ditto.
- WebView/WebViewPrivate.h: New methods listed above.
LayoutTests:
This is actually a test to make sure this fix didn't break anything. There is no
way to trigger the new behaviour from the test system (or from Safari).
- 5:24 PM Changeset in webkit [153395] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit/mac
Merged r153379. <rdar://problem/14554723>
- 5:22 PM Changeset in webkit [153394] by
-
- 16 edits in branches/safari-537-branch/Source
Merged r153378. <rdar://problem/14549021>
- 4:54 PM Changeset in webkit [153393] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153349. <rdar://problem/14545393>
- 4:51 PM Changeset in webkit [153392] by
-
- 3 edits2 copies in branches/safari-537-branch
Merged r153366. <rdar://problem/14556358>
- 4:48 PM Changeset in webkit [153391] by
-
- 5 edits1 copy in branches/safari-537-branch
Merged r153344. <rdar://problem/13439291>
- 4:46 PM Changeset in webkit [153390] by
-
- 5 edits1 copy in branches/safari-537-branch
Merged r153107. <rdar://problem/14494064>
- 4:43 PM Changeset in webkit [153389] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153102. <rdar://problem/14433205>
- 4:41 PM Changeset in webkit [153388] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r152905. <rdar://problem/14489987>
- 4:19 PM Changeset in webkit [153387] by
-
- 2 edits in trunk/Source/WTF
ASSERT failure in wtf/CheckedBoolean.h line 43 on Windows
https://bugs.webkit.org/show_bug.cgi?id=119170
Reviewed by Michael Saboff.
Added a copy constructor to CheckedBoolean.
- wtf/CheckedBoolean.h:
(CheckedBoolean::CheckedBoolean):
- 4:00 PM Changeset in webkit [153386] by
-
- 3 edits6 adds2 deletes in trunk/LayoutTests
[CSS Shapes] New positioning model: support for polygon shape-outside
https://bugs.webkit.org/show_bug.cgi?id=118085
Patch by Bem Jones-Bey <Bem Jones-Bey> on 2013-07-26
Reviewed by Dirk Schulze.
Update polygon tests to work for new positioning model and migrate
them to be W3C spec tests. Thus, they have been imported from the
CSSWG repository now.
- TestExpectations: Remove skip for replaced test.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-000-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-000.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-001-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-001.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-002-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-polygon-002.html: Added.
- csswg/submitted/shapes/shape-outside/w3c-import.log:
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-polygon-expected.html: Removed.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-polygon.html: Removed.
- 3:54 PM Changeset in webkit [153385] by
-
- 2 edits in trunk/Source/ThirdParty/ANGLE
Added module definition file for building libEGL.
https://bugs.webkit.org/show_bug.cgi?id=119162
Reviewed by Brent Fulgham.
- ANGLE.vcxproj/libEGLCommon.props: Added reference to libEGL.def.
- 2:57 PM Changeset in webkit [153384] by
-
- 2 edits in trunk/Source/WebCore
[Windows] Unreviewed build fix.
- platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::createMetadataKeyNames): Do not include Media Selection
synbols when building without Media Selection API.
- 2:21 PM Changeset in webkit [153383] by
-
- 6 edits in trunk
REGRESSION(FTL?): Crashes in plugin tests
https://bugs.webkit.org/show_bug.cgi?id=119141
Reviewed by Michael Saboff.
Source/JavaScriptCore:
Re-export getStackTrace
- interpreter/Interpreter.h:
Source/WebCore:
Getting the correct semantics to appease the inspector is fairly
awful with the iterator system. For the time being lets just revert
to requesting a full stack trace as we did in the past.
- bindings/js/ScriptCallStackFactory.cpp:
(WebCore::createScriptCallStack):
LayoutTests:
Bring back plugin tests
- platform/mac/TestExpectations:
- 2:17 PM Changeset in webkit [153382] by
-
- 3 edits in trunk/Source/WebCore
[Windows] Unreviewed build fix.
Correct build when targeting a release that does not have the AVCF
Legible Output infrastructure.
- platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h: Exclude
a soft-link target when the API doesn't exist.
- platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
Correct include options for non-Legible Output supporting environments.
(WebCore::MediaPlayerPrivateAVFoundationCF::processLegacyClosedCaptionsTracks):
Prevent build failure when building with legacy caption support.
- 2:12 PM Changeset in webkit [153381] by
-
- 6 edits6 adds in trunk
REGRESSION: Crash when opening a message on Gmail
https://bugs.webkit.org/show_bug.cgi?id=119105
Source/JavaScriptCore:
Reviewed by Oliver Hunt and Mark Hahnenberg.
- GetById patching in the DFG needs to be more disciplined about how it derives the slow path.
- Fix some dumping code thread safety issues.
- bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::dump):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
- dfg/DFGRepatch.cpp:
(JSC::DFG::getPolymorphicStructureList):
(JSC::DFG::tryBuildGetByIDList):
LayoutTests:
Reviewed by Oliver Hunt and Mark Hahnenberg.
- fast/js/dfg-get-by-id-unset-then-proto-less-warmup.html: Added.
- fast/js/dfg-get-by-id-unset-then-proto-more-warmup.html: Added.
- fast/js/dfg-get-by-id-unset-then-proto.html: Added.
- fast/js/jsc-test-list
- fast/js/script-tests/dfg-get-by-id-unset-then-proto-less-warmup.js: Added.
(foo):
(Blah):
- fast/js/script-tests/dfg-get-by-id-unset-then-proto-more-warmup.js: Added.
(foo):
(Blah):
- fast/js/script-tests/dfg-get-by-id-unset-then-proto.js: Added.
(foo):
(Blah):
- 1:41 PM Changeset in webkit [153380] by
-
- 102 edits in trunk
Apply FINAL to the RenderObject hierarchy.
<http://webkit.org/b/115977>
Mostly from Blink r148795 by <cevans@chromium.org>
<http://src.chromium.org/viewvc/blink?view=revision&revision=148795>
- rendering/: Beat things with the FINAL stick.
- WebCore.exp.in: Export a now-needed symbol.
- 1:39 PM Changeset in webkit [153379] by
-
- 2 edits in trunk/Source/WebKit/mac
Add another method that we need to set aside subviews for
https://bugs.webkit.org/show_bug.cgi?id=119157
<rdar://problem/14554723>
Reviewed by Beth Dakin.
- WebView/WebHTMLView.mm:
(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inContext:topView:]):
(-[WebHTMLView _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:]):
- 1:09 PM Changeset in webkit [153378] by
-
- 16 edits in trunk/Source
Add a mode where autosizing fixes the FrameView height to at least the WKView height
https://bugs.webkit.org/show_bug.cgi?id=119104
<rdar://problem/14549021>
Reviewed by Anders Carlsson.
- WebCore.exp.in: Export FrameView::setAutoSizeFixedMinimumHeight.
- page/FrameView.cpp:
(WebCore::FrameView::FrameView):
Initialize m_autoSizeFixedMinimumHeight to 0.
(WebCore::FrameView::autoSizeIfEnabled):
Increase the FrameView height to m_autoSizeFixedMinimumHeight if necessary,
and do another layout. Store the computed intrinsic content size.
(WebCore::FrameView::setAutoSizeFixedMinimumHeight): Added.
- page/FrameView.h:
(WebCore::FrameView::autoSizingIntrinsicContentSize): Added.
- Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
- Shared/WebPageCreationParameters.h:
Add autoSizingShouldExpandToViewHeight parameter.
- UIProcess/API/mac/WKView.mm:
(-[WKView minimumWidthForAutoLayout]):
(-[WKView setMinimumWidthForAutoLayout:]):
Un-deprecate these as they're still useful if not sending a height.
(-[WKView shouldExpandToViewHeightForAutoLayout]):
(-[WKView setShouldExpandToViewHeightForAutoLayout:]):
- UIProcess/API/mac/WKViewPrivate.h:
New property, forward to WebPageProxy.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setAutoSizingShouldExpandToViewHeight):
- UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::autoSizingShouldExpandToViewHeight):
New property, forward to WebPage.
- WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
If enabled, update the FrameView's autoSizeFixedMinimumHeight.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::setAutoSizingShouldExpandToViewHeight):
- WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::autoSizingShouldExpandToViewHeight):
New property; if enabled, set FrameView's autoSizeFixedMinimumHeight,
otherwise reset it to 0.
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeTimerFired):
(WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
Retrieve intrinsic content size explicitly from the FrameView, as
it may not have used it as its final contentsSize if
autoSizeFixedMinimumHeight is set.
Set the WebPage's size in case the load is committed so that the
WebFrameLoaderClient doesn't reset us to the wrong size.
Update autoSizeFixedMinimumHeight if enabled when the view size changes.
- 12:19 PM Changeset in webkit [153377] by
-
- 2 edits in trunk/Source/WebCore
[Windows] Remove workarounds now that rdar://problem/14390466 is fixed.
https://bugs.webkit.org/show_bug.cgi?id=119150
Reviewed by Anders Carlsson.
- platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::AVFWrapper::createPlayer): Remove workaround to add legible output
after player is created.
(WebCore::AVFWrapper::createPlayerItem): Remove workaround to delay adding
legible output until player is created.
(WebCore::AVFWrapper::platformLayer): Get rid of unused temporary.
- 12:06 PM Changeset in webkit [153376] by
-
- 4 edits in trunk/Tools
WKTR should know about the JSC extensions to testRunner
https://bugs.webkit.org/show_bug.cgi?id=119154
Reviewed by Mark Hahnenberg and Geoffrey Garen.
This makes some fast/js tests pass.
- WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::numberOfDFGCompiles):
(WTR::TestRunner::neverInlineFunction):
- WebKitTestRunner/InjectedBundle/TestRunner.h:
- 11:17 AM Changeset in webkit [153375] by
-
- 2 edits in trunk/Source/JavaScriptCore
[mips] Fix LLINT build for mips backend
https://bugs.webkit.org/show_bug.cgi?id=119152
Patch by Balazs Kilvady <kilvadyb@homejinni.com> on 2013-07-26
Reviewed by Oliver Hunt.
- offlineasm/mips.rb:
- 11:07 AM Changeset in webkit [153374] by
-
- 4 edits3 adds in trunk
Setting a large numeric property on an object causes it to allocate a huge backing store
https://bugs.webkit.org/show_bug.cgi?id=118914
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
There are two distinct actions that we're trying to optimize for:
new Array(100000);
and:
a = [];
a[100000] = 42;
In the first case, the programmer has indicated that they expect this Array to be very big,
so they should get a contiguous array up until some threshold, above which we perform density
calculations to see if it is indeed dense enough to warrant being contiguous.
In the second case, the programmer hasn't indicated anything about the size of the Array, so
we should be more conservative and assume it should be sparse until we've proven otherwise.
Currently both of those cases are handled by MIN_SPARSE_ARRAY_INDEX. We should distinguish
between them for the purposes of not over-allocating large backing stores like we see on
http://www.peekanalytics.com/burgerjoints/
The way that we'll do this is to keep the MIN_SPARSE_ARRAY_INDEX for the first case, and
introduce a new heuristic for the second case. If we are putting to an index above a certain
threshold (say, 1000) and it is beyond the length of the array, then we will use a sparse
map instead. So for example, in the second case above the empty array has a blank indexing
type and a length of 0. We put-by-val to an index > 1000 and > a.length, so we'll use a sparse map.
This fix is ~800x speedup on the accompanying regression test :-o
- runtime/ArrayConventions.h:
(JSC::indexIsSufficientlyBeyondLengthForSparseMap):
- runtime/JSObject.cpp:
(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::putByIndexBeyondVectorLengthWithArrayStorage):
(JSC::JSObject::putByIndexBeyondVectorLength):
(JSC::JSObject::putDirectIndexBeyondVectorLengthWithArrayStorage):
LayoutTests:
Added new regression test for put-by-val-ing to a blank indexing type with a large index.
This fix is ~800x speedup on this regression test :-o
- fast/js/regress/put-by-val-large-index-blank-indexing-type.html: Added.
- fast/js/regress/script-tests/put-by-val-large-index-blank-indexing-type.js: Added.
- 9:22 AM Changeset in webkit [153373] by
-
- 3 edits in trunk/Source/WebCore
[Windows] Unreviewed gardening.
- WebCore.vcxproj/WebCore.vcxproj: Add missing header file to ease code viewing.
- WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
- 8:19 AM Changeset in webkit [153372] by
-
- 2 edits in trunk/Source/WebCore
[BlackBerry] LayerTiler fails to render layer after waking up
https://bugs.webkit.org/show_bug.cgi?id=119146
Reviewed by George Staikos.
When the application is backgrounded, all tiles are freed up to
release memory back to the system. We also mark the contents as dirty
in LayerTiler::deleteTextures() so tiles will be repopulated when
waking up again.
The problem was caused by an optimization to avoid re-rendering tiles
repeatedly until the UI thread catches up with the fact that we have
indeed rendered those tiles (which will happen when the UI thread next
composites a frame).
When contents are dirty, we're not supposed to perform this
optimization (i.e. we're not supposed to skip rendering) because the
appearance of the layer has changed, so we do need to render those
tiles. Unfortunately, the code that was supposed to forget the list of
tiles rendered was in a conditional, "if (frontVisibility)", which
happened to be false sometimes when the app woke up again. So we ended
up perpetually skipping those render jobs, and the UI thread kept
yelling at us to render them.
Fixed by unconditionally dropping the list of tiles rendered when
contents are dirty.
This can't be detected without pixel tests, which BB DRT currently
doesn't support.
JIRA 452460
- platform/graphics/blackberry/LayerTiler.cpp:
(WebCore::LayerVisibility::clearTilesRendered):
(WebCore::LayerTiler::updateTextureContentsIfNeeded):
- 7:41 AM Changeset in webkit [153371] by
-
- 3 edits in trunk/Source/JavaScriptCore
REGRESSION(FTL): Fix lots of crashes in sh4 baseline JIT.
https://bugs.webkit.org/show_bug.cgi?id=119148
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-07-26
Reviewed by Csaba Osztrogonác.
- jit/JSInterfaceJIT.h: "secondArgumentRegister" is wrong for sh4.
- llint/LowLevelInterpreter32_64.asm: "move t0, a0" is missing
in nativeCallTrampoline for sh4. Reuse MIPS implementation to avoid
code duplication.
- 3:33 AM Changeset in webkit [153370] by
-
- 2 edits in trunk/Source/JavaScriptCore
REGRESSION(FTL): Crash in sh4 baseline JIT.
https://bugs.webkit.org/show_bug.cgi?id=119138
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-07-26
Reviewed by Csaba Osztrogonác.
This crash is due to incomplete report of r150146 and r148474.
- jit/JITStubsSH4.h:
- 1:34 AM Changeset in webkit [153369] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed.
- Target.pri: Adding missing DFG files to the Qt build.
Jul 25, 2013:
- 10:54 PM Changeset in webkit [153368] by
-
- 3 edits in trunk/Source/JavaScriptCore
GTK and Qt buildfix after the intrusive win buildfix r153360.
- GNUmakefile.list.am:
- Target.pri:
- 9:35 PM Changeset in webkit [153367] by
-
- 3 edits in trunk/Source/WebCore
Remove unused HTMLTextFormControlElement::textRendererAfterUpdateLayout
https://bugs.webkit.org/show_bug.cgi?id=119121
Reviewed by Andreas Kling.
Merge https://chromium.googlesource.com/chromium/blink/+/3255ce725711707fe1fd18be91a6d06789517220.
- html/HTMLTextFormControlElement.cpp:
- html/HTMLTextFormControlElement.h:
- 8:59 PM Changeset in webkit [153366] by
-
- 3 edits2 adds in trunk
Fix document leak when selection is created inside the document
https://bugs.webkit.org/show_bug.cgi?id=119122
Reviewed by Andreas Kling.
Source/WebCore:
Merge https://chromium.googlesource.com/chromium/blink/+/b908cb4c8da93316d787de31c93f2a43de332a10
The bug was caused by FrameSelection::m_previousCaretNode holding onto a Node, leaking its document.
Fixed the bug by explicitly clearing it in FrameSelection::prepareForDestruction.
Test: editing/selection/leak-document-with-selection-inside.html
- editing/FrameSelection.cpp:
(WebCore::FrameSelection::prepareForDestruction):
LayoutTests:
Added a regression test.
- editing/selection/leak-document-with-selection-inside-expected.txt: Added.
- editing/selection/leak-document-with-selection-inside.html: Added.
- 6:48 PM Changeset in webkit [153365] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed, fix build break after r153360.
- CMakeLists.txt: Add CommonSlowPathsExceptions.cpp.
- 6:41 PM Changeset in webkit [153364] by
-
- 6 edits in trunk/Source
Unreviewed build fix, AppleWin port.
- WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
- JavaScriptCore.vcxproj/copy-files.cmd:
- 6:35 PM Changeset in webkit [153363] by
-
- 3 edits in branches/safari-537-branch/Tools
Merged r153353. <rdar://problem/13562022>
- 6:24 PM Changeset in webkit [153362] by
-
- 3 edits2 moves2 adds2 deletes in trunk/LayoutTests
[CSS Shapes] New positioning model: support for inset rectangle shape-outside
https://bugs.webkit.org/show_bug.cgi?id=118083
Patch by Bem Jones-Bey <Bem Jones-Bey> on 2013-07-25
Reviewed by Dirk Schulze.
Update inset-rectangle tests to work with new positioning model.
Removed some test cases that aren't really needed or aren't applicable
with the new model. These test cases live in the CSS WG's repo now, so
they've been imported here.
- TestExpectations: Remove skip lines for replaced tests.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-000-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-000.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-001-expected.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-inset-rectangle-expected.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-inset-rectangle-001.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-inset-rectangle.html.
- csswg/submitted/shapes/shape-outside/w3c-import.log:
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-inset-rectangle-expected.html: Removed.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-inset-rectangle.html: Removed.
- 5:40 PM Changeset in webkit [153361] by
-
- 3 edits in trunk/Source/JavaScriptCore
Unreviewed. Followup to r153360.
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
- 5:22 PM Changeset in webkit [153360] by
-
- 6 edits2 adds in trunk/Source/JavaScriptCore
[Windows] Speculative build fix.
Moved interpreterThrowInCaller() out of LLintExceptions.cpp into new CommonSlowPathsExceptions.cpp
that is always compiled. Made LLInt::returnToThrow() conditional on LLINT being enabled.
Roger will add the new files to Windows project in another checkin.
- JavaScriptCore.xcodeproj/project.pbxproj:
- llint/LLIntExceptions.cpp:
- llint/LLIntExceptions.h:
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
- runtime/CommonSlowPathsExceptions.cpp: Added.
(JSC::CommonSlowPaths::interpreterThrowInCaller):
- runtime/CommonSlowPathsExceptions.h: Added.
- 5:19 PM Changeset in webkit [153359] by
-
- 3 edits in trunk/Source/JavaScriptCore
[Windows] Unreviewed build fix.
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: Add missing IntendedStructureChange.h,.cpp and
parser/SourceCode.h,.cpp.
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: Ditto.
- 5:18 PM Changeset in webkit [153358] by
-
- 7 edits in trunk/Source/WTF
[Windows] Unreviewed build fix.
- WTF.vcxproj/WTF.vcxproj: Add missing SixCharacterHash.h,.cpp files.
- WTF.vcxproj/WTF.vcxproj.filters: Ditto.
- wtf/NumberOfCores.h: Add export macro to numberOfProcessorCores.
- wtf/PrintStream.h: Add export macro to dumpCharacter.
- wtf/SixCharacterHash.h: Add export macro to sixCharacterHashStringToInteger
and integerToSixCharacterHashString.
- wtf/text/CString.h: Add export macro to hash and equal methods.
(WTF::CStringHash::hash): Add export macro.
- 5:13 PM Changeset in webkit [153357] by
-
- 6 edits in trunk/Source/JavaScriptCore
ASSERT(m_vm->apiLock().currentThreadIsHoldingLock()); fails for Safari on current ToT
https://bugs.webkit.org/show_bug.cgi?id=119108
Reviewed by Mark Hahnenberg.
Add a currentThreadIsHoldingAPILock() function to VM that checks if the current thread is the exclusive API thread.
- heap/CopiedSpace.cpp:
(JSC::CopiedSpace::tryAllocateSlowCase):
- heap/Heap.cpp:
(JSC::Heap::protect):
(JSC::Heap::unprotect):
(JSC::Heap::collect):
- heap/MarkedAllocator.cpp:
(JSC::MarkedAllocator::allocateSlowCase):
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
- runtime/VM.h:
(JSC::VM::currentThreadIsHoldingAPILock):
- 4:57 PM Changeset in webkit [153356] by
-
- 30 edits in trunk/Source
ChromeClient::focusedNodeChanged() should be focusedElementChanged().
<http://webkit.org/b/119110>
Reviewed by Anders Carlsson.
Source/WebCore:
Because only Elements can be focused.
- dom/Document.cpp:
(WebCore::Document::setFocusedElement):
- loader/EmptyClients.h:
(WebCore::EmptyChromeClient::focusedElementChanged):
- page/Chrome.cpp:
(WebCore::Chrome::focusedElementChanged):
- page/Chrome.h:
- page/ChromeClient.h:
Source/WebKit/blackberry:
- WebCoreSupport/ChromeClientBlackBerry.cpp:
(WebCore::ChromeClientBlackBerry::focusedElementChanged):
- WebCoreSupport/ChromeClientBlackBerry.h:
Source/WebKit/efl:
- WebCoreSupport/ChromeClientEfl.cpp:
(WebCore::ChromeClientEfl::focusedElementChanged):
- WebCoreSupport/ChromeClientEfl.h:
Source/WebKit/gtk:
- WebCoreSupport/ChromeClientGtk.cpp:
(WebKit::ChromeClient::focusedElementChanged):
- WebCoreSupport/ChromeClientGtk.h:
Source/WebKit/mac:
- WebCoreSupport/WebChromeClient.h:
- WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::focusedElementChanged):
Source/WebKit/qt:
- WebCoreSupport/ChromeClientQt.cpp:
(WebCore::ChromeClientQt::focusedElementChanged):
- WebCoreSupport/ChromeClientQt.h:
Source/WebKit/win:
- WebCoreSupport/WebChromeClient.cpp:
(WebChromeClient::focusedElementChanged):
- WebCoreSupport/WebChromeClient.h:
Source/WebKit/wince:
- WebCoreSupport/ChromeClientWinCE.cpp:
(WebKit::ChromeClientWinCE::focusedElementChanged):
- WebCoreSupport/ChromeClientWinCE.h:
Source/WebKit2:
- WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::focusedElementChanged):
- WebProcess/WebCoreSupport/WebChromeClient.h:
- 4:23 PM Changeset in webkit [153355] by
-
- 12 edits in trunk/Source
[WK2][Soup] Add private browsing support
https://bugs.webkit.org/show_bug.cgi?id=118657
Reviewed by Gustavo Noronha Silva.
Source/WebCore:
Support private browsing by adding a method to create a private
browsing soup session. This private browsing session uses a
non-persistent cookie jar and does not use the disk cache feature.
No new tests. Covered by existing private browsing tests.
- platform/network/NetworkStorageSession.h:
(WebCore::NetworkStorageSession::isPrivateBrowsingSession):
Add USE(SOUP) guard to isPrivateBrowsingSession() and m_isPrivate.
- platform/network/ResourceHandle.h:
Add a factory method to create a private browsing session for soup.
- platform/network/soup/CookieJarSoup.cpp:
(WebCore::createPrivateBrowsingCookieJar):
- platform/network/soup/CookieJarSoup.h:
Add a method to create a non-persistent cookie jar for private browsing.
- platform/network/soup/NetworkStorageSessionSoup.cpp:
(WebCore::NetworkStorageSession::NetworkStorageSession):
Initialize m_isPrivate to false.
(WebCore::NetworkStorageSession::createPrivateBrowsingSession):
Implement the method by invoking ResourceHandle::createPrivateBrowsingSession.
- platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::createSoupSession):
Extract common soup session creation code so that both defaultSession
and createPrivateBrowsingSession can use this function to create a soup
session.
(WebCore::ResourceHandle::defaultSession):
Change to use createSoupSession.
(WebCore::ResourceHandle::createPrivateBrowsingSession):
Create a session which uses a non-persistent cookie jar.
Source/WebKit2:
Support private browsing in WK2 by implementing private browsing
related methods in WebFrameNetworkingContext.
- WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setPrivateBrowsingEnabled):
Add USE(SOUP) guard.
- WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
Add private browsing support methods. Copied from the Mac port.
(WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
(WebKit::WebFrameNetworkingContext::destroyPrivateBrowsingSession):
(WebKit::WebFrameNetworkingContext::storageSession):
Check if the frame enables private browsing and return the private
browsing session.
- WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
- WebProcess/WebProcess.cpp:
(WebKit::WebProcess::ensurePrivateBrowsingSession):
Add USE(SOUP) guard.
- 4:14 PM Changeset in webkit [153354] by
-
- 2 edits in trunk/Source/JavaScriptCore
REGRESSION(FTL): Most layout tests crashes
https://bugs.webkit.org/show_bug.cgi?id=119089
Reviewed by Oliver Hunt.
- runtime/ExecutionHarness.h:
(JSC::prepareForExecution): Move prepareForExecutionImpl call into its own statement. This prevents the GCC-compiled
code to create the PassOwnPtr<JSC::JITCode> (intended as a parameter to the installOptimizedCode call) from the jitCode
RefPtr<JSC::JITCode> parameter before the latter was actually given a proper value through the prepareForExecutionImpl call.
Currently it's created beforehand and therefor holds a null pointer before it's anchored as the JIT code in
JSC::CodeBlock::setJITCode, which later indirectly causes assertions in JSC::CodeBlock::jitCompile.
(JSC::prepareFunctionForExecution): Ditto for prepareFunctionForExecutionImpl.
- 4:07 PM Changeset in webkit [153353] by
-
- 3 edits in trunk/Tools
Fix build of DumpRenderTree and WebKitTestRunner when building against an SDK.
- DumpRenderTree/mac/Configurations/Base.xcconfig: Fix framework search path when building against an SDK.
- WebKitTestRunner/Configurations/Base.xcconfig: Ditto. Also fix where our scripts look for WebCore.framework
so they pull the version out of the SDK.
- 3:36 PM Changeset in webkit [153352] by
-
- 2 edits in trunk/Source/WebKit2
Build fix: use of long long in CoreIPC::ArgumentEncoder and CoreIPC::ArgumentDecoder
https://bugs.webkit.org/show_bug.cgi?id=118228
Reviewed by Anders Carlsson.
Build fails on some platforms where int64_t and long long are different types.
- Shared/FileAPI/BlobRegistrationData.cpp:
(WebKit::BlobRegistrationData::encode):
Add explicit casts to int64_t.
(WebKit::BlobRegistrationData::decode):
Use int64_t instead of long long.
- 3:33 PM Changeset in webkit [153351] by
-
- 2 edits in trunk/Source/JavaScriptCore
[Windows] Unreviewed build fix.
- JavaScriptCore.vcxproj/JavaScriptCoreCommon.props: Add missing 'ftl'
include path.
- 3:29 PM Changeset in webkit [153350] by
-
- 5 edits in trunk/LayoutTests
[CSS Shapes] Add missing includes to shape-inside polygon tests
https://bugs.webkit.org/show_bug.cgi?id=119098
Reviewed by Dirk Schulze.
We need to include subpixel-utils.js for tests which use simple-polygon.js, since it uses
SubPixelLayout, otherwise both the result/expected are generating incorrect output.
- fast/shapes/shape-inside/shape-inside-regular-polygon16-expected.html:
- fast/shapes/shape-inside/shape-inside-regular-polygon16.html:
- fast/shapes/shape-inside/shape-inside-regular-polygon8-expected.html:
- fast/shapes/shape-inside/shape-inside-regular-polygon8.html:
- 3:25 PM Changeset in webkit [153349] by
-
- 2 edits in trunk/Source/WebCore
Null check m_frame in maximum and minimumScrollPosition
https://bugs.webkit.org/show_bug.cgi?id=119109
<rdar://problem/14545393>
Reviewed by Darin Adler.
- page/FrameView.cpp:
(WebCore::FrameView::minimumScrollPosition):
(WebCore::FrameView::maximumScrollPosition):
Null-check m_frame (and move the early-return after the clamp-to-0
as the revert in r152911 should have).
- 2:48 PM Changeset in webkit [153348] by
-
- 5 edits in trunk
Localizable.strings generated by extract-localizable-strings should be UTF-8
https://bugs.webkit.org/show_bug.cgi?id=119106
Reviewed by Mark Rowe.
Source/WebCore:
- English.lproj/Localizable.strings:
Re-encode this as UTF-8 and remove the BOM.
- WebCore.xcodeproj/project.pbxproj:
Set the file encoding of Localizable.strings to UTF-8.
Tools:
Output strings as UTF-8.
- Scripts/extract-localizable-strings:
- 2:40 PM Changeset in webkit [153347] by
-
- 3 edits2 adds in trunk
Don't force layout when querying a fixed or non-box margin/padding property
https://bugs.webkit.org/show_bug.cgi?id=118032
Reviewed by David Hyatt.
Source/WebCore:
Merge https://chromium.googlesource.com/chromium/blink/+/66427d0825fcc2975bd50220cdcaa2504d6f36e5.
This patch avoids layout in ComputedStyleExtractor::propertyValue for margin and padding properties
when they are of fixed length. According to the Blink patch's author, this improves the page load
time of economist.com by 27%.
The actual code change is significantly different from the original Blink patch since we've done
some refactorins in r152938 and r153067 to make this change more self-contained.
Test: fast/css/computed-width-without-renderer.html
- css/CSSComputedStyleDeclaration.cpp:
(WebCore::zoomAdjustedPaddingOrMarginPixelValue):
(WebCore::paddingOrMarginIsRendererDependent):
(WebCore::isLayoutDependent):
(WebCore::ComputedStyleExtractor::propertyValue):
LayoutTests:
Add a regression test inspired by the one added in
https://chromium.googlesource.com/chromium/blink/+/ff234b1593b2b493d47f38f687d09a87bc42c9eb.
- fast/css/computed-width-without-renderer-expected.txt: Added.
- fast/css/computed-width-without-renderer.html: Added.
- 2:13 PM Changeset in webkit [153346] by
-
- 3 edits12 adds14 deletes in trunk/Source
Source/ThirdParty/ANGLE: Made Windows build system for ANGLE and removed existing broken build system.
Removed empty src/libGLESv2/shaders directory and old README files.
https://bugs.webkit.org/show_bug.cgi?id=119103
Reviewed by Brent Fulgham.
- ANGLE.vcxproj: Added.
- ANGLE.vcxproj/ANGLEGenerated.vcxproj: Added.
- ANGLE.vcxproj/ANGLEGenerated.vcxproj.filters: Added.
- ANGLE.vcxproj/libEGL.vcxproj: Added.
- ANGLE.vcxproj/libEGL.vcxproj.filters: Added.
- ANGLE.vcxproj/libEGLCommon.props: Added.
- ANGLE.vcxproj/libGLESv2.vcxproj: Added.
- ANGLE.vcxproj/libGLESv2.vcxproj.filters: Added.
- ANGLE.vcxproj/libGLESv2Common.props: Added.
- ANGLE.vcxproj/translator.vcxproj: Added.
- ANGLE.vcxproj/translator.vcxproj.filters: Added.
- ANGLE.vcxproj/translatorCommon.props: Added.
- src/ANGLE.sln: Removed.
- src/compiler/preprocessor/preprocessor.vcxproj: Removed.
- src/compiler/preprocessor/preprocessor.vcxproj.filters: Removed.
- src/compiler/translator_common.vcxproj: Removed.
- src/compiler/translator_common.vcxproj.filters: Removed.
- src/compiler/translator_hlsl.vcxproj: Removed.
- src/compiler/translator_hlsl.vcxproj.filters: Removed.
- src/libEGL/README: Removed.
- src/libEGL/libEGL.vcxproj: Removed.
- src/libEGL/libEGL.vcxproj.filters: Removed.
- src/libGLESv2/README: Removed.
- src/libGLESv2/libGLESv2.vcxproj: Removed.
- src/libGLESv2/libGLESv2.vcxproj.filters: Removed.
- src/libGLESv2/shaders: Removed.
Source/WebKit: Made Windows build system for ANGLE.
https://bugs.webkit.org/show_bug.cgi?id=119103
Reviewed by Brent Fulgham.
- WebKit.vcxproj/WebKit.sln:
Added ANGLEGenerated, libEGL, libGLESv2, and translator projects.
These projects are currently not built.
- 1:56 PM Changeset in webkit [153345] by
-
- 2 edits in trunk/Source/WTF
[Windows] Provide ASM implemenation of 8-bit compare-and-swap
https://bugs.webkit.org/show_bug.cgi?id=119084
Patch by peavo@outlook.com <peavo@outlook.com> on 2013-07-25
Reviewed by Brent Fulgham.
- wtf/Atomics.h:
(WTF::weakCompareAndSwap): Add a 32-bit X86 Assembly path for
Windows build.
- 1:52 PM Changeset in webkit [153344] by
-
- 5 edits1 add in trunk
-[WebHTMLView attributedSubstringForProposedRange:actualRange:] does not include strikethrough attribute in the returned attributed string
https://bugs.webkit.org/show_bug.cgi?id=119099
<rdar://problem/13439291>
Reviewed by Enrica Casucci.
Source/WebCore:
Tests:
API Test: AttributedStringTest_Strikethrough
- platform/mac/HTMLConverter.mm:
(+[WebHTMLConverter editingAttributedStringFromRange:]):
Set the NSStrikethroughStyleAttributeName attribute when text-decoration: line-through is seen.
Tools:
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/mac/AttributedString.mm:
(TestWebKitAPI::attributedString):
(TestWebKitAPI::AttributedStringTest_CustomFont::didLoadURL):
(TestWebKitAPI::AttributedStringTest_CustomFont::url):
(TestWebKitAPI::AttributedStringTest_CustomFont::runTest):
(TestWebKitAPI::TEST_F):
(TestWebKitAPI::AttributedStringTest_Strikethrough::didLoadURL):
(TestWebKitAPI::AttributedStringTest_Strikethrough::url):
(TestWebKitAPI::AttributedStringTest_Strikethrough::runTest):
- TestWebKitAPI/Tests/mac/attributedStringStrikethrough.html: Added.
Add tests for attributed strings with strikethrough. Refactor the attributed string tests
to make adding more easier in the future.
- 1:40 PM Changeset in webkit [153343] by
-
- 3 edits in trunk/Source/JavaScriptCore
[Windows] Unreviewed build fix.
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: Add some missing files:
runtime/VM.h,.cpp; Remove deleted JSGlobalData.h,.cpp.
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: Ditto.
- 1:37 PM Changeset in webkit [153342] by
-
- 3 edits in trunk/Source/WTF
[Windows] Unreviewed build fix.
- WTF.vcxproj/WTF.vcxproj: Add missing CompilationThread.h,.cpp
- WTF.vcxproj/WTF.vcxproj.filters: Ditto.
- 1:22 PM Changeset in webkit [153341] by
-
- 3 edits in trunk/Source/JavaScriptCore
Make all jit & non-jit combos build cleanly
https://bugs.webkit.org/show_bug.cgi?id=119102
Reviewed by Anders Carlsson.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::counterValueForOptimizeSoon):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::optimizeAfterWarmUp):
(JSC::CodeBlock::numberOfDFGCompiles):
- 1:19 PM Changeset in webkit [153340] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed build fix after r153333.
- platform/network/cf/ResourceResponseCFNet.cpp: Remove toTimeT since it is no longer called.
- 12:36 PM Changeset in webkit [153339] by
-
- 2 edits in trunk/Source/JavaScriptCore
32 bit portion of load validation logic
https://bugs.webkit.org/show_bug.cgi?id=118878
Reviewed by NOBODY (Build fix).
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- 12:05 PM Changeset in webkit [153338] by
-
- 2 edits in trunk/LayoutTests
[CSS Shapes] Fix typo in simple-polygon.js
https://bugs.webkit.org/show_bug.cgi?id=119096
Reviewed by Dirk Schulze.
A function name typo was preventing tests and expectations using simple-polygon.js
from generating correct output.
- fast/shapes/resources/simple-polygon.js:
(polygonXIntercepts): Correctly camel-case function name.
- 11:20 AM Changeset in webkit [153337] by
-
- 3 edits4 moves in trunk/LayoutTests
[CSS Shapes] New positioning model: support for circle and ellipse shape-outside
https://bugs.webkit.org/show_bug.cgi?id=118084
Patch by Bem Jones-Bey <Bem Jones-Bey> on 2013-07-25
Reviewed by Dirk Schulze.
Update circle and ellipse tests to work with new positioning. These
have been rehomed as W3C spec tests, and thus are imported from the
CSSWG's repository.
- TestExpectations: Remove skip for updated tests.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-circle-000-expected.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-circle-expected.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-circle-000.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-circle.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-ellipse-000-expected.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-ellipse-expected.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-ellipse-000.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-ellipse.html.
- csswg/submitted/shapes/shape-outside/w3c-import.log:
- 11:11 AM Changeset in webkit [153336] by
-
- 2 edits in trunk/Source/WTF
Fix Windows build after r153134.
https://bugs.webkit.org/show_bug.cgi?id=119090
Reviewed by Oliver Hunt.
Add USE(PTHREADS) guards around pthread specific code
for now. This will cause isCompilationThread to always
return false on non pthread platforms such as Windows.
We might be able to use the Windows one-time initialization
for this, but this is only available from Windows Vista on.
- wtf/CompilationThread.cpp:
(WTF::initializeCompilationThreads):
- 10:55 AM Changeset in webkit [153335] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed EFL build fix after r153315.
Fix build error after we started compiling with c++0x support
in r153315.
- platform/efl/RenderThemeEfl.cpp:
(WebCore::toEdjeGroup):
- 10:10 AM Changeset in webkit [153334] by
-
- 4 edits in trunk/Source/JavaScriptCore
More 32bit build fixes
- 10:10 AM Changeset in webkit [153333] by
-
- 8 edits in trunk/Source
Remove lastModifiedDate from ResourceResponse
https://bugs.webkit.org/show_bug.cgi?id=119092
Reviewed by Andreas Kling.
Source/WebCore:
Computing m_lastResponseDate is costly on some platforms and we already have a better way to
get the last response time, so convert the two call sites that used to call ResourceresponseBase::lastModifiedDate()
over to using lastModified() instead.
- platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::ResourceResponseBase):
(WebCore::ResourceResponseBase::adopt):
(WebCore::ResourceResponseBase::copyData):
- platform/network/ResourceResponseBase.h:
- platform/network/cf/ResourceResponseCFNet.cpp:
(WebCore::ResourceResponse::platformLazyInit):
- plugins/PluginStream.cpp:
(WebCore::lastModifiedDate):
(WebCore::PluginStream::startStream):
Source/WebKit2:
Update for WebCore changes.
- WebProcess/Plugins/PluginView.cpp:
(WebKit::lastModifiedDate):
Use ResourceResponse::lastModified() to get the last modified date.
(WebKit::PluginView::Stream::didReceiveResponse):
Call the static lastModified function.
(WebKit::PluginView::manualLoadDidReceiveResponse):
Ditto.
- 10:10 AM Changeset in webkit [153332] by
-
- 2 edits in trunk
Unreviewed EFL build fix after r153315.
Use -std=gnu++0x instead of -std=c++0x as we rely on GNU extensions such as
typeof().
- Source/cmake/WebKitHelpers.cmake:
- 10:01 AM Changeset in webkit [153331] by
-
- 7 edits in trunk/Source
Optimize the thread locks for API Shims
https://bugs.webkit.org/show_bug.cgi?id=118573
Patch by Yi Shen <max.hong.shen@gmail.com> on 2013-07-25
Reviewed by Geoffrey Garen.
Remove the thread lock from API Shims if the VM has an exclusive thread (e.g. the VM
only used by WebCore's main thread).
Source/JavaScriptCore:
- API/APIShims.h:
(JSC::APIEntryShim::APIEntryShim):
(JSC::APICallbackShim::APICallbackShim):
- runtime/JSLock.cpp:
(JSC::JSLockHolder::JSLockHolder):
(JSC::JSLockHolder::init):
(JSC::JSLockHolder::~JSLockHolder):
(JSC::JSLock::DropAllLocks::DropAllLocks):
(JSC::JSLock::DropAllLocks::~DropAllLocks):
- runtime/VM.cpp:
(JSC::VM::VM):
- runtime/VM.h:
Source/WebCore:
No new tests required since no functionality changed.
- bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::commonVM):
- 9:40 AM Changeset in webkit [153330] by
-
- 10 edits in trunk/Source/WebCore
[CSS Shapes] Shape methods and member variables should be guarded with the CSS_SHAPES flag
https://bugs.webkit.org/show_bug.cgi?id=117277
Reviewed by Alexandru Chiculita.
This patch adds some compile guards that were missing from the RenderStyle and
StyleRareNonInheritedData files. When the compile guard caused parameters to
not be used, the parameters were marked using UNUSED_PARAM.
- css/CSSPropertyNames.in: Inserting a line to trigger build.
- rendering/RenderBlock.cpp:
(WebCore::shapeInfoRequiresRelayout):
(WebCore::RenderBlock::updateRegionsAndShapesBeforeChildLayout):
(WebCore::RenderBlock::logicalRightFloatOffsetForLine):
- rendering/RenderBox.cpp:
(WebCore::isCandidateForOpaquenessTest):
- rendering/RenderBox.h:
- rendering/RenderObject.h:
- rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresLayout):
(WebCore::RenderStyle::changeRequiresRepaint):
- rendering/style/RenderStyle.h:
- rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
- rendering/style/StyleRareNonInheritedData.h:
- 9:38 AM Changeset in webkit [153329] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed build fix after r153218.
Broke the EFL port build with gcc 4.7.
- interpreter/StackIterator.cpp:
(JSC::printif):
- 9:24 AM Changeset in webkit [153328] by
-
- 2 edits in trunk/Source/JavaScriptCore
Build fix: add missing #include.
https://bugs.webkit.org/show_bug.cgi?id=119087
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-07-25
Reviewed by Allan Sandfeld Jensen.
- bytecode/ArrayProfile.cpp:
- 9:13 AM Changeset in webkit [153327] by
-
- 3 edits6 adds in trunk/Source/WebKit2
[GTK] Add support for running unit tests in the web process
https://bugs.webkit.org/show_bug.cgi?id=118427
Reviewed by Gustavo Noronha Silva.
Some tests, like GObject DOM bindings API tests, run entirely in
the WebProcess, so we just need to start the test from the UI
process and wait until the test finishes running in the
WebProcess. Tests are split in two files, one containing the
actual test that runs in the WebProcess and another one to add the
tests to the glib test system that works as a
proxy. WebProcessTestRunner class starts a private DBus session
bus and starts the tests sending a message to the WebExtension
waiting until it finishes or fails. WebProcess tests are created
by defining a class derived from WebProcessTest class and
implementing the static create method and the virtual runTest
method. The macro REGISTER_TEST is used by the web process tests
to register their test cases. This patch includes the migration
of the WebKitDOMNode test, all other GObject DOM bindings tests
will be migrated in the same way in follow up patches.
- UIProcess/API/gtk/tests/DOMNodeTest.cpp: Added.
(WebKitDOMNodeTest::create): Create a new WebKitDOMNodeTest.
(WebKitDOMNodeTest::webPageFromArgs): Get the pageID parameter
from the arguments dictionary.
(WebKitDOMNodeTest::testHierarchyNavigation):
(WebKitDOMNodeTest::testInsertion):
(WebKitDOMNodeTest::runTest): Run the given test.
(registerTests): Register test cases.
- UIProcess/API/gtk/tests/GNUmakefile.am: Add new files to
compilation.
- UIProcess/API/gtk/tests/TestDOMNode.cpp: Added.
(testWebKitDOMNodeHierarchyNavigation):
(testWebKitDOMNodeInsertion):
(beforeAll):
(afterAll):
- UIProcess/API/gtk/tests/TestMain.cpp:
(main): Unset DBUS_SESSION_BUS_ADDRESS environment variable to
make sure that the GLib bus singleton is initialized by the
private DBus session bus created by the tests.
- UIProcess/API/gtk/tests/WebProcessTest.cpp: Added.
(testsMap): Initialize and get the global map of tests.
(WebProcessTest::add): Add a new test to the map, keeping a
function to create the test.
(WebProcessTest::create): Create a test for the given name.
(methodCallCallback): Handle RunTest DBus method. It creates and
runs the given test.
(webkit_web_extension_initialize):Register the DBus service for
this WebExtension.
- UIProcess/API/gtk/tests/WebProcessTest.h: Added.
- UIProcess/API/gtk/tests/WebProcessTestRunner.cpp: Added.
(WebProcessTestRunner::WebProcessTestRunner): Start a private DBus
session bus and get a connection to it.
(WebProcessTestRunner::~WebProcessTestRunner): Stop the private
DBus session bus.
(WebProcessTestRunner::proxyCreatedCallback):
(WebProcessTestRunner::proxy): Create a new proxy to send messages
to the WebExtension if it doesn't exists.
(WebProcessTestRunner::onNameAppeared): Called when the DBus
service has been registered in the WebExtension and it's safe to
create a proxy.
(WebProcessTestRunner::onNameVanished): Called when the DBus
service is unregistered. This happens when the web process crash,
so we just exit here, because the g_asserts in the web process
have already registered the error message.
(WebProcessTestRunner::testFinishedCallback): Called when the
WebProcess tests has finished.
(WebProcessTestRunner::runTest): Send a message to the
WebExtension to start the given test and monitor the service.
(WebProcessTestRunner::finishTest): Save the test result and
finish the main loop.
- UIProcess/API/gtk/tests/WebProcessTestRunner.h: Added.
- 7:26 AM Changeset in webkit [153326] by
-
- 2 edits in trunk/Source/WTF
Fix windows build after FTL upstream
Unreviewed build fix.
- wtf/Atomics.h:
(WTF::weakCompareAndSwap):
- 6:53 AM Changeset in webkit [153325] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed, build fix on the EFL port.
- CMakeLists.txt: Added JSCTestRunnerUtils.cpp.
- 6:50 AM Changeset in webkit [153324] by
-
- 2 edits in trunk/Source/JavaScriptCore
[sh4] Add missing store8(TrustedImm32, void*) implementation in baseline JIT.
https://bugs.webkit.org/show_bug.cgi?id=119083
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-07-25
Reviewed by Allan Sandfeld Jensen.
- assembler/MacroAssemblerSH4.h:
(JSC::MacroAssemblerSH4::store8):
- 6:23 AM Changeset in webkit [153323] by
-
- 2 edits in trunk/Source/JavaScriptCore
[Qt] Fix test build after FTL upstream
Unreviewed build fix.
- Target.pri:
- 6:11 AM Changeset in webkit [153322] by
-
- 3 edits in trunk/Source/JavaScriptCore
[Qt] Build fix after FTL.
Un Reviewed build fix.
- Target.pri:
- interpreter/StackIterator.cpp:
(JSC::StackIterator::Frame::print):
- 6:07 AM Changeset in webkit [153321] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed build fix after FTL upstream.
- dfg/DFGWorklist.cpp:
(JSC::DFG::Worklist::~Worklist):
- 5:49 AM Changeset in webkit [153320] by
-
- 2 edits in trunk/Source/WebCore/platform/gtk/po
[l10n] [mr] Updated WebKitGTK+ Translation(s) in Marathi [mr] language
https://bugs.webkit.org/show_bug.cgi?id=117282
Patch by Sandeep Shedmake <sandeep.shedmake@gmail.com> on 2013-07-25
Reviewed by Gustavo Noronha.
- mr.po: Updated.
- 5:35 AM Changeset in webkit [153319] by
-
- 7 edits in trunk/Source
Unreviewed, build fix on the EFL port.
Source/JavaScriptCore:
- CMakeLists.txt:
Added SourceCode.cpp and removed BlackBerry file.
- jit/JITCode.h:
(JSC::JITCode::nextTierJIT):
Fixed to build break because of -Werror=return-type
- parser/Lexer.cpp: Includes JSFunctionInlines.h
- runtime/JSScope.h:
(JSC::makeType):
Fixed to build break because of -Werror=return-type
Source/WTF:
- wtf/CMakeLists.txt: Added SixCharacterHash.cpp
- 5:31 AM Changeset in webkit [153318] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed build fixing after FTL upstream.
- runtime/Executable.cpp:
(JSC::FunctionExecutable::produceCodeBlockFor):
- 5:29 AM Changeset in webkit [153317] by
-
- 2 edits in trunk/Source/JavaScriptCore
Add missing implementation of bxxxnz in sh4 LLINT.
https://bugs.webkit.org/show_bug.cgi?id=119079
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-07-25
Reviewed by Allan Sandfeld Jensen.
- offlineasm/sh4.rb:
- 5:18 AM Changeset in webkit [153316] by
-
- 4 edits in trunk/Source
Unreviewed, build fix on the Qt port.
Source/JavaScriptCore:
- Target.pri: Add additional build files for the FTL.
Source/WTF:
- WTF.pro: Add additional build files for the FTL.
- 5:09 AM Changeset in webkit [153315] by
-
- 2 edits in trunk
[CMAKE] Enforce c++0x for cmake based ports
https://bugs.webkit.org/show_bug.cgi?id=119081
Reviewed by Gyuyoung Kim.
- Source/cmake/WebKitHelpers.cmake:
Enforce c++0x for all cmake based ports to fix build break.
- 5:04 AM Changeset in webkit [153314] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed buildfix after FTL upstream..
- interpreter/StackIterator.cpp:
(JSC::StackIterator::Frame::codeType):
(JSC::StackIterator::Frame::functionName):
(JSC::StackIterator::Frame::sourceURL):
(JSC::StackIterator::Frame::logicalFrame):
- 4:23 AM Changeset in webkit [153313] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed.
- heap/CopyVisitor.cpp: Include CopiedSpaceInlines header so the CopiedSpace::recycleEvacuatedBlock
method is not left undefined, causing build failures on (at least) the GTK port.
- 4:19 AM Changeset in webkit [153312] by
-
- 5 edits in trunk/Source
Source/JavaScriptCore: Unreviewed, further build fixing on the GTK port.
- GNUmakefile.list.am: Add CompilationResult source files to the build.
Source/WTF: Unreviewed, further GTK build fixing.
- GNUmakefile.am: Make libWTF.la depend on any changes made to the build targets list.
- GNUmakefile.list.am: Add SixCharacterHash source files to the build.
- 3:54 AM Changeset in webkit [153311] by
-
- 3 edits in trunk/Source/JavaScriptCore
Unreviewed GTK build fixing.
- GNUmakefile.am: Make the shared libjsc library depend on any changes to the build target list.
- GNUmakefile.list.am: Add additional build targets for files that were introduced by the FTL branch merge.
- 3:51 AM Changeset in webkit [153310] by
-
- 2 edits in trunk/Source/JavaScriptCore
Buildfix after this error:
error: 'pathName' may be used uninitialized in this function [-Werror=uninitialized]
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThread):
- 3:46 AM Changeset in webkit [153309] by
-
- 2 edits in trunk/Source/WTF
[GTK] Similar fix to r153304.
- GNUmakefile.list.am:
- 3:42 AM Changeset in webkit [153308] by
-
- 2 edits in trunk/Source/JavaScriptCore
One more buildfix after FTL upstream.
Return a dummy value after RELEASE_ASSERT_NOT_REACHED() to make GCC happy.
- dfg/DFGLazyJSValue.cpp:
(JSC::DFG::LazyJSValue::getValue):
(JSC::DFG::LazyJSValue::strictEqual):
- 3:24 AM Changeset in webkit [153307] by
-
- 3 edits in trunk/Source/JavaScriptCore
Fix "Unhandled opcode localAnnotation" build error in sh4 and mips LLINT.
https://bugs.webkit.org/show_bug.cgi?id=119076
Patch by Julien Brianceau <jbrianceau@nds.com> on 2013-07-25
Reviewed by Allan Sandfeld Jensen.
- offlineasm/mips.rb:
- offlineasm/sh4.rb:
- 2:51 AM Changeset in webkit [153306] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed GTK build fix.
- GNUmakefile.list.am: Adding JSCTestRunnerUtils files to the build.
- 2:29 AM Changeset in webkit [153305] by
-
- 1 edit1 add in trunk/Source/JavaScriptCore
Unreviewed. Further build fixing for the GTK port. Adding the forwarding header
for JSCTestRunnerUtils.h as required by the DumpRenderTree compilation.
- ForwardingHeaders/JavaScriptCore/JSCTestRunnerUtils.h: Added.
- 2:27 AM Changeset in webkit [153304] by
-
- 2 edits in trunk/Source/WTF
Build break in debug after r153134: StringImpl.h:640: undefined reference to `WTF::isCompilationThread()
https://bugs.webkit.org/show_bug.cgi?id=119077
Reviewed by Christophe Dumez.
- wtf/CMakeLists.txt:
Added CompilationThread.{h/cpp}.
- 2:08 AM Changeset in webkit [153303] by
-
- 3 edits in trunk/Source/JavaScriptCore
Unreviewed. Fixing the GTK build after the FTL merging by updating the build targets list.
- GNUmakefile.am:
- GNUmakefile.list.am:
- 1:34 AM Changeset in webkit [153302] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed buildfix after FTL upstream.
- runtime/JSScope.h:
(JSC::needsVarInjectionChecks):
- 12:53 AM Changeset in webkit [153301] by
-
- 4 edits in trunk/Source/JavaScriptCore
One more fix after FTL upstream.
- Target.pri:
- bytecode/CodeBlock.h:
- bytecode/GetByIdStatus.h:
(JSC::GetByIdStatus::GetByIdStatus):
Jul 24, 2013:
- 11:09 PM Changeset in webkit [153300] by
-
- 3 edits in trunk/Source/JavaScriptCore
Unreviewed buildfix after FTL upstream.
Add ftl directory as include path.
- CMakeLists.txt:
- JavaScriptCore.pri:
- 10:59 PM Changeset in webkit [153299] by
-
- 3 edits in trunk/Source/JavaScriptCore
Unreviewed buildfix after FTL upstream for non C++11 builds.
- interpreter/CallFrame.h:
- interpreter/StackIteratorPrivate.h:
(JSC::StackIterator::end):
- 10:02 PM Changeset in webkit [153298] by
-
- 2 edits in trunk/Source/JavaScriptCore
Endeavour to fix CMakelist builds
- 9:36 PM Changeset in webkit [153297] by
-
- 5 edits in trunk/Source/WebCore
Introduce toSVGPatternElement(), use it
https://bugs.webkit.org/show_bug.cgi?id=119013
Reviewed by Andreas Kling.
As a step to change static_cast with toSVGXXX, static_cast<SVGPatternElement*> can
be changed with toSVGPatternElement().
Merge from https://src.chromium.org/viewvc/blink?view=rev&revision=154734
- rendering/svg/RenderSVGResourcePattern.cpp:
(WebCore::RenderSVGResourcePattern::buildPattern):
- rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeSVGResourceContainer):
- rendering/svg/SVGResources.cpp:
(WebCore::targetReferenceFromResource):
- svg/SVGPatternElement.h:
(WebCore::toSVGPatternElement):
- 9:05 PM Changeset in webkit [153296] by
-
- 39 edits5 copies1 add in trunk/Source
fourthTier: DFG IR dumps should be easier to read
https://bugs.webkit.org/show_bug.cgi?id=119050
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Added a DumpContext that includes support for printing an endnote
that describes all structures in full, while the main flow of the
dump just uses made-up names for the structures. This is helpful
since Structure::dump() may print a lot. The stuff it prints is
useful, but if it's all inline with the surrounding thing you're
dumping (often, a node in the DFG), then you get a ridiculously
long print-out. All classes that dump structures (including
Structure itself) now have dumpInContext() methods that use
inContext() for dumping anything that might transitively print a
structure. If Structure::dumpInContext() is called with a NULL
context, it just uses dump() like before. Hence you don't have to
know anything about DumpContext unless you want to.
inContext(*structure, context) dumps something like %B4:Array,
and the endnote will have something like:
%B4:Array = 0x10e91a180:[Array, {Edge:100, Normal:101, Line:102, NumPx:103, LastPx:104}, ArrayWithContiguous, Proto:0x10e99ffe0]
where B4 is the inferred name that StringHashDumpContext came up
with.
Also shortened a bunch of other dumps, removing information that
isn't so important.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/ArrayProfile.cpp:
(JSC::dumpArrayModes):
- bytecode/CodeBlockHash.cpp:
(JSC):
(JSC::CodeBlockHash::CodeBlockHash):
(JSC::CodeBlockHash::dump):
- bytecode/CodeOrigin.cpp:
(JSC::CodeOrigin::dumpInContext):
(JSC):
(JSC::InlineCallFrame::dumpInContext):
(JSC::InlineCallFrame::dump):
- bytecode/CodeOrigin.h:
(CodeOrigin):
(InlineCallFrame):
- bytecode/Operands.h:
(JSC::OperandValueTraits::isEmptyForDump):
(Operands):
(JSC::Operands::dump):
(JSC):
- bytecode/OperandsInlines.h: Added.
(JSC):
(JSC::::dumpInContext):
- bytecode/StructureSet.h:
(JSC::StructureSet::dumpInContext):
(JSC::StructureSet::dump):
(StructureSet):
- dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::dump):
(DFG):
(JSC::DFG::AbstractValue::dumpInContext):
- dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::operator!):
(AbstractValue):
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::performBlockCFA):
- dfg/DFGCommon.cpp:
- dfg/DFGCommon.h:
(JSC::DFG::NodePointerTraits::isEmptyForDump):
- dfg/DFGDisassembler.cpp:
(JSC::DFG::Disassembler::createDumpList):
- dfg/DFGDisassembler.h:
(Disassembler):
- dfg/DFGFlushFormat.h:
(WTF::inContext):
(WTF):
- dfg/DFGFlushLivenessAnalysisPhase.cpp:
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dumpCodeOrigin):
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::dumpBlockHeader):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGLazyJSValue.cpp:
(JSC::DFG::LazyJSValue::dumpInContext):
(JSC::DFG::LazyJSValue::dump):
(DFG):
- dfg/DFGLazyJSValue.h:
(LazyJSValue):
- dfg/DFGNode.h:
(JSC::DFG::nodeMapDump):
(WTF::inContext):
(WTF):
- dfg/DFGOSRExitCompiler32_64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGOSRExitCompiler64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGStructureAbstractValue.h:
(JSC::DFG::StructureAbstractValue::dumpInContext):
(JSC::DFG::StructureAbstractValue::dump):
(StructureAbstractValue):
- ftl/FTLExitValue.cpp:
(JSC::FTL::ExitValue::dumpInContext):
(JSC::FTL::ExitValue::dump):
(FTL):
- ftl/FTLExitValue.h:
(ExitValue):
- ftl/FTLLowerDFGToLLVM.cpp:
- ftl/FTLValueSource.cpp:
(JSC::FTL::ValueSource::dumpInContext):
(FTL):
- ftl/FTLValueSource.h:
(ValueSource):
- runtime/DumpContext.cpp: Added.
(JSC):
(JSC::DumpContext::DumpContext):
(JSC::DumpContext::~DumpContext):
(JSC::DumpContext::isEmpty):
(JSC::DumpContext::dump):
- runtime/DumpContext.h: Added.
(JSC):
(DumpContext):
- runtime/JSCJSValue.cpp:
(JSC::JSValue::dump):
(JSC):
(JSC::JSValue::dumpInContext):
- runtime/JSCJSValue.h:
(JSC):
(JSValue):
- runtime/Structure.cpp:
(JSC::Structure::dumpInContext):
(JSC):
(JSC::Structure::dumpBrief):
(JSC::Structure::dumpContextHeader):
- runtime/Structure.h:
(JSC):
(Structure):
Source/WTF:
Reviewed by Mark Hahnenberg.
Added support for dumping values within a context. By default, if you say
print(inContext(value, context)) it calls value.dumpInContext(out, context)
instead of value.dump(out).
Hoisted the support for six-character hashes out of JSC::CodeBlockHash into
WTF, in the form of SixCharacterHash.h.
Added a helper for creating dump contexts where the inContext() dump will
just use a short string hash to "name" the object being dumped, and then
will print out the full dumps in an endnote to your dump.
Added support for using CString as a hashtable key.
- WTF.xcodeproj/project.pbxproj:
- wtf/PrintStream.h:
(WTF):
(ValueInContext):
(WTF::ValueInContext::ValueInContext):
(WTF::ValueInContext::dump):
(WTF::inContext):
- wtf/SixCharacterHash.cpp: Added.
(WTF):
(WTF::sixCharacterHashStringToInteger):
(WTF::integerToSixCharacterHashString):
- wtf/SixCharacterHash.h: Added.
(WTF):
- wtf/StringHashDumpContext.h: Added.
(WTF):
(StringHashDumpContext):
(WTF::StringHashDumpContext::StringHashDumpContext):
(WTF::StringHashDumpContext::getID):
(WTF::StringHashDumpContext::dumpBrief):
(WTF::StringHashDumpContext::brief):
(WTF::StringHashDumpContext::isEmpty):
(WTF::StringHashDumpContext::dump):
- wtf/text/CString.cpp:
(WTF::CString::hash):
(WTF):
(WTF::operator<):
(WTF::CStringHash::equal):
- wtf/text/CString.h:
(WTF::CString::CString):
(CString):
(WTF::CString::isHashTableDeletedValue):
(WTF):
(WTF::CStringHash::hash):
(CStringHash):
- 9:05 PM Changeset in webkit [153295] by
-
- 13 edits4 copies1 add in trunk/Source/JavaScriptCore
fourthTier: DFG should do a high-level LICM before going to FTL
https://bugs.webkit.org/show_bug.cgi?id=118749
Reviewed by Oliver Hunt.
Implements LICM hoisting for nodes that never write anything and never read
things that are clobbered by the loop. There are some other preconditions for
hoisting, see DFGLICMPhase.cpp.
Also did a few fixes:
- ClobberSet::add was failing to switch Super entries to Direct entries in some cases.
- DFGClobberize.cpp needed to #include "Operations.h".
- DCEPhase needs to process the graph in reverse DFS order, when we're in SSA.
- AbstractInterpreter can now execute a Node without knowing its indexInBlock. Knowing the indexInBlock is an optional optimization that all other clients of AI still opt into, but LICM doesn't.
This makes the FTL a 2.19x speed-up on imaging-gaussian-blur.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractInterpreter.h:
(AbstractInterpreter):
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
(JSC::DFG::::execute):
(DFG):
(JSC::DFG::::clobberWorld):
(JSC::DFG::::clobberStructures):
- dfg/DFGAtTailAbstractState.cpp: Added.
(DFG):
(JSC::DFG::AtTailAbstractState::AtTailAbstractState):
(JSC::DFG::AtTailAbstractState::~AtTailAbstractState):
(JSC::DFG::AtTailAbstractState::createValueForNode):
(JSC::DFG::AtTailAbstractState::forNode):
- dfg/DFGAtTailAbstractState.h: Added.
(DFG):
(AtTailAbstractState):
(JSC::DFG::AtTailAbstractState::initializeTo):
(JSC::DFG::AtTailAbstractState::forNode):
(JSC::DFG::AtTailAbstractState::variables):
(JSC::DFG::AtTailAbstractState::block):
(JSC::DFG::AtTailAbstractState::isValid):
(JSC::DFG::AtTailAbstractState::setDidClobber):
(JSC::DFG::AtTailAbstractState::setIsValid):
(JSC::DFG::AtTailAbstractState::setBranchDirection):
(JSC::DFG::AtTailAbstractState::setFoundConstants):
(JSC::DFG::AtTailAbstractState::haveStructures):
(JSC::DFG::AtTailAbstractState::setHaveStructures):
- dfg/DFGBasicBlock.h:
(JSC::DFG::BasicBlock::insertBeforeLast):
- dfg/DFGBasicBlockInlines.h:
(DFG):
- dfg/DFGClobberSet.cpp:
(JSC::DFG::ClobberSet::add):
(JSC::DFG::ClobberSet::addAll):
- dfg/DFGClobberize.cpp:
(JSC::DFG::doesWrites):
- dfg/DFGClobberize.h:
(DFG):
- dfg/DFGDCEPhase.cpp:
(JSC::DFG::DCEPhase::DCEPhase):
(JSC::DFG::DCEPhase::run):
(JSC::DFG::DCEPhase::fixupBlock):
(DCEPhase):
- dfg/DFGEdgeDominates.h: Added.
(DFG):
(EdgeDominates):
(JSC::DFG::EdgeDominates::EdgeDominates):
(JSC::DFG::EdgeDominates::operator()):
(JSC::DFG::EdgeDominates::result):
(JSC::DFG::edgesDominate):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::checkArray):
- dfg/DFGLICMPhase.cpp: Added.
(LICMPhase):
(JSC::DFG::LICMPhase::LICMPhase):
(JSC::DFG::LICMPhase::run):
(JSC::DFG::LICMPhase::attemptHoist):
(DFG):
(JSC::DFG::performLICM):
- dfg/DFGLICMPhase.h: Added.
(DFG):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
- 9:05 PM Changeset in webkit [153294] by
-
- 5 edits6 adds in trunk/Source
fourthTier: DFG Nodes should be able to abstractly tell you what they read and what they write
https://bugs.webkit.org/show_bug.cgi?id=118910
Source/JavaScriptCore:
Reviewed by Sam Weinig.
Add the notion of AbstractHeap to the DFG. This is analogous to the AbstractHeap in
the FTL, except that the FTL's AbstractHeaps are used during LLVM lowering and are
engineered to obey LLVM TBAA logic. The FTL's AbstractHeaps are also engineered to
be inexpensive to use (they just give you a TBAA node) but expensive to create (you
create them all up front). FTL AbstractHeaps also don't actually give you the
ability to reason about aliasing; they are *just* a mechanism for lowering to TBAA.
The DFG's AbstractHeaps are engineered to be both cheap to create and cheap to use.
They also give you aliasing machinery. The DFG AbstractHeaps are represented
internally by a int64_t. Many comparisons between them are just integer comaprisons.
AbstractHeaps form a three-level hierarchy (World is the supertype of everything,
Kind with a TOP payload is a direct subtype of World, and Kind with a non-TOP
payload is the direct subtype of its corresponding TOP Kind).
Add the notion of a ClobberSet. This is the set of AbstractHeaps that you had
clobbered. It represents the set that results from unifying a bunch of
AbstractHeaps, and is intended to quickly answer overlap questions: does the given
AbstractHeap overlap any AbstractHeap in the ClobberSet? To this end, if you add an
AbstractHeap to a set, it "directly" adds the heap itself, and "super" adds all of
its ancestors. An AbstractHeap is said to overlap a set if any direct or super
member is equal to it, or if any of its ancestors are equal to a direct member.
Example #1:
- I add Variables(5). I.e. Variables is the Kind and 5 is the payload. This is a subtype of Variables, which is a subtype of World.
- You query Variables. I.e. Variables with a TOP payload, which is the supertype of Variables(X) for any X, and a subtype of World.
The set will have Variables(5) as a direct member, and Variables and World as
super members. The Variables query will immediately return true, because
Variables is indeed a super member.
Example #2:
- I add Variables(5)
- You query NamedProperties
NamedProperties is not a member at all (neither direct or super). We next
query World. World is a member, but it's a super member, so we return false.
Example #3:
- I add Variables
- You query Variables(5)
The set will have Variables as a direct member, and World as a super member.
The Variables(5) query will not find Variables(5) in the set, but then it
will query Variables. Variables is a direct member, so we return true.
Example #4:
- I add Variables
- You query NamedProperties(5)
Neither NamedProperties nor NamedProperties(5) are members. We next query
World. World is a member, but it's a super member, so we return false.
Overlap queries require that either the heap being queried is in the set (either
direct or super), or that one of its ancestors is a direct member. Another way to
think about how this works is that two heaps A and B are said to overlap if
A.isSubtypeOf(B) or B.isSubtypeOf(A). This is sound since heaps form a
single-inheritance heirarchy. Consider that we wanted to implement a set that holds
heaps and answers the question, "is any member in the set an ancestor (i.e.
supertype) of some other heap". We would have the set contain the heaps themselves,
and we would satisfy the query "A.isSubtypeOfAny(set)" by walking the ancestor
chain of A, and repeatedly querying its membership in the set. This is what the
"direct" members of our set do. Now consider the other part, where we want to ask if
any member of the set is a descendent of a heap, or "A.isSupertypeOfAny(set)". We
would implement this by implementing set.add(B) as adding not just B but also all of
B's ancestors; then we would answer A.isSupertypeOfAny(set) by just checking if A is
in the set. With two such sets - one that answers isSubtypeOfAny() and another that
answers isSupertypeOfAny() - we could answer the "do any of my heaps overlap your
heap" question. ClobberSet does this, but combines the two sets into a single
HashMap. The HashMap's value, "direct", means that the key is a member of both the
supertype set and the subtype set; if it's false then it's only a member of one of
them.
Finally, this adds a functorized clobberize() method that adds the read and write
clobbers of a DFG::Node to read and write functors. Common functors for adding to
ClobberSets, querying overlap, and doing nothing are provided. Convenient wrappers
are also provided. This allows you to say things like:
ClobberSet set;
addWrites(graph, node1, set);
if (readsOverlap(graph, node2, set))
We know that node1 may write to something that node2 may read from.
Currently this facility is only used to improve graph dumping, but it will be
instrumental in both LICM and GVN. In the future, I want to completely kill the
NodeClobbersWorld and NodeMightClobber flags, and eradicate CSEPhase's hackish way
of accomplishing almost exactly what AbstractHeap gives you.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractHeap.cpp: Added.
(DFG):
(JSC::DFG::AbstractHeap::Payload::dump):
(JSC::DFG::AbstractHeap::dump):
(WTF):
(WTF::printInternal):
- dfg/DFGAbstractHeap.h: Added.
(DFG):
(AbstractHeap):
(Payload):
(JSC::DFG::AbstractHeap::Payload::Payload):
(JSC::DFG::AbstractHeap::Payload::top):
(JSC::DFG::AbstractHeap::Payload::isTop):
(JSC::DFG::AbstractHeap::Payload::value):
(JSC::DFG::AbstractHeap::Payload::valueImpl):
(JSC::DFG::AbstractHeap::Payload::operator==):
(JSC::DFG::AbstractHeap::Payload::operator!=):
(JSC::DFG::AbstractHeap::Payload::operator<):
(JSC::DFG::AbstractHeap::Payload::isDisjoint):
(JSC::DFG::AbstractHeap::Payload::overlaps):
(JSC::DFG::AbstractHeap::AbstractHeap):
(JSC::DFG::AbstractHeap::operator!):
(JSC::DFG::AbstractHeap::kind):
(JSC::DFG::AbstractHeap::payload):
(JSC::DFG::AbstractHeap::isDisjoint):
(JSC::DFG::AbstractHeap::overlaps):
(JSC::DFG::AbstractHeap::supertype):
(JSC::DFG::AbstractHeap::hash):
(JSC::DFG::AbstractHeap::operator==):
(JSC::DFG::AbstractHeap::operator!=):
(JSC::DFG::AbstractHeap::operator<):
(JSC::DFG::AbstractHeap::isHashTableDeletedValue):
(JSC::DFG::AbstractHeap::payloadImpl):
(JSC::DFG::AbstractHeap::encode):
(JSC::DFG::AbstractHeapHash::hash):
(JSC::DFG::AbstractHeapHash::equal):
(AbstractHeapHash):
(WTF):
- dfg/DFGClobberSet.cpp: Added.
(DFG):
(JSC::DFG::ClobberSet::ClobberSet):
(JSC::DFG::ClobberSet::~ClobberSet):
(JSC::DFG::ClobberSet::add):
(JSC::DFG::ClobberSet::addAll):
(JSC::DFG::ClobberSet::contains):
(JSC::DFG::ClobberSet::overlaps):
(JSC::DFG::ClobberSet::clear):
(JSC::DFG::ClobberSet::direct):
(JSC::DFG::ClobberSet::super):
(JSC::DFG::ClobberSet::dump):
(JSC::DFG::ClobberSet::setOf):
(JSC::DFG::addReads):
(JSC::DFG::addWrites):
(JSC::DFG::addReadsAndWrites):
(JSC::DFG::readsOverlap):
(JSC::DFG::writesOverlap):
- dfg/DFGClobberSet.h: Added.
(DFG):
(ClobberSet):
(JSC::DFG::ClobberSet::isEmpty):
(ClobberSetAdd):
(JSC::DFG::ClobberSetAdd::ClobberSetAdd):
(JSC::DFG::ClobberSetAdd::operator()):
(ClobberSetOverlaps):
(JSC::DFG::ClobberSetOverlaps::ClobberSetOverlaps):
(JSC::DFG::ClobberSetOverlaps::operator()):
(JSC::DFG::ClobberSetOverlaps::result):
- dfg/DFGClobberize.cpp: Added.
(DFG):
(JSC::DFG::didWrites):
- dfg/DFGClobberize.h: Added.
(DFG):
(JSC::DFG::clobberize):
(NoOpClobberize):
(JSC::DFG::NoOpClobberize::NoOpClobberize):
(JSC::DFG::NoOpClobberize::operator()):
(CheckClobberize):
(JSC::DFG::CheckClobberize::CheckClobberize):
(JSC::DFG::CheckClobberize::operator()):
(JSC::DFG::CheckClobberize::result):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
Source/WTF:
Reviewed by Sam Weinig.
Fix compile goof in sortedListDump().
- wtf/ListDump.h:
(WTF::sortedListDump):
Conflicts:
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
- 9:05 PM Changeset in webkit [153293] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: It should be easy to figure out which blocks nodes belong to
https://bugs.webkit.org/show_bug.cgi?id=118957
Reviewed by Sam Weinig.
- dfg/DFGGraph.cpp:
(DFG):
(JSC::DFG::Graph::initializeNodeOwners):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGNode.h:
- 9:05 PM Changeset in webkit [153292] by
-
- 18 edits in trunk/Source/JavaScriptCore
fourthTier: NodeExitsForward shouldn't be duplicated in NodeType
https://bugs.webkit.org/show_bug.cgi?id=118956
Reviewed by Sam Weinig.
We had two way of expressing that something exits forward: the NodeExitsForward
flag and the word 'Forward' in the NodeType. That's kind of dumb. This patch
makes it just be a flag.
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGArgumentsSimplificationPhase.cpp:
(JSC::DFG::ArgumentsSimplificationPhase::run):
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::int32ToDoubleCSE):
(JSC::DFG::CSEPhase::checkStructureElimination):
(JSC::DFG::CSEPhase::structureTransitionWatchpointElimination):
(JSC::DFG::CSEPhase::putStructureStoreElimination):
(JSC::DFG::CSEPhase::checkArrayElimination):
(JSC::DFG::CSEPhase::performNodeCSE):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::injectInt32ToDoubleNode):
- dfg/DFGMinifiedNode.h:
(JSC::DFG::belongsInMinifiedGraph):
(JSC::DFG::MinifiedNode::hasChild):
- dfg/DFGNode.h:
(JSC::DFG::Node::convertToStructureTransitionWatchpoint):
(JSC::DFG::Node::hasStructureSet):
(JSC::DFG::Node::hasStructure):
(JSC::DFG::Node::hasArrayMode):
(JSC::DFG::Node::willHaveCodeGenOrOSR):
- dfg/DFGNodeType.h:
(DFG):
(JSC::DFG::needsOSRForwardRewiring):
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileInt32ToDouble):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):
- dfg/DFGVariableEventStream.cpp:
(JSC::DFG::VariableEventStream::reconstruct):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::addExitArgumentForNode):
- 9:05 PM Changeset in webkit [153291] by
-
- 10 edits in trunk/Source/JavaScriptCore
fourthTier: It should be possible for a DFG::Node to claim to exit to one CodeOrigin, but then claim that it belongs to a different CodeOrigin for all other purposes
https://bugs.webkit.org/show_bug.cgi?id=118946
Reviewed by Geoffrey Garen.
We want to decouple the exit target code origin of a node from the code origin
for all other purposes. The purposes of code origins are:
- Where the node will exit, if it exits. The exit target should be consistent with the surrounding nodes, in that if you just looked at the code origins of nodes in the graph, they would be consistent with the code origins in bytecode. This is necessary for live-at-bytecode analyses to work, and to preserve the original bytecode semantics when exiting.
- What kind of code the node came from, for semantics thingies. For example, we might use the code origin to find the node's global object for doing an original array check. Or we might use it to determine if the code is in strict mode. Or other similar things. When we use the code origin in this way, we're basically using it as a way of describing the node's meta-data without putting it into the node directly, to save space. In the absurd extreme you could imagine nodes not even having NodeTypes or NodeFlags, and just using the CodeOrigin to determine what bytecode the node originated from. We won't do that, but you can think of this use of code origins as just a way of compressing meta-data.
- What code origin we should supply profiling to, if we exit. This is closely related to the semantics thingies, in that the exit profiling is a persistent kind of semantic meta-data that survives between recompiles, and the only way to do that is to ascribe it to the original bytecode via the code origin.
If we hoist a node, we need to change the exit target code origin, but we must not
change the code origin for other purposes. The best way to do this is to decouple
the two kinds of code origin.
OSR exit data structures already do this, because they may edit the exit target
code origin while keeping the code origin for profiling intact. This happens for
forward exits. So, we just need to thread separation all the way back to DFG::Node.
That's what this patch does.
- dfg/DFGNode.h:
(JSC::DFG::Node::Node):
(Node):
- dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::OSRExit):
- dfg/DFGOSRExitBase.h:
(JSC::DFG::OSRExitBase::OSRExitBase):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::checkArgumentTypes):
- dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::appendOSRExit):
(LowerDFGToLLVM):
- ftl/FTLOSRExit.cpp:
(JSC::FTL::OSRExit::OSRExit):
- ftl/FTLOSRExit.h:
(OSRExit):
- 9:05 PM Changeset in webkit [153290] by
-
- 6 edits1 add in trunk/Source/JavaScriptCore
fourthTier: each DFG node that relies on other nodes to do their type checks should be able to tell you if those type checks happened
https://bugs.webkit.org/show_bug.cgi?id=118866
Reviewed by Sam Weinig.
Adds a safeToExecute() method that takes a node and an abstract state and tells you
if the node will run without crashing under that state.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
- dfg/DFGCFAPhase.cpp:
(CFAPhase):
(JSC::DFG::CFAPhase::CFAPhase):
(JSC::DFG::CFAPhase::run):
(JSC::DFG::CFAPhase::performBlockCFA):
(JSC::DFG::CFAPhase::performForwardCFA):
- dfg/DFGSafeToExecute.h: Added.
(DFG):
(SafeToExecuteEdge):
(JSC::DFG::SafeToExecuteEdge::SafeToExecuteEdge):
(JSC::DFG::SafeToExecuteEdge::operator()):
(JSC::DFG::SafeToExecuteEdge::result):
(JSC::DFG::safeToExecute):
- dfg/DFGStructureAbstractValue.h:
(JSC::DFG::StructureAbstractValue::isValidOffset):
(StructureAbstractValue):
- runtime/Options.h:
(JSC):
- 9:05 PM Changeset in webkit [153289] by
-
- 9 edits3 adds in trunk
fourthTier: FTL should be able to generate LLVM IR that uses an intrinsic for OSR exit
https://bugs.webkit.org/show_bug.cgi?id=118948
Source/JavaScriptCore:
Reviewed by Sam Weinig.
- Add the ability to generate LLVM IR but then not use it, via --llvmAlwaysFails=true. This allows doing "what if" experiments with IR generation, even if the generated IR can't yet execute.
- Add an OSR exit path that just calls an intrinsic that combines the branch and the off-ramp.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
- ftl/FTLFail.cpp: Added.
(FTL):
(JSC::FTL::fail):
- ftl/FTLFail.h: Added.
(FTL):
- ftl/FTLIntrinsicRepository.h:
(FTL):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::LowerDFGToLLVM::emitOSRExitCall):
- runtime/Options.h:
(JSC):
Tools:
Reviewed by Sam Weinig.
- Make ReducedFTL capable of dealing with code that uses the fake OSR exit intrinsic, by exporting it as a function.
- Make combineModules.rb idempotent. Sometimes it's convenient to run a file through it even if you know that you've already done so. See processIRDump.sh.
- Add a script, processIRDump.sh, that takes the output of --dumpLLVMIR=true and runs it through ReducedFTL automatically. You typically want to say something like:
jsc --dumpLLVMIR=true <program(s)> > jsc-output.txt
./processIRDump.sh --timing < jsc-output.txt
- ReducedFTL/ReducedFTL.c:
(webkit_osr_exit):
- ReducedFTL/combineModules.rb:
- ReducedFTL/processIRDump.sh: Added.
- 9:05 PM Changeset in webkit [153288] by
-
- 2 edits in trunk/Tools
fourthTier: We should use the no-asserts build of LLVM if that's what the user configured
https://bugs.webkit.org/show_bug.cgi?id=118947
Reviewed by Dan Bernstein.
- Scripts/copy-webkitlibraries-to-product-directory:
- 9:05 PM Changeset in webkit [153287] by
-
- 4 edits1 add in trunk/Source/JavaScriptCore
fourthTier: StringObjectUse uses structures, and CSE should know that
https://bugs.webkit.org/show_bug.cgi?id=118940
Reviewed by Geoffrey Garen.
This is asymptomatic right now, but we should fix it.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::putStructureStoreElimination):
- dfg/DFGEdgeUsesStructure.h: Added.
(DFG):
(EdgeUsesStructure):
(JSC::DFG::EdgeUsesStructure::EdgeUsesStructure):
(JSC::DFG::EdgeUsesStructure::operator()):
(JSC::DFG::EdgeUsesStructure::result):
(JSC::DFG::edgesUseStructure):
- dfg/DFGUseKind.h:
(DFG):
(JSC::DFG::usesStructure):
Conflicts:
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
- 9:05 PM Changeset in webkit [153286] by
-
- 9 edits13 adds in trunk
fourthTier: String GetByVal out-of-bounds handling is so wrong
https://bugs.webkit.org/show_bug.cgi?id=118935
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
Bunch of String GetByVal out-of-bounds fixes:
- Even if the string proto chain is sane, we need to watch out for negative indices. They may get values or call getters in the prototypes, since proto sanity doesn't check for negative indexed properties, as they are not technically indexed properties.
- GetByVal String out-of-bounds does in fact clobberWorld(). CSE should be given this information.
- GetByVal String out-of-bounds does in fact clobberWorld(). CFA should be given this information.
Also fixed some other things:
- If the DFG is disabled, the testRunner should pretend that we've done a bunch of DFG compiles. That's necessary to prevent the tests from timing out.
- Disassembler shouldn't try to dump source code since it's not safe in the concurrent JIT.
- API/JSCTestRunnerUtils.cpp:
(JSC::numberOfDFGCompiles):
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGDisassembler.cpp:
(JSC::DFG::Disassembler::dumpHeader):
- dfg/DFGGraph.h:
(JSC::DFG::Graph::byValIsPure):
- dfg/DFGSaneStringGetByValSlowPathGenerator.h: Added.
(DFG):
(SaneStringGetByValSlowPathGenerator):
(JSC::DFG::SaneStringGetByValSlowPathGenerator::SaneStringGetByValSlowPathGenerator):
(JSC::DFG::SaneStringGetByValSlowPathGenerator::generateInternal):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
LayoutTests:
Reviewed by Geoffrey Garen.
- fast/js/dfg-string-out-of-bounds-check-structure-expected.txt: Added.
- fast/js/dfg-string-out-of-bounds-check-structure.html: Added.
- fast/js/dfg-string-out-of-bounds-cse-expected.txt: Added.
- fast/js/dfg-string-out-of-bounds-cse.html: Added.
- fast/js/dfg-string-out-of-bounds-negative-check-structure-expected.txt: Added.
- fast/js/dfg-string-out-of-bounds-negative-check-structure.html: Added.
- fast/js/dfg-string-out-of-bounds-negative-proto-value-expected.txt: Added.
- fast/js/dfg-string-out-of-bounds-negative-proto-value.html: Added.
- fast/js/jsc-test-list:
- fast/js/script-tests/dfg-string-out-of-bounds-check-structure.js: Added.
(foo):
- fast/js/script-tests/dfg-string-out-of-bounds-cse.js: Added.
(foo):
- fast/js/script-tests/dfg-string-out-of-bounds-negative-check-structure.js: Added.
(foo):
(while):
- fast/js/script-tests/dfg-string-out-of-bounds-negative-proto-value.js: Added.
(foo):
- 9:05 PM Changeset in webkit [153285] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: Structure::isValidOffset() should be able to tell you if you're loading a valid JSValue, and not just not crashing
https://bugs.webkit.org/show_bug.cgi?id=118911
Reviewed by Geoffrey Garen.
We could also have a separate method like "willNotCrash(offset)", but that's not
what isValidOffset() is intended to mean.
- runtime/Structure.h:
(JSC::Structure::isValidOffset):
- 9:05 PM Changeset in webkit [153284] by
-
- 13 edits in trunk/Source/JavaScriptCore
fourthTier: Structure should be able to tell you if it's valid to load at a given offset from any object with that structure
https://bugs.webkit.org/show_bug.cgi?id=118878
Reviewed by Oliver Hunt.
- Change Structure::isValidOffset() to actually answer the question "If I attempted to load from an object of this structure, at this offset, would I commit suicide or would I get back some kind of value?"
- Change StorageAccessData::offset to use a PropertyOffset. It should have been that way from the start.
- Fix PutStructure so that it sets haveStructures in all of the cases that it should.
- Make GetByOffset also reference the base object in addition to the butterfly.
The future use of this power will be to answer questions like "If I hoisted this
GetByOffset or PutByOffset to this point, would it cause crashes, or would it be
fine?"
I don't currently plan to use this power to perform validation, since the CSE has
the power to eliminate CheckStructure's that the CFA wouldn't be smart enough to
remove - both in the case of StructureSets where size >= 2 and in the case of
CheckStructures that match across PutStructures. At first I tried to write a
validator that was aware of this, but the validation code got way too complicated
and I started having nightmares of spurious assertion bugs being filed against me.
This also changes some of the code for how we hash FunctionExecutable's for debug
dumps, since that code still had some thread-safety issues. Basically, the
concurrent JIT needs to use the CodeBlock's precomputed hash and never call anything
that could transitively try to compute the hash from the source code. The source
code is a string that may be lazily computed, and that involves all manner of thread
unsafe things.
- bytecode/CodeOrigin.cpp:
(JSC::InlineCallFrame::hash):
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleGetByOffset):
(JSC::DFG::ByteCodeParser::handlePutByOffset):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::performBlockCFA):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGGraph.h:
(StorageAccessData):
- dfg/DFGNode.h:
(JSC::DFG::Node::convertToGetByOffset):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileGetByOffset):
(JSC::FTL::LowerDFGToLLVM::compilePutByOffset):
- runtime/FunctionExecutableDump.cpp:
(JSC::FunctionExecutableDump::dump):
- runtime/Structure.h:
(Structure):
(JSC::Structure::isValidOffset):
- 9:05 PM Changeset in webkit [153283] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: AbstractInterpreter should explicitly ask AbstractState to create new AbstractValues for newly born nodes
https://bugs.webkit.org/show_bug.cgi?id=118880
Reviewed by Sam Weinig.
It should be possible to have an AbstractState that is backed by a HashMap. But to
do this, the AbstractInterpreter should explicitly ask for new nodes to be added to
the map, since otherwise the idiom of getting a reference to the AbstractValue
returned by forNode() would cause really subtle memory corruption bugs.
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGInPlaceAbstractState.h:
(JSC::DFG::InPlaceAbstractState::createValueForNode):
(InPlaceAbstractState):
- 9:05 PM Changeset in webkit [153282] by
-
- 11 edits2 moves3 adds in trunk/Source/JavaScriptCore
fourthTier: Decouple the way that CFA stores its state from the way it does abstract interpretation
https://bugs.webkit.org/show_bug.cgi?id=118835
Reviewed by Oliver Hunt.
This separates AbstractState into two things:
- InPlaceAbstractState, which can tell you the abstract state of anything you might care about, and uses the old AbstractState's algorithms and data structures for doing so.
- AbstractInterpreter<AbstractStateType>, which can execute a DFG::Node* with respect to an AbstractStateType. Currently we always use AbstractStateType = InPlaceAbstractState. But we could drop in an other class that supports basic primitives like forNode() and variables().
This is important because:
- We want to hoist things out of loops.
- We don't know what things rely on what type checks.
- We only want to hoist type checks out of loops if they aren't clobbered.
- We may want to still hoist things that depended on those type checks, if it's safe to do those things based on the CFA state at the tail of the loop pre-header.
- We don't want things to rely on their type checks by way of a token, because that's just weird.
So, we want to be able to have a special form of the CFA that can
incrementally update a basic block's state-at-tail, and we want to be able to
do this for multiple blocks simultaneously. This requires *not* storing the
per-node state in the nodes themselves, but instead using the at-tail HashMap
directly.
Hence we need to have a way of making the abstract interpreter (i.e.
AbstractState::execute) polymorphic with respect to state representation. Put
another way, we need to separate the way that abstract state is represented
from the way DFG IR is abstractly interpreted.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractInterpreter.h: Added.
(DFG):
(AbstractInterpreter):
(JSC::DFG::AbstractInterpreter::forNode):
(JSC::DFG::AbstractInterpreter::variables):
(JSC::DFG::AbstractInterpreter::needsTypeCheck):
(JSC::DFG::AbstractInterpreter::filterEdgeByUse):
(JSC::DFG::AbstractInterpreter::filter):
(JSC::DFG::AbstractInterpreter::filterArrayModes):
(JSC::DFG::AbstractInterpreter::filterByValue):
(JSC::DFG::AbstractInterpreter::trySetConstant):
(JSC::DFG::AbstractInterpreter::filterByType):
- dfg/DFGAbstractInterpreterInlines.h: Added.
(DFG):
(JSC::DFG::::AbstractInterpreter):
(JSC::DFG::::~AbstractInterpreter):
(JSC::DFG::::booleanResult):
(JSC::DFG::::startExecuting):
(JSC::DFG::::executeEdges):
(JSC::DFG::::verifyEdge):
(JSC::DFG::::verifyEdges):
(JSC::DFG::::executeEffects):
(JSC::DFG::::execute):
(JSC::DFG::::clobberWorld):
(JSC::DFG::::clobberCapturedVars):
(JSC::DFG::::clobberStructures):
(JSC::DFG::::dump):
(JSC::DFG::::filter):
(JSC::DFG::::filterArrayModes):
(JSC::DFG::::filterByValue):
- dfg/DFGAbstractState.cpp: Removed.
- dfg/DFGAbstractState.h: Removed.
- dfg/DFGArgumentsSimplificationPhase.cpp:
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::CFAPhase):
(JSC::DFG::CFAPhase::performBlockCFA):
(CFAPhase):
- dfg/DFGCFGSimplificationPhase.cpp:
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::ConstantFoldingPhase):
(JSC::DFG::ConstantFoldingPhase::foldConstants):
(ConstantFoldingPhase):
- dfg/DFGInPlaceAbstractState.cpp: Added.
(DFG):
(JSC::DFG::InPlaceAbstractState::InPlaceAbstractState):
(JSC::DFG::InPlaceAbstractState::~InPlaceAbstractState):
(JSC::DFG::InPlaceAbstractState::beginBasicBlock):
(JSC::DFG::setLiveValues):
(JSC::DFG::InPlaceAbstractState::initialize):
(JSC::DFG::InPlaceAbstractState::endBasicBlock):
(JSC::DFG::InPlaceAbstractState::reset):
(JSC::DFG::InPlaceAbstractState::mergeStateAtTail):
(JSC::DFG::InPlaceAbstractState::merge):
(JSC::DFG::InPlaceAbstractState::mergeToSuccessors):
(JSC::DFG::InPlaceAbstractState::mergeVariableBetweenBlocks):
- dfg/DFGInPlaceAbstractState.h: Added.
(DFG):
(InPlaceAbstractState):
(JSC::DFG::InPlaceAbstractState::forNode):
(JSC::DFG::InPlaceAbstractState::variables):
(JSC::DFG::InPlaceAbstractState::block):
(JSC::DFG::InPlaceAbstractState::didClobber):
(JSC::DFG::InPlaceAbstractState::isValid):
(JSC::DFG::InPlaceAbstractState::setDidClobber):
(JSC::DFG::InPlaceAbstractState::setIsValid):
(JSC::DFG::InPlaceAbstractState::setBranchDirection):
(JSC::DFG::InPlaceAbstractState::setFoundConstants):
(JSC::DFG::InPlaceAbstractState::haveStructures):
(JSC::DFG::InPlaceAbstractState::setHaveStructures):
- dfg/DFGMergeMode.h: Added.
(DFG):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::backwardTypeCheck):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::compileToStringOnCell):
(JSC::DFG::SpeculativeJIT::speculateStringIdentAndLoadStorage):
(JSC::DFG::SpeculativeJIT::speculateStringObject):
(JSC::DFG::SpeculativeJIT::speculateStringOrStringObject):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::needsTypeCheck):
(SpeculativeJIT):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
- ftl/FTLLowerDFGToLLVM.cpp:
(FTL):
(JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::appendTypeCheck):
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::speculateNumber):
(JSC::FTL::LowerDFGToLLVM::speculateRealNumber):
(LowerDFGToLLVM):
Conflicts:
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
- 9:04 PM Changeset in webkit [153281] by
-
- 8 edits in trunk/Source/JavaScriptCore
fourthTier: DFG shouldn't create CheckStructures for array accesses except if the ArrayMode implies an original array access
https://bugs.webkit.org/show_bug.cgi?id=118867
Reviewed by Mark Hahnenberg.
This allows us to kill off a bunch of code in the parser, in fixup, and to simplify
ArrayProfile.
It also makes it easier to ask any array-using node how to create its type check.
Doing this required fixing a bug in LowLevelInterpreter64, where it was storing into
an array profile, thinking that it was storing into a value profile. Reshuffling the
fields in ArrayProfile revealed this.
- bytecode/ArrayProfile.cpp:
(JSC::ArrayProfile::computeUpdatedPrediction):
(JSC::ArrayProfile::briefDescriptionWithoutUpdating):
- bytecode/ArrayProfile.h:
(JSC::ArrayProfile::ArrayProfile):
(ArrayProfile):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::updateAllArrayPredictions):
(JSC::CodeBlock::updateAllPredictions):
- bytecode/CodeBlock.h:
(CodeBlock):
(JSC::CodeBlock::updateAllArrayPredictions):
- dfg/DFGArrayMode.h:
(ArrayMode):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::getArrayModeConsideringSlowPath):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(FixupPhase):
(JSC::DFG::FixupPhase::checkArray):
(JSC::DFG::FixupPhase::blessArrayOperation):
- llint/LowLevelInterpreter64.asm:
- 9:04 PM Changeset in webkit [153280] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: CFA should consider live-at-head for clobbering and dumping
https://bugs.webkit.org/show_bug.cgi?id=118857
Reviewed by Mark Hahnenberg.
- clobberStructures() was not considering nodes live-at-head when in SSA form. This means it would fail to clobber some structures.
- dump() was not considering nodes live-at-head when in SSA form. This means it wouldn't dump everything that you might be interested in.
- AbstractState::m_currentNode is a useless variable and we should get rid of it.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::AbstractState):
(JSC::DFG::AbstractState::beginBasicBlock):
(JSC::DFG::AbstractState::reset):
(JSC::DFG::AbstractState::startExecuting):
(JSC::DFG::AbstractState::clobberStructures):
(JSC::DFG::AbstractState::dump):
- dfg/DFGAbstractState.h:
(AbstractState):
- 9:04 PM Changeset in webkit [153279] by
-
- 8 edits1 copy1 add in trunk/Source/JavaScriptCore
fourthTier: Add a phase to create loop pre-headers
https://bugs.webkit.org/show_bug.cgi?id=118778
Reviewed by Oliver Hunt.
Add a loop pre-header creation phase. Any loop that doesn't already have
just one predecessor that isn't part of the loop has a pre-header
prepended. All non-loop predecessors then jump to that pre-header.
Also fix a handful of bugs:
- DFG::Analysis should set m_valid before running the analysis, since that makes it easier to use ASSERT(m_valid) in the analysis' methods, which may be called by the analysis before the analysis completes. NaturalLoops does this with loopsOf().
- NaturalLoops::headerOf() was missing a check for innerMostLoopOf() returning 0, since that'll happen if the block isn't in any loop.
- Change BlockInsertionSet to dethread the graph, since anyone using it will want to do so.
- Change dethreading to ignore SSA form graphs.
This also adds NaturalLoops::belongsTo(), which I always used in the
pre-header creation phase. I didn't end up using it but I'll probably use
it in the near future.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAnalysis.h:
(JSC::DFG::Analysis::computeIfNecessary):
- dfg/DFGBlockInsertionSet.cpp:
(JSC::DFG::BlockInsertionSet::execute):
- dfg/DFGCriticalEdgeBreakingPhase.cpp:
(JSC::DFG::CriticalEdgeBreakingPhase::breakCriticalEdge):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dethread):
- dfg/DFGLoopPreHeaderCreationPhase.cpp: Added.
(DFG):
(LoopPreHeaderCreationPhase):
(JSC::DFG::LoopPreHeaderCreationPhase::LoopPreHeaderCreationPhase):
(JSC::DFG::LoopPreHeaderCreationPhase::run):
(JSC::DFG::performLoopPreHeaderCreation):
- dfg/DFGLoopPreHeaderCreationPhase.h: Added.
(DFG):
- dfg/DFGNaturalLoops.h:
(NaturalLoop):
(JSC::DFG::NaturalLoops::headerOf):
(JSC::DFG::NaturalLoops::innerMostLoopOf):
(JSC::DFG::NaturalLoops::innerMostOuterLoop):
(JSC::DFG::NaturalLoops::belongsTo):
(NaturalLoops):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
Conflicts:
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
- 9:04 PM Changeset in webkit [153278] by
-
- 7 edits in trunk/Source/JavaScriptCore
fourthTier: Rationalize Node::replacement
https://bugs.webkit.org/show_bug.cgi?id=118774
Reviewed by Oliver Hunt.
- Clearing of replacements is now done in Graph::clearReplacements().
- New nodes now have replacement set to 0.
- Node::replacement is now part of a 'misc' union. I'll be putting at least one other field into that union as part of LICM work (see https://bugs.webkit.org/show_bug.cgi?id=118749).
- dfg/DFGCPSRethreadingPhase.cpp:
(JSC::DFG::CPSRethreadingPhase::run):
(JSC::DFG::CPSRethreadingPhase::freeUnnecessaryNodes):
(JSC::DFG::CPSRethreadingPhase::canonicalizeGetLocalFor):
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::run):
(JSC::DFG::CSEPhase::setReplacement):
(JSC::DFG::CSEPhase::performBlockCSE):
- dfg/DFGGraph.cpp:
(DFG):
(JSC::DFG::Graph::clearReplacements):
- dfg/DFGGraph.h:
(JSC::DFG::Graph::performSubstitutionForEdge):
(Graph):
- dfg/DFGNode.h:
(JSC::DFG::Node::Node):
- dfg/DFGSSAConversionPhase.cpp:
(JSC::DFG::SSAConversionPhase::run):
- 9:04 PM Changeset in webkit [153277] by
-
- 7 edits in trunk/Source
fourthTier: NaturalLoops should be able to quickly answer questions like "what loops own this basic block"
https://bugs.webkit.org/show_bug.cgi?id=118750
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
- dfg/DFGBasicBlock.h:
(BasicBlock):
- dfg/DFGNaturalLoops.cpp:
(JSC::DFG::NaturalLoops::compute):
(JSC::DFG::NaturalLoops::loopsOf):
- dfg/DFGNaturalLoops.h:
(DFG):
(JSC::DFG::NaturalLoop::NaturalLoop):
(NaturalLoop):
(JSC::DFG::NaturalLoop::index):
(JSC::DFG::NaturalLoop::isOuterMostLoop):
(JSC::DFG::NaturalLoop::addBlock):
(JSC::DFG::NaturalLoops::headerOf):
(JSC::DFG::NaturalLoops::innerMostLoopOf):
(NaturalLoops):
(JSC::DFG::NaturalLoops::innerMostOuterLoop):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
Source/WTF:
Reviewed by Mark Hahnenberg.
Add a utility function for inserting an element into a vector that has bounded size,
and where the insertion causes things to drop off the end.
- wtf/StdLibExtras.h:
(WTF):
(WTF::insertIntoBoundedVector):
- 9:04 PM Changeset in webkit [153276] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: don't GC when shutting down the VM
https://bugs.webkit.org/show_bug.cgi?id=118751
Reviewed by Mark Hahnenberg.
- heap/Heap.h:
(Heap):
- runtime/VM.cpp:
(JSC::VM::~VM):
- 9:04 PM Changeset in webkit [153275] by
-
- 1 edit4 adds in trunk/Tools
fourthTier: We should have a reduced FTL LLVM pipeline tool in the repository
https://bugs.webkit.org/show_bug.cgi?id=118647
Rubber stamped by Geoffrey Garen and Mark Hahnenberg.
Add a tool that takes in an LLVM bitcode file and JITs it in exactly the same
way that the FTL would.
Also add a tool that combines multiple LLVM modules generated by FTL into a
single module.
- ReducedFTL: Added.
- ReducedFTL/ReducedFTL.c: Added.
(usage):
(currentTime):
(MemorySection):
(mmAllocateCodeSection):
(mmAllocateDataSection):
(mmApplyPermissions):
(mmDestroy):
(symbolLookupCallback):
(main):
- ReducedFTL/build.sh: Added.
- ReducedFTL/combineModules.rb: Added.
- 9:04 PM Changeset in webkit [153274] by
-
- 45 edits10 copies8 adds in trunk/Source
fourthTier: DFG should have an SSA form for use by FTL
https://bugs.webkit.org/show_bug.cgi?id=118338
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Adds an SSA form to the DFG. We can convert ThreadedCPS form into SSA form
after breaking critical edges. The conversion algorithm follows Aycock and
Horspool, and the SSA form itself follows something I've done before, where
instead of having Phi functions specify input nodes corresponding to block
predecessors, we instead have Upsilon functions in the predecessors that
specify which value in that block goes into which subsequent Phi. Upsilons
don't have to dominate Phis (usually they don't) and they correspond to a
non-SSA "mov" into the Phi's "variable". This gives all of the good
properties of SSA, while ensuring that a bunch of CFG transformations don't
have to be SSA-aware.
So far the only DFG phases that are SSA-aware are DCE and CFA. CFG
simplification is probably SSA-aware by default, though I haven't tried it.
Constant folding probably needs a few tweaks, but is likely ready. Ditto
for CSE, though it's not clear that we'd want to use block-local CSE when
we could be doing GVN.
Currently only the FTL can generate code from the SSA form, and there is no
way to convert from SSA to ThreadedCPS or LoadStore. There probably will
never be such a capability.
In order to handle OSR exit state in the SSA, we place MovHints at Phi
points. Other than that, you can reconstruct state-at-exit by forward
propagating MovHints. Note that MovHint is the new SetLocal in SSA.
SetLocal and GetLocal only survive into SSA if they are on captured
variables, or in the case of flushes. A "live SetLocal" will be
NodeMustGenerate and will always correspond to a flush. Computing the
state-at-exit requires running SSA liveness analysis, OSR availability
analysis, and flush liveness analysis. The FTL runs all of these prior to
generating code. While OSR exit continues to be tricky, much of the logic
is now factored into separate phases and the backend has to do less work
to reason about what happened outside of the basic block that is being
lowered.
Conversion from DFG SSA to LLVM SSA is done by ensuring that we generate
code in depth-first order, thus guaranteeing that a node will always be
lowered (and hence have a LValue) before any of the blocks dominated by
that node's block have code generated. For Upsilon/Phi, we just use
alloca's. We could do something more clever there, but it's probably not
worth it, at least not now.
Finally, while the SSA form is currently only being converted to LLVM IR,
there is nothing that prevents us from considering other backends in the
future - with the caveat that this form is designed to be first lowered to
a lower-level SSA before actual machine code generation commences. So we
ought to either use LLVM (the intended path) or we will have to write our
own SSA low-level backend.
This runs all of the code that the FTL was known to run previously. No
change in performance for now. But it does open some exciting
possibilities!
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/Operands.h:
(JSC::OperandValueTraits::dump):
(JSC::Operands::fill):
(Operands):
(JSC::Operands::clear):
(JSC::Operands::operator==):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::beginBasicBlock):
(JSC::DFG::setLiveValues):
(DFG):
(JSC::DFG::AbstractState::initialize):
(JSC::DFG::AbstractState::endBasicBlock):
(JSC::DFG::AbstractState::executeEffects):
(JSC::DFG::AbstractState::mergeStateAtTail):
(JSC::DFG::AbstractState::merge):
- dfg/DFGAbstractState.h:
(AbstractState):
- dfg/DFGAdjacencyList.h:
(JSC::DFG::AdjacencyList::justOneChild):
(AdjacencyList):
- dfg/DFGBasicBlock.cpp: Added.
(DFG):
(JSC::DFG::BasicBlock::BasicBlock):
(JSC::DFG::BasicBlock::~BasicBlock):
(JSC::DFG::BasicBlock::ensureLocals):
(JSC::DFG::BasicBlock::isInPhis):
(JSC::DFG::BasicBlock::isInBlock):
(JSC::DFG::BasicBlock::removePredecessor):
(JSC::DFG::BasicBlock::replacePredecessor):
(JSC::DFG::BasicBlock::dump):
(JSC::DFG::BasicBlock::SSAData::SSAData):
(JSC::DFG::BasicBlock::SSAData::~SSAData):
- dfg/DFGBasicBlock.h:
(BasicBlock):
(JSC::DFG::BasicBlock::operator[]):
(JSC::DFG::BasicBlock::successor):
(JSC::DFG::BasicBlock::successorForCondition):
(SSAData):
- dfg/DFGBasicBlockInlines.h:
(DFG):
- dfg/DFGBlockInsertionSet.cpp: Added.
(DFG):
(JSC::DFG::BlockInsertionSet::BlockInsertionSet):
(JSC::DFG::BlockInsertionSet::~BlockInsertionSet):
(JSC::DFG::BlockInsertionSet::insert):
(JSC::DFG::BlockInsertionSet::insertBefore):
(JSC::DFG::BlockInsertionSet::execute):
- dfg/DFGBlockInsertionSet.h: Added.
(DFG):
(BlockInsertionSet):
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::run):
- dfg/DFGCFGSimplificationPhase.cpp:
- dfg/DFGCPSRethreadingPhase.cpp:
(JSC::DFG::CPSRethreadingPhase::canonicalizeLocalsInBlock):
- dfg/DFGCommon.cpp:
(WTF::printInternal):
- dfg/DFGCommon.h:
(JSC::DFG::doesKill):
(DFG):
(JSC::DFG::killStatusForDoesKill):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
(JSC::DFG::ConstantFoldingPhase::isCapturedAtOrAfter):
- dfg/DFGCriticalEdgeBreakingPhase.cpp: Added.
(DFG):
(CriticalEdgeBreakingPhase):
(JSC::DFG::CriticalEdgeBreakingPhase::CriticalEdgeBreakingPhase):
(JSC::DFG::CriticalEdgeBreakingPhase::run):
(JSC::DFG::CriticalEdgeBreakingPhase::breakCriticalEdge):
(JSC::DFG::performCriticalEdgeBreaking):
- dfg/DFGCriticalEdgeBreakingPhase.h: Added.
(DFG):
- dfg/DFGDCEPhase.cpp:
(JSC::DFG::DCEPhase::run):
(JSC::DFG::DCEPhase::findTypeCheckRoot):
(JSC::DFG::DCEPhase::countNode):
(DCEPhase):
(JSC::DFG::DCEPhase::countEdge):
(JSC::DFG::DCEPhase::eliminateIrrelevantPhantomChildren):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- dfg/DFGEdge.cpp:
(JSC::DFG::Edge::dump):
- dfg/DFGEdge.h:
(JSC::DFG::Edge::Edge):
(JSC::DFG::Edge::setNode):
(JSC::DFG::Edge::useKindUnchecked):
(JSC::DFG::Edge::setUseKind):
(JSC::DFG::Edge::setProofStatus):
(JSC::DFG::Edge::willNotHaveCheck):
(JSC::DFG::Edge::willHaveCheck):
(Edge):
(JSC::DFG::Edge::killStatusUnchecked):
(JSC::DFG::Edge::killStatus):
(JSC::DFG::Edge::setKillStatus):
(JSC::DFG::Edge::doesKill):
(JSC::DFG::Edge::doesNotKill):
(JSC::DFG::Edge::shift):
(JSC::DFG::Edge::makeWord):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGFlushFormat.cpp: Added.
(WTF):
(WTF::printInternal):
- dfg/DFGFlushFormat.h: Added.
(DFG):
(JSC::DFG::resultFor):
(JSC::DFG::useKindFor):
(WTF):
- dfg/DFGFlushLivenessAnalysisPhase.cpp: Added.
(DFG):
(FlushLivenessAnalysisPhase):
(JSC::DFG::FlushLivenessAnalysisPhase::FlushLivenessAnalysisPhase):
(JSC::DFG::FlushLivenessAnalysisPhase::run):
(JSC::DFG::FlushLivenessAnalysisPhase::process):
(JSC::DFG::FlushLivenessAnalysisPhase::setForNode):
(JSC::DFG::FlushLivenessAnalysisPhase::flushFormat):
(JSC::DFG::performFlushLivenessAnalysis):
- dfg/DFGFlushLivenessAnalysisPhase.h: Added.
(DFG):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::dumpBlockHeader):
(DFG):
(JSC::DFG::Graph::addForDepthFirstSort):
(JSC::DFG::Graph::getBlocksInDepthFirstOrder):
- dfg/DFGGraph.h:
(JSC::DFG::Graph::convertToConstant):
(JSC::DFG::Graph::valueProfileFor):
(Graph):
- dfg/DFGInsertionSet.h:
(DFG):
(JSC::DFG::InsertionSet::execute):
- dfg/DFGLivenessAnalysisPhase.cpp: Added.
(DFG):
(LivenessAnalysisPhase):
(JSC::DFG::LivenessAnalysisPhase::LivenessAnalysisPhase):
(JSC::DFG::LivenessAnalysisPhase::run):
(JSC::DFG::LivenessAnalysisPhase::process):
(JSC::DFG::LivenessAnalysisPhase::addChildUse):
(JSC::DFG::performLivenessAnalysis):
- dfg/DFGLivenessAnalysisPhase.h: Added.
(DFG):
- dfg/DFGNode.cpp:
(JSC::DFG::Node::hasVariableAccessData):
(DFG):
- dfg/DFGNode.h:
(DFG):
(Node):
(JSC::DFG::Node::hasLocal):
(JSC::DFG::Node::variableAccessData):
(JSC::DFG::Node::hasPhi):
(JSC::DFG::Node::phi):
(JSC::DFG::Node::takenBlock):
(JSC::DFG::Node::notTakenBlock):
(JSC::DFG::Node::successor):
(JSC::DFG::Node::successorForCondition):
(JSC::DFG::nodeComparator):
(JSC::DFG::nodeListDump):
(JSC::DFG::nodeMapDump):
- dfg/DFGNodeFlags.cpp:
(JSC::DFG::dumpNodeFlags):
- dfg/DFGNodeType.h:
(DFG):
- dfg/DFGOSRAvailabilityAnalysisPhase.cpp: Added.
(DFG):
(OSRAvailabilityAnalysisPhase):
(JSC::DFG::OSRAvailabilityAnalysisPhase::OSRAvailabilityAnalysisPhase):
(JSC::DFG::OSRAvailabilityAnalysisPhase::run):
(JSC::DFG::performOSRAvailabilityAnalysis):
- dfg/DFGOSRAvailabilityAnalysisPhase.h: Added.
(DFG):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
- dfg/DFGPredictionInjectionPhase.cpp:
(JSC::DFG::PredictionInjectionPhase::run):
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSSAConversionPhase.cpp: Added.
(DFG):
(SSAConversionPhase):
(JSC::DFG::SSAConversionPhase::SSAConversionPhase):
(JSC::DFG::SSAConversionPhase::run):
(JSC::DFG::SSAConversionPhase::forwardPhiChildren):
(JSC::DFG::SSAConversionPhase::forwardPhi):
(JSC::DFG::SSAConversionPhase::forwardPhiEdge):
(JSC::DFG::SSAConversionPhase::deduplicateChildren):
(JSC::DFG::SSAConversionPhase::addFlushedLocalOp):
(JSC::DFG::SSAConversionPhase::addFlushedLocalEdge):
(JSC::DFG::performSSAConversion):
- dfg/DFGSSAConversionPhase.h: Added.
(DFG):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGValidate.cpp:
(JSC::DFG::Validate::validate):
(Validate):
(JSC::DFG::Validate::validateCPS):
- dfg/DFGVariableAccessData.h:
(JSC::DFG::VariableAccessData::flushFormat):
(VariableAccessData):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::lower):
(JSC::FTL::LowerDFGToLLVM::createPhiVariables):
(JSC::FTL::LowerDFGToLLVM::compileBlock):
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileUpsilon):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compilePhi):
(JSC::FTL::LowerDFGToLLVM::compileJSConstant):
(JSC::FTL::LowerDFGToLLVM::compileWeakJSConstant):
(JSC::FTL::LowerDFGToLLVM::compileGetArgument):
(JSC::FTL::LowerDFGToLLVM::compileGetLocal):
(JSC::FTL::LowerDFGToLLVM::compileSetLocal):
(JSC::FTL::LowerDFGToLLVM::compileAdd):
(JSC::FTL::LowerDFGToLLVM::compileArithSub):
(JSC::FTL::LowerDFGToLLVM::compileArithMul):
(JSC::FTL::LowerDFGToLLVM::compileArithDiv):
(JSC::FTL::LowerDFGToLLVM::compileArithMod):
(JSC::FTL::LowerDFGToLLVM::compileArithMinOrMax):
(JSC::FTL::LowerDFGToLLVM::compileArithAbs):
(JSC::FTL::LowerDFGToLLVM::compileArithNegate):
(JSC::FTL::LowerDFGToLLVM::compileBitAnd):
(JSC::FTL::LowerDFGToLLVM::compileBitOr):
(JSC::FTL::LowerDFGToLLVM::compileBitXor):
(JSC::FTL::LowerDFGToLLVM::compileBitRShift):
(JSC::FTL::LowerDFGToLLVM::compileBitLShift):
(JSC::FTL::LowerDFGToLLVM::compileBitURShift):
(JSC::FTL::LowerDFGToLLVM::compileUInt32ToNumber):
(JSC::FTL::LowerDFGToLLVM::compileInt32ToDouble):
(JSC::FTL::LowerDFGToLLVM::compileGetButterfly):
(JSC::FTL::LowerDFGToLLVM::compileGetArrayLength):
(JSC::FTL::LowerDFGToLLVM::compileGetByVal):
(JSC::FTL::LowerDFGToLLVM::compileGetByOffset):
(JSC::FTL::LowerDFGToLLVM::compileGetGlobalVar):
(JSC::FTL::LowerDFGToLLVM::compileCompareEqConstant):
(JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq):
(JSC::FTL::LowerDFGToLLVM::compileCompareStrictEqConstant):
(JSC::FTL::LowerDFGToLLVM::compileCompareLess):
(JSC::FTL::LowerDFGToLLVM::compileCompareLessEq):
(JSC::FTL::LowerDFGToLLVM::compileCompareGreater):
(JSC::FTL::LowerDFGToLLVM::compileCompareGreaterEq):
(JSC::FTL::LowerDFGToLLVM::compileLogicalNot):
(JSC::FTL::LowerDFGToLLVM::speculateBackward):
(JSC::FTL::LowerDFGToLLVM::lowInt32):
(JSC::FTL::LowerDFGToLLVM::lowCell):
(JSC::FTL::LowerDFGToLLVM::lowBoolean):
(JSC::FTL::LowerDFGToLLVM::lowDouble):
(JSC::FTL::LowerDFGToLLVM::lowJSValue):
(JSC::FTL::LowerDFGToLLVM::lowStorage):
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::speculateBoolean):
(JSC::FTL::LowerDFGToLLVM::isLive):
(JSC::FTL::LowerDFGToLLVM::use):
(JSC::FTL::LowerDFGToLLVM::initializeOSRExitStateForBlock):
(JSC::FTL::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::LowerDFGToLLVM::emitOSRExitCall):
(JSC::FTL::LowerDFGToLLVM::addExitArgumentForNode):
(JSC::FTL::LowerDFGToLLVM::linkOSRExitsAndCompleteInitializationBlocks):
(JSC::FTL::LowerDFGToLLVM::setInt32):
(JSC::FTL::LowerDFGToLLVM::setJSValue):
(JSC::FTL::LowerDFGToLLVM::setBoolean):
(JSC::FTL::LowerDFGToLLVM::setStorage):
(JSC::FTL::LowerDFGToLLVM::setDouble):
(JSC::FTL::LowerDFGToLLVM::isValid):
- ftl/FTLLoweredNodeValue.h: Added.
(FTL):
(LoweredNodeValue):
(JSC::FTL::LoweredNodeValue::LoweredNodeValue):
(JSC::FTL::LoweredNodeValue::isSet):
(JSC::FTL::LoweredNodeValue::operator!):
(JSC::FTL::LoweredNodeValue::value):
(JSC::FTL::LoweredNodeValue::block):
- ftl/FTLValueFromBlock.h:
(JSC::FTL::ValueFromBlock::ValueFromBlock):
(ValueFromBlock):
- ftl/FTLValueSource.cpp:
(JSC::FTL::ValueSource::dump):
- ftl/FTLValueSource.h:
Source/WTF:
Reviewed by Mark Hahnenberg.
- Extend variadicity of PrintStream and dataLog.
- Give HashSet the ability to add a span of things.
- Give HashSet the ability to == another HashSet.
- Note FIXME's in HashTable concerning copying performance, that affects the way that the DFG now uses HashSets and HashMaps.
- Factor out the bulk-insertion logic of JSC::DFG::InsertionSet into WTF::Insertion, so that it can be used in more places.
- Create a dumper for lists and maps.
- WTF.xcodeproj/project.pbxproj:
- wtf/DataLog.h:
(WTF):
(WTF::dataLog):
- wtf/HashSet.h:
(HashSet):
(WTF):
(WTF::::add):
(WTF::=):
- wtf/HashTable.h:
(WTF::::HashTable):
(WTF::=):
- wtf/Insertion.h: Added.
(WTF):
(Insertion):
(WTF::Insertion::Insertion):
(WTF::Insertion::index):
(WTF::Insertion::element):
(WTF::Insertion::operator<):
(WTF::executeInsertions):
- wtf/ListDump.h: Added.
(WTF):
(ListDump):
(WTF::ListDump::ListDump):
(WTF::ListDump::dump):
(MapDump):
(WTF::MapDump::MapDump):
(WTF::MapDump::dump):
(WTF::listDump):
(WTF::sortedListDump):
(WTF::lessThan):
(WTF::mapDump):
(WTF::sortedMapDump):
- wtf/PrintStream.h:
(PrintStream):
(WTF::PrintStream::print):
Conflicts:
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
- 9:04 PM Changeset in webkit [153273] by
-
- 9 edits in trunk/Source/JavaScriptCore
fourthTier: Resurrect the CLoop LLINT on the FTL branch.
https://bugs.webkit.org/show_bug.cgi?id=118144.
Reviewed by Mark Hahnenberg.
- bytecode/CodeBlock.h:
(JSC::CodeBlock::jitType):
- Fix the CodeBlock jitType to be InterpreterThunk when !ENABLE_JIT.
- bytecode/JumpTable.h:
(JSC::SimpleJumpTable::clear):
- interpreter/StackIterator.cpp:
(JSC::StackIterator::Frame::bytecodeOffset):
(JSC::StackIterator::Frame::print):
- jit/JITCode.cpp:
(JSC):
- jit/JITExceptions.cpp:
(JSC::getExceptionLocation):
- llint/LowLevelInterpreter.cpp:
- offlineasm/cloop.rb:
- runtime/Structure.cpp:
- 9:04 PM Changeset in webkit [153272] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: NaturalLoops + Profiler = Crash
https://bugs.webkit.org/show_bug.cgi?id=118486
Reviewed by Geoffrey Garen.
I borked dominators in:
http://trac.webkit.org/changeset/152431/branches/dfgFourthTier/Source/JavaScriptCore/dfg/DFGDominators.h
This patch also adds some debug support, and fixes the loop that adds a block to
an already-existing natural loop. Note that we currently don't take that path in
most programs, but it will arise, for example if you use 'continue' - though you'd
have to use it rather cleverly since the bytecode will not jump to the loop header
in most uses of 'continue'.
- dfg/DFGDominators.cpp:
(JSC::DFG::Dominators::dump):
(DFG):
- dfg/DFGDominators.h:
(JSC::DFG::Dominators::dominates):
(Dominators):
- dfg/DFGNaturalLoops.cpp:
(JSC::DFG::NaturalLoops::compute):
- 9:04 PM Changeset in webkit [153271] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: DFG::AbstractState::beginBasicBlock() should set m_haveStructures if any of the valuesAtHead have either a current known structure or a non-top/non-bottom array modes
https://bugs.webkit.org/show_bug.cgi?id=118489
Reviewed by Mark Hahnenberg.
- bytecode/ArrayProfile.h:
(JSC::arrayModesAreClearOrTop):
(JSC):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::beginBasicBlock):
- dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::hasClobberableState):
(AbstractValue):
- 9:04 PM Changeset in webkit [153270] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: CheckArray should call the right version of filterArrayModes
https://bugs.webkit.org/show_bug.cgi?id=118488
Reviewed by Filip Pizlo.
Currently in the CFA CheckArray doesn't call the right filterArrayMode which can cause
the CFA to ignore when it sees a contradiction.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- 9:04 PM Changeset in webkit [153269] by
-
- 12 edits in trunk/Source/JavaScriptCore
fourthTier: Graph::clearAndDerefChild() makes no sense anymore, and neither does Nop
https://bugs.webkit.org/show_bug.cgi?id=118452
Reviewed by Sam Weinig.
Noticed that ArgumentsSimplificationPhase was converting something to a Nop and then
resetting its children using clearAndDerefChild(). Using Nop instead of Phantom is a
holdover from back when we needed a no-MustGenerate no-op. We don't anymore. Using
clearAndDerefChild() was necessary back when we did eager reference counting. We
don't need to do that anymore, and in fact clearAndDerefChild() appeared to not do
any reference counting, so it was badly named to begin with.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGArgumentsSimplificationPhase.cpp:
(JSC::DFG::ArgumentsSimplificationPhase::run):
- dfg/DFGCPSRethreadingPhase.cpp:
(JSC::DFG::CPSRethreadingPhase::freeUnnecessaryNodes):
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::performNodeCSE):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGNode.h:
(JSC::DFG::Node::willHaveCodeGenOrOSR):
- dfg/DFGNodeType.h:
(DFG):
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- 9:04 PM Changeset in webkit [153268] by
-
- 7 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should better report its compile-times and it should be able to run in a mode where it doesn't spend time generating OSR exits
https://bugs.webkit.org/show_bug.cgi?id=118401
Reviewed by Sam Weinig.
Add two new OSR exit modes, which are useful only for playing with compile times:
- All OSR exits are llvm.trap().
- OSR exits don't take arguments and have no exit value marshaling.
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThread):
(JSC::DFG::Plan::compileInThreadImpl):
- dfg/DFGPlan.h:
(Plan):
- ftl/FTLIntrinsicRepository.h:
(FTL):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::appendOSRExit):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::emitOSRExitCall):
- ftl/FTLOutput.h:
(JSC::FTL::Output::trap):
- runtime/Options.h:
(JSC):
- 9:04 PM Changeset in webkit [153267] by
-
- 39 edits in trunk/Source/JavaScriptCore
fourthTier: DFG should refer to BasicBlocks by BasicBlock* and not BlockIndex
https://bugs.webkit.org/show_bug.cgi?id=118339
Reviewed by Michael Saboff.
This accomplishes two goals:
1) Simplifies a bunch of code. You can now much more directly get to a successor
or predecessor, since you just get the pointer directly. The backend(s) always
hold onto a pointer to the block they're on, so you don't have to do work to
get the block from the index.
2) It allows for the possibility of inserting blocks into the program.
Previously, if you did that, you'd have to edit all references to blocks since
those references would have outdated indexing after an insertion. Now, if you
change the indexing, you just have to invalidate some analyses and make sure
that you change each block's BasicBlock::index accordingly.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::initialize):
(JSC::DFG::AbstractState::endBasicBlock):
(JSC::DFG::AbstractState::mergeToSuccessors):
- dfg/DFGAbstractState.h:
(AbstractState):
- dfg/DFGArgumentsSimplificationPhase.cpp:
(JSC::DFG::ArgumentsSimplificationPhase::run):
- dfg/DFGBackwardsPropagationPhase.cpp:
(JSC::DFG::BackwardsPropagationPhase::run):
- dfg/DFGBasicBlock.h:
(DFG):
(JSC::DFG::BasicBlock::BasicBlock):
(JSC::DFG::BasicBlock::size):
(JSC::DFG::BasicBlock::isEmpty):
(JSC::DFG::BasicBlock::at):
(JSC::DFG::BasicBlock::operator[]):
(JSC::DFG::BasicBlock::last):
(JSC::DFG::BasicBlock::resize):
(JSC::DFG::BasicBlock::grow):
(BasicBlock):
(JSC::DFG::BasicBlock::append):
(JSC::DFG::BasicBlock::numSuccessors):
(JSC::DFG::BasicBlock::successor):
(JSC::DFG::BasicBlock::successorForCondition):
(JSC::DFG::BasicBlock::dump):
(UnlinkedBlock):
(JSC::DFG::UnlinkedBlock::UnlinkedBlock):
(JSC::DFG::getBytecodeBeginForBlock):
(JSC::DFG::blockForBytecodeOffset):
- dfg/DFGByteCodeParser.cpp:
(ByteCodeParser):
(InlineStackEntry):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::linkBlock):
(JSC::DFG::ByteCodeParser::linkBlocks):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
(JSC::DFG::ByteCodeParser::parseCodeBlock):
(JSC::DFG::ByteCodeParser::parse):
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::performBlockCFA):
(JSC::DFG::CFAPhase::performForwardCFA):
- dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::run):
(JSC::DFG::CFGSimplificationPhase::convertToJump):
- dfg/DFGCPSRethreadingPhase.cpp:
(JSC::DFG::CPSRethreadingPhase::freeUnnecessaryNodes):
(JSC::DFG::CPSRethreadingPhase::canonicalizeLocalsInBlocks):
(JSC::DFG::CPSRethreadingPhase::propagatePhis):
(CPSRethreadingPhase):
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::run):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::run):
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGDCEPhase.cpp:
(JSC::DFG::DCEPhase::run):
- dfg/DFGDisassembler.cpp:
(JSC::DFG::Disassembler::Disassembler):
(JSC::DFG::Disassembler::createDumpList):
- dfg/DFGDisassembler.h:
(JSC::DFG::Disassembler::setForBlockIndex):
- dfg/DFGDominators.cpp:
(JSC::DFG::Dominators::compute):
(JSC::DFG::Dominators::iterateForBlock):
- dfg/DFGDominators.h:
(JSC::DFG::Dominators::dominates):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::run):
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::dumpBlockHeader):
(JSC::DFG::Graph::handleSuccessor):
(JSC::DFG::Graph::determineReachability):
(JSC::DFG::Graph::resetReachability):
- dfg/DFGGraph.h:
(JSC::DFG::Graph::numBlocks):
(JSC::DFG::Graph::block):
(JSC::DFG::Graph::lastBlock):
(Graph):
(JSC::DFG::Graph::appendBlock):
(JSC::DFG::Graph::killBlock):
(DFG):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::JITCompiler):
(JSC::DFG::JITCompiler::link):
- dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::setForBlockIndex):
- dfg/DFGNaturalLoops.cpp:
(JSC::DFG::NaturalLoop::dump):
(JSC::DFG::NaturalLoops::compute):
(JSC::DFG::NaturalLoops::loopsOf):
- dfg/DFGNaturalLoops.h:
(JSC::DFG::NaturalLoop::NaturalLoop):
(JSC::DFG::NaturalLoop::addBlock):
(JSC::DFG::NaturalLoop::header):
(JSC::DFG::NaturalLoop::at):
(JSC::DFG::NaturalLoop::operator[]):
(JSC::DFG::NaturalLoop::contains):
(NaturalLoop):
(JSC::DFG::NaturalLoops::headerOf):
(NaturalLoops):
- dfg/DFGNode.h:
(DFG):
(JSC::DFG::SwitchCase::SwitchCase):
(JSC::DFG::SwitchCase::withBytecodeIndex):
(SwitchCase):
(JSC::DFG::SwitchCase::targetBytecodeIndex):
(JSC::DFG::SwitchData::SwitchData):
(JSC::DFG::SwitchData::setFallThroughBytecodeIndex):
(JSC::DFG::SwitchData::fallThroughBytecodeIndex):
(SwitchData):
(JSC::DFG::Node::setTakenBlock):
(JSC::DFG::Node::setNotTakenBlock):
(JSC::DFG::Node::takenBlock):
(JSC::DFG::Node::notTakenBlock):
(JSC::DFG::Node::successor):
(JSC::DFG::Node::successorForCondition):
- dfg/DFGPredictionInjectionPhase.cpp:
(JSC::DFG::PredictionInjectionPhase::run):
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagateForward):
(JSC::DFG::PredictionPropagationPhase::propagateBackward):
(JSC::DFG::PredictionPropagationPhase::doRoundOfDoubleVoting):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward):
(JSC::DFG::SpeculativeJIT::nonSpeculativeCompare):
(JSC::DFG::SpeculativeJIT::nonSpeculativeStrictEq):
(JSC::DFG::SpeculativeJIT::compilePeepHoleDoubleBranch):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleIntegerBranch):
(JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::createOSREntries):
(JSC::DFG::SpeculativeJIT::linkOSREntries):
(JSC::DFG::SpeculativeJIT::compileStrictEqForConstant):
(JSC::DFG::SpeculativeJIT::compileStrictEq):
(JSC::DFG::SpeculativeJIT::compileRegExpExec):
(JSC::DFG::SpeculativeJIT::addBranch):
(JSC::DFG::SpeculativeJIT::linkBranches):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::nextBlock):
(SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::detectPeepHoleBranch):
(JSC::DFG::SpeculativeJIT::branchDouble):
(JSC::DFG::SpeculativeJIT::branchDoubleNonZero):
(JSC::DFG::SpeculativeJIT::branch32):
(JSC::DFG::SpeculativeJIT::branchTest32):
(JSC::DFG::SpeculativeJIT::branch64):
(JSC::DFG::SpeculativeJIT::branch8):
(JSC::DFG::SpeculativeJIT::branchPtr):
(JSC::DFG::SpeculativeJIT::branchTestPtr):
(JSC::DFG::SpeculativeJIT::branchTest8):
(JSC::DFG::SpeculativeJIT::jump):
(JSC::DFG::SpeculativeJIT::addBranch):
(JSC::DFG::SpeculativeJIT::StringSwitchCase::StringSwitchCase):
(StringSwitchCase):
(JSC::DFG::SpeculativeJIT::BranchRecord::BranchRecord):
(BranchRecord):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
(JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::emitBranch):
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
(JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::emitBranch):
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):
(JSC::DFG::TypeCheckHoistingPhase::disableHoistingAcrossOSREntries):
- dfg/DFGUnificationPhase.cpp:
(JSC::DFG::UnificationPhase::run):
- dfg/DFGValidate.cpp:
(JSC::DFG::Validate::validate):
(JSC::DFG::Validate::checkOperand):
(JSC::DFG::Validate::reportValidationContext):
- dfg/DFGVirtualRegisterAllocationPhase.cpp:
(JSC::DFG::VirtualRegisterAllocationPhase::run):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::lower):
(JSC::FTL::LowerDFGToLLVM::compileBlock):
(JSC::FTL::LowerDFGToLLVM::compileJump):
(JSC::FTL::LowerDFGToLLVM::compileBranch):
(JSC::FTL::LowerDFGToLLVM::lowBlock):
- 9:04 PM Changeset in webkit [153266] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: Unreviewed, add a helpful comment for why DCE is needed in the FTL.
I believe I've now twice down the experiment of disabling DCE in the FTL,
only to realize that this can't work, and that DCE is needed. I'd kind of
like to not make that mistake again.
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
- 9:04 PM Changeset in webkit [153265] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: DFG::Node::m_opInfo2 should also be a uintptr_t
https://bugs.webkit.org/show_bug.cgi?id=118340
Reviewed by Sam Weinig.
- dfg/DFGNode.h:
(JSC::DFG::Node::Node):
- 9:04 PM Changeset in webkit [153264] by
-
- 8 edits in trunk/Source
fourthTier: Have fewer Arrayify's
https://bugs.webkit.org/show_bug.cgi?id=118335
Reviewed by Mark Hahnenberg.
A lot of Arrayify's arise because some program saw Int32 arrays early on in
execution, but then they all got converted to Double arrays and the program
will never see Int32 arrays ever again. Prior to this change you would always
have an Arrayify in this case. But with this change, the first time that an
ArrayProfile is about to go polymorphic in computeUpdatedPrediction(), it
instead forcibly monomorphises itself to the latest-seen structure.
Thereafter it will never again perform this monomorphisation. This is
controlled by ArrayProfile::m_didPerformFirstRunPruning. This is a 5%
speed-up on Kraken/imaging-gaussian-blur with the FTL enabled, and it
unblocks a bunch of stuff we want to do in the future because it makes a
bunch of loops effect-free.
We will still want to implement Arrayify hoisting in the future, but this is
great anyway because it's better to not have Arrayifications than it is to
have hoisted Arrayifications.
- bytecode/ArrayProfile.cpp:
(JSC::ArrayProfile::computeUpdatedPrediction):
(JSC::ArrayProfile::briefDescription):
(JSC):
(JSC::ArrayProfile::briefDescriptionWithoutUpdating):
- bytecode/ArrayProfile.h:
(JSC::ArrayProfile::ArrayProfile):
(ArrayProfile):
- 9:04 PM Changeset in webkit [153263] by
-
- 5 edits in trunk/Source/JavaScriptCore
fourthTier: add option to disable OSR entry in loops
https://bugs.webkit.org/show_bug.cgi?id=118329
Reviewed by Mark Hahnenberg.
This adds that option, and also makes the OSR exit reoptimization trigger rely less on
OSR entry failing. Now even if we never attempt OSR entry but our execution counter gets
high after a small number of OSR exits, we will recompile.
- dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::handleExitCounts):
- dfg/DFGOperations.cpp:
- jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_loop_hint):
(JSC::JIT::emitSlow_op_loop_hint):
- runtime/Options.h:
(JSC):
- 9:04 PM Changeset in webkit [153262] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: since the FTL disassembly hacks cannot distinguish between code and data, the LLVM disassembler symbol table callback should be able to deal gracefully with arbitrary garbage
https://bugs.webkit.org/show_bug.cgi?id=118313
Reviewed by Mark Hahnenberg.
Give it a mode where we can still crash on unrecognized reference types, so that we might
implement them in the future, but by default just print some stuff and keep going.
- disassembler/LLVMDisassembler.cpp:
(JSC):
(JSC::symbolLookupCallback):
- 9:04 PM Changeset in webkit [153261] by
-
- 5 edits in trunk/Source
fourthTier: FTL should use the equivalent of llvm opt -O2 by default
https://bugs.webkit.org/show_bug.cgi?id=118311
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Use a PassManagerBuilder instead of rolling our own.
This boosts our speed-up by another 5% or so.
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- runtime/Options.h:
(JSC):
Source/WTF:
Reviewed by Mark Hahnenberg.
- wtf/LLVMHeaders.h:
- 9:04 PM Changeset in webkit [153260] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should run LICM after AA setup
https://bugs.webkit.org/show_bug.cgi?id=118277
Reviewed by Maciej Stachowiak.
LICM queries alias analysis. Hence, just like GVN, it should run after
we have set up the alias analysis.
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- 9:04 PM Changeset in webkit [153259] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should run AA passes before GVN
https://bugs.webkit.org/show_bug.cgi?id=118276
Rubber stamped by Geoffrey Garen.
These enable load elimination in GVN.
Immediately gives us a speed-up on a bunch of benchmarks I hacked to run
properly in the FTL. One example is 20% on imaging-gaussian-blur. (Fair
warning: the stock version of that benchmark won't see speed-ups -
probably slow-downs instead - because the FTL can't do OSR entry yet.)
Another example is the findGraphNode function, which now sees a 7%
speed-up, and that's without even doing LICM or other good things.
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- 9:04 PM Changeset in webkit [153258] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: Make Graph::substituteGetLocal() out-of-line
Rubber stamped by Geoffrey Garen.
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::substituteGetLocal):
(DFG):
- dfg/DFGGraph.h:
(Graph):
- 9:04 PM Changeset in webkit [153257] by
-
- 8 edits1 copy2 adds in trunk/Source/JavaScriptCore
fourthTier: DFG should know how to find natural loops
https://bugs.webkit.org/show_bug.cgi?id=118152
Reviewed by Mark Hahnenberg.
There are a bunch of things we can do when we know where the loops are.
Previously we didn't. With this patch, we do.
This patch adds the classic dominator based natural loop finder.
The only client of this right now is the DFG::Disassembler. It prints out
a summary of the analysis for each block.
This will become more important when I do
https://bugs.webkit.org/show_bug.cgi?id=118151, which definitely requires
this kind of analysis, at least if we want to do the optimization over
DFG IR (and I'm pretty sure we do).
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAnalysis.h: Added.
(DFG):
(Analysis):
(JSC::DFG::Analysis::Analysis):
(JSC::DFG::Analysis::invalidate):
(JSC::DFG::Analysis::computeIfNecessary):
(JSC::DFG::Analysis::isValid):
- dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::run):
- dfg/DFGDisassembler.cpp:
(JSC::DFG::Disassembler::createDumpList):
- dfg/DFGDominators.cpp:
(JSC::DFG::Dominators::Dominators):
(JSC::DFG::Dominators::compute):
- dfg/DFGDominators.h:
(Dominators):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dumpBlockHeader):
(JSC::DFG::Graph::invalidateCFG):
(DFG):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGNaturalLoops.cpp: Added.
(DFG):
(JSC::DFG::NaturalLoop::dump):
(JSC::DFG::NaturalLoops::NaturalLoops):
(JSC::DFG::NaturalLoops::~NaturalLoops):
(JSC::DFG::NaturalLoops::compute):
(JSC::DFG::NaturalLoops::loopsOf):
(JSC::DFG::NaturalLoops::dump):
- dfg/DFGNaturalLoops.h: Added.
(DFG):
(NaturalLoop):
(JSC::DFG::NaturalLoop::NaturalLoop):
(JSC::DFG::NaturalLoop::addBlock):
(JSC::DFG::NaturalLoop::header):
(JSC::DFG::NaturalLoop::size):
(JSC::DFG::NaturalLoop::at):
(JSC::DFG::NaturalLoop::operator[]):
(JSC::DFG::NaturalLoop::contains):
(NaturalLoops):
(JSC::DFG::NaturalLoops::numLoops):
(JSC::DFG::NaturalLoops::loop):
(JSC::DFG::NaturalLoops::headerOf):
- 9:04 PM Changeset in webkit [153256] by
-
- 15 edits2 copies1 move2 adds in trunk/Source
fourthTier: JSC's disassembly infrastructure should be able to disassemble the code that LLVM generates
https://bugs.webkit.org/show_bug.cgi?id=118148
Source/JavaScriptCore:
Reviewed by Anders Carlsson.
Oh boy. UDis86 cannot disassemble the AVX (or whatever it's called) stuff
that LLVM generates for floating point. So the right decision is to
switch to the LLVM disassembler, right? Wrong!! LLVM's disassembler
cannot disassemble the load-from-absolute-address-into-%rax instructions
that our JIT generates quite a lot of.
So, this keeps the UDis86 disassembler, but adds the LLVM disassembler,
and requires the caller of disassemble() to hint which one is likely to
be less wrong for the given code.
Maybe in the future LLVM will catch up to UDis86, but it's definitely not
there right now.
This now allows us to disassemble all of the code that LLVM generates.
- JavaScriptCore.xcodeproj/project.pbxproj:
- disassembler/Disassembler.cpp:
(JSC::disassemble):
- disassembler/Disassembler.h:
(JSC::tryToDisassemble):
(JSC):
- disassembler/LLVMDisassembler.cpp: Added.
(JSC):
(JSC::symbolLookupCallback):
(JSC::tryToDisassembleWithLLVM):
- disassembler/LLVMDisassembler.h: Added.
(JSC):
(JSC::tryToDisassembleWithLLVM):
- disassembler/UDis86Disassembler.cpp:
(JSC::tryToDisassembleWithUDis86):
- disassembler/UDis86Disassembler.h: Added.
(JSC):
(JSC::tryToDisassembleWithUDis86):
- disassembler/X86Disassembler.cpp: Added.
(JSC):
(JSC::tryToDisassemble):
- ftl/FTLAbbreviatedTypes.h:
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- ftl/FTLJITCode.h:
- ftl/FTLJITFinalizer.h:
- ftl/FTLLLVMHeaders.h: Removed.
- ftl/FTLLink.cpp:
- runtime/InitializeThreading.cpp:
(JSC::initializeThreadingOnce):
- runtime/Options.h:
(JSC):
Source/WTF:
Reviewed by Anders Carlsson.
We now use LLVM for two things: disassembler and FTL. Separate out the question
of whether we have LLVM (HAVE(LLVM)) from whether we want to use the LLVM
disassembler (USE(LLVM_DISASSEMBLER)) and whether we enable the FTL
(ENABLE(FTL_JIT)).
Also move the cruft for including LLVM headers into WTF since now we use it in
a bunch of places, not all related to FTL. There's no obvious place to put that
file in JSC so I put it in WTF.
- WTF.xcodeproj/project.pbxproj:
- wtf/LLVMHeaders.h: Copied from Source/JavaScriptCore/ftl/FTLLLVMHeaders.h.
- wtf/Platform.h:
- 9:04 PM Changeset in webkit [153255] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should be able to dump disassembly
https://bugs.webkit.org/show_bug.cgi?id=118141
Reviewed by Geoffrey Garen.
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- 9:04 PM Changeset in webkit [153254] by
-
- 8 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support hole/OOB PutByVal's
https://bugs.webkit.org/show_bug.cgi?id=118112
Reviewed by Geoffrey Garen.
Added a common code generator for the out-of-bounds case that is reused by
all contiguous-like arrays (Int32, Double, Contiguous).
This is relatively straight-forward, except that it's the first time that
the FTL has to call DFG operations that take more than two arguments.
- ftl/FTLAbbreviations.h:
(JSC::FTL::functionType):
(JSC::FTL::buildCall):
- ftl/FTLAbstractHeapRepository.h:
(FTL):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLIntrinsicRepository.h:
(FTL):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compilePutByVal):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::contiguousPutByValOutOfBounds):
(JSC::FTL::LowerDFGToLLVM::vmCall):
- ftl/FTLOutput.h:
(JSC::FTL::Output::call):
- 9:03 PM Changeset in webkit [153253] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: FTL::canCompile(Graph&) should not consider nodes that won't be compiled
https://bugs.webkit.org/show_bug.cgi?id=118097
Reviewed by Mark Hahnenberg.
This increases coverage to include programs that have unprofiled paths. Those paths will
often have nodes that appear to do untyped speculations, and the FTL sometimes doesn't
support those; except that it doesn't matter since the reason why they were untyped is
that they were unprofiled and anyway we won't run them because we'll exit before them.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- 9:03 PM Changeset in webkit [153252] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support ArrayifyToStructure
https://bugs.webkit.org/show_bug.cgi?id=118095
Reviewed by Mark Hahnenberg.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLIntrinsicRepository.h:
(FTL):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileArrayifyToStructure):
(LowerDFGToLLVM):
- 9:03 PM Changeset in webkit [153251] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support ForwardCheckStructure/ForwardStructureTransitionWatchpoint and doing so shouldn't break V8/crypto
https://bugs.webkit.org/show_bug.cgi?id=118091
Reviewed by Mark Hahnenberg.
I was going to just add ForwardCheckStructure/ForwardStructureTransitionWatchpoint support,
which is trivial. But doing so increases coverage a lot, and revealed long-standing bugs in
the FTL. I then fixed those bugs, also:
- The FTL should not attempt to compile a block that is not reachable according to the CFA. This is analogous to terminating basic block compilation if the CFA becomes !isValid(). Attempting to compile such a block means that you're running on broken CFA state, and the CFA will become inconsistent with the code you're generating, leading to some strangeness. For example, the FTL relies on the CFA to tell it that we gave up compiling a node and hence don't have LValue's for that node (by virtue of us giving up due to !isValid()). But the CFA's isValid() bit will not be set correctly for blocks that weren't visited by the CFA at all, and the CFA expects you to know this because it expects that you already checked BasicBlock::cfaHasVisited.
- SetLocal needs to change the ValueSource of the operand to indicate that its value has been stashed in the local (i.e. the "reference" corresponding to the operand in FTL speak). This is because although OSR exit already knows that the value of the operand is stored in the Node, and it already knows what LValue corresponds to the node, OSR exit will also assume that if the Node dies then the value-at-exit for that operand should be Dead (i.e. jsUndefined). But the Node dying, and the local dying, are two distinct things; in particular the local always outlives the Node in the case of a SetLocal. So, we just need to have SetLocal have the ValueSource be BlahInLocal rather than HaveNode, to ensure that OSR exit knows that the darn thing is really live until the end of the basic block, as opposed to until whenever the Node dies (which could be at any time).
- PutByOffset was erroneously storing to an offset from the base object, rather than an offset from the storage. Note that the storage will be the base object (exactly - i.e. same node, same value) for inline stores, but will be a distinct thing for out-of-line stores.
- At-head set-up of OSR exit state was using ValueInLocals for variables forced double, when it should have been using DoubleInLocals.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileBlock):
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileSetLocal):
(JSC::FTL::LowerDFGToLLVM::compilePutByOffset):
(JSC::FTL::LowerDFGToLLVM::initializeOSRExitStateForBlock):
(JSC::FTL::LowerDFGToLLVM::addExitArgumentForNode):
- 9:03 PM Changeset in webkit [153250] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support PutByVal
https://bugs.webkit.org/show_bug.cgi?id=118075
Reviewed by Mark Hahnenberg.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::lower):
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileGetByVal):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compilePutByVal):
- 9:03 PM Changeset in webkit [153249] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: Convert versus AsIs should have no bearing on whether we can do the SaneChain optimization for double array GetByVals
https://bugs.webkit.org/show_bug.cgi?id=118028
Reviewed by Sam Weinig.
The SaneChain optimization allows us to get rid of the NaN check on loading from
a double array, if the result is used in an arithmetic op that wouldn't
distinguish between NaN and undefined. Normally the NaN check would be needed
because NaN is the hole marker.
The SaneChain optimization definitely requires that you're an Original array,
since we need to watchpoint the array prototype chain. And so it also needs to
be a JSArray, and not an object that has indexed double properties. We also
require an in-bounds access, since the backend is only capable of the
optimization in the in-bounds case (though we could extend it to OOB in the
future). But whether the array is being converted or is as-is isn't relevant.
Either way, if it's a double original array in-bounds access by the time that
the array check (or conversion!) completes, we can do the optimization.
Ever-so-slight speed-up on Kraken/imaging-gaussian-blur.
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- 9:03 PM Changeset in webkit [153248] by
-
- 21 edits26 adds in trunk
fourthTier: DFG should support switch_string
https://bugs.webkit.org/show_bug.cgi?id=117967
Source/JavaScriptCore:
Reviewed by Sam Weinig.
Add a reusable binary switch creator.
Implement switch on string using three modes:
- Binary switch on StringImpl* in the case of identifiers.
- Trie of binary switches on characters in the case of a not-too-big switch over not-too-big 8-bit strings.
- Hash lookup if all else fails.
Anywhere from a 2x to 3x speed-up on microbenchmarks that stress
string switches. 25-35% speed-up on HashMap tests. 4% speed-up on
pdfjs.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/JumpTable.h:
(StringJumpTable):
(JSC::StringJumpTable::clear):
- dfg/DFGBackwardsPropagationPhase.cpp:
(JSC::DFG::BackwardsPropagationPhase::propagate):
- dfg/DFGBinarySwitch.cpp: Added.
(DFG):
(JSC::DFG::BinarySwitch::BinarySwitch):
(JSC::DFG::BinarySwitch::advance):
(JSC::DFG::BinarySwitch::build):
- dfg/DFGBinarySwitch.h: Added.
(DFG):
(BinarySwitch):
(JSC::DFG::BinarySwitch::caseIndex):
(JSC::DFG::BinarySwitch::caseValue):
(JSC::DFG::BinarySwitch::fallThrough):
(JSC::DFG::BinarySwitch::Case::Case):
(Case):
(JSC::DFG::BinarySwitch::Case::operator<):
(JSC::DFG::BinarySwitch::BranchCode::BranchCode):
(BranchCode):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
- dfg/DFGLazyJSValue.cpp:
(JSC::DFG::LazyJSValue::getValue):
(JSC::DFG::equalToStringImpl):
(DFG):
(JSC::DFG::LazyJSValue::strictEqual):
(JSC::DFG::LazyJSValue::dump):
- dfg/DFGLazyJSValue.h:
(JSC::DFG::LazyJSValue::knownStringImpl):
(LazyJSValue):
(JSC::DFG::LazyJSValue::stringImpl):
(JSC::DFG::LazyJSValue::switchLookupValue):
- dfg/DFGNode.cpp:
(WTF::printInternal):
- dfg/DFGNode.h:
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitSwitchChar):
(JSC::DFG::SpeculativeJIT::StringSwitchCase::operator<):
(DFG):
(JSC::DFG::SpeculativeJIT::emitBinarySwitchStringRecurse):
(JSC::DFG::SpeculativeJIT::emitSwitchStringOnString):
(JSC::DFG::SpeculativeJIT::emitSwitchString):
(JSC::DFG::SpeculativeJIT::emitSwitch):
(JSC::DFG::SpeculativeJIT::addBranch):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
(JSC::DFG::SpeculativeJIT::branch8):
(SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::StringSwitchCase::StringSwitchCase):
(StringSwitchCase):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileSwitch):
- runtime/Options.h:
(JSC):
Source/WTF:
Reviewed by Sam Weinig.
Make it possible to compare a RefPtr<StringImpl> and a StringImpl* without
having to ref the StringImpl.
- wtf/text/StringHash.h:
(WTF::StringHash::equal):
LayoutTests:
Reviewed by Sam Weinig.
- fast/js/regress/script-tests/switch-string-basic-big-var.js: Added.
(foo):
(make):
- fast/js/regress/script-tests/switch-string-basic-big.js: Added.
(foo):
(make):
- fast/js/regress/script-tests/switch-string-basic-var.js: Added.
(foo):
(make):
- fast/js/regress/script-tests/switch-string-basic.js: Added.
(foo):
- fast/js/regress/script-tests/switch-string-big-length-tower-var.js: Added.
(foo):
- fast/js/regress/script-tests/switch-string-length-tower-var.js: Added.
(foo):
- fast/js/regress/script-tests/switch-string-length-tower.js: Added.
(foo):
- fast/js/regress/script-tests/switch-string-short.js: Added.
(foo):
- fast/js/regress/switch-string-basic-big-expected.txt: Added.
- fast/js/regress/switch-string-basic-big-var-expected.txt: Added.
- fast/js/regress/switch-string-basic-big-var.html: Added.
- fast/js/regress/switch-string-basic-big.html: Added.
- fast/js/regress/switch-string-basic-expected.txt: Added.
- fast/js/regress/switch-string-basic-var-expected.txt: Added.
- fast/js/regress/switch-string-basic-var.html: Added.
- fast/js/regress/switch-string-basic.html: Added.
- fast/js/regress/switch-string-big-length-tower-var-expected.txt: Added.
- fast/js/regress/switch-string-big-length-tower-var.html: Added.
- fast/js/regress/switch-string-length-tower-expected.txt: Added.
- fast/js/regress/switch-string-length-tower-var-expected.txt: Added.
- fast/js/regress/switch-string-length-tower-var.html: Added.
- fast/js/regress/switch-string-length-tower.html: Added.
- fast/js/regress/switch-string-short-expected.txt: Added.
- fast/js/regress/switch-string-short.html: Added.
Conflicts:
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
- 9:03 PM Changeset in webkit [153247] by
-
- 11 edits in trunk/Source
fourthTier: Count external memory usage towards heap footprint
https://bugs.webkit.org/show_bug.cgi?id=117948
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
Currently just count strings. Strings get counted in such a way that we won't re-count strings
that are aliased, by dividing by the reference count. This then ups the GC footprint and allows
the collector to appropriately amortize itself.
- heap/Heap.cpp:
(JSC::Heap::Heap):
(JSC::Heap::size):
(JSC::Heap::collect):
- heap/Heap.h:
(Heap):
- heap/SlotVisitor.h:
- heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::reportExtraMemoryUsage):
(JSC):
- runtime/JSString.cpp:
(JSC::JSString::visitChildren):
Source/WTF:
Expose some functionality needed for properly measuring StringImpl footprint.
- wtf/Atomics.h:
(WTF::weakCompareAndSwapSize):
(WTF):
- wtf/MathExtras.h:
(divideRoundedUp):
- wtf/text/StringImpl.h:
(WTF::StringImpl::cost):
(StringImpl):
(WTF::StringImpl::costDuringGC):
(WTF::StringImpl::refCount):
- 9:03 PM Changeset in webkit [153246] by
-
- 1 edit in trunk/Source/WTF/ChangeLog
fourthTier: DFG should optimize identifier string equality
https://bugs.webkit.org/show_bug.cgi?id=117920
Reviewed by Sam Weinig.
Note that this ChangeLog was supposed to be committed in r151890.
Expose the IsIdentifier bit to the JIT.
- wtf/text/StringImpl.h:
(WTF::StringImpl::flagIsIdentifier):
- 9:03 PM Changeset in webkit [153245] by
-
- 12 edits6 adds in trunk
fourthTier: DFG should optimize identifier string equality
https://bugs.webkit.org/show_bug.cgi?id=117920
Source/JavaScriptCore:
Reviewed by Sam Weinig.
This is a 20% speed-up for string equality comparisons when both strings are
identifiers.
This is important for two reasons:
1) Using strings as enumerations is an idiom. A great example is typeof. It
would be great if this performed better.
2) When I implement switch_string in the DFG, it would be great to optimize
the case where the switched-on value is an identifier. That would involve
a simple binary switch rather than a more complicated trie-switch over
characters.
- bytecode/SpeculatedType.cpp:
(JSC::dumpSpeculation):
(JSC::speculationToAbbreviatedString):
(JSC::speculationFromCell):
- bytecode/SpeculatedType.h:
(JSC):
(JSC::isStringIdentSpeculation):
(JSC::isStringSpeculation):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGNode.h:
(JSC::DFG::Node::shouldSpeculateStringIdent):
(Node):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
(JSC::DFG::SpeculativeJIT::compare):
(JSC::DFG::SpeculativeJIT::compileStrictEq):
(JSC::DFG::SpeculativeJIT::compileStringEquality):
(JSC::DFG::SpeculativeJIT::compileStringIdentEquality):
(DFG):
(JSC::DFG::SpeculativeJIT::speculateString):
(JSC::DFG::SpeculativeJIT::speculateStringIdentAndLoadStorage):
(JSC::DFG::SpeculativeJIT::speculateStringIdent):
(JSC::DFG::SpeculativeJIT::speculate):
- dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
- dfg/DFGUseKind.cpp:
(WTF::printInternal):
- dfg/DFGUseKind.h:
(JSC::DFG::typeFilterFor):
(JSC::DFG::isCell):
LayoutTests:
Reviewed by Sam Weinig.
Add a benchmark for string equality where there is a long identifier, and
also add a benchmark for non-identifier string equality (since the previous
test for string equality was really identifier equality).
- fast/js/regress/script-tests/string-long-ident-equality.js: Added.
(foo):
- fast/js/regress/script-tests/string-var-equality.js: Added.
(addFoo):
(foo):
- fast/js/regress/string-long-ident-equality-expected.txt: Added.
- fast/js/regress/string-long-ident-equality.html: Added.
- fast/js/regress/string-var-equality-expected.txt: Added.
- fast/js/regress/string-var-equality.html: Added.
- 9:03 PM Changeset in webkit [153244] by
-
- 10 edits6 adds in trunk
fourthTier: DFG shouldn't exit just because a String GetByVal went out-of-bounds
https://bugs.webkit.org/show_bug.cgi?id=117906
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
This does the obvious thing, but also makes sure that out-of-bounds accesses
don't fall off into a C call, but try to do the fast thing if the prototype
chain is sane. We ought to probably do this for other array accesses in the
future, as well, since it's so darn easy.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::objectPrototypeIsSane):
(JSC):
(JSC::JSGlobalObject::arrayPrototypeChainIsSane):
(JSC::JSGlobalObject::stringPrototypeChainIsSane):
- runtime/JSGlobalObject.h:
(JSGlobalObject):
LayoutTests:
Reviewed by Mark Hahnenberg.
The out-of-bounds benchmark that isn't insane speeds up by 22x in this
patch.
- fast/js/regress/script-tests/string-get-by-val-out-of-bounds-insane.js: Added.
(foo):
- fast/js/regress/script-tests/string-get-by-val-out-of-bounds.js: Added.
(foo):
- fast/js/regress/string-get-by-val-out-of-bounds-expected.txt: Added.
- fast/js/regress/string-get-by-val-out-of-bounds-insane-expected.txt: Added.
- fast/js/regress/string-get-by-val-out-of-bounds-insane.html: Added.
- fast/js/regress/string-get-by-val-out-of-bounds.html: Added.
- 9:03 PM Changeset in webkit [153243] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: GC's put_by_id transition fixpoint should converge more quickly
https://bugs.webkit.org/show_bug.cgi?id=117912
Reviewed by Mark Hahnenberg.
This was a rookie mistake. The GC does a classic forward data flow fixpoint. These work well so long as you
iterate the program in program order, or at least something close to program order. Because I enjoy reverse
loops ("while (n--) blah"), I ended up iterating in *reverse* of program order which ensured worst-case
pathologies every single time. And unsurprisingly, this slowed down a program, namely pdfjs.
Flipping the loops to iterate forward fixes a 90% regression in Octane/pdfjs and is otherwise neutral.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::propagateTransitions):
- 9:03 PM Changeset in webkit [153242] by
-
- 4 edits3 adds in trunk
fourthTier: DFG should CSE MakeRope
https://bugs.webkit.org/show_bug.cgi?id=117905
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
Adds MakeRope to the CSE phase and removes the comment that says that
we could do it but aren't doing it.
Also fixed SpeculatedType dumping so that if you have a Cell type then
it just prints "Cell" and if you just have Object then it just prints
"Object", instead of printing the long list of types.
- bytecode/SpeculatedType.cpp:
(JSC::dumpSpeculation):
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::performNodeCSE):
LayoutTests:
Reviewed by Geoffrey Garen.
This benchmark speeds up by 50%.
- fast/js/regress/make-rope-cse-expected.txt: Added.
- fast/js/regress/make-rope-cse.html: Added.
- fast/js/regress/script-tests/make-rope-cse.js: Added.
(foo):
- 9:03 PM Changeset in webkit [153241] by
-
- 8 edits3 adds in trunk
fourthTier: DFG should't exit just because it GetByVal'd a big character
https://bugs.webkit.org/show_bug.cgi?id=117899
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Add a slow path. Also clarify handling of GetByVal in PutStructure elimination.
Previously it would fail due to canExit() but now we can also fail because
GetByVal(String) can allocate. Just make it so GetByVal is totally poisoned, in
a very explicit way.
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::putStructureStoreElimination):
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
(SpeculativeJIT):
LayoutTests:
Reviewed by Mark Hahnenberg.
This benchmark speeds up by 3x.
- fast/js/regress/script-tests/string-get-by-val-big-char.js: Added.
(foo):
- fast/js/regress/string-get-by-val-big-char-expected.txt: Added.
- fast/js/regress/string-get-by-val-big-char.html: Added.
- 9:03 PM Changeset in webkit [153240] by
-
- 10 edits3 adds in trunk
fourthTier: Small strings shouldn't get GC'd
https://bugs.webkit.org/show_bug.cgi?id=117897
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Kill off the code needed to allocate them lazily and finalize them.
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
- heap/Heap.cpp:
(JSC::Heap::collect):
- runtime/JSString.h:
(JSC::jsSingleCharacterString):
(JSC::jsSingleCharacterSubstring):
(JSC::jsString):
(JSC::jsSubstring8):
(JSC::jsSubstring):
(JSC::jsOwnedString):
- runtime/NumberPrototype.cpp:
(JSC::integerValueToString):
- runtime/SmallStrings.cpp:
(JSC):
(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::visitStrongReferences):
- runtime/SmallStrings.h:
(JSC::SmallStrings::singleCharacterString):
(SmallStrings):
LayoutTests:
Reviewed by Mark Hahnenberg.
This test speeds up by 5%.
- fast/js/regress/script-tests/string-get-by-val.js: Added.
(foo):
- fast/js/regress/string-get-by-val-expected.txt: Added.
- fast/js/regress/string-get-by-val.html: Added.
- 9:03 PM Changeset in webkit [153239] by
-
- 1 edit in trunk/Source/JavaScriptCore/runtime/JSString.h
fourthTier: Re-indent JSString.h to aid mhe merging of the FTL branch
- 9:03 PM Changeset in webkit [153238] by
-
- 7 edits in trunk/Source/JavaScriptCore
fourthTier: Structure should have a dump()
https://bugs.webkit.org/show_bug.cgi?id=117859
Reviewed by Geoffrey Garen.
This is pretty cool. Anywhere we previously printed Structure pointers in dumps,
we now print a bunch of other info as well. For example, for an object literal
like "{f:42, g:64, h:24}", when we print the structure we'll now get:
0x107a0af80:[Object, {f:0, g:1, h:2}, NonArray, Proto:0x107a8fff0]
This also changes a bunch of places to use the dump method.
- bytecode/StructureSet.h:
(JSC::StructureSet::dump):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
- dfg/DFGStructureAbstractValue.h:
(JSC::DFG::StructureAbstractValue::dump):
- runtime/JSCJSValue.cpp:
(JSC::JSValue::dump):
- runtime/Structure.cpp:
(JSC::Structure::dump):
(JSC):
- runtime/Structure.h:
(Structure):
- 9:03 PM Changeset in webkit [153237] by
-
- 19 edits in trunk/Source/JavaScriptCore
fourthTier: There should only be one table of SimpleJumpTables
https://bugs.webkit.org/show_bug.cgi?id=117856
Reviewed by Geoffrey Garen.
Having multiple tables of SimpleJumpTables just means we have to duplicate a
ton of code. This patch deduplicates all of it.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC):
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::shrinkToFit):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::numberOfSwitchJumpTables):
(JSC::CodeBlock::addSwitchJumpTable):
(JSC::CodeBlock::switchJumpTable):
(JSC::CodeBlock::clearSwitchJumpTables):
(RareData):
- bytecode/PreciseJumpTargets.cpp:
(JSC):
(JSC::computePreciseJumpTargets):
- bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::shrinkToFit):
(JSC::UnlinkedCodeBlock::numberOfSwitchJumpTables):
(JSC::UnlinkedCodeBlock::addSwitchJumpTable):
(JSC::UnlinkedCodeBlock::switchJumpTable):
(RareData):
- bytecompiler/BytecodeGenerator.cpp:
(JSC):
(JSC::prepareJumpTableForSwitch):
(JSC::BytecodeGenerator::endSwitch):
- dfg/DFGByteCodeParser.cpp:
(InlineStackEntry):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
- dfg/DFGJITCompiler.h:
(JITCompiler):
- dfg/DFGOperations.cpp:
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
(DFG):
(JSC::DFG::SpeculativeJIT::emitSwitchImm):
(JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
- dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
- jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_switch_char):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm:
- 9:03 PM Changeset in webkit [153236] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should clear character switch jump tables
https://bugs.webkit.org/show_bug.cgi?id=117852
Reviewed by Sam Weinig.
The FTL just uses LLVM's switch, which results in LLVM allocating its own switch
jump tables as needed.
- bytecode/CodeBlock.h:
(JSC::CodeBlock::clearCharacterSwitchJumpTables):
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- 9:03 PM Changeset in webkit [153235] by
-
- 17 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support SwitchChar
https://bugs.webkit.org/show_bug.cgi?id=117849
Reviewed by Geoffrey Garen.
This adds Switch(SwitchChar) to the FTL and also implicitly does some other things.
SwitchChar requires calling a slow path to resolve ropes. Previously the FTL had no
support for calling slow paths, and we avoided adding coverage that would require
that. Well, this patch adds the ability to call slow paths and just uses that for
resolving ropes for SwitchChar. Also SwitchChar required adding awareness of strings,
so I did that, too.
- bytecode/CodeBlock.h:
(CodeBlock):
(JSC::CodeBlock::addCodeOrigin):
- dfg/DFGBackwardsPropagationPhase.cpp:
(JSC::DFG::BackwardsPropagationPhase::propagate):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
- dfg/DFGNode.cpp:
(WTF):
(WTF::printInternal):
- dfg/DFGNode.h:
(WTF):
- dfg/DFGOperations.h:
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
- ftl/FTLAbbreviations.h:
(JSC::FTL::int16Type):
(JSC::FTL::constInt):
- ftl/FTLAbstractHeapRepository.h:
(FTL):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLCommonValues.cpp:
(JSC::FTL::CommonValues::CommonValues):
- ftl/FTLCommonValues.h:
(CommonValues):
- ftl/FTLIntrinsicRepository.cpp:
(JSC::FTL::IntrinsicRepository::IntrinsicRepository):
(FTL):
- ftl/FTLIntrinsicRepository.h:
(FTL):
(IntrinsicRepository):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::lower):
(JSC::FTL::LowerDFGToLLVM::transferAndCheckArguments):
(JSC::FTL::LowerDFGToLLVM::compileJump):
(JSC::FTL::LowerDFGToLLVM::compileBranch):
(JSC::FTL::LowerDFGToLLVM::compileSwitch):
(JSC::FTL::LowerDFGToLLVM::buildSwitch):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::lowString):
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::isObject):
(JSC::FTL::LowerDFGToLLVM::isNotString):
(JSC::FTL::LowerDFGToLLVM::isString):
(JSC::FTL::LowerDFGToLLVM::isNotObject):
(JSC::FTL::LowerDFGToLLVM::speculateObject):
(JSC::FTL::LowerDFGToLLVM::speculateString):
(JSC::FTL::LowerDFGToLLVM::speculateNonNullObject):
(JSC::FTL::LowerDFGToLLVM::vmCall):
(JSC::FTL::LowerDFGToLLVM::callPreflight):
(JSC::FTL::LowerDFGToLLVM::callCheck):
(JSC::FTL::LowerDFGToLLVM::lowBlock):
- ftl/FTLOutput.h:
(JSC::FTL::Output::constBool):
(JSC::FTL::Output::constInt8):
(JSC::FTL::Output::constInt32):
(JSC::FTL::Output::constIntPtr):
(JSC::FTL::Output::constInt64):
(JSC::FTL::Output::load16):
(JSC::FTL::Output::isNull):
(JSC::FTL::Output::notNull):
(JSC::FTL::Output::testIsZero32):
(JSC::FTL::Output::testNonZero32):
(Output):
(JSC::FTL::Output::operation):
(JSC::FTL::Output::crash):
- 9:03 PM Changeset in webkit [153234] by
-
- 22 edits8 adds in trunk
fourthTier: DFG should have switch_char
https://bugs.webkit.org/show_bug.cgi?id=117710
Source/JavaScriptCore:
Reviewed by Michael Saboff.
Add op_switch_char. Most of this is fairly simple, except for the whole
LazyJSValue thing.
It's long been the case that anytime you wanted the DFG to speak of a string
that didn't appear in the constant pool, you would have a hard time since
the DFG isn't allowed to allocate in the GC heap. For example, if you know
that you want to speak of a single character string, you might find that
the one you wanted to speak of had been GC'd. Another example is if you
wanted to add constant folding for string concatenation - something we don't
have yet but will want eventually.
I solve this by finally adding the notion of LazyJSValue. In the future I
anticipate using this for a variety of string-related things. The idea here
is that the DFG can either say that it already knows what the value is, or
it can describe the value. For example, in this patch I needed to be able to
describe single-character strings.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
- bytecode/JumpTable.h:
- dfg/DFGBackwardsPropagationPhase.cpp:
(JSC::DFG::BackwardsPropagationPhase::propagate):
- dfg/DFGByteCodeParser.cpp:
(InlineStackEntry):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
- dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::run):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGGPRInfo.h:
(JSC::DFG::JSValueRegs::payloadGPR):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::jumpTable):
(DFG):
(JSC::DFG::JITCompiler::numberOfJumpTables):
(JSC::DFG::JITCompiler::linkSwitches):
(JSC::DFG::JITCompiler::link):
- dfg/DFGJITCompiler.h:
(JITCompiler):
- dfg/DFGLazyJSValue.cpp: Added.
(DFG):
(JSC::DFG::LazyJSValue::getValue):
(JSC::DFG::equalToSingleCharacter):
(JSC::DFG::LazyJSValue::strictEqual):
(JSC::DFG::LazyJSValue::dump):
- dfg/DFGLazyJSValue.h: Added.
(DFG):
(LazyJSValue):
(JSC::DFG::LazyJSValue::LazyJSValue):
(JSC::DFG::LazyJSValue::singleCharacterString):
(JSC::DFG::LazyJSValue::tryGetValue):
(JSC::DFG::LazyJSValue::value):
(JSC::DFG::LazyJSValue::character):
(JSC::DFG::LazyJSValue::switchLookupValue):
- dfg/DFGNode.h:
(JSC::DFG::SwitchCase::SwitchCase):
(SwitchCase):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
(JSC::DFG::SpeculativeJIT::emitSwitchImmIntJump):
(DFG):
(JSC::DFG::SpeculativeJIT::emitSwitchImm):
(JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump):
(JSC::DFG::SpeculativeJIT::emitSwitchChar):
(JSC::DFG::SpeculativeJIT::emitSwitch):
- dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
Source/WTF:
Reviewed by Michael Saboff.
I wanted to be able to say stringImpl->at(index), and now I can!
Also made it possible to convert a UChar to a utf8 CString without
allocating a StringImpl.
- wtf/text/StringImpl.cpp:
(WTF::StringImpl::utf8Impl):
(WTF):
(WTF::StringImpl::utf8ForCharacters):
(WTF::StringImpl::utf8ForRange):
- wtf/text/StringImpl.h:
(StringImpl):
(WTF::StringImpl::at):
(WTF::StringImpl::operator[]):
LayoutTests:
Rubber stamped by Mark Hahnenberg.
- fast/js/regress/script-tests/switch-char-constant.js: Added.
(foo):
(bar):
- fast/js/regress/script-tests/switch-char.js: Added.
(foo):
(bar):
- fast/js/regress/switch-char-constant-expected.txt: Added.
- fast/js/regress/switch-char-constant.html: Added.
- fast/js/regress/switch-char-expected.txt: Added.
- fast/js/regress/switch-char.html: Added.
- 9:03 PM Changeset in webkit [153233] by
-
- 9 edits1 copy in trunk/Source/JavaScriptCore
fourthTier: Refactor ObjCCallbackFunction to inherit directly from InternalFunction
https://bugs.webkit.org/show_bug.cgi?id=117595
Reviewed by Geoffrey Garen.
- API/APICallbackFunction.h: Added. New struct that allows JSCallbackFunction and
ObjCCallbackFunction to share their host call() implementation through the magic of
templates.
(JSC::APICallbackFunction::call):
- API/JSCallbackFunction.cpp:
(JSC::JSCallbackFunction::getCallData): Changed to get the template-ized version of
the host function.
- API/JSCallbackFunction.h:
- API/ObjCCallbackFunction.h: Now inherits directly from InternalFunction.
- API/ObjCCallbackFunction.mm:
(JSC::ObjCCallbackFunction::ObjCCallbackFunction):
(JSC::ObjCCallbackFunction::getCallData): Ditto.
- GNUmakefile.list.am: Build files!
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
- JavaScriptCore.xcodeproj/project.pbxproj:
- 9:03 PM Changeset in webkit [153232] by
-
- 14 edits in trunk/Source/JavaScriptCore
fourthTier: Arity fixup should be done while on same stack
https://bugs.webkit.org/show_bug.cgi?id=117102
Reviewed by Oliver Hunt.
Removed the fixup part of op_call_arityCheck() and op_construct_arityCheck() and moved it to
a thunk for the JITs and as assembly for the llint. This patch provides the plumbing needed to
move to the C stack for JS execution. The fixup thunk and llint code would need to be change to
work with a stack that grows down when we do move to the C stack.
Due to an issue with the offline assembler, I moved the const at the top of LowLevelInterpreter64.asm
and LowLevelInterpreter32_64.asm to LowLevelInterpreter.asm. The problem is that a const defined in
one file that are used in a macro doesn't resolve the const if the macro is used in another file. This
seemed like the quickest path.
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compileFunction):
(JSC::DFG::JITCompiler::linkFunction):
- dfg/DFGJITCompiler.h:
(JITCompiler):
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- jit/JIT.cpp:
(JSC::JIT::privateCompile):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- jit/JITStubs.h:
- jit/ThunkGenerators.cpp:
(JSC::arityFixup):
- jit/ThunkGenerators.h:
- llint/LowLevelInterpreter.asm:
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm:
- runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
- runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::arityCheckFor):
- 9:03 PM Changeset in webkit [153231] by
-
- 13 edits in trunk/Source/JavaScriptCore
fourthTier: Add another temp register regT4 to JSInterfaceJIT
https://bugs.webkit.org/show_bug.cgi?id=117719
Reviewed by Geoffrey Garen.
Made the dedicated bucketCounterRegister to be regT4 and then used regT4 wherever
bucketCounterRegister had been used. Since it is masked whenever it is used and
we are looking for some randomness in the register anyway, we can use it without
any issues.
- jit/JIT.cpp:
(JSC::JIT::privateCompile):
- jit/JIT.h:
(JSC::JIT::emitValueProfilingSite):
- jit/JITCall.cpp:
(JSC::JIT::emitPutCallResult):
- jit/JITCall32_64.cpp:
(JSC::JIT::emitPutCallResult):
- jit/JITInlines.h:
(JSC::JIT::emitValueProfilingSite):
- jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_get_callee):
(JSC::JIT::emit_op_get_argument_by_val):
- jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_get_callee):
(JSC::JIT::emit_op_to_this):
(JSC::JIT::emit_op_get_argument_by_val):
- jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
- jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
- jit/JITStubCall.h:
(JSC::JITStubCall::callWithValueProfiling):
- jit/JSInterfaceJIT.h:
(JSInterfaceJIT):
- 9:03 PM Changeset in webkit [153230] by
-
- 8 edits1 add in trunk/Source/JavaScriptCore
fourthTier: FTL should support Switch
https://bugs.webkit.org/show_bug.cgi?id=117704
Reviewed by Oliver Hunt.
- bytecode/CodeBlock.h:
(JSC::CodeBlock::clearImmediateSwitchJumpTables):
- ftl/FTLAbbreviations.h:
(JSC::FTL::buildFPToSI):
(JSC::FTL::buildSwitch):
(JSC::FTL::addCase):
(FTL):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileSwitch):
(LowerDFGToLLVM):
- ftl/FTLOutput.h:
(JSC::FTL::Output::fpToInt):
(JSC::FTL::Output::fpToInt32):
(Output):
(JSC::FTL::Output::switchInstruction):
- ftl/FTLSwitchCase.h: Added.
(FTL):
(SwitchCase):
(JSC::FTL::SwitchCase::SwitchCase):
(JSC::FTL::SwitchCase::value):
(JSC::FTL::SwitchCase::target):
Conflicts:
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
- 9:03 PM Changeset in webkit [153229] by
-
- 9 edits6 adds in trunk
fourthTier: Add CFG simplification for Switch
https://bugs.webkit.org/show_bug.cgi?id=117677
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
This is for completeness. It only speeds up a microbenchmark at this point.
Broadly, we want all control constructs to be known to the CFG simplifier.
- dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::run):
(JSC::DFG::CFGSimplificationPhase::convertToJump):
(CFGSimplificationPhase):
(JSC::DFG::CFGSimplificationPhase::noBlocks):
(JSC::DFG::CFGSimplificationPhase::oneBlock):
(JSC::DFG::CFGSimplificationPhase::mergeBlocks):
- runtime/JSCJSValue.h:
(JSValue):
- runtime/JSCJSValueInlines.h:
(JSC::JSValue::pureStrictEqual):
(JSC):
Source/WTF:
Reviewed by Mark Hahnenberg.
- wtf/TriState.h:
- wtf/text/StringImpl.h:
LayoutTests:
Reviewed by Mark Hahnenberg.
- fast/js/regress/script-tests/switch-constant.js: Added.
(foo):
(bar):
- fast/js/regress/script-tests/switch.js: Added.
(foo):
(bar):
- fast/js/regress/switch-constant-expected.txt: Added.
- fast/js/regress/switch-constant.html: Added.
- fast/js/regress/switch-expected.txt: Added.
- fast/js/regress/switch.html: Added.
- 9:03 PM Changeset in webkit [153228] by
-
- 26 edits in trunk/Source/JavaScriptCore
fourthTier: DFG should support op_switch_imm
https://bugs.webkit.org/show_bug.cgi?id=117559
Reviewed by Oliver Hunt.
Implement integer (i.e. immediate) switches in the DFG. Reduce the minimum
threshold for using op_switch.
Also get rid of edge code support, since we haven't used it in the year since
I introduced it. It was supposed to allow us to break critical edges late in
the backend, thus enabling global register allocation from an SSA-form graph.
But we aren't doing that so I figure we should just kill the code for now. It
would have made implementing switch harder.
- assembler/AbstractMacroAssembler.h:
(JSC::AbstractMacroAssembler::timesPtr):
- assembler/MacroAssemblerCodeRef.h:
(JSC::MacroAssemblerCodePtr::dumpWithName):
(MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::dump):
(MacroAssemblerCodeRef):
(JSC::MacroAssemblerCodeRef::dump):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::shrinkToFit):
- bytecode/JumpTable.h:
(SimpleJumpTable):
(JSC::SimpleJumpTable::clear):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
(JSC::DFG::AbstractState::mergeToSuccessors):
- dfg/DFGBackwardsPropagationPhase.cpp:
(JSC::DFG::BackwardsPropagationPhase::propagate):
- dfg/DFGByteCodeParser.cpp:
(InlineStackEntry):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::linkBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
- dfg/DFGCommon.h:
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::determineReachability):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::JITCompiler):
(JSC::DFG::JITCompiler::link):
- dfg/DFGJITCompiler.h:
(JITCompiler):
(JSC::DFG::JITCompiler::blockHeads):
- dfg/DFGNode.h:
(DFG):
(JSC::DFG::SwitchCase::SwitchCase):
(SwitchCase):
(SwitchData):
(JSC::DFG::SwitchData::SwitchData):
(Node):
(JSC::DFG::Node::isSwitch):
(JSC::DFG::Node::isTerminal):
(JSC::DFG::Node::switchData):
(JSC::DFG::Node::numSuccessors):
(JSC::DFG::Node::successor):
- dfg/DFGNodeType.h:
(DFG):
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::createOSREntries):
(JSC::DFG::SpeculativeJIT::emitSwitchImmIntJump):
(DFG):
(JSC::DFG::SpeculativeJIT::emitSwitchImm):
(JSC::DFG::SpeculativeJIT::emitSwitch):
(JSC::DFG::SpeculativeJIT::linkBranches):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
(SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::branchDouble):
(JSC::DFG::SpeculativeJIT::branchDoubleNonZero):
(JSC::DFG::SpeculativeJIT::branch32):
(JSC::DFG::SpeculativeJIT::branchTest32):
(JSC::DFG::SpeculativeJIT::branch64):
(JSC::DFG::SpeculativeJIT::branchPtr):
(JSC::DFG::SpeculativeJIT::branchTestPtr):
(JSC::DFG::SpeculativeJIT::branchTest8):
(JSC::DFG::SpeculativeJIT::jump):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- parser/Nodes.h:
(CaseBlockNode):
- 9:02 PM Changeset in webkit [153227] by
-
- 8 edits in trunk/Source
fourthTier: Concurrent JIT shouldn't try to recompute the CodeBlockHash as part of debug dumps, since doing so may fail if dealing with a CachedScript that doesn't have its script string handy
https://bugs.webkit.org/show_bug.cgi?id=117676
Reviewed by Sam Weinig.
Source/JavaScriptCore:
CodeBlock now caches m_hash, and the DFG Driver will force its computation if we're doing debug dumps of any kind.
Also made sure that CodeBlock::CodeBlock initializes all of its fields; it was previously missing the
initialization of m_capabilityLevelState.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::hash):
(JSC::CodeBlock::CodeBlock):
- bytecode/CodeBlock.h:
(CodeBlock):
- bytecode/CodeBlockHash.cpp:
(JSC::CodeBlockHash::CodeBlockHash):
- bytecode/CodeBlockHash.h:
(CodeBlockHash):
(JSC::CodeBlockHash::isSet):
(JSC::CodeBlockHash::operator!):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
Source/WebCore:
Remove the broken hack for the concurrent JIT, since now the concurrent JIT won't use this code anymore.
No new tests because no new behavior.
- loader/cache/CachedScript.cpp:
(WebCore::CachedScript::script):
- 9:02 PM Changeset in webkit [153226] by
-
- 2 edits in trunk/Source/WTF
fourthTier: Printing a StringImpl* should really guard against NULL
https://bugs.webkit.org/show_bug.cgi?id=117675
Reviewed by Mark Hahnenberg.
- wtf/PrintStream.cpp:
(WTF::printInternal):
- 9:02 PM Changeset in webkit [153225] by
-
- 30 edits12 adds in trunk
fourthTier: DFG should support op_in and it should use patching to make it fast
https://bugs.webkit.org/show_bug.cgi?id=117385
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
Implement op_in in the DFG and give it patching. The code we generate is just
a jump on the hot path, and the slow paths generate stubs and link the jump to
them. I didn't want to bother with patching structures and load offsets and
the like, although I probably could have.
This is a ginormous speed-up on microbenchmarks for "in", obviously.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpAssumingJITType):
(JSC::CodeBlock::resetStubInternal):
(JSC::structureStubInfoLessThan):
(JSC):
(JSC::CodeBlock::sortStructureStubInfos):
- bytecode/CodeBlock.h:
(CodeBlock):
- bytecode/StructureStubInfo.cpp:
(JSC::StructureStubInfo::deref):
(JSC::StructureStubInfo::visitWeakReferences):
- bytecode/StructureStubInfo.h:
(JSC::isInAccess):
(JSC):
(StructureStubInfo):
(JSC::StructureStubInfo::initInList):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGCCallHelpers.h:
(JSC::DFG::CCallHelpers::setupResults):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGGPRInfo.h:
(JSC::DFG::JSValueRegs::payloadOnly):
(JSValueRegs):
(JSC::DFG::JSValueRegs::JSValueRegs):
(JSC::DFG::JSValueRegs::operator!):
(JSC::DFG::JSValueSource::operator!):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
- dfg/DFGJITCompiler.h:
(JSC::DFG::InRecord::InRecord):
(InRecord):
(DFG):
(JITCompiler):
(JSC::DFG::JITCompiler::addIn):
- dfg/DFGNodeType.h:
(DFG):
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGRepatch.cpp:
(JSC::DFG::tryRepatchIn):
(DFG):
(JSC::DFG::dfgRepatchIn):
(JSC::DFG::dfgResetIn):
- dfg/DFGRepatch.h:
(DFG):
(JSC::DFG::dfgResetIn):
- dfg/DFGSlowPathGenerator.h:
(JSC::DFG::CallSlowPathGenerator::CallSlowPathGenerator):
(JSC::DFG::CallSlowPathGenerator::tearDown):
(JSC::DFG::CallResultAndNoArgumentsSlowPathGenerator::generateInternal):
(JSC::DFG::CallResultAndOneArgumentSlowPathGenerator::generateInternal):
(JSC::DFG::CallResultAndTwoArgumentsSlowPathGenerator::generateInternal):
(JSC::DFG::CallResultAndThreeArgumentsSlowPathGenerator::generateInternal):
(JSC::DFG::CallResultAndFourArgumentsSlowPathGenerator::generateInternal):
(JSC::DFG::CallResultAndFiveArgumentsSlowPathGenerator::generateInternal):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileIn):
(DFG):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::extractResult):
(DFG):
(SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::callOperation):
(JSC::DFG::SpeculativeJIT::appendCallWithExceptionCheckSetResult):
(JSC::DFG::SpeculativeJIT::appendCallSetResult):
(JSC::DFG::JSValueOperand::tagGPR):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- runtime/JSCJSValue.cpp:
(JSC::JSValue::dump):
- runtime/JSString.h:
(JSString):
(JSC::JSString::tryGetValueImpl):
(JSC):
- runtime/Operations.h:
(JSC::normalizePrototypeChainForChainAccess):
Source/WTF:
Reviewed by Geoffrey Garen.
Now if you pass a null StringImpl* then something will still get printed instead
of crashing. I figure that this is broadly useful for debug code, and I make use
of it in the JSC portion of this patch.
- wtf/PrintStream.cpp:
(WTF::printInternal):
LayoutTests:
Reviewed by Geoffrey Garen.
Test coverage for op_in performance.
- fast/js/regress/in-four-cases-expected.txt: Added.
- fast/js/regress/in-four-cases.html: Added.
- fast/js/regress/in-one-case-false-expected.txt: Added.
- fast/js/regress/in-one-case-false.html: Added.
- fast/js/regress/in-one-case-true-expected.txt: Added.
- fast/js/regress/in-one-case-true.html: Added.
- fast/js/regress/in-two-cases-expected.txt: Added.
- fast/js/regress/in-two-cases.html: Added.
- fast/js/regress/script-tests/in-four-cases.js: Added.
(foo):
(bar):
- fast/js/regress/script-tests/in-one-case-false.js: Added.
(foo):
(bar):
- fast/js/regress/script-tests/in-one-case-true.js: Added.
(foo):
(bar):
- fast/js/regress/script-tests/in-two-cases.js: Added.
(foo):
(bar):
- 9:02 PM Changeset in webkit [153224] by
-
- 1 edit in trunk/LayoutTests/fast/js/resources/standalone-pre.js
fourthTier: A few fixups to standalone-pre.js
- 9:02 PM Changeset in webkit [153223] by
-
- 11 edits in trunk/Source/JavaScriptCore
fourthTier: The Math object should not be polymorphic
https://bugs.webkit.org/show_bug.cgi?id=117576
Reviewed by Oliver Hunt.
Fill in the Math object eagerly, to avoid its structure changing during
execution. There are lots of ways to skin this cat; this one seemed
easiest, and justified given the relative hotness of math operations.
20% speedup on DSP-filtrr tests, small speedups on a few Kraken tests.
- DerivedSources.make:
- JavaScriptCore.order:
- create_hash_table:
- interpreter/CallFrame.h:
(JSC::ExecState::jsonTable): Removed the Math object's static table.
- runtime/JSObject.cpp:
(JSC::JSObject::putDirectNativeFunctionWithoutTransition):
- runtime/JSObject.h:
- runtime/MathObject.cpp:
(JSC::MathObject::finishCreation):
- runtime/MathObject.h:
(JSC::MathObject::create): Set up the Math object at construction time.
- runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::~VM):
- runtime/VM.h: Removed the Math object's static table.
- 9:02 PM Changeset in webkit [153222] by
-
- 28 edits2 adds in trunk/Source/JavaScriptCore
fourthTier: The baseline jit and LLint should use common slow paths
https://bugs.webkit.org/show_bug.cgi?id=116889
Reviewed by Filip Pizlo.
Moved the llint_slow_paths that return JSValue along with several others to CommonSlowPaths.cpp.
Eliminated the related JIT stubs. Changes the baseline JIT to call these new common stubs.
Added a simple slow path call class that uses argument registers or the stack instead of
JITStackFrame. Changes the exception mechanism for to check for an exception after making
a slowpath call instead of returning to the handler directly form the slowpath function.
- JavaScriptCore.xcodeproj/project.pbxproj:
- jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
- jit/JIT.h:
(JIT):
- jit/JITArithmetic.cpp:
(JSC::JIT::emitSlow_op_negate):
(JSC::JIT::emitSlow_op_lshift):
(JSC::JIT::emitSlow_op_rshift):
(JSC::JIT::emitSlow_op_urshift):
(JSC::JIT::emitSlow_op_bitand):
(JSC::JIT::emitSlow_op_inc):
(JSC::JIT::emitSlow_op_dec):
(JSC::JIT::emitSlow_op_mod):
(JSC::JIT::emit_op_mod):
(JSC::JIT::compileBinaryArithOpSlowCase):
(JSC::JIT::emit_op_add):
(JSC::JIT::emitSlow_op_add):
(JSC::JIT::emitSlow_op_mul):
(JSC::JIT::emitSlow_op_div):
(JSC::JIT::emitSlow_op_sub):
- jit/JITArithmetic32_64.cpp:
(JSC::JIT::emitSlow_op_negate):
(JSC::JIT::emitSlow_op_lshift):
(JSC::JIT::emitRightShiftSlowCase):
(JSC::JIT::emitSlow_op_bitand):
(JSC::JIT::emitSlow_op_bitor):
(JSC::JIT::emitSlow_op_bitxor):
(JSC::JIT::emitSlow_op_inc):
(JSC::JIT::emitSlow_op_dec):
(JSC::JIT::emit_op_add):
(JSC::JIT::emitSlow_op_add):
(JSC::JIT::emitSlow_op_sub):
(JSC::JIT::emitSlow_op_mul):
(JSC::JIT::emitSlow_op_div):
(JSC::JIT::emit_op_mod):
(JSC::JIT::emitSlow_op_mod):
- jit/JITExceptions.cpp:
(JSC::getExceptionLocation):
(JSC::genericThrow):
(JSC::jitThrowNew):
- jit/JITExceptions.h:
(ExceptionHandler):
- jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_strcat):
(JSC::JIT::emitSlow_op_create_this):
(JSC::JIT::emitSlow_op_to_this):
(JSC::JIT::emitSlow_op_to_primitive):
(JSC::JIT::emitSlow_op_not):
(JSC::JIT::emitSlow_op_bitxor):
(JSC::JIT::emitSlow_op_bitor):
(JSC::JIT::emitSlow_op_stricteq):
(JSC::JIT::emitSlow_op_nstricteq):
(JSC::JIT::emitSlow_op_to_number):
- jit/JITOpcodes32_64.cpp:
(JSC::JIT::privateCompileCTINativeCall):
(JSC::JIT::emitSlow_op_to_primitive):
(JSC::JIT::emit_op_strcat):
(JSC::JIT::emitSlow_op_not):
(JSC::JIT::emitSlow_op_stricteq):
(JSC::JIT::emitSlow_op_nstricteq):
(JSC::JIT::emitSlow_op_to_number):
(JSC::JIT::emit_op_create_arguments):
(JSC::JIT::emitSlow_op_create_this):
(JSC::JIT::emitSlow_op_to_this):
(JSC::JIT::emitSlow_op_get_argument_by_val):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
(JSC::cti_vm_throw_slowpath):
- jit/JITStubs.h:
- jit/JITStubsARM.h:
- jit/JITStubsARMv7.h:
- jit/JITStubsMIPS.h:
- jit/JITStubsSH4.h:
- jit/JITStubsX86.h:
- jit/JITStubsX86_64.h:
- jit/JSInterfaceJIT.h:
(JSInterfaceJIT):
- jit/SlowPathCall.h: Added.
(JITSlowPathCall):
(JSC::JITSlowPathCall::JITSlowPathCall):
(JSC::JITSlowPathCall::call):
- jit/ThunkGenerators.cpp:
(JSC::nativeForGenerator):
- llint/LLIntSlowPaths.cpp:
(LLInt):
- llint/LLIntSlowPaths.h:
(LLInt):
- llint/LowLevelInterpreter.asm:
- llint/LowLevelInterpreter.cpp:
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm:
- runtime/CommonSlowPaths.cpp: Added.
(JSC::SLOW_PATH_DECL):
- runtime/CommonSlowPaths.h:
(SlowPathReturnType):
(JSC::encodeResult):
(JSC::decodeResult):
- runtime/JSCJSValue.h:
(JSValue):
- 9:02 PM Changeset in webkit [153221] by
-
- 91 edits4 deletes in trunk
fourthTier: Re-worked non-local variable resolution
https://bugs.webkit.org/show_bug.cgi?id=117375
Reviewed by Filip Pizlo.
Source/JavaScriptCore:
This patch has two goals:
(1) Simplicity.
- Net removes 15 opcodes.
- Net removes 2,000 lines of code.
- Removes setPair() from the DFG: All DFG nodes have 1 result register now.
(2) Performance.
- 2%-3% speedup on SunSpider (20% in LLInt and Baseline JIT)
- 2% speedup on v8-spider
- 10% speedup on js-regress-hashmap*
- Amusing 2X speedup on js-regress-poly-stricteq
The bytecode now separates the scope chain resolution opcode from the
scope access opcode.
OLD:
NEW:
resolve_scope r0, x(@id0)
get_from_scope r1, r0, x(@id0)
inc r1
put_to_scope r0, x(@id0), r1
Also, we link non-local variable resolution opcodes at CodeBlock link
time instead of time of first opcode execution.
This means that we can represent all possible non-local variable
resolutions using just three opcodes, and any optimizations in these
opcodes naturally apply across-the-board.
- API/JSCTestRunnerUtils.cpp:
(JSC::numberOfDFGCompiles):
- GNUmakefile.list.am:
- JavaScriptCore.gypi:
- JavaScriptCore.order:
- JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
- JavaScriptCore.xcodeproj/project.pbxproj:
- Target.pri: Build!
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode): Updated for removed things.
(JSC::CodeBlock::CodeBlock): Always provide the full scope chain when
creating a CodeBlock, so we can perform non-local variable resolution.
Added code to perform linking for these opcodes. This is where we figure
out which non-local variable resolutions are optimizable, and how.
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::noticeIncomingCall):
(JSC::CodeBlock::optimizeAfterWarmUp):
(JSC::CodeBlock::optimizeAfterLongWarmUp):
(JSC::CodeBlock::optimizeSoon): Updated for removed things.
- bytecode/CodeBlock.h:
(JSC::CodeBlock::needsActivation):
(JSC::GlobalCodeBlock::GlobalCodeBlock):
(JSC::ProgramCodeBlock::ProgramCodeBlock):
(JSC::EvalCodeBlock::EvalCodeBlock):
(JSC::FunctionCodeBlock::FunctionCodeBlock):
- bytecode/EvalCodeCache.h:
(JSC::EvalCodeCache::getSlow): Updated for interface changes.
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor): Treat global object access as
optimizable even though the global object has a custom property access
callback. This is what we've always done since, otherwise, we can't
optimize globals. (In future, we probably want to figure out a more
targeted policy than "any property access callback means no
optimization".)
- bytecode/GlobalResolveInfo.h: Removed.
- bytecode/Instruction.h:
- bytecode/Opcode.h:
(JSC::padOpcodeName):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFor): Like GetByIdStatus.
- bytecode/ResolveGlobalStatus.cpp: Removed.
- bytecode/ResolveGlobalStatus.h: Removed.
- bytecode/ResolveOperation.h: Removed.
- bytecode/UnlinkedCodeBlock.cpp:
(JSC::generateFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::codeBlockFor):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
- bytecode/UnlinkedCodeBlock.h: Don't provide a scope chain to unlinked
code blocks. Giving a scope to an unscoped compilation unit invites
programming errors.
- bytecode/Watchpoint.h:
(JSC::WatchpointSet::addressOfIsInvalidated):
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::resolveCallee):
(JSC::BytecodeGenerator::local):
(JSC::BytecodeGenerator::constLocal):
(JSC::BytecodeGenerator::resolveType):
(JSC::BytecodeGenerator::emitResolveScope):
(JSC::BytecodeGenerator::emitGetFromScope):
(JSC::BytecodeGenerator::emitPutToScope):
(JSC::BytecodeGenerator::emitInstanceOf):
(JSC::BytecodeGenerator::emitPushWithScope):
(JSC::BytecodeGenerator::emitPopScope):
(JSC::BytecodeGenerator::pushFinallyContext):
(JSC::BytecodeGenerator::emitComplexPopScopes):
(JSC::BytecodeGenerator::popTryAndEmitCatch):
(JSC::BytecodeGenerator::emitPushNameScope):
(JSC::BytecodeGenerator::isArgumentNumber):
- bytecompiler/BytecodeGenerator.h:
(JSC::Local::Local):
(JSC::Local::operator bool):
(JSC::Local::get):
(JSC::Local::isReadOnly):
(JSC::BytecodeGenerator::scopeDepth):
(JSC::BytecodeGenerator::shouldOptimizeLocals):
(JSC::BytecodeGenerator::canOptimizeNonLocals): Refactored the bytecode
generator to resolve all variables within local scope, as if there
were no non-local scope. This helps provide a separation of concerns:
unlinked bytecode is always scope-free, and the linking stage links
in the provided scope.
- bytecompiler/NodesCodegen.cpp:
(JSC::ResolveNode::isPure):
(JSC::ResolveNode::emitBytecode):
(JSC::EvalFunctionCallNode::emitBytecode):
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::PostfixNode::emitResolve):
(JSC::DeleteResolveNode::emitBytecode):
(JSC::TypeOfResolveNode::emitBytecode):
(JSC::PrefixNode::emitResolve):
(JSC::ReadModifyResolveNode::emitBytecode):
(JSC::AssignResolveNode::emitBytecode):
(JSC::ConstDeclNode::emitCodeSingle):
(JSC::ForInNode::emitBytecode): A bunch of this codegen is no longer
necessary, since it's redundant with the linking stage.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::ByteCodeParser):
(JSC::DFG::ByteCodeParser::cellConstantWithStructureCheck):
(JSC::DFG::ByteCodeParser::handlePutByOffset):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::parseBlock): Updated for interface changes.
Notably, we can reuse existing DFG nodes -- but the mapping between
bytecode and DFG nodes has changed, and some nodes and corner cases have
been removed.
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::scopedVarLoadElimination):
(JSC::DFG::CSEPhase::varInjectionWatchpointElimination):
(JSC::DFG::CSEPhase::globalVarStoreElimination):
(JSC::DFG::CSEPhase::scopedVarStoreElimination):
(JSC::DFG::CSEPhase::getLocalLoadElimination):
(JSC::DFG::CSEPhase::setLocalStoreElimination):
(JSC::DFG::CSEPhase::performNodeCSE): Added CSE for var injection
watchpoints. Even though watchpoints are "free", they're quite common
inside code that's subject to var injection, so I figured we'd save a
little memory.
- dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
- dfg/DFGCapabilities.h: Removed detection for old forms.
- dfg/DFGDriver.h:
(JSC::DFG::tryCompile):
(JSC::DFG::tryCompileFunction):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGGraph.h:
- dfg/DFGJITCode.cpp:
- dfg/DFGNode.h:
(JSC::DFG::Node::convertToStructureTransitionWatchpoint):
(JSC::DFG::Node::hasVarNumber):
(JSC::DFG::Node::hasIdentifierNumberForCheck):
(JSC::DFG::Node::hasRegisterPointer):
(JSC::DFG::Node::hasHeapPrediction):
- dfg/DFGNodeType.h:
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGRepatch.h:
(JSC::DFG::dfgResetGetByID):
(JSC::DFG::dfgResetPutByID):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation): Removed some unneeded things,
and updated for renames.
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile): The two primary changes here are:
(1) Use a watchpoint for var injection instead of looping over the scope
chain and checking. This is more efficient and much easier to model in
code generation.
(2) I've eliminated the notion of an optimized global assignment that
needs to check for whether it should fire a watchpiont. Instead, we
fire pre-emptively at the point of optimization. This removes a bunch
of edge cases, and it seems like a more honest representation of
the fact that our new optimization contradicts our old one.
- dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):
- heap/DFGCodeBlocks.cpp:
(JSC::DFGCodeBlocks::jettison):
- interpreter/CallFrame.h:
(JSC::ExecState::trueCallFrame): Removed stuff that's unused now, and
fixed the build.
- interpreter/Interpreter.cpp:
(JSC::eval):
(JSC::getBytecodeOffsetForCallFrame):
(JSC::getCallerInfo):
(JSC::Interpreter::throwException): Updated exception scope tracking
to match the rest of our linking strategy: The unlinked bytecode compiles
exception scope as if non-local scope did not exist, and we add in
non-local scope at link time. This means that we can restore the right
scope depth based on a simple number, without checking the contents of
the scope chain.
(JSC::Interpreter::execute): Make sure to establish the full scope chain
before linking eval code. We now require the full scope chain at link
time, in order to link non-local variable resolution opcodes.
- jit/JIT.cpp:
(JSC::JIT::JIT):
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
- jit/JIT.h:
- jit/JITArithmetic.cpp:
(JSC::JIT::emit_op_add):
- jit/JITCode.cpp:
- jit/JITOpcodes.cpp:
(JSC::JIT::emitSlow_op_bitxor):
(JSC::JIT::emitSlow_op_bitor):
- jit/JITOpcodes32_64.cpp:
(JSC::JIT::emitSlow_op_to_primitive):
(JSC::JIT::emit_op_strcat):
(JSC::JIT::emitSlow_op_create_this):
(JSC::JIT::emitSlow_op_to_this):
- jit/JITPropertyAccess.cpp:
(JSC::JIT::emitVarInjectionCheck):
(JSC::JIT::emitResolveClosure):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::emitSlow_op_resolve_scope):
(JSC::JIT::emitLoadWithStructureCheck):
(JSC::JIT::emitGetGlobalProperty):
(JSC::JIT::emitGetGlobalVar):
(JSC::JIT::emitGetClosureVar):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emitPutGlobalProperty):
(JSC::JIT::emitPutGlobalVar):
(JSC::JIT::emitPutClosureVar):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::emit_op_init_global_const):
- jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emitVarInjectionCheck):
(JSC::JIT::emitResolveClosure):
(JSC::JIT::emit_op_resolve_scope):
(JSC::JIT::emitSlow_op_resolve_scope):
(JSC::JIT::emitLoadWithStructureCheck):
(JSC::JIT::emitGetGlobalProperty):
(JSC::JIT::emitGetGlobalVar):
(JSC::JIT::emitGetClosureVar):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emitPutGlobalProperty):
(JSC::JIT::emitPutGlobalVar):
(JSC::JIT::emitPutClosureVar):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::emit_op_init_global_const):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- jit/JITStubs.h: Re-wrote baseline JIT codegen for our new variable
resolution model.
- llint/LLIntData.cpp:
(JSC::LLInt::Data::performAssertions):
- llint/LLIntSlowPaths.cpp:
- llint/LLIntSlowPaths.h:
- llint/LowLevelInterpreter.asm:
- llint/LowLevelInterpreter.cpp:
(JSC::CLoop::execute):
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm: Ditto for LLInt.
- offlineasm/x86.rb: Fixed a pre-existing encoding bug for a syntactic
form that we never used before.
- runtime/ArrayPrototype.cpp:
(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):
(JSC::arrayProtoFuncJoin):
(JSC::arrayProtoFuncConcat):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncPush):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncShift):
(JSC::arrayProtoFuncSlice):
(JSC::arrayProtoFuncSort):
(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoFuncUnShift):
(JSC::arrayProtoFuncFilter):
(JSC::arrayProtoFuncMap):
(JSC::arrayProtoFuncEvery):
(JSC::arrayProtoFuncForEach):
(JSC::arrayProtoFuncSome):
(JSC::arrayProtoFuncReduce):
(JSC::arrayProtoFuncReduceRight):
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf): Fixed some pre-existing bugs in
'this' value conversion, which I made much more common by removing
special cases in bytecode generation.
These functions need to invoke toThis() because they observe the 'this'
value. Also, toLocaleString() is specified to accept non-array 'this'
values.
(Most other host functions don't need this fix because they perform
strict 'this' checking, which never coerces unexpected types.)
- runtime/CodeCache.cpp:
(JSC::CodeCache::getCodeBlock):
(JSC::CodeCache::getProgramCodeBlock):
(JSC::CodeCache::getEvalCodeBlock):
- runtime/CodeCache.h: Don't supply a scope to the unlinked code cache.
Unlinked code is supposed to be scope-free, so let's have the compiler
help verify that.
- runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
- runtime/CommonSlowPaths.h:
- runtime/Executable.cpp:
(JSC::EvalExecutable::create):
(JSC::EvalExecutable::compileInternal):
(JSC::ProgramExecutable::compileInternal):
(JSC::FunctionExecutable::produceCodeBlockFor):
(JSC::FunctionExecutable::compileForCallInternal):
(JSC::FunctionExecutable::compileForConstructInternal):
- runtime/Executable.h:
(JSC::EvalExecutable::numVariables):
(JSC::EvalExecutable::numberOfFunctionDecls):
- runtime/ExecutionHarness.h:
(JSC::prepareForExecutionImpl):
(JSC::prepareFunctionForExecutionImpl):
(JSC::installOptimizedCode): Fiddled with executable initialization so
that we can always generate a full scope chain before we go to link a
code block. We need this because code block linking now depends on the
scope chain to link non-local variable resolution opcodes.
- runtime/JSActivation.h:
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::JSGlobalObject):
(JSC::JSGlobalObject::createEvalCodeBlock):
- runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::varInjectionWatchpoint):
- runtime/JSGlobalObjectFunctions.cpp:
(JSC::globalFuncEval):
- runtime/JSNameScope.h:
- runtime/JSScope.cpp:
(JSC::abstractAccess):
(JSC::JSScope::objectAtScope):
(JSC::JSScope::depth):
(JSC::JSScope::resolve):
(JSC::JSScope::abstractResolve): Updated to match changes explained above.
- runtime/JSScope.h:
(JSC::makeType):
(JSC::needsVarInjectionChecks):
(JSC::ResolveOp::ResolveOp):
(JSC::ResolveModeAndType::ResolveModeAndType):
(JSC::ResolveModeAndType::mode):
(JSC::ResolveModeAndType::type):
(JSC::ResolveModeAndType::operand): Removed the old variable resolution
state machine, since it's unused now. Added logic for performing abstract
variable resolution at link time. This is used by codeblock linking.
- runtime/ObjectPrototype.cpp:
(JSC::objectProtoFuncValueOf):
(JSC::objectProtoFuncHasOwnProperty):
(JSC::objectProtoFuncIsPrototypeOf):
(JSC::objectProtoFuncDefineGetter):
(JSC::objectProtoFuncDefineSetter):
(JSC::objectProtoFuncLookupGetter):
(JSC::objectProtoFuncLookupSetter):
(JSC::objectProtoFuncPropertyIsEnumerable):
(JSC::objectProtoFuncToLocaleString):
(JSC::objectProtoFuncToString): Fixed some pre-existing bugs in
'this' value conversion, which I made much more common by removing
special cases in bytecode generation.
These functions need to invoke toThis() because they observe the 'this'
value.
- runtime/StringPrototype.cpp:
(JSC::checkObjectCoercible):
(JSC::stringProtoFuncReplace):
(JSC::stringProtoFuncCharAt):
(JSC::stringProtoFuncCharCodeAt):
(JSC::stringProtoFuncConcat):
(JSC::stringProtoFuncIndexOf):
(JSC::stringProtoFuncLastIndexOf):
(JSC::stringProtoFuncMatch):
(JSC::stringProtoFuncSearch):
(JSC::stringProtoFuncSlice):
(JSC::stringProtoFuncSplit):
(JSC::stringProtoFuncSubstr):
(JSC::stringProtoFuncSubstring):
(JSC::stringProtoFuncToLowerCase):
(JSC::stringProtoFuncToUpperCase):
(JSC::stringProtoFuncLocaleCompare):
(JSC::stringProtoFuncBig):
(JSC::stringProtoFuncSmall):
(JSC::stringProtoFuncBlink):
(JSC::stringProtoFuncBold):
(JSC::stringProtoFuncFixed):
(JSC::stringProtoFuncItalics):
(JSC::stringProtoFuncStrike):
(JSC::stringProtoFuncSub):
(JSC::stringProtoFuncSup):
(JSC::stringProtoFuncFontcolor):
(JSC::stringProtoFuncFontsize):
(JSC::stringProtoFuncAnchor):
(JSC::stringProtoFuncLink):
(JSC::trimString): Fixed some pre-existing bugs in
'this' value conversion, which I made much more common by removing
special cases in bytecode generation.
These functions need to invoke toThis() because they observe the 'this'
value.
- runtime/StructureRareData.cpp:
- runtime/VM.cpp:
(JSC::VM::~VM):
- runtime/WriteBarrier.h:
(JSC::WriteBarrierBase::slot): Modified to reduce casting in client code.
LayoutTests:
This patch removed special-case 'this' resolution from bytecode, making
some pre-existing edge cases in 'this' value treatment much more common.
I updated the test results below, and added some tests, to match bug
fixes for these cases.
- fast/js/script-tests/array-functions-non-arrays.js:
- fast/js/array-functions-non-arrays-expected.txt: As specified, it's
not an error to pass a non-array to toLocaleString. Our new result
matches Firefox and Chrome.
- fast/js/array-prototype-properties-expected.txt: Updated for slightly
clearer error message.
- fast/js/basic-strict-mode-expected.txt: Updated for slightly more
standard error message.
- fast/js/object-prototype-toString-expected.txt: Added.
- fast/js/object-prototype-toString.html: Added. This test demonstrates
why we now fail a Sputnik test below, while Firefox and Chrome pass it.
(The test doesn't test what it thinks it tests, and this test verifies
that we get right what it does think it tests.)
- fast/js/string-prototype-function-this-expected.txt: Added.
- fast/js/string-prototype-function-this.html: Added. This test shows
that we CheckObjectCoercible in string prototype functions. (We used
to get this wrong, but Sputnik tests made it seem like we got it right
because they didn't test the dynamic scope case.)
- sputnik/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.4_Array/15.4.4/15.4.4.3_Array_prototype_toLocaleString/S15.4.4.3_A2_T1-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.11_String.prototype.replace/S15.5.4.11_A1_T3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.13_String.prototype.slice/S15.5.4.13_A1_T3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.14_String.prototype.split/S15.5.4.14_A1_T3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.15_String.prototype.substring/S15.5.4.15_A1_T3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.6_String.prototype.concat/S15.5.4.6_A1_T3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A1_T3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A1_T3-expected.txt:
Updated to show failing results. Firefox and Chrome also fail these
tests, and the ES5 spec seems to mandate failure. Because these tests
resolve a String.prototype function at global scope, the 'this' value
for the call is an environment record. Logically, an environment record
converts to 'undefined' at the call site, and should then fail the
CheckObjectCoercible test.
- 9:02 PM Changeset in webkit [153220] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: isContravenedByStructure is backwards
https://bugs.webkit.org/show_bug.cgi?id=117366
We should be checking if arrayModeForStructure(structure) is a
subset of arrayModesThatPassFiltering(), not the other way around.
Also renamed isContravenedByStructure to better reflect what the
function is trying to determine.
Rubber stamped by Filip Pizlo.
- dfg/DFGArrayMode.h:
(JSC::DFG::ArrayMode::structureWouldPassArrayModeFiltering):
- dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::noticeStructureCheckAccountingForArrayMode):
(JSC::DFG::ArrayTypeCheck::isContravenedByValue):
- 9:02 PM Changeset in webkit [153219] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: Type check hoisting phase has a dead if statement
https://bugs.webkit.org/show_bug.cgi?id=117510
Reviewed by Geoffrey Garen.
- dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):
- 9:02 PM Changeset in webkit [153218] by
-
- 22 edits2 copies3 adds in trunk/Source
fourthTier: Introducing the StackIterator class.
This was a non trivial merge as trunk has changed computation of line and column information
Introducing the StackIterator class.
https://bugs.webkit.org/show_bug.cgi?id=117390.
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
The StackIterator class is meant to unify the way we iterate the JS
stack. It also makes it so that we don't have to copy the frame data
into the intermediate StackFrame struct before processing it.
Unfortunately we still can't get rid of StackFrame because it is used
to record frame information for the Exception stack that is expected
to persist beyond when the frames have been popped off the JS stack.
The StackIterator will iterate over all "logical" frames (i.e. including
inlined frames). As it iterates the JS stack, if it encounters a DFG
frame that has inlined frames, the iterator will canonicalize the
inlined frames before returning. Once canonicalized, the frame can be
read like any other frame.
The StackIterator implements a Frame class that inherits from CallFrame.
The StackIterator::Frame serves as reader of the CallFrame that makes
it easier to access information about the frame. The StackIterator::Frame
only adds functions, and no additional data fields.
- API/JSContextRef.cpp:
(JSContextCreateBacktrace):
- CMakeLists.txt:
- GNUmakefile.list.am:
- JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
- JavaScriptCore.xcodeproj/project.pbxproj:
- Target.pri:
- interpreter/CallFrame.cpp:
(JSC::CallFrame::begin):
(JSC::CallFrame::beginAt):
- interpreter/CallFrame.h:
(JSC::ExecState::setInlineCallFrame):
(ExecState):
(JSC::ExecState::end):
- interpreter/Interpreter.cpp:
(JSC::Interpreter::dumpRegisters):
(JSC::Interpreter::unwindCallFrame):
(JSC::Interpreter::getStackTrace):
(JSC::Interpreter::throwException):
(JSC::Interpreter::debug):
- interpreter/Interpreter.h:
(Interpreter):
- interpreter/StackIterator.cpp: Added.
(JSC::StackIterator::StackIterator):
(JSC::StackIterator::beginAt):
(JSC::StackIterator::gotoNextFrame):
- Based on the deleted Interpreter::findFunctionCallFrameFromVMCode().
(JSC::StackIterator::findFrameForFunction):
- Based on the deleted Interpreter::retrieveCallerFromVMCode().
(JSC::StackIterator::Frame::codeType):
- Based on the deleted getStackFrameCodeType().
(JSC::StackIterator::Frame::functionName):
- Based on StackFrame::friendlyFunctionName().
(JSC::StackIterator::Frame::sourceURL):
- Based on StackFrame::friendlySourceURL().
(JSC::StackIterator::Frame::toString):
- Based on StackFrame::toString().
(JSC::StackIterator::Frame::bytecodeOffset):
(JSC::StackIterator::Frame::line):
- Based on StackFrame::line().
(JSC::StackIterator::Frame::column):
- Based on StackFrame::column().
(JSC::StackIterator::Frame::arguments):
- Based on the deleted Interpreter::retrieveArgumentsFromVMCode().
(JSC::StackIterator::Frame::retrieveExpressionInfo):
- Based on StackFrame::expressionInfo().
(JSC::StackIterator::Frame::logicalFrame):
- Based on the now deleted CallFrame::trueCallFrame().
(JSC::StackIterator::Frame::logicalCallerFrame):
- Based on the now deleted CallFrame::trueCallerFrame().
(JSC::jitTypeName):
(JSC::printIndents):
(JSC::printif):
(JSC::StackIterator::Frame::print):
(debugPrintCallFrame):
- Prints the contents of the frame for debugging purposes. There are 2 versions that can be used as follows:
- When you have a valid StackIterator, you can print the current frame's content using the print instance method:
iter->print(indentLevel);
- When you have a CallFrame* that you want to dump from a debugger console, you can print its content as follows:
(gdb) call debugPrintCallFrame(callFrame)
A sample of the output looks like this:
frame 0x1510c70b0 {
name 'shouldBe'
sourceURL 'testapi.js'
hostFlag 0
isInlinedFrame 0
callee 0x15154efb0
returnPC 0x10ed0786d
callerFrame 0x1510c7058
logicalCallerFrame 0x1510c7058
rawLocationBits 27 0x1b
codeBlock 0x7fe79b037200
bytecodeOffset 27 0x1b / 210
line 46
column 20
jitType 3 <BaselineJIT> isOptimizingJIT 0
hasCodeOrigins 0
}
- interpreter/StackIterator.h: Added.
(StackIterator::Frame):
(JSC::StackIterator::Frame::create):
(JSC::StackIterator::Frame::isJSFrame):
(JSC::StackIterator::Frame::callFrame):
- interpreter/StackIteratorPrivate.h: Added.
(StackIterator):
(JSC::StackIterator::operator*):
(JSC::StackIterator::operator->):
(JSC::StackIterator::operator==):
(JSC::StackIterator::operator!=):
(JSC::StackIterator::operator++):
(JSC::StackIterator::end):
(JSC::StackIterator::empty):
- jsc.cpp:
(functionJSCStack):
- profiler/ProfileGenerator.cpp:
(JSC::ProfileGenerator::addParentForConsoleStart):
- profiler/ProfileNode.h:
(ProfileNode):
- runtime/JSFunction.cpp:
(JSC::retrieveArguments):
(JSC::JSFunction::argumentsGetter):
(JSC::skipOverBoundFunctions):
(JSC::retrieveCallerFunction):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::getOwnPropertyDescriptor):
(JSC::JSFunction::defineOwnProperty):
- runtime/JSGlobalObjectFunctions.cpp:
(JSC::globalFuncProtoGetter):
(JSC::globalFuncProtoSetter):
- runtime/ObjectConstructor.cpp:
(JSC::objectConstructorGetPrototypeOf):
- runtime/Operations.h:
Source/WebCore:
No new tests.
- ForwardingHeaders/interpreter/StackIterator.h: Added.
- bindings/js/JSXMLHttpRequestCustom.cpp:
(WebCore::JSXMLHttpRequest::send):
- bindings/js/ScriptCallStackFactory.cpp:
(WebCore::createScriptCallStack):
- 9:02 PM Changeset in webkit [153217] by
-
- 16 edits6 adds in trunk
fourthTier: DFG GetById patching shouldn't distinguish between self lists and proto lists
https://bugs.webkit.org/show_bug.cgi?id=117377
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
Previously if you did self accesses and then wanted to do a prototype access, you'd
have a bad time: the prototype accesses would be forced to take slow path because
the self list wouldn't allow prototype accesses. Likewise if you did prototype (or
chain) accesses and then wanted to do a self access, similar stupidity would ensue.
This fixes the stupidity.
I believe that this was introduced way back in the days of the old interpreter,
where distinguishing between self lists, proto lists, and chain lists was meaningful
for interpreter performance: it meant fewer branches to evaluate those lists. Then
it got mostly carried over to the old JIT since the old JIT was just initially an
optimized version of the old interpreter, and then later it got carried over to the
DFG because I didn't know any better at the time. Now I do know better and I'm
fixing it.
- bytecode/PolymorphicAccessStructureList.h:
(JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
- bytecode/StructureStubInfo.h:
(JSC::StructureStubInfo::initGetByIdSelfList):
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGRepatch.cpp:
(JSC::DFG::tryCacheGetByID):
(JSC::DFG::getPolymorphicStructureList):
(DFG):
(JSC::DFG::patchJumpToGetByIdStub):
(JSC::DFG::tryBuildGetByIDList):
(JSC::DFG::dfgBuildGetByIDList):
LayoutTests:
Reviewed by Geoffrey Garen.
Add tests that show why this is important. These tests speed up by more than 3x.
- fast/js/regress/get-by-id-proto-or-self-expected.txt: Added.
- fast/js/regress/get-by-id-proto-or-self.html: Added.
- fast/js/regress/get-by-id-self-or-proto-expected.txt: Added.
- fast/js/regress/get-by-id-self-or-proto.html: Added.
- fast/js/regress/script-tests/get-by-id-proto-or-self.js: Added.
(foo):
(bar):
(Foo):
- fast/js/regress/script-tests/get-by-id-self-or-proto.js: Added.
(foo):
(bar):
(Foo):
- 9:02 PM Changeset in webkit [153216] by
-
- 16 edits in trunk/Source
fourthTier: Recursive deadlock in DFG::ByteCodeParser
https://bugs.webkit.org/show_bug.cgi?id=117376
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Leave the lock early to prevent a deadlock beneath get().
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
Source/WTF:
Reviewed by Mark Hahnenberg.
I've often wanted to leave a lock early. Now I have that power!
- wtf/Locker.h:
(WTF::Locker::Locker):
(WTF::Locker::~Locker):
(Locker):
(WTF::Locker::unlockEarly):
(WTF::Locker::lock):
- 9:02 PM Changeset in webkit [153215] by
-
- 11 edits in trunk
fourthTier: don't insert ForceOSRExits except for inadequate coverage
https://bugs.webkit.org/show_bug.cgi?id=117363
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Previously (in http://trac.webkit.org/changeset/151303) I made it so that we
inserted ForceOSRExits more eagerly. I now think it's better to have
contradictions execute normally and exit with full OSR exit profiling. It's
better at catching the few cases where the DFG will end up with different
types than the baseline engines.
This simplifies a bunch of code. For example it gets rid of
ConstantFoldingPhase::paintUnreachableCode().
You can think of this as a partial roll-out of r151303, except that it uses
the facilities introduced by that patch to give us run-time assertions that
check the CFA's correctness: if the CFA thought that something was a
contradiction but the code didn't exit, we'll now trap.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::AbstractState):
(JSC::DFG::AbstractState::startExecuting):
(JSC::DFG::AbstractState::executeEffects):
(JSC::DFG::AbstractState::execute):
(JSC::DFG::AbstractState::filter):
(JSC::DFG::AbstractState::filterArrayModes):
(JSC::DFG::AbstractState::filterByValue):
(DFG):
- dfg/DFGAbstractState.h:
(AbstractState):
(JSC::DFG::AbstractState::filter):
(JSC::DFG::AbstractState::filterArrayModes):
(JSC::DFG::AbstractState::filterByValue):
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::performBlockCFA):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::run):
(JSC::DFG::ConstantFoldingPhase::foldConstants):
(ConstantFoldingPhase):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
LayoutTests:
Reviewed by Mark Hahnenberg.
Convert this test, since this was the test originally added for
ConstantFoldingPhase::paintUnreachableCode(). I wanted to make sure that I had good coverage
for this since I am removing that method.
- fast/js/dfg-force-exit-then-sparse-conditional-constant-prop-in-loop-expected.txt:
- fast/js/script-tests/dfg-force-exit-then-sparse-conditional-constant-prop-in-loop.js:
- 9:02 PM Changeset in webkit [153214] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: Reenable the DFG optimization fixpoint now that it's profitable to do so with concurrent compilation
https://bugs.webkit.org/show_bug.cgi?id=117331
Rubber stamped by Sam Weinig.
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
- 9:02 PM Changeset in webkit [153213] by
-
- 25 edits1 copy in trunk/Source/JavaScriptCore
fourthTier: DFG CFA should know when it hits a contradiction
https://bugs.webkit.org/show_bug.cgi?id=117272
Reviewed by Oliver Hunt.
This makes the DFG CFA immediately detect when it hit a contradiction. Previously
we might not know this: for example if we did an int32 type check on a known string;
the code would definitely always exit but the CFA would think that we wouldn't have
even though it would have computed a BOTTOM (i.e. contradictory) value for that
variable.
This requires two other changes:
- CFA must report contradictions as if they are frequent exit sites, since contradictory speculations will subsequently get replaced with ForceOSRExit. ForceOSRExit cannot itself report profiling data back to the DFG::ExitProfile. So, we do this on behalf of the speculation, eagerly, within the CFA. This also has the effect of speeding convergence somewhat. We may want to revisit this later; for example we might want to instead have the notion of a ForceOSRExit that knows the set of speculations that got folded into it.
- This revealed a bug where the CFA was modeling CheckStructure on a node that had a known singleton m_futurePossibleStructure set somewhat differently than the constant folder. If the CheckStructure was checking a structure set with two or more structures in it, it would not filter the abstract value. But the constant folder would turn this into a watchpoint on the singleton structure, thereby filtering the value. This discrepancy meant that we wouldn't realize the contradiction until the backend, and the AbstractState::bail() method asserts that we always realize contradictions in the constant folder.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeBlock.h:
(JSC::CodeBlock::addFrequentExitSite):
(JSC::CodeBlock::hasExitSite):
(CodeBlock):
- bytecode/DFGExitProfile.cpp:
(JSC::DFG::ExitProfile::add):
(JSC::DFG::ExitProfile::hasExitSite):
(JSC::DFG::QueryableExitProfile::QueryableExitProfile):
(JSC::DFG::QueryableExitProfile::~QueryableExitProfile):
(DFG):
(JSC::DFG::QueryableExitProfile::initialize):
- bytecode/DFGExitProfile.h:
(JSC::DFG::FrequentExitSite::FrequentExitSite):
(ExitProfile):
(JSC::DFG::ExitProfile::hasExitSite):
(QueryableExitProfile):
- bytecode/ExitKind.cpp:
(JSC::exitKindToString):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::AbstractState):
(JSC::DFG::AbstractState::beginBasicBlock):
(JSC::DFG::AbstractState::reset):
(JSC::DFG::AbstractState::startExecuting):
(JSC::DFG::AbstractState::executeEffects):
(JSC::DFG::AbstractState::execute):
(JSC::DFG::AbstractState::filter):
(DFG):
(JSC::DFG::AbstractState::filterArrayModes):
(JSC::DFG::AbstractState::filterByValue):
(JSC::DFG::AbstractState::bail):
- dfg/DFGAbstractState.h:
(AbstractState):
(JSC::DFG::AbstractState::filter):
(JSC::DFG::AbstractState::filterArrayModes):
(JSC::DFG::AbstractState::filterByValue):
(JSC::DFG::AbstractState::filterByType):
- dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::filter):
(JSC::DFG::AbstractValue::filterArrayModes):
(DFG):
(JSC::DFG::AbstractValue::filterByValue):
(JSC::DFG::AbstractValue::normalizeClarity):
- dfg/DFGAbstractValue.h:
(AbstractValue):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::performBlockCFA):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::debugFail):
(JSC::DFG::capabilityLevel):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
(ConstantFoldingPhase):
(JSC::DFG::ConstantFoldingPhase::paintUnreachableCode):
- dfg/DFGFiltrationResult.h: Added.
(DFG):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGNodeType.h:
(DFG):
- dfg/DFGOSRExitBase.cpp:
(JSC::DFG::OSRExitBase::considerAddingAsFrequentExitSiteSlow):
- dfg/DFGOSRExitBase.h:
(JSC::DFG::OSRExitBase::considerAddingAsFrequentExitSite):
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::backwardTypeCheck):
(JSC::DFG::SpeculativeJIT::bail):
(DFG):
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileToStringOnCell):
(JSC::DFG::SpeculativeJIT::speculateStringObject):
(JSC::DFG::SpeculativeJIT::speculateStringOrStringObject):
- dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
(JSC::DFG::SpeculativeJIT::compile):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::appendTypeCheck):
- 9:02 PM Changeset in webkit [153212] by
-
- 10 edits in trunk/Source/JavaScriptCore
fourthTier: 32-bit CallFrame::Location should use Instruction* for BytecodeLocation, not bytecodeOffset.
https://bugs.webkit.org/show_bug.cgi?id=117327.
Reviewed by Michael Saboff.
- Renamed CallFrame::Location's Type to TypeTag.
- Made the CallFrame::Location::TypeTag private, and provided type specific encoder functions. This reduces verbosity in client code.
- Fixed the DFG's reifyInlinedCallFrames() on 32-bit ports to store a bytecode Instruction* in the CallFrame location instead of a bytecode offset.
- Fixed places in JIT and FTL code which populate the CallFrame location (i.e. ArgumentCount tag) to use a Location encoder instead of storing the bytecodeOffset directly. This doesn't make any semantic difference, but it does assert that the stored value does not have bits where we would expect Location TypeTags to be.
- dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::beginCall):
- dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- interpreter/CallFrame.cpp:
(JSC::CallFrame::setLocationAsBytecodeOffset):
- interpreter/CallFrame.h:
(Location):
- interpreter/CallFrameInlines.h:
(JSC::CallFrame::Location::encodeAsBytecodeOffset):
(JSC::CallFrame::Location::encodeAsBytecodeInstruction):
(JSC::CallFrame::Location::encodeAsCodeOriginIndex):
(JSC::CallFrame::Location::encodeAsInlinedCode):
(JSC::CallFrame::Location::isBytecodeLocation):
(JSC::CallFrame::setIsInlinedFrame):
(JSC::CallFrame::hasLocationAsBytecodeOffset):
(JSC::CallFrame::setLocationAsBytecodeOffset):
- jit/JITCall.cpp:
(JSC::JIT::compileOpCall):
- jit/JITCall32_64.cpp:
(JSC::JIT::compileOpCall):
- jit/JITInlines.h:
(JSC::JIT::updateTopCallFrame):
- 9:02 PM Changeset in webkit [153211] by
-
- 11 edits in trunk/Source/JavaScriptCore
fourthTier: CallFrame::trueCallFrame() should populate the bytecodeOffset field
when reifying inlined frames..
https://bugs.webkit.org/show_bug.cgi?id=117209.
Reviewed by Geoffrey Garen.
When reifying an inlined frame, we fill in its CodeBlock, and
bytecodeOffset. We also set the InlinedFrame bit in the location field.
This is needed in order to iterate the stack correctly. Here's why:
Let's say we have the following stack trace:
X calls A inlines B inlines C calls D
Based on the above scenario,
- D's callerFrame points to A (not C).
- A has a codeOriginIndex that points to C.
When iterating the stack (from D back towards X), we will encounter A
twice:
t1. when trying to find C as D's caller.
This is the time when we reify B and C using the
codeOriginIndex in A, and return C as the caller frame of D.
t2. when getting's the reified B's caller.
This time, we don't run the reification process, and
just take A as the caller frame of B.
To discern which treatment of the DFG frame (i.e. A) we need to apply,
we check if the callee is an inlined frame:
If callee is NOT an inlined frame (e.g. frame D), apply treatment t1.
If callee is an inlined frame (e.g. frame B), apply treatment t2.
Why not just reify A by replacing its codeOriginIndex with A's
bytecodeOffset?
We can't do this because D's callerFrame pointer still points to A, and
needs to remain that way because we did not deopt A. It remains a DFG
frame which inlined B and C.
If we replace the codeOriginIndex in A with A's bytecodeOffset, we will
only get to iterate the stack correctly once. If we try to iterate the
stack a second time, we will not have the information from the
codeOriginIndex to tell us that D's caller is actually the inlined C,
and not A.
To recap, when reifying frames for stack iteration purposes, the DFG
frame needs to hold on to its codeOriginIndex. This in turn means the
DFG frame will need to be treated in 2 possible ways, and we need to
know if a callee frame is an inlined frame in order to choose the
correct treatment for the DFG frame.
Other changes:
- Simplified Interpreter::getCallerInfo().
- Removed CodeBlock::codeOriginForReturn() and supporting code which is now unneeded.
- Moved CallFrame location bit encoding from the CodeOrigin to the new CallFrame::Location class.
- Explicitly tagged inlined frames. This is necessary in order to iterate the stack correctly as explained above.
- bytecode/CodeBlock.cpp:
- bytecode/CodeBlock.h:
(JSC::CodeBlock::codeOrigins):
(CodeBlock):
(JSC::CodeBlock::codeOrigin):
(RareData):
- bytecode/CodeOrigin.h:
(CodeOrigin):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
- dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::beginCall):
- interpreter/CallFrame.cpp:
(JSC::CallFrame::trueCallFrame):
(JSC::CallFrame::trueCallerFrame):
(JSC::CallFrame::bytecodeOffsetFromCodeOriginIndex):
- interpreter/CallFrame.h:
(Location):
(ExecState):
(JSC::ExecState::trueCallerFrame):
(JSC::ExecState::callerFrameNoFlags):
- interpreter/CallFrameInlines.h:
(JSC::CallFrame::Location::encode):
(JSC::CallFrame::Location::decode):
(JSC::CallFrame::Location::isBytecodeOffset):
(JSC::CallFrame::Location::isCodeOriginIndex):
(JSC::CallFrame::Location::isInlinedFrame):
(JSC::CallFrame::isInlinedFrame):
(JSC::CallFrame::setIsInlinedFrame):
(JSC::CallFrame::hasLocationAsBytecodeOffset):
(JSC::CallFrame::hasLocationAsCodeOriginIndex):
(JSC::CallFrame::locationAsBytecodeOffset):
(JSC::CallFrame::setLocationAsBytecodeOffset):
(JSC::CallFrame::locationAsCodeOriginIndex):
- interpreter/Interpreter.cpp:
(JSC::getCallerInfo):
(JSC::Interpreter::getStackTrace):
(JSC::Interpreter::findFunctionCallFrameFromVMCode):
- runtime/Arguments.cpp:
(JSC::Arguments::tearOff):
- 9:02 PM Changeset in webkit [153210] by
-
- 5 edits in trunk/Source/JavaScriptCore
fourthTier: DFG CFA shouldn't filter ArrayModes with ALL_NON_ARRAY_ARRAY_MODES if the speculated type is not SpecArray
https://bugs.webkit.org/show_bug.cgi?id=117279
Reviewed by Mark Hahnenberg.
The normalization of abstract value clarity introduced in r151229 revealed a
long-standing bug where we filtered ArrayModes incorrectly and sometimes ended
up with BOTTOM incorrectly.
This patch fixes that bug, and cleans up a bunch of debugging infrastructure
that I needed to resurrect to track this down.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::resetStubInternal):
(JSC::CodeBlock::noticeIncomingCall):
- dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::filterArrayModesByType):
- dfg/DFGCFAPhase.cpp:
(CFAPhase):
(JSC::DFG::CFAPhase::run):
(JSC::DFG::CFAPhase::performBlockCFA):
(JSC::DFG::CFAPhase::performForwardCFA):
- runtime/Options.h:
(JSC):
- 9:02 PM Changeset in webkit [153209] by
-
- 11 edits1 add in trunk/Source/JavaScriptCore
fourthTier: Disambiguate between CallFrame bytecodeOffset and codeOriginIndex.
https://bugs.webkit.org/show_bug.cgi?id=117262.
Reviewed by Geoffrey Garen.
When writing to the ArgumentCount tag in CallFrame, we will set the high
bit if the written value is a codeOriginIndex.
- GNUmakefile.list.am:
- JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeOrigin.h:
(CodeOrigin):
(JSC::CodeOrigin::isHandle):
(JSC::CodeOrigin::encodeHandle):
(JSC::CodeOrigin::decodeHandle):
- dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::beginCall):
- dfg/DFGRepatch.cpp:
(JSC::DFG::tryBuildGetByIDList):
- interpreter/CallFrame.cpp:
(JSC::CallFrame::locationAsBytecodeOffset):
(JSC::CallFrame::setLocationAsBytecodeOffset):
(JSC::CallFrame::currentVPC):
(JSC::CallFrame::setCurrentVPC):
(JSC::CallFrame::trueCallFrame):
- interpreter/CallFrame.h:
(ExecState):
(JSC::ExecState::inlineCallFrame):
- interpreter/CallFrameInlines.h: Added.
(JSC::CallFrame::hasLocationAsBytecodeOffset):
(JSC::CallFrame::hasLocationAsCodeOriginIndex):
(JSC::CallFrame::locationAsRawBits):
(JSC::CallFrame::setLocationAsRawBits):
(JSC::CallFrame::locationAsBytecodeOffset):
(JSC::CallFrame::setLocationAsBytecodeOffset):
(JSC::CallFrame::locationAsCodeOriginIndex):
- interpreter/Interpreter.cpp:
(JSC::getBytecodeOffsetForCallFrame):
(JSC::getCallerInfo):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- 9:02 PM Changeset in webkit [153208] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: Clean up AbstractValue
https://bugs.webkit.org/show_bug.cgi?id=117217
Reviewed by Oliver Hunt.
This started as an attempt to make it so that when AbstractValue becomes empty,
its m_type always becomes SpecNone. I wanted this to happen naturally. That turns
out to be basically impossible, since AbstractValue is a set that is dynamically
computed from the intersection of several internal sets: so the value becomes
empty when any of the sets go empty. It's OK if we're imprecise here because it's
always safe for the AbstractValue to seem to overapproximate the set of values
that we see. So I mostly gave up on cleaning up that aspect of AbstractValue. But
while trying to make this happen, I encountered two bugs:
- filterValueByType() ignores the case when m_type contravenes m_value. Namely, we might filter the AbstractValue against a SpeculatedType leading to m_value becoming inconsistent with the new m_type. This change fixes that case. This wasn't a symptomatic bug but it was a silly oversight.
- filterFuturePossibleStructure() was never right. The one call to this method, in filter(Graph&, const StructureSet&), assumed that the previous notions of what structures the value could have in the future were still relevant. This could lead to a bug where we:
1) CheckStructure(@foo, S1)
Where S1 has a valid watchpoint. Now @foo's abstract value will have current
and future structure = S1.
2) Clobber the world.
Now @foo's abstract value will have current structure = TOP, and future
possible structure = S1.
3) CheckStructure(@foo, S2)
Now @foo's abstract value will have current structure = S2 and future
possible structure = S1 intersect S2 = BOTTOM.
Now we will think that any subsequent watchpoint on @foo is valid because the
value is effectively BOTTOM. That would only be correct if we had actually set
a watchpoint on S1. If we had done so, then (3) would only pass (i.e. @foo
would only have structure S2) if S1's watchpoint fired, in which case (3)
wouldn't have been reachable. But we didn't actually set a watchpoint on S1:
we just observed that we *could* have set the watchpoint. Hence future possible
structure should only be set to either the known structure at compile-time, or
it should be the structure we just checked; in both cases it should only be set
if the structure is watchable.
Then, in addition to all of this, I changed AbstractValue's filtering methods to
call clear() if the AbstractValue is effectively clear. This is just meant to
simplify the recognition of truly empty AbstractValues, but doesn't actually have
any other implications.
- bytecode/StructureSet.h:
(JSC::StructureSet::dump):
- dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::filter):
(DFG):
(JSC::DFG::AbstractValue::filterArrayModes):
(JSC::DFG::AbstractValue::filterValueByType):
(JSC::DFG::AbstractValue::filterArrayModesByType):
(JSC::DFG::AbstractValue::shouldBeClear):
(JSC::DFG::AbstractValue::normalizeClarity):
(JSC::DFG::AbstractValue::checkConsistency):
- dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::isClear):
(AbstractValue):
- 9:01 PM Changeset in webkit [153207] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: The DFG JIT should populate frame bytecodeOffsets on OSR exit.
https://bugs.webkit.org/show_bug.cgi?id=117103.
Reviewed by Geoffrey Garen.
- dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):
- 9:01 PM Changeset in webkit [153206] by
-
- 6 edits in trunk/Source/JavaScriptCore
fourthTier: all cached put_by_id transitions, even ones that weren't inlined by the DFG, should be propagated by the GC
https://bugs.webkit.org/show_bug.cgi?id=117170
Reviewed by Mark Hahnenberg.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::visitAggregate):
(JSC::CodeBlock::propagateTransitions):
(JSC):
(JSC::CodeBlock::determineLiveness):
(JSC::CodeBlock::visitWeakReferences):
(JSC::CodeBlock::finalizeUnconditionally):
- bytecode/CodeBlock.h:
(CodeBlock):
- bytecode/PolymorphicPutByIdList.h:
(JSC):
(PutByIdAccess):
(PolymorphicPutByIdList):
- bytecode/StructureStubInfo.h:
(StructureStubInfo):
- jit/JITCode.h:
(JSC::JITCode::couldBeInterpreted):
(JITCode):
- 9:01 PM Changeset in webkit [153205] by
-
- 9 edits in trunk
fourthTier: Get rid of StructureStubInfo::bytecodeIndex
https://bugs.webkit.org/show_bug.cgi?id=117127
Reviewed by Mark Hahnenberg.
StructureStubInfo already has a CodeOrigin field, which also has a bytecodeIndex.
It makes sense to just always use the CodeOrigin.
- bytecode/StructureStubInfo.h:
(StructureStubInfo):
(JSC::getStructureStubInfoBytecodeIndex):
- jit/JIT.cpp:
(JSC::PropertyStubCompilationInfo::copyToStubInfo):
- jit/JIT.h:
(JSC::JIT::compileGetByIdProto):
(JSC::JIT::compileGetByIdSelfList):
(JSC::JIT::compileGetByIdProtoList):
(JSC::JIT::compileGetByIdChainList):
(JSC::JIT::compileGetByIdChain):
(JSC::JIT::compilePutByIdTransition):
- jit/JITPropertyAccess.cpp:
(JSC::JIT::privateCompilePutByIdTransition):
- jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::privateCompilePutByIdTransition):
- 9:01 PM Changeset in webkit [153204] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: Fix some minor issues in the DFG's profiling of heap accesses
https://bugs.webkit.org/show_bug.cgi?id=113010
Reviewed by Goeffrey Garen.
Carefully merge r146669 from trunk. This required some fiddling since it
wasn't a clean apply.
Original changelog:
1) If a CodeBlock gets jettisoned by GC, we should count the exit sites.
2) If a CodeBlock clears a structure stub during GC, it should record this, and
the DFG should prefer to not inline that access (i.e. treat it as if it had an
exit site).
3) If a PutById was seen by the baseline JIT, and the JIT attempted to cache it,
but it chose not to, then assume that it will take slow path.
4) If we frequently exited because of a structure check on a weak constant,
don't try to inline that access in the future.
5) Treat all exits that were counted as being frequent.
81% speed-up on Octane/gbemu. Small speed-ups elsewhere, and no regressions.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finalizeUnconditionally):
(JSC):
(JSC::CodeBlock::resetStubDuringGCInternal):
(JSC::CodeBlock::reoptimize):
(JSC::CodeBlock::jettison):
(JSC::ProgramCodeBlock::jettisonImpl):
(JSC::EvalCodeBlock::jettisonImpl):
(JSC::FunctionCodeBlock::jettisonImpl):
(JSC::CodeBlock::tallyFrequentExitSites):
- bytecode/CodeBlock.h:
(CodeBlock):
(JSC::CodeBlock::tallyFrequentExitSites):
(ProgramCodeBlock):
(EvalCodeBlock):
(FunctionCodeBlock):
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFor):
- bytecode/StructureStubInfo.h:
(JSC::StructureStubInfo::StructureStubInfo):
(StructureStubInfo):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGOSRExitBase.cpp:
(JSC::DFG::OSRExitBase::considerAddingAsFrequentExitSiteSlow):
- dfg/DFGOSRExitBase.h:
(JSC::DFG::OSRExitBase::considerAddingAsFrequentExitSite):
(OSRExitBase):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- runtime/Options.h:
(JSC):
- 9:01 PM Changeset in webkit [153203] by
-
- 14 edits in trunk/LayoutTests
fourthTier: convert more fast/js/dfg-* tests to wait for the concurrent JIT
Rubber stamped by Mark Hahnenberg.
- fast/js/dfg-arguments-alias-one-block-overwrite-expected.txt:
- fast/js/dfg-arguments-out-of-bounds-expected.txt:
- fast/js/dfg-arith-add-overflow-check-elimination-predicted-but-not-proven-int-expected.txt:
- fast/js/dfg-arith-add-overflow-check-elimination-tower-of-large-numbers-expected.txt:
- fast/js/dfg-array-length-dead-expected.txt:
- fast/js/dfg-array-pop-side-effects-expected.txt:
- fast/js/resources/js-test-pre.js:
(testFailed):
(dfgIncrement):
(isSuccessfullyParsed):
- fast/js/script-tests/dfg-arguments-alias-one-block-overwrite.js:
- fast/js/script-tests/dfg-arguments-out-of-bounds.js:
- fast/js/script-tests/dfg-arith-add-overflow-check-elimination-predicted-but-not-proven-int.js:
- fast/js/script-tests/dfg-arith-add-overflow-check-elimination-tower-of-large-numbers.js:
- fast/js/script-tests/dfg-array-length-dead.js:
- fast/js/script-tests/dfg-array-pop-side-effects.js:
- 9:01 PM Changeset in webkit [153202] by
-
- 5 edits in trunk/Source/JavaScriptCore
fourthTier: Remove CodeOrigin::valueProfileOffset since it was only needed for op_call_put_result.
Rubber stamped by Mark Hahnenberg.
- bytecode/CodeOrigin.h:
(CodeOrigin):
(JSC::CodeOrigin::CodeOrigin):
(JSC::CodeOrigin::isSet):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::currentCodeOrigin):
- dfg/DFGGraph.h:
(JSC::DFG::Graph::valueProfileFor):
- 9:01 PM Changeset in webkit [153201] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: Remove finalDestinationOrIgnored since it isn't called anymore.
Rubber stamped by Mark Hahnenberg.
- bytecompiler/BytecodeGenerator.h:
(BytecodeGenerator):
- 9:01 PM Changeset in webkit [153200] by
-
- 20 edits in trunk/Source/JavaScriptCore
fourthTier: get rid of op_call_put_result
https://bugs.webkit.org/show_bug.cgi?id=117047
Reviewed by Gavin Barraclough.
Work in progress. This still makes like 20 tests crash.
op_call_put_result is an oddball. Its semantics are that it takes the return
value of a call instruction, which is set aside in regT0/regT1, and places them
into some stack slot. This is weird since there is an implicit contract with the
preceding bytecode instruction, and it's even weirder since it means that it
doesn't make sense to jump to it; for example OSR exit from the preceding call
instruction must make sure to jump over the op_call_put_result.
So this patch gets rid of op_call_put_result:
- In bytecode, all calls return a value and we always allocate a temporary for that value even if it isn't used.
- The LLInt does the return value saving as part of dispatchAfterCall().
- The JIT and DFG do the return value saving as part of normal code generation. The DFG already did the right thing.
- DFG->JIT OSR exit in the case of inlining will make the return PC's point at the CallLinkInfo::callReturnLocation, rather than the machine PC associated with the op_call_put_result instruction.
- Tons of code gets removed. The DFG had to track whether or not a call had a return value in a bunch of places. It had to track the fact that we would exit to after the op_call_put_result. It was a mess. That mess is now gone.
- bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFromLLInt):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::printCallOp):
(JSC::CodeBlock::dumpArrayProfiling):
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
- bytecode/CodeBlock.h:
- bytecode/Opcode.h:
(JSC):
(JSC::padOpcodeName):
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitCall):
(JSC::BytecodeGenerator::emitCallVarargs):
(JSC::BytecodeGenerator::emitConstruct):
- bytecompiler/NodesCodegen.cpp:
(JSC::NewExprNode::emitBytecode):
(JSC::FunctionCallValueNode::emitBytecode):
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::FunctionCallBracketNode::emitBytecode):
(JSC::FunctionCallDotNode::emitBytecode):
(JSC::CallFunctionCallDotNode::emitBytecode):
(JSC::ApplyFunctionCallDotNode::emitBytecode):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::ByteCodeParser):
(ByteCodeParser):
(JSC::DFG::ByteCodeParser::currentCodeOrigin):
(JSC::DFG::ByteCodeParser::addCall):
(JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
(JSC::DFG::ByteCodeParser::getPrediction):
(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::handleMinMax):
(JSC::DFG::ByteCodeParser::handleIntrinsic):
(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
- dfg/DFGOSRExitCompiler.cpp:
- dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):
- jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
- jit/JIT.h:
(JIT):
- jit/JITCall.cpp:
(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileLoadVarargs):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
(JSC::JIT::emit_op_call):
(JSC):
(JSC::JIT::emit_op_call_eval):
(JSC::JIT::emit_op_call_varargs):
(JSC::JIT::emit_op_construct):
(JSC::JIT::emitSlow_op_call):
(JSC::JIT::emitSlow_op_call_eval):
(JSC::JIT::emitSlow_op_call_varargs):
(JSC::JIT::emitSlow_op_construct):
- jit/JITCall32_64.cpp:
(JSC::JIT::emitPutCallResult):
(JSC::JIT::compileLoadVarargs):
(JSC::JIT::compileCallEval):
(JSC::JIT::compileCallEvalSlowCase):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
- jit/JITOpcodes.cpp:
(JSC):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::genericCall):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- llint/LowLevelInterpreter.cpp:
(JSC::CLoop::execute):
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm:
- 9:01 PM Changeset in webkit [153199] by
-
- 11 edits in trunk/Source/JavaScriptCore
fourthTier: LLInt shouldn't store an offset call PC during op_call-like calls
https://bugs.webkit.org/show_bug.cgi?id=117048
Reviewed by Mark Hahnenberg.
This just makes everything consistent in the LLInt: anytime any op calls out,
it stores its PC and never the next op's PC.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::linkIncomingCall):
(JSC::CodeBlock::bytecodeOffset):
- bytecode/CodeBlock.h:
- bytecode/Opcode.h:
(JSC::padOpcodeName):
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitCallVarargs):
- llint/LLIntExceptions.cpp:
(JSC::LLInt::interpreterThrowInCaller):
(JSC::LLInt::returnToThrow):
(JSC::LLInt::callToThrow):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- llint/LowLevelInterpreter.asm:
- llint/LowLevelInterpreter.cpp:
(JSC::CLoop::execute):
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm:
- 9:01 PM Changeset in webkit [153198] by
-
- 7 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support ArithAbs
https://bugs.webkit.org/show_bug.cgi?id=116890
Reviewed by Oliver Hunt.
Implements ArithAbs in the FTL, and cleans up the DFG implementation. The
DFG implementation was previously doing zero extensions manually when it
is probably better to just use StrictInt32Operand instead.
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLIntrinsicRepository.h:
(FTL):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileArithAbs):
(LowerDFGToLLVM):
- ftl/FTLOutput.h:
(JSC::FTL::Output::doubleAbs):
- 9:01 PM Changeset in webkit [153197] by
-
- 16 edits1 copy in trunk/Source/JavaScriptCore
fourthTier: Misc JIT probe enhacements.
https://bugs.webkit.org/show_bug.cgi?id=116586.
Reviewed by Michael Saboff.
- Added JIT probe support for ARMv7 and traditional ARM. Built and tested on ARMv7. ARM version not tested nor built.
- Fix the following bugs in the X86 and X86_64 probes:
- Cannot assume that the stack pointer is already aligned when we push args for the probe. Instead, we ensure the stack alignment at runtime when we set up the probe call. This is now done in the ctiMasmProbeTrampoline.
- On return, the user probe function may have altered the stack pointer value to be restored. Previously, if the sp restore value points to some of the other register restore values in the ProbeContext record, we will fail to return from the probe having those user specified value as we're expected to do. This is now fixed.
- Rearranged the X86/X86_64 registers order to organize them like gdb expects on X86_64.
- We also now preserve the condition code registers.
- JavaScriptCore.xcodeproj/project.pbxproj:
- assembler/ARMAssembler.h:
- assembler/ARMv7Assembler.h:
(ARMRegisters):
- assembler/MacroAssemblerARM.cpp:
(JSC::isVFPPresent):
(JSC::MacroAssemblerARM::ProbeContext::dumpCPURegisters):
(JSC::MacroAssemblerARM::ProbeContext::dump):
(JSC::MacroAssemblerARM::probe):
- assembler/MacroAssemblerARM.h:
(MacroAssemblerARM):
(CPUState):
(ProbeContext):
(JSC::MacroAssemblerARM::trustedImm32FromPtr):
- assembler/MacroAssemblerARMv7.h:
(MacroAssemblerARMv7):
(CPUState):
(ProbeContext):
(JSC::MacroAssemblerARMv7::trustedImm32FromPtr):
- assembler/MacroAssemblerX86.h:
(MacroAssemblerX86):
(JSC::MacroAssemblerX86::probe):
- assembler/MacroAssemblerX86Common.cpp:
(JSC::MacroAssemblerX86Common::ProbeContext::dumpCPURegisters):
- assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::probe):
- assembler/X86Assembler.h:
- config.h:
- jit/JITStubsARM.h:
- jit/JITStubsARMv7.h:
- jit/JITStubsX86.h:
- jit/JITStubsX86Common.h:
- jit/JITStubsX86_64.h:
- 9:01 PM Changeset in webkit [153196] by
-
- 17 edits in trunk
fourthTier: FTL should call masqueradesAsUndefinedWatchpointIfIsStillValid() in all of the places where it currently calls masqueradesAsUndefinedWatchpointIsStillValid()
https://bugs.webkit.org/show_bug.cgi?id=116892
Reviewed by Oliver Hunt.
All of those places mean to plant the watchpoint if it's still valid.
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::equalNullOrUndefined):
(JSC::FTL::LowerDFGToLLVM::speculateNonNullObject):
- 9:01 PM Changeset in webkit [153195] by
-
- 5 edits in trunk/LayoutTests
fourthTier: convert more fast/js/dfg-* tests to wait for the concurrent JIT
Rubber stamped by Oliver Hunt.
- fast/js/dfg-arguments-alias-activation-expected.txt:
- fast/js/dfg-arguments-alias-activation.html:
- fast/js/dfg-arguments-alias-expected.txt:
- fast/js/script-tests/dfg-arguments-alias.js:
- 9:01 PM Changeset in webkit [153194] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support ArithMin/ArithMax
https://bugs.webkit.org/show_bug.cgi?id=116885
Reviewed by Oliver Hunt.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compileArithMinOrMax):
- 9:01 PM Changeset in webkit [153193] by
-
- 10 edits in trunk/LayoutTests
fourthTier: convert more fast/js/dfg-* tests to wait for the concurrent JIT
Rubber stamped by Oliver Hunt.
- fast/js/dfg-abs-backwards-propagation-expected.txt:
- fast/js/dfg-add-not-number-expected.txt:
- fast/js/dfg-arguments-alias-escape-expected.txt:
- fast/js/resources/js-test-pre.js:
(dfgCompiled):
(dfgIncrement):
- fast/js/script-tests/dfg-abs-backwards-propagation.js:
- fast/js/script-tests/dfg-add-not-number.js:
- fast/js/script-tests/dfg-arguments-alias-escape.js:
- fast/js/script-tests/dfg-arguments-alias-one-block-osr-exit.js:
- fast/js/script-tests/dfg-arguments-alias-one-block-overwrite-arguments.js:
- 9:01 PM Changeset in webkit [153192] by
-
- 4 edits in trunk/LayoutTests
fourthTier: fast/js should have a way of running tests long enough to wait for the concurrent JIT to tier up
https://bugs.webkit.org/show_bug.cgi?id=116878
Reviewed by Oliver Hunt.
This adds three things to js-test-pre and uses them in one representative test:
silentTestPass: If you set this to true, then testPassed() won't print anything, and will instead just have
isSuccessfullyParsed() print a message saying that some tests passed silently. This allows tests to call
shouldBe() and friends in a loop whose running time is dependent on concurrent JIT behavior, and still
be sure that the resulting test will be deterministic.
noInline(): If testRunner is present, disable inlining of the relevant function.
dfgIncrement({f:function, i:index, n:limit}): Returns index either if index < limit, or if the function is
DFG compiled. Otherwise, if index >= limit and the function isn't DFG compiled, return 0. This means
that the 'i++' in the fast/js/dfg-* warm-up loops can be replaced with:
i = dfgIncrement({f:<function you're interested in>, i:i + 1, n:<some number smaller than the loop condition>)
This has the effect of having the loop repeat the first 'n' iterations until the function is DFG
compiled. See the modified test, where we do n:100 and the loop condition is i < 200. So the loop will
repeat the first 100 iterations until the function is DFG compiled and will only do the last 100
iterations once DFG compilation kicks in.
- fast/js/dfg-arguments-osr-exit-multiple-blocks-expected.txt:
- fast/js/resources/js-test-pre.js:
(testPassed):
(dfgIncrement):
(noInline):
(isSuccessfullyParsed):
- fast/js/script-tests/dfg-arguments-osr-exit-multiple-blocks.js:
- 9:01 PM Changeset in webkit [153191] by
-
- 10 edits in trunk
fourthTier: testRunner should have a way of disabling inlining of functions
https://bugs.webkit.org/show_bug.cgi?id=116875
Reviewed by Mark Hahnenberg.
Source/JavaScriptCore:
- API/JSCTestRunnerUtils.cpp:
(JSC::getExecutable):
(JSC):
(JSC::numberOfDFGCompiles):
(JSC::setNeverInline):
- API/JSCTestRunnerUtils.h:
(JSC):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpAssumingJITType):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::mightInlineFunctionForCall):
(JSC::DFG::mightInlineFunctionForClosureCall):
(JSC::DFG::mightInlineFunctionForConstruct):
- runtime/Executable.h:
(JSC::ScriptExecutable::ScriptExecutable):
(ScriptExecutable):
(JSC::ScriptExecutable::setNeverInline):
(JSC::ScriptExecutable::neverInline):
(JSC::ScriptExecutable::isInliningCandidate):
Tools:
- DumpRenderTree/TestRunner.cpp:
(neverInlineFunction):
(TestRunner::staticFunctions):
LayoutTests:
- fast/js/script-tests/dfg-min-max.js:
- 9:01 PM Changeset in webkit [153190] by
-
- 5 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support ArithMod
https://bugs.webkit.org/show_bug.cgi?id=116792
Reviewed by Oliver Hunt.
- ftl/FTLAbbreviations.h:
(JSC::FTL::buildFRem):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileArithMod):
(LowerDFGToLLVM):
- ftl/FTLOutput.h:
(JSC::FTL::Output::doubleRem):
- 9:01 PM Changeset in webkit [153189] by
-
- 24 edits in trunk/Source
fourthTier: It should be possible to record heap operations (both FastMalloc and JSC GC)
https://bugs.webkit.org/show_bug.cgi?id=116848
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Record GC heap operations if ENABLE(ALLOCATION_LOGGING).
- API/JSManagedValue.mm:
- dfg/DFGOperations.cpp:
- heap/Heap.cpp:
(JSC::Heap::collect):
- heap/Heap.h:
(Heap):
(JSC::Heap::allocateWithNormalDestructor):
(JSC::Heap::allocateWithImmortalStructureDestructor):
(JSC::Heap::allocateWithoutDestructor):
(JSC::Heap::tryAllocateStorage):
(JSC::Heap::tryReallocateStorage):
(JSC):
(JSC::Heap::ascribeOwner):
- heap/SlotVisitor.cpp:
(JSC::SlotVisitor::append):
(JSC::SlotVisitor::internalAppend):
- heap/SlotVisitor.h:
(SlotVisitor):
- heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::append):
(JSC::SlotVisitor::appendUnbarrieredPointer):
(JSC::SlotVisitor::appendUnbarrieredValue):
(JSC::SlotVisitor::appendUnbarrieredWeak):
(JSC::SlotVisitor::internalAppend):
(JSC):
(JSC::SlotVisitor::appendValues):
- jit/JITWriteBarrier.h:
(JSC::SlotVisitor::append):
- llint/LLIntCommon.h:
- runtime/Butterfly.h:
(Butterfly):
- runtime/ButterflyInlines.h:
(JSC::Butterfly::createUninitialized):
(JSC::Butterfly::create):
(JSC::Butterfly::growPropertyStorage):
(JSC::Butterfly::createOrGrowArrayRight):
(JSC):
(JSC::Butterfly::growArrayRight):
(JSC::Butterfly::resizeArray):
- runtime/JSArray.cpp:
(JSC::createArrayButterflyInDictionaryIndexingMode):
(JSC::JSArray::unshiftCountSlowCase):
- runtime/JSArray.h:
(JSC::createContiguousArrayButterfly):
(JSC::createArrayButterfly):
(JSC):
(JSC::JSArray::create):
(JSC::JSArray::tryCreateUninitialized):
- runtime/JSObject.cpp:
(JSC::JSObject::enterDictionaryIndexingModeWhenArrayStorageAlreadyExists):
(JSC::JSObject::createInitialIndexedStorage):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::constructConvertedArrayStorageWithoutCopyingElements):
(JSC::JSObject::increaseVectorLength):
(JSC::JSObject::ensureLengthSlow):
(JSC::JSObject::growOutOfLineStorage):
- runtime/JSObject.h:
(JSC::JSObject::JSObject):
- runtime/Operations.h:
- runtime/RegExpMatchesArray.cpp:
(JSC::RegExpMatchesArray::create):
- runtime/StructureInlines.h:
(JSC):
- runtime/WriteBarrier.h:
(JSC):
Source/WTF:
Reviewed by Mark Hahnenberg.
- WTF.xcodeproj/project.pbxproj:
- wtf/DataLog.cpp:
(WTF):
(WTF::initializeLogFileOnce):
- wtf/FastMalloc.cpp:
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
- wtf/Platform.h:
- 9:01 PM Changeset in webkit [153188] by
-
- 13 edits3 adds in trunk
fourthTier: testRunner should be able to tell you if a function is DFG compiled
https://bugs.webkit.org/show_bug.cgi?id=116847
Reviewed by Mark Hahnenberg.
Source/JavaScriptCore:
- API/JSCTestRunnerUtils.cpp: Added.
(JSC):
(JSC::numberOfDFGCompiles):
- API/JSCTestRunnerUtils.h: Added.
(JSC):
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::numberOfDFGCompiles):
(JSC):
- bytecode/CodeBlock.h:
(CodeBlock):
- dfg/DFGWorklist.cpp:
(JSC::DFG::Worklist::runThread):
- runtime/Executable.h:
(JSC):
- runtime/JSFunctionInlines.h: Added.
(JSC):
(JSC::JSFunction::JSFunction):
(JSC::JSFunction::jsExecutable):
(JSC::JSFunction::isHostFunction):
(JSC::JSFunction::nativeFunction):
(JSC::JSFunction::nativeConstructor):
- runtime/Operations.h:
Source/WebCore:
Bail early if we're in the compilation thread. This is only relevant for
debug dumps.
No new tests becase no new behavior.
- loader/cache/CachedScript.cpp:
(WebCore::CachedScript::script):
Tools:
- DumpRenderTree/TestRunner.cpp:
(numberOfDFGCompiles):
(TestRunner::staticFunctions):
LayoutTests:
- fast/js/script-tests/dfg-min-max.js:
- 9:01 PM Changeset in webkit [153187] by
-
- 4 edits9 adds in trunk
fourthTier: DFG ArithMod should have the !nodeUsedAsNumber optimizations that ArithDiv has
https://bugs.webkit.org/show_bug.cgi?id=116841
Reviewed by Mark Hahnenberg.
Source/JavaScriptCore:
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArithMod):
LayoutTests:
- fast/js/dfg-mod-by-neg1-and-then-or-zero-interesting-reg-alloc-expected.txt: Added.
- fast/js/dfg-mod-by-neg1-and-then-or-zero-interesting-reg-alloc.html: Added.
- fast/js/dfg-mod-by-zero-and-then-or-zero-interesting-reg-alloc-expected.txt: Added.
- fast/js/dfg-mod-by-zero-and-then-or-zero-interesting-reg-alloc.html: Added.
- fast/js/dfg-mod-neg2tothe31-by-one-and-then-or-zero-with-interesting-reg-alloc-expected.txt: Added.
- fast/js/dfg-mod-neg2tothe31-by-one-and-then-or-zero-with-interesting-reg-alloc.html: Added.
- fast/js/jsc-test-list:
- fast/js/script-tests/dfg-mod-by-neg1-and-then-or-zero-interesting-reg-alloc.js: Added.
(foo):
- fast/js/script-tests/dfg-mod-by-zero-and-then-or-zero-interesting-reg-alloc.js: Added.
(foo):
- fast/js/script-tests/dfg-mod-neg2tothe31-by-one-and-then-or-zero-with-interesting-reg-alloc.js: Added.
(foo):
- 9:01 PM Changeset in webkit [153186] by
-
- 10 edits in trunk
fourthTier: clean up ArithDiv/ArithMod in the DFG
https://bugs.webkit.org/show_bug.cgi?id=116793
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
This makes ArithDiv and ArithMod behave similarly, and moves both of their
implementations entirely into DFGSpeculativeJIT.cpp into methods named like
the ones for ArithSub/ArithMul.
Specifically, ArithMod now uses the wrap-in-conversion-nodes idiom that
ArithDiv used for platforms that don't support integer division. Previously
ArithMod had its own int-to-double and double-to-int conversions for this
purpose.
As well, this gets rid of confusing methods like compileSoftModulo() (which
did no such thing, there wasn't anything "soft" about it) and
compileIntegerArithDivForX86() (which is accurately named but we don't use
the platform-specific method convention anywhere else).
Finally, this takes the optimized power-of-two modulo operation that was
previously only for ARMv7s, and makes it available for all platforms. Well,
sort of: I actually rewrote it to do what latest LLVM appears to do, which
is a crazy straight-line power-of-2 modulo based on a combination of shifts,
ands, additions, and subtractions. I can kind of understand it well enough
to see that it complies with both C and JS power-of-2 modulo semantics. I've
also confirmed that it does by testing (hence the corresponding improvements
to one of the division tests). But, I don't claim to know exactly how this
code works other than to observe that it is super leet.
Overall, this patch has the effect of killing some code (no more hackish
int-to-double conversions in ArithMod), making some optimization work on
more platforms, and making the compiler less confusing by doing more things
with the same idiom.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGSpeculativeJIT.cpp:
(DFG):
(JSC::DFG::SpeculativeJIT::compileArithDiv):
(JSC::DFG::SpeculativeJIT::compileArithMod):
- dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
LayoutTests:
Reviewed by Mark Hahnenberg.
- fast/js/script-tests/integer-division-neg2tothe32-by-neg1.js:
(myModBy2):
(myModBy1073741824):
- 9:01 PM Changeset in webkit [153185] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: cti_optimize shouldn't allow GCs to get in the way of it seeing the state of its CodeBlock
https://bugs.webkit.org/show_bug.cgi?id=116748
Reviewed by Geoffrey Garen.
This fixes the following race: an optimized version of our code block could be installed
by the GC just as we return from completeAllReadyPlansForVM(), leading us to believe
that the code block isn't ready yet even though it is. Currently this triggers a
RELEASE_ASSERT. We could remove that assertion, but then this case would lead to the
code in question entering into optimizeAfterWarmUp mode. That seems pretty wasteful.
Fix the bug, and hopefully close the door on these bugs for a while, by wrapping
cti_optimize in a DeferGC. There is little downside to doing so since the only
"allocations" in cti_optimize are the ones where we inform the GC about extra memory
usage.
I had a more comprehensive solution (see the bug, "work in progress" patch) but that
one involved adding *more* raciness to cti_optimize. I decided that was a less good
approach once I came to appreciate the simplicity of just using DeferGC.
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- 9:01 PM Changeset in webkit [153184] by
-
- 7 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support ArithDiv
https://bugs.webkit.org/show_bug.cgi?id=116771
Reviewed by Oliver Hunt.
- ftl/FTLAbbreviations.h:
(JSC::FTL::buildDiv):
(JSC::FTL::buildRem):
(JSC::FTL::buildFDiv):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLCommonValues.cpp:
(JSC::FTL::CommonValues::CommonValues):
- ftl/FTLCommonValues.h:
(CommonValues):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileArithMul):
(JSC::FTL::LowerDFGToLLVM::compileArithDiv):
(LowerDFGToLLVM):
- ftl/FTLOutput.h:
(JSC::FTL::Output::div):
(JSC::FTL::Output::rem):
(JSC::FTL::Output::doubleDiv):
- 9:01 PM Changeset in webkit [153183] by
-
- 8 edits in trunk/Source
fourthTier: Remove Interpreter::retrieveLastCaller().
This merge is complicated by the trunk js stack reporting logic.
Remove Interpreter::retrieveLastCaller().
https://bugs.webkit.org/show_bug.cgi?id=116753.
Reviewed by Geoffrey Garen.
This is part of the refactoring effort to get rid of functions walking
the JS stack in their own way.
- API/JSContextRef.cpp:
(JSContextCreateBacktrace):
- interpreter/CallFrame.cpp:
- interpreter/Interpreter.cpp:
(JSC::Interpreter::Interpreter):
(JSC::Interpreter::getStackTrace):
(JSC::Interpreter::addStackTraceIfNecessary):
- interpreter/Interpreter.h:
(StackFrame):
(JSC::StackFrame::StackFrame):
(Interpreter):
- jsc.cpp:
(functionJSCStack):
- profiler/ProfileGenerator.cpp:
(JSC::ProfileGenerator::addParentForConsoleStart):
../WebCore:
No new tests.
- bindings/js/JSXMLHttpRequestCustom.cpp:
(WebCore::JSXMLHttpRequest::send):
- bindings/js/ScriptCallStackFactory.cpp:
(WebCore::createScriptCallStack):
- 9:01 PM Changeset in webkit [153182] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL boolify should support ObjectOrOtherUse
https://bugs.webkit.org/show_bug.cgi?id=116741
Reviewed by Geoffrey Garen.
Just reusing what was already there in equalNullOrUndefined(). Note that we will
sometimes generate some redundant IR - like having some spurious bitNot's in
places - but it's safe to assume that LLVM will simplify those, and that it won't
be the longest pole in the tent for compile times.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileCompareEqConstant):
(JSC::FTL::LowerDFGToLLVM::compileCompareStrictEqConstant):
(JSC::FTL::LowerDFGToLLVM::boolify):
(JSC::FTL::LowerDFGToLLVM::equalNullOrUndefined):
- 9:01 PM Changeset in webkit [153181] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support LogicalNot and Branch on Int32 and Number
https://bugs.webkit.org/show_bug.cgi?id=116739
Reviewed by Gavin Barraclough.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileLogicalNot):
(JSC::FTL::LowerDFGToLLVM::compileBranch):
(JSC::FTL::LowerDFGToLLVM::boolify):
(LowerDFGToLLVM):
- ftl/FTLOutput.h:
(JSC::FTL::Output::isZero32):
(JSC::FTL::Output::notZero32):
- 9:01 PM Changeset in webkit [153180] by
-
- 11 edits in trunk/Source/JavaScriptCore
fourthTier: add heuristics to reduce the likelihood of a trivially inlineable function being independently compiled by the concurrent JIT
https://bugs.webkit.org/show_bug.cgi?id=116557
Reviewed by Geoffrey Garen.
This introduces a fairly comprehensive mechanism for preventing trivially inlineable
functions from being compiled independently of all of the things into which they end
up being inlined.
The trick is CodeBlock::m_shouldAlwaysBeInlined, or SABI for short (that's what the
debug logging calls it). A SABI function is one that we currently believe should
never be DFG optimized because it should always be inlined into the functions that
call it. SABI follows "innocent until proven guilty": all functions start out SABI
and have SABI set to false if we see proof that that function may be called in some
possibly non-inlineable way. So long as a function is SABI, it will not tier up to
the DFG: cti_optimize will perpetually postpone its optimization. Because SABI has
such a severe effect, we make the burden of proof of guilt quite low. SABI gets
cleared if any of the following happen:
- You get called from native code (either through CallData or CachedCall).
- You get called from an eval, since eval code takes a long time to get DFG optimized.
- You get called from global code, since often global code doesn't tier-up since it's run-once.
- You get called recursively, where recursion is detected by a stack walk of depth Options::maximumInliningDepth().
- You get called through an unlinked virtual call.
- You get called from DFG code, since if the caller was already DFG optimized and didn't inline you then obviously, you might not get inlined.
- You've tiered up to the baseline JIT and you get called from the interpreter. The idea here is that this kind of ensures that you stay SABI only if you're called no more frequently than any of your callers.
- You get called from a code block that isn't a DFG candidate.
- You aren't an inlining candidate.
Most of the heuristics for SABI are in CodeBlock::noticeIncomingCall().
This is neutral on SunSpider and V8Spider, and appears to be a slight speed-up on
V8v7, which was previously adversely affected by concurrent compilation. I also
confirmed that for example on V8/richards, it dramatically reduces the number of
code blocks that get DFG compiled. It is a speed-up on those V8v7 benchmarks that
saw regressions from concurrent compilation.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpAssumingJITType):
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::linkIncomingCall):
(JSC):
(JSC::CodeBlock::noticeIncomingCall):
- bytecode/CodeBlock.h:
(CodeBlock):
- dfg/DFGCapabilities.h:
(JSC::DFG::mightInlineFunction):
(DFG):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThread):
- dfg/DFGRepatch.cpp:
(JSC::DFG::dfgLinkFor):
- interpreter/Interpreter.cpp:
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::prepareForRepeatCall):
- jit/JIT.cpp:
(JSC::JIT::privateCompile):
(JSC::JIT::linkFor):
- jit/JIT.h:
(JIT):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
(JSC::lazyLinkFor):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::setUpCall):
- 9:00 PM Changeset in webkit [153179] by
-
- 11 edits in trunk/Source/JavaScriptCore
fourthTier: rationalize DFG::CapabilityLevel and DFGCapabilities.[h|cpp]
https://bugs.webkit.org/show_bug.cgi?id=116696
Reviewed by Sam Weinig.
Make it so that all capability calculation is funneled through one function, which tells
you everything you wanted to know: can it be inlined, and can it be compiled.
This work will help with https://bugs.webkit.org/show_bug.cgi?id=116557, since now the
JIT has a fairly authoritative answer to the "can it be inlined" question.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
(JSC::ProgramCodeBlock::capabilityLevelInternal):
(JSC::EvalCodeBlock::capabilityLevelInternal):
(JSC::FunctionCodeBlock::capabilityLevelInternal):
- bytecode/CodeBlock.h:
(CodeBlock):
(JSC::CodeBlock::capabilityLevel):
(JSC::CodeBlock::capabilityLevelState):
(ProgramCodeBlock):
(EvalCodeBlock):
(FunctionCodeBlock):
- dfg/DFGCapabilities.cpp:
(JSC::DFG::debugFail):
(DFG):
(JSC::DFG::canInlineResolveOperations):
(JSC::DFG::capabilityLevel):
- dfg/DFGCapabilities.h:
(DFG):
(JSC::DFG::capabilityLevel):
(JSC::DFG::evalCapabilityLevel):
(JSC::DFG::programCapabilityLevel):
(JSC::DFG::functionForCallCapabilityLevel):
(JSC::DFG::functionForConstructCapabilityLevel):
(JSC::DFG::canInlineFunctionForCall):
(JSC::DFG::canInlineFunctionForClosureCall):
(JSC::DFG::canInlineFunctionForConstruct):
- dfg/DFGCommon.h:
(JSC::DFG::canCompile):
(DFG):
(JSC::DFG::canInline):
(JSC::DFG::leastUpperBound):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- jit/JIT.cpp:
(JSC::JIT::privateCompile):
- jit/JITPropertyAccess.cpp:
(JSC::JIT::privateCompilePutByIdTransition):
- jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::privateCompilePutByIdTransition):
- tools/CodeProfile.cpp:
(JSC::CodeProfile::sample):
- 9:00 PM Changeset in webkit [153178] by
-
- 1 edit in trunk/Source/JavaScriptCore/bytecode/CodeBlock.h
fourthTier: Reindent CodeBlock.h to aid merging
- 9:00 PM Changeset in webkit [153177] by
-
- 22 edits in trunk/Source/JavaScriptCore
fourthTier: Rename getJITCode and getJITType to jitCode and jitType.
Rubber stampted by Mark Hahnenberg.
- assembler/RepatchBuffer.h:
(JSC::RepatchBuffer::RepatchBuffer):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dump):
(JSC::CodeBlock::visitAggregate):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::resetStubInternal):
(JSC::CodeBlock::stronglyVisitWeakReferences):
(JSC::CodeBlock::baselineVersion):
(JSC::CodeBlock::hasOptimizedReplacement):
(JSC::CodeBlock::bytecodeOffset):
(JSC::CodeBlock::codeOriginForReturn):
(JSC::ProgramCodeBlock::compileOptimized):
(JSC::EvalCodeBlock::compileOptimized):
(JSC::FunctionCodeBlock::compileOptimized):
(JSC::ProgramCodeBlock::jettison):
(JSC::EvalCodeBlock::jettison):
(JSC::FunctionCodeBlock::jettison):
(JSC::ProgramCodeBlock::jitCompileImpl):
(JSC::EvalCodeBlock::jitCompileImpl):
(JSC::FunctionCodeBlock::jitCompileImpl):
(JSC::CodeBlock::setOptimizationThresholdBasedOnCompilationResult):
(JSC::CodeBlock::adjustedExitCountThreshold):
(JSC::CodeBlock::tallyFrequentExitSites):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::getCallLinkInfo):
(JSC::CodeBlock::jitCode):
(JSC::CodeBlock::jitCodeWithArityCheck):
(JSC::CodeBlock::jitType):
(JSC::CodeBlock::hasBaselineJITProfiling):
(JSC::CodeBlock::jitCompile):
(JSC::CodeBlock::addFrequentExitSite):
(JSC::CodeBlock::shouldImmediatelyAssumeLivenessDuringScan):
(JSC::ExecState::isInlineCallFrame):
- dfg/DFGAssemblyHelpers.cpp:
(JSC::DFG::AssemblyHelpers::decodedCodeMapFor):
- dfg/DFGAssemblyHelpers.h:
(JSC::DFG::AssemblyHelpers::AssemblyHelpers):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):
- dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::codeLocationForRepatch):
- dfg/DFGOSRExitCompiler.cpp:
- dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):
- dfg/DFGOperations.cpp:
- dfg/DFGVariableEventStream.cpp:
(JSC::DFG::VariableEventStream::reconstruct):
- ftl/FTLOSRExit.cpp:
(JSC::FTL::OSRExit::codeLocationForRepatch):
- ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileFTLOSRExit):
- heap/DFGCodeBlocks.cpp:
(JSC::DFGCodeBlocks::~DFGCodeBlocks):
(JSC::DFGCodeBlocks::jettison):
(JSC::DFGCodeBlocks::clearMarks):
(JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
(JSC::DFGCodeBlocks::traceMarkedCodeBlocks):
- interpreter/Interpreter.cpp:
(JSC::getLineNumberForCallFrame):
(JSC::getCallerInfo):
- jit/JITDriver.h:
(JSC::jitCompileIfAppropriateImpl):
(JSC::jitCompileFunctionIfAppropriateImpl):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::entryOSR):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- runtime/Executable.cpp:
(JSC::jettisonCodeBlock):
(JSC::EvalExecutable::compileOptimized):
(JSC::EvalExecutable::jettisonOptimizedCode):
(JSC::ProgramExecutable::compileOptimized):
(JSC::ProgramExecutable::jettisonOptimizedCode):
(JSC::FunctionExecutable::baselineCodeBlockFor):
(JSC::FunctionExecutable::compileOptimizedForCall):
(JSC::FunctionExecutable::compileOptimizedForConstruct):
(JSC::FunctionExecutable::jettisonOptimizedCodeForCall):
(JSC::FunctionExecutable::jettisonOptimizedCodeForConstruct):
- tools/CodeProfile.cpp:
(JSC::CodeProfile::sample):
- 9:00 PM Changeset in webkit [153176] by
-
- 5 edits in trunk/Source/JavaScriptCore
fourthTier: Race between LLInt->Baseline tier-up and DFG reading Baseline profiling data
https://bugs.webkit.org/show_bug.cgi?id=116633
Reviewed by Mark Hahnenberg.
Previously we would check if we had Baseline JIT profiling data by seeing if the
appropriate vector was non-empty. This is horrible if we're doing LLInt->Baseline
tier-up at the same time. This will happen for code we are inlining, if we're
deciding to inline it before the LLInt->Baseline tier-up happened for that code.
This changes things to take advantage of the fact that the very last thing that
LLInt->Baseline tier-up will do (in JITDriver.h) is setJITCode(). We now precede
the actual work in setJITCode() with a store-store fence to ensure that all
stores to modify the CodeBlock happen before setting the JITCode, and we modify
CodeBlock::getJITType() to use load-load fences to ensure that if you see
JITCode::BaselineJIT then you will also see all of those vectors. Then this
changes all of the code that scrapes Baseline JIT profiles to check if
getJITType() returns JITCode::BaselineJIT instead of checking vector sizes.
The outcome is that for the non-racy cases we behave as we did before (we fall
back on LLInt profiling if the tier-up hasn't happened) and for racy cases we
use LLInt profiling conservatively.
Note that for some (but not all!) of the cases where we scrape Baseline JIT
profiling, we would have anyway been holding the CodeBlock::m_lock so we can also
fix those cases by just having setJITCode graph that lock. This patch does that
also, mainly because although we only call setJITCode() from the main thread, in
general it's dangerous to have a pointer to a ref-counted object being modified
in a racy way. So, this patch just does the most conservative thing possible that
does we can afford to do.
- bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFor):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::setJITCode):
(JSC::CodeBlock::getJITType):
(JSC::CodeBlock::hasBaselineJITProfiling):
(JSC::CodeBlock::likelyToTakeSlowCase):
(JSC::CodeBlock::couldTakeSlowCase):
(JSC::CodeBlock::likelyToTakeSpecialFastCase):
(JSC::CodeBlock::couldTakeSpecialFastCase):
(JSC::CodeBlock::likelyToTakeDeepestSlowCase):
(JSC::CodeBlock::likelyToTakeAnySlowCase):
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFor):
- 9:00 PM Changeset in webkit [153175] by
-
- 7 edits in trunk/Source/JavaScriptCore
fourthTier: It should be possible to use more than one compiler thread
https://bugs.webkit.org/show_bug.cgi?id=116630
Reviewed by Mark Hahnenberg.
This gives us the ability to use more compiler threads, but doesn't actually
enable the functionality because it isn't a speed-up on any benchmark. It can
even be a slow-down. This also adds the ability to disable concurrent
compilation if we're on a uniprocessor machine, and adds more logging to the
worklist code to allow us to investigate how many threads are active. It
appears that even on the most compiler-heavy benchmarks, we never have enough
work for more than 4 threads, and even then the 4 threads are all active for
a short time.
Something that having more threads does accomplish is that it shakes out bugs.
This patch fixes a bug with Watchpoint not being thread-safe ref-counted,
which enabling 7 compilation threads did catch.
As it stands, this patch is performance-neutral and just fixes bugs and adds
some options.
- bytecode/Watchpoint.h:
- dfg/DFGCommon.h:
(JSC::DFG::enableConcurrentJIT):
- dfg/DFGWorklist.cpp:
(JSC::DFG::Worklist::Worklist):
(JSC::DFG::Worklist::~Worklist):
(JSC::DFG::Worklist::finishCreation):
(JSC::DFG::Worklist::create):
(JSC::DFG::Worklist::enqueue):
(JSC::DFG::Worklist::waitUntilAllPlansForVMAreReady):
(JSC::DFG::Worklist::dump):
(JSC::DFG::Worklist::runThread):
(JSC::DFG::initializeGlobalWorklistOnce):
- dfg/DFGWorklist.h:
- runtime/Options.cpp:
(JSC::computeNumberOfWorkerThreads):
(JSC):
(JSC::computeNumberOfGCMarkers):
- runtime/Options.h:
(JSC):
- 9:00 PM Changeset in webkit [153174] by
-
- 20 edits in trunk/Source/JavaScriptCore
fourthTier: FTL shouldn't use the LLVM global context, and should instead create its own context for each compilation
https://bugs.webkit.org/show_bug.cgi?id=116631
Reviewed by Mark Hahnenberg.
In the future we might want to share contexts for multiple compilations, but for
now using one context per compilation is a progression over just constantly using
the global context.
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThread):
(DFG):
(JSC::DFG::Plan::compileInThreadImpl):
- dfg/DFGPlan.h:
- ftl/FTLAbbreviatedTypes.h:
(FTL):
- ftl/FTLAbbreviations.h:
(JSC::FTL::voidType):
(JSC::FTL::int1Type):
(JSC::FTL::int8Type):
(JSC::FTL::int32Type):
(JSC::FTL::int64Type):
(JSC::FTL::intPtrType):
(JSC::FTL::doubleType):
(JSC::FTL::structType):
(JSC::FTL::mdKindID):
(JSC::FTL::mdString):
(JSC::FTL::mdNode):
(JSC::FTL::appendBasicBlock):
(JSC::FTL::insertBasicBlock):
- ftl/FTLAbstractHeap.cpp:
(JSC::FTL::AbstractHeap::tbaaMetadataSlow):
(JSC::FTL::IndexedAbstractHeap::IndexedAbstractHeap):
(JSC::FTL::NumberedAbstractHeap::NumberedAbstractHeap):
(JSC::FTL::AbsoluteAbstractHeap::AbsoluteAbstractHeap):
- ftl/FTLAbstractHeap.h:
(IndexedAbstractHeap):
(NumberedAbstractHeap):
(AbsoluteAbstractHeap):
- ftl/FTLAbstractHeapRepository.cpp:
(JSC::FTL::AbstractHeapRepository::AbstractHeapRepository):
- ftl/FTLAbstractHeapRepository.h:
(AbstractHeapRepository):
- ftl/FTLCommonValues.cpp:
(JSC::FTL::CommonValues::CommonValues):
- ftl/FTLCommonValues.h:
(CommonValues):
- ftl/FTLCompile.cpp:
(JSC::FTL::mmAllocateCodeSection):
- ftl/FTLIntrinsicRepository.cpp:
(JSC::FTL::IntrinsicRepository::IntrinsicRepository):
- ftl/FTLIntrinsicRepository.h:
(FTL):
(IntrinsicRepository):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::lower):
- ftl/FTLOutput.cpp:
(JSC::FTL::Output::Output):
- ftl/FTLOutput.h:
(Output):
(JSC::FTL::Output::newBlock):
- ftl/FTLState.cpp:
(JSC::FTL::State::State):
(JSC::FTL::State::~State):
(FTL):
- ftl/FTLState.h:
(State):
- runtime/Options.h:
(JSC):
- 9:00 PM Changeset in webkit [153173] by
-
- 3 edits in trunk/WebKitLibraries
fourthTier: Updated LLVM drops to include MCJIT memory management APIs.
Rubber stamped by Mark Hahnenberg.
- LLVMIncludesMountainLion.tar.bz2:
- LLVMLibrariesMountainLion.tar.bz2:
- 9:00 PM Changeset in webkit [153172] by
-
- 9 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should force LLVM to use our own JIT memory allocator, and we shouldn't have to keep around an LLVMExecutionEngineRef to keep code alive
https://bugs.webkit.org/show_bug.cgi?id=113619
Reviewed by Geoffrey Garen.
This uses new API that I've exposed, which allows for memory manager callbacks
from within LLVM. LLVM may allocate multiple independent chunks of memory for
a module, and we track all of those in a Vector in FTL::JITCode.
- ftl/FTLCompile.cpp:
(JSC::FTL::mmAllocateCodeSection):
(FTL):
(JSC::FTL::mmAllocateDataSection):
(JSC::FTL::mmApplyPermissions):
(JSC::FTL::mmDestroy):
(JSC::FTL::compile):
- ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::JITCode):
(JSC::FTL::JITCode::~JITCode):
(JSC::FTL::JITCode::addHandle):
(FTL):
(JSC::FTL::JITCode::initializeCode):
- ftl/FTLJITCode.h:
(JITCode):
(JSC::FTL::JITCode::handles):
- ftl/FTLJITFinalizer.cpp:
(JSC::FTL::JITFinalizer::~JITFinalizer):
(JSC::FTL::JITFinalizer::finalizeFunction):
- ftl/FTLJITFinalizer.h:
(JSC::FTL::JITFinalizer::initializeEntrypointLinkBuffer):
(JITFinalizer):
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- ftl/FTLState.cpp:
(JSC::FTL::State::State):
- ftl/FTLState.h:
(State):
- 9:00 PM Changeset in webkit [153171] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL shouldn't use FastISel and Small code model should be turned off for now
https://bugs.webkit.org/show_bug.cgi?id=115998
Reviewed by Oliver Hunt.
This switches off FastISel and makes it possible to turn off Small code model.
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- runtime/Options.h:
(JSC):
- 9:00 PM Changeset in webkit [153170] by
-
- 34 edits1 delete in trunk/Source/JavaScriptCore
fourthTier: should use ConcurrentJITLock[er] directly and not through typedef
https://bugs.webkit.org/show_bug.cgi?id=116561
Rubber stamped by Geoffrey Garen.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/ArrayProfile.cpp:
(JSC::ArrayProfile::computeUpdatedPrediction):
(JSC::ArrayProfile::briefDescription):
- bytecode/ArrayProfile.h:
(ArrayProfile):
(JSC::ArrayProfile::expectedStructure):
(JSC::ArrayProfile::structureIsPolymorphic):
(JSC::ArrayProfile::hasDefiniteStructure):
(JSC::ArrayProfile::observedArrayModes):
(JSC::ArrayProfile::mayInterceptIndexedAccesses):
(JSC::ArrayProfile::mayStoreToHole):
(JSC::ArrayProfile::outOfBounds):
(JSC::ArrayProfile::usesOriginalArrayStructures):
- bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFor):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpValueProfiling):
(JSC::CodeBlock::dumpArrayProfiling):
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness):
(JSC::CodeBlock::updateAllArrayPredictions):
(JSC::CodeBlock::nameForRegister):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::valueProfilePredictionForBytecodeOffset):
(CodeBlock):
- bytecode/CodeBlockLock.h: Removed.
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor):
- bytecode/LazyOperandValueProfile.cpp:
(JSC::CompressedLazyOperandValueProfileHolder::computeUpdatedPredictions):
(JSC::CompressedLazyOperandValueProfileHolder::add):
(JSC::LazyOperandValueProfileParser::initialize):
(JSC::LazyOperandValueProfileParser::prediction):
- bytecode/LazyOperandValueProfile.h:
(CompressedLazyOperandValueProfileHolder):
(LazyOperandValueProfileParser):
- bytecode/MethodOfGettingAValueProfile.cpp:
(JSC::MethodOfGettingAValueProfile::getSpecFailBucket):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFor):
- bytecode/ResolveGlobalStatus.cpp:
(JSC::ResolveGlobalStatus::computeFor):
- bytecode/ValueProfile.h:
(JSC::ValueProfileBase::briefDescription):
(JSC::ValueProfileBase::computeUpdatedPrediction):
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::addVar):
- dfg/DFGArrayMode.cpp:
(JSC::DFG::ArrayMode::fromObserved):
- dfg/DFGArrayMode.h:
(ArrayMode):
(JSC::DFG::ArrayMode::withProfile):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::injectLazyOperandSpeculation):
(JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
(JSC::DFG::ByteCodeParser::getArrayMode):
(JSC::DFG::ByteCodeParser::getArrayModeAndEmitChecks):
(JSC::DFG::ByteCodeParser::parseResolveOperations):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGPredictionInjectionPhase.cpp:
(JSC::DFG::PredictionInjectionPhase::run):
- jit/JITInlines.h:
(JSC::JIT::chooseArrayMode):
- jit/JITStubs.cpp:
(JSC::tryCachePutByID):
(JSC::tryCacheGetByID):
(JSC::DEFINE_STUB_FUNCTION):
(JSC::lazyLinkFor):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setUpCall):
- profiler/ProfilerBytecodeSequence.cpp:
(JSC::Profiler::BytecodeSequence::BytecodeSequence):
- runtime/Executable.cpp:
(JSC::ProgramExecutable::addGlobalVar):
- runtime/JSActivation.cpp:
(JSC::JSActivation::getOwnNonIndexPropertyNames):
(JSC::JSActivation::symbolTablePutWithAttributes):
- runtime/JSScope.cpp:
(JSC::JSScope::resolveContainingScopeInternal):
(JSC::JSScope::resolvePut):
- runtime/JSSegmentedVariableObject.cpp:
(JSC::JSSegmentedVariableObject::findRegisterIndex):
(JSC::JSSegmentedVariableObject::addRegisters):
- runtime/JSSegmentedVariableObject.h:
(JSSegmentedVariableObject):
- runtime/JSSymbolTableObject.cpp:
(JSC::JSSymbolTableObject::getOwnNonIndexPropertyNames):
- runtime/JSSymbolTableObject.h:
(JSC::symbolTableGet):
(JSC::symbolTablePut):
(JSC::symbolTablePutWithAttributes):
- runtime/Structure.cpp:
(JSC::Structure::materializePropertyMap):
(JSC::Structure::addPropertyTransitionToExistingStructureConcurrently):
(JSC::Structure::addPropertyTransition):
(JSC::Structure::takePropertyTableOrCloneIfPinned):
(JSC::Structure::nonPropertyTransition):
(JSC::Structure::putSpecificValue):
(JSC::Structure::remove):
(JSC::Structure::createPropertyMap):
- runtime/Structure.h:
(Structure):
- runtime/SymbolTable.h:
(SymbolTable):
(JSC::SymbolTable::find):
(JSC::SymbolTable::get):
(JSC::SymbolTable::inlineGet):
(JSC::SymbolTable::begin):
(JSC::SymbolTable::end):
(JSC::SymbolTable::size):
(JSC::SymbolTable::add):
(JSC::SymbolTable::set):
(JSC::SymbolTable::contains):
- 9:00 PM Changeset in webkit [153169] by
-
- 39 edits2 copies2 adds in trunk/Source
fourthTier: DFG should be able to run on a separate thread
https://bugs.webkit.org/show_bug.cgi?id=112839
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
This is the final bit of concurrent JITing. The idea is that there is a
single global worklist, and a single global thread, that does all
optimizing compilation. This is the DFG::Worklist. It contains a queue of
DFG::Plans, and a map from CodeBlock* (the baseline code block we're
trying to optimize) to DFG::Plan. If the DFGDriver tries to concurrently
compile something, it puts the Plan on the Worklist. The Worklist's
thread will compile that Plan eventually, and when it's done, it will
signal its completion by (1) notifying anyone waiting for the Worklist to
be done, and (2) forcing the CodeBlock::m_jitExecuteCounter to take slow
path. The next Baseline JIT cti_optimize call will then install all ready
(i.e. compiled) Plans for that VM. Note that (1) is only for the GC and
VM shutdown, which will want to ensure that there aren't any outstanding
async compilations before proceeding. They do so by simply waiting for
all of the plans for the current VM to complete. (2) is the actual way
that code typically gets installed.
This is all very racy by design. For example, just as we try to force the
execute counter to take slow path, the main thread may be setting the
execute counter to some other value. The main thread must set it to
another value because (a) JIT code is constantly incrementing the counter
in a racy way, (b) the cti_optimize slow path will set it to some
large-ish negative value to ensure that cti_optimize isn't called
repeatedly, and (c) OSR exits from previously jettisoned code blocks may
still want to reset the counter values. This "race" is made benign, by
ensuring that while there is an asynchronous compilation, we at worse set
the counter to optimizeAfterWarmUp and never to deferIndefinitely. Hence
if the race happens then the worst case is that we wait another ~1000
counts before installing the optimized code. Another defense is that if
any CodeBlock calls into cti_optimize, then it will check for all ready
plans for the VM - so even if a code block has to wait another ~1000
executions before it calls cti_optimize to do the installation, it may
actually end up being installed sooner because a different code block had
called cti_optimize, potentially for an unrelated reason.
Special care is taken to ensure that installing plans informs the GC
about the increased memory usage, but also ensures that we don't recurse
infinitely - since at start of GC we try to install outstanding plans.
This is done by introducing a new GC deferral mechanism (the DeferGC
block-scoped thingy), which will ensure that GCs don't happen in the
scope but are allowed to happen after. This still leaves the strange
corner case that cti_optimize may install outstanding plans, then GC, and
that GC may jettison the code block that was installed. This, and the
fact that the plan that we took slow path to install could have been a
failed or invalid compile, mean that we have to take special precautions
in cti_optimize.
This patch also fixes a number of small concurrency bugs that I found
when things started running. There are probably more of those bugs still
left to fix. This patch just fixes the ones I know about.
Concurrent compilation is right now only enabled on X86_64 Mac. We need
platforms that are sufficiently CAStastic so that we can do the various
memory fence and CAS tricks that make this safe. We also need a platform
that uses JSVALUE64. And we need pthread_once. So, that pretty much means
just X64_64 for now. Enabling Linux-64_64 should be a breeze, but I'll
leave that up to the Qt and GTK+ ports to do at their discretion.
This is a solid speed-up on SunSpider (8-9%) and V8Spider (16%), our two
main compile-time benchmarks. Most peculiarly, this also appears to
reduce measurement noise, rather than increasing it as you would have
expected. I don't understand that result but I like it anyway. On the
other hand, this is a slight (1%) slow-down on V8v7. I will continue to
investigate this but I think that the results are already good enough
that we should land this as-is. So far, it appears that the slow-down is
due to this breaking the don't-compile-inlineables heuristics. See
investigation in https://bugs.webkit.org/show_bug.cgi?id=116556 and the
bug https://bugs.webkit.org/show_bug.cgi?id=116557.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeBlock.cpp:
(JSC):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::resetStubInternal):
(JSC::CodeBlock::baselineVersion):
(JSC::CodeBlock::hasOptimizedReplacement):
(JSC::CodeBlock::optimizationThresholdScalingFactor):
(JSC::CodeBlock::checkIfOptimizationThresholdReached):
(JSC::CodeBlock::optimizeNextInvocation):
(JSC::CodeBlock::dontOptimizeAnytimeSoon):
(JSC::CodeBlock::optimizeAfterWarmUp):
(JSC::CodeBlock::optimizeAfterLongWarmUp):
(JSC::CodeBlock::optimizeSoon):
(JSC::CodeBlock::forceOptimizationSlowPathConcurrently):
(JSC::CodeBlock::setOptimizationThresholdBasedOnCompilationResult):
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness):
(JSC::CodeBlock::updateAllArrayPredictions):
(JSC::CodeBlock::shouldOptimizeNow):
- bytecode/CodeBlock.h:
(CodeBlock):
(JSC::CodeBlock::jitCompile):
- bytecode/CodeBlockLock.h:
(JSC):
- bytecode/ExecutionCounter.cpp:
(JSC::ExecutionCounter::forceSlowPathConcurrently):
(JSC):
(JSC::ExecutionCounter::setThreshold):
- bytecode/ExecutionCounter.h:
(ExecutionCounter):
- debugger/Debugger.cpp:
(JSC::Debugger::recompileAllJSFunctions):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::injectLazyOperandSpeculation):
(JSC::DFG::ByteCodeParser::getArrayMode):
(JSC::DFG::ByteCodeParser::getArrayModeAndEmitChecks):
- dfg/DFGCommon.h:
(JSC::DFG::enableConcurrentJIT):
(DFG):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::Graph):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):
- dfg/DFGOperations.cpp:
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::Plan):
(JSC::DFG::Plan::compileInThread):
(JSC::DFG::Plan::key):
(DFG):
- dfg/DFGPlan.h:
(DFG):
(Plan):
- dfg/DFGWorklist.cpp: Added.
(DFG):
(JSC::DFG::Worklist::Worklist):
(JSC::DFG::Worklist::~Worklist):
(JSC::DFG::Worklist::finishCreation):
(JSC::DFG::Worklist::create):
(JSC::DFG::Worklist::enqueue):
(JSC::DFG::Worklist::compilationState):
(JSC::DFG::Worklist::waitUntilAllPlansForVMAreReady):
(JSC::DFG::Worklist::removeAllReadyPlansForVM):
(JSC::DFG::Worklist::completeAllReadyPlansForVM):
(JSC::DFG::Worklist::completeAllPlansForVM):
(JSC::DFG::Worklist::queueLength):
(JSC::DFG::Worklist::dump):
(JSC::DFG::Worklist::runThread):
(JSC::DFG::Worklist::threadFunction):
(JSC::DFG::initializeGlobalWorklistOnce):
(JSC::DFG::globalWorklist):
- dfg/DFGWorklist.h: Added.
(DFG):
(Worklist):
- heap/CopiedSpaceInlines.h:
(JSC::CopiedSpace::allocateBlock):
- heap/DeferGC.h: Added.
(JSC):
(DeferGC):
(JSC::DeferGC::DeferGC):
(JSC::DeferGC::~DeferGC):
- heap/Heap.cpp:
(JSC::Heap::Heap):
(JSC::Heap::reportExtraMemoryCostSlowCase):
(JSC::Heap::collectAllGarbage):
(JSC::Heap::collect):
(JSC::Heap::collectIfNecessaryOrDefer):
(JSC):
(JSC::Heap::incrementDeferralDepth):
(JSC::Heap::decrementDeferralDepthAndGCIfNeeded):
- heap/Heap.h:
(Heap):
(JSC::Heap::isCollecting):
(JSC):
- heap/MarkedAllocator.cpp:
(JSC::MarkedAllocator::allocateSlowCase):
- jit/JIT.cpp:
(JSC::JIT::privateCompile):
- jit/JIT.h:
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::entryOSR):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- profiler/ProfilerBytecodes.h:
- runtime/ConcurrentJITLock.h: Added.
(JSC):
- runtime/ExecutionHarness.h:
(JSC::replaceWithDeferredOptimizedCode):
- runtime/JSSegmentedVariableObject.cpp:
(JSC::JSSegmentedVariableObject::findRegisterIndex):
(JSC::JSSegmentedVariableObject::addRegisters):
- runtime/JSSegmentedVariableObject.h:
(JSSegmentedVariableObject):
- runtime/Options.h:
(JSC):
- runtime/Structure.h:
(Structure):
- runtime/StructureInlines.h:
(JSC::Structure::propertyTable):
- runtime/SymbolTable.h:
(SymbolTable):
- runtime/VM.cpp:
(JSC::VM::VM):
(JSC::VM::~VM):
(JSC::VM::prepareToDiscardCode):
(JSC):
(JSC::VM::discardAllCode):
(JSC::VM::releaseExecutableMemory):
- runtime/VM.h:
(DFG):
(VM):
Source/WTF:
Reviewed by Geoffrey Garen.
- wtf/ByteSpinLock.h:
Make it non-copyable. We previously had bugs where we used ByteSpinLock as a locker.
Clearly that's bad.
- wtf/MetaAllocatorHandle.h:
Make it thread-safe ref-counted, since we may now be passing them between the
concurrent JIT thread and the main thread.
- wtf/Vector.h:
(WTF::Vector::takeLast):
I've wanted this method for ages, and now I finally added.
- 9:00 PM Changeset in webkit [153168] by
-
- 2 edits in trunk/Tools
fourthTier: display-profiler-output should make it even easier to diff the compilation story between two different runs
https://bugs.webkit.org/show_bug.cgi?id=116556
Reviewed by Oliver Hunt.
This adds three new capabilities:
- 'display' now accepts negative compilation indices, and allows specifying wildcard hashes combined with combination indices. Previously you could say 'display <hash>', 'display <hash>-<index>-<engine>', or 'display *'. The latter would display every compilation. This improves this so that you can say 'display *-<index>-<engine>'. It also makes it so that you can give a negative index, which allows you to say things like 'display blah--1-dfg', which displays just the last DFG compilation. Also you can say 'display *--1-dfg', which displays the last DFG compilation for each code block. I realize that this is kind of ugly, but gosh is it practical.
- You can now say 'sort hash', which will henceforth sort all of the output by code hash rather than by the time when it was compiled. This means that if you're doing 'dispay *--1-dfg' and then want to diff the results against something else, you can ensure that this doesn't get confused just by changes in compilation order.
- You can now say 'counts off', which will henceforth disable the display of execution counts from 'bytecode' and 'display'. This is also useful for diffs, since if you're trying to figure out why two compilations are different, they probably have radically different counts. 'counts off' gets this out of the output so that it doesn't confuse your diff.
Note that to use this effectively you should also have a script that scrubs
pointers from text so that the diff doesn't get confused by pointers. I'll
post my elimptr script to the bug. Maybe at some point I'll integrate that
into display-profiler-output.
Put together this is pretty awesome. I was able to do the following:
(echo "counts off" && echo "sort hash" && echo "d *--1-dfg") | Tools/Scripts/display-profiler-output richards-serial.profile | elimptr > richards-serial.asm
(echo "counts off" && echo "sort hash" && echo "d *--1-dfg") | Tools/Scripts/display-profiler-output richards-concurrent.profile | elimptr > richards-concurrent.asm
diff -u richards-serial.asm richards-concurrent.asm
And this immediately told me that the reason why richards is slower in the
concurrent compilation case is just that we end up compiling *tons* more
functions, most of which are trivially inlineable. Basically, concurrent
compilation breaks our previous heuristics for delaying compilation of
inlineables just enough that they never trigger compilation. We should fix
that in a separate bug.
- Scripts/display-profiler-output:
- 9:00 PM Changeset in webkit [153167] by
-
- 18 edits in trunk
fourthTier: CheckArrays should be hoisted
https://bugs.webkit.org/show_bug.cgi?id=116353
Source/JavaScriptCore:
Performance neutral. This will be more important when we start depending on CheckArray for flat arrays.
Reviewed by Filip Pizlo.
- dfg/DFGAbstractState.cpp: Add ForwardCheckArray to wherever we had a CheckArray before.
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGArgumentsSimplificationPhase.cpp:
(JSC::DFG::ArgumentsSimplificationPhase::run):
- dfg/DFGArrayMode.h:
(JSC::DFG::ArrayMode::isContravenedByStructure): Checks if the ArrayMode derived from a specific Structure
would contradict the ArrayModes that would be filtered by the current ArrayMode. This is used to detect
if any specific CheckStructures would contradict our CheckArray so that we can defer to the CheckStructure's
judgment.
- dfg/DFGByteCodeParser.cpp: Fill in checkArrayHoistingFailed where we previously exited due to a BadIndexingType.
(JSC::DFG::ByteCodeParser::setLocal):
(JSC::DFG::ByteCodeParser::setArgument):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::checkArrayElimination):
(JSC::DFG::CSEPhase::performNodeCSE):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGNode.h:
(JSC::DFG::Node::hasArrayMode):
- dfg/DFGNodeType.h: New ForwardCheckArray node type.
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGTypeCheckHoistingPhase.cpp: Refactored most of TypeCheckHoistingPhase into separate functions, some
of which are now generic to both CheckStructure and CheckArray hoisting while others are specific to one or the
other. Both of the non-zero CheckBallot values must be 1 because we use them as an index into an array of
length 2 inside the VariableAccessData.
(CheckData): Moved structure outside of TypeCheckHoistingPhase so that ArrayTypeCheck and StructureTypeCheck
can access it. Also added new fields for tracking ArrayModes. We need the m_arrayModeIsValid because there
isn't a good sentinel value for "this ArrayMode is invalid and meaningless" like there is for m_structure.
We need m_arrayModeHoistingOkay for when we want to permanently disable hoisting for that particular variable.
(JSC::DFG::CheckData::CheckData):
(JSC::DFG::CheckData::disableCheckArrayHoisting): Helper function for disabling CheckArray hoisting for a
specific CheckData.
(JSC::DFG::TypeCheckHoistingPhase::run): We now do both CheckStructure and CheckArray hoisting, although we prefer
CheckStructure hoisting when given the possibility to do both.
(TypeCheckHoistingPhase):
(JSC::DFG::TypeCheckHoistingPhase::clearVariableVotes): Clears all of the VariableAccessData votes since they
can only have two types of votes at any particular time.
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks): Very similar to identifyRedundantStructureChecks,
but with a few different nodes that are important, namely CheckArray (instead of CheckStructure) and the Arrayify-like
nodes always disable hoisting since they always change the IndexingType.
(JSC::DFG::TypeCheckHoistingPhase::disableHoistingForVariablesWithInsufficientVotes):
(JSC::DFG::TypeCheckHoistingPhase::disableHoistingAcrossOSREntries):
(JSC::DFG::TypeCheckHoistingPhase::disableCheckArrayHoisting): Helper that looks up the CheckData for the
specified variable and disables CheckArray hoisting on it.
(JSC::DFG::TypeCheckHoistingPhase::shouldConsiderForHoisting):
(JSC::DFG::TypeCheckHoistingPhase::noticeStructureCheck):
(JSC::DFG::TypeCheckHoistingPhase::noticeCheckArray):
(JSC::DFG::TypeCheckHoistingPhase::noticeStructureCheckAccountingForArrayMode): We want to take CheckStructure nodes
into account when hoisting CheckArrays, so we make sure that if we contradict what a CheckStructure says then we
give up on hoisting the CheckArray.
(JSC::DFG::ArrayTypeCheck::isValidToHoist):
(ArrayTypeCheck): Structure that houses some of the specifics on how to hoist CheckArrays. This structure
is used a template argument to allow some of the very similar code to statically parameterized and reused
for both CheckStructure and CheckArray hoisting.
(JSC::DFG::ArrayTypeCheck::disableHoisting):
(JSC::DFG::ArrayTypeCheck::isContravenedByValue):
(JSC::DFG::ArrayTypeCheck::hasEnoughVotesToHoist):
(JSC::DFG::ArrayTypeCheck::hoistingPreviouslyFailed):
(JSC::DFG::StructureTypeCheck::isValidToHoist):
(StructureTypeCheck): Same as ArrayTypeCheck, but specific to CheckStructure hoisting.
(JSC::DFG::StructureTypeCheck::disableHoisting):
(JSC::DFG::StructureTypeCheck::isContravenedByValue):
(JSC::DFG::StructureTypeCheck::hasEnoughVotesToHoist):
(JSC::DFG::StructureTypeCheck::hoistingPreviouslyFailed):
- dfg/DFGUnificationPhase.cpp: Added merging of whether or not CheckArray hoisting failed.
(JSC::DFG::UnificationPhase::run):
- dfg/DFGVariableAccessData.h:
(JSC::DFG::VariableAccessData::VariableAccessData):
(JSC::DFG::VariableAccessData::mergeCheckArrayHoistingFailed):
(VariableAccessData):
(JSC::DFG::VariableAccessData::checkArrayHoistingFailed):
- runtime/Options.h:
LayoutTests:
Added a microbenchmark to JSRegress that specifically targets CheckArray hoisting.
We get a 25% improvement on it.
Reviewed by Filip Pizlo.
- fast/js/regress/check-array-hoisting-expected.txt: Added.
- fast/js/regress/check-array-hoisting.html: Added.
- fast/js/regress/script-tests/check-array-hoisting.js: Added.
(f):
- 9:00 PM Changeset in webkit [153166] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: getCTIStub should be thread-safe
https://bugs.webkit.org/show_bug.cgi?id=116126
Reviewed by Dan Bernstein.
It's called from the compilation thread. Give it locks.
- jit/JITThunks.cpp:
(JSC::JITThunks::ctiStub):
(JSC::JITThunks::hostFunctionStub):
- jit/JITThunks.h:
(JITThunks):
- 9:00 PM Changeset in webkit [153165] by
-
- 19 edits2 copies in trunk/Source/JavaScriptCore
fourthTier: Executable and CodeBlock should be aware of DFG::Plans that complete asynchronously
https://bugs.webkit.org/show_bug.cgi?id=116350
Reviewed by Oliver Hunt.
This refactors compilation so that:
- JITStubs knows exactly what the result of compilation was. For example, if compilation was deferred, it will now know this.
- The set of things that has to happen to install compiled code is now factored out into JSC::installOptimizedCode().
- A bunch of the code in Executable.cpp is now made more common to reduce code duplication. For example, the heap heuristics stuff is now in one place.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeBlock.cpp:
(JSC::ProgramCodeBlock::compileOptimized):
(JSC::ProgramCodeBlock::replaceWithDeferredOptimizedCode):
(JSC):
(JSC::EvalCodeBlock::compileOptimized):
(JSC::EvalCodeBlock::replaceWithDeferredOptimizedCode):
(JSC::FunctionCodeBlock::compileOptimized):
(JSC::FunctionCodeBlock::replaceWithDeferredOptimizedCode):
(JSC::ProgramCodeBlock::jitCompileImpl):
(JSC::EvalCodeBlock::jitCompileImpl):
(JSC::FunctionCodeBlock::jitCompileImpl):
- bytecode/CodeBlock.h:
(CodeBlock):
(JSC::CodeBlock::jitCompile):
(ProgramCodeBlock):
(EvalCodeBlock):
(FunctionCodeBlock):
- dfg/DFGDesiredIdentifiers.cpp:
(JSC::DFG::DesiredIdentifiers::numberOfIdentifiers):
(DFG):
(JSC::DFG::DesiredIdentifiers::at):
- dfg/DFGDesiredIdentifiers.h:
(JSC):
(DesiredIdentifiers):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
(JSC::DFG::tryCompile):
(JSC::DFG::tryCompileFunction):
(JSC::DFG::tryFinalizePlan):
(DFG):
- dfg/DFGDriver.h:
(DFG):
(JSC::DFG::tryCompile):
(JSC::DFG::tryCompileFunction):
(JSC::DFG::tryFinalizePlan):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::Graph):
- dfg/DFGJITFinalizer.cpp:
(JSC::DFG::JITFinalizer::finalizeCommon):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::Plan):
(JSC::DFG::Plan::compileInThread):
(JSC::DFG::Plan::reallyAdd):
- dfg/DFGPlan.h:
(JSC):
(Plan):
(DFG):
- ftl/FTLJITFinalizer.cpp:
(JSC::FTL::JITFinalizer::finalizeFunction):
- jit/JITDriver.h:
(JSC::jitCompileIfAppropriateImpl):
(JSC::jitCompileFunctionIfAppropriateImpl):
(JSC):
(JSC::jitCompileIfAppropriate):
(JSC::jitCompileFunctionIfAppropriate):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::jitCompileAndSetHeuristics):
- runtime/CompilationResult.cpp: Added.
(WTF):
(WTF::printInternal):
- runtime/CompilationResult.h: Added.
(JSC):
(WTF):
- runtime/Executable.cpp:
(JSC::EvalExecutable::compileOptimized):
(JSC::EvalExecutable::jitCompile):
(JSC::EvalExecutable::compileInternal):
(JSC::EvalExecutable::replaceWithDeferredOptimizedCode):
(JSC):
(JSC::ProgramExecutable::compileOptimized):
(JSC::ProgramExecutable::jitCompile):
(JSC::ProgramExecutable::compileInternal):
(JSC::ProgramExecutable::replaceWithDeferredOptimizedCode):
(JSC::FunctionExecutable::compileOptimizedForCall):
(JSC::FunctionExecutable::compileOptimizedForConstruct):
(JSC::FunctionExecutable::jitCompileForCall):
(JSC::FunctionExecutable::jitCompileForConstruct):
(JSC::FunctionExecutable::compileForCallInternal):
(JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeForCall):
(JSC::FunctionExecutable::compileForConstructInternal):
(JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeForConstruct):
- runtime/Executable.h:
(ScriptExecutable):
(EvalExecutable):
(ProgramExecutable):
(FunctionExecutable):
(JSC::FunctionExecutable::compileOptimizedFor):
(JSC::FunctionExecutable::replaceWithDeferredOptimizedCodeFor):
(JSC::FunctionExecutable::jitCompileFor):
- runtime/ExecutionHarness.h:
(JSC::prepareForExecutionImpl):
(JSC::prepareFunctionForExecutionImpl):
(JSC):
(JSC::installOptimizedCode):
(JSC::prepareForExecution):
(JSC::prepareFunctionForExecution):
(JSC::replaceWithDeferredOptimizedCode):
- 9:00 PM Changeset in webkit [153164] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: observeUseKindOnNode doesn't contain a case for KnownCellUse
https://bugs.webkit.org/show_bug.cgi?id=116130
This would just lead to us being overly conservative when deciding
whether we should unbox GetLocals with KnownCellUse UseKinds.
Reviewed by Filip Pizlo.
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::observeUseKindOnNode):
- 9:00 PM Changeset in webkit [153163] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: infrequent segfault in DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks()
https://bugs.webkit.org/show_bug.cgi?id=116134
CodeBlock and JITCode should be ThreadSafeRefCounted. We're going to
start using them on more threads very soon (with concurrent
compilation). This patch also fixes the specific place where we were
superfluously creating a RefPtr.
Reviewed by Oliver Hunt.
- bytecode/CodeBlock.h:
(JSC::CodeBlock::getJITType):
- jit/JITCode.h:
- 9:00 PM Changeset in webkit [153162] by
-
- 17 edits2 adds in trunk/Source/JavaScriptCore
fourthTier: Implement a probe mechanism for JIT generated code.
https://bugs.webkit.org/show_bug.cgi?id=115705.
Reviewed by Geoffrey Garen.
The probe is in the form of a MacroAssembler pseudo instruction.
It takes 3 arguments: a ProbeFunction, and 2 void* args.
When inserted into the JIT at some code generation site, the probe
pseudo "instruction" will emit a minimal amount of code to save the
stack pointer, 1 (or more) scratch register(s), and the probe
arguments into a ProbeContext record on the stack. The emitted code
will then call a probe trampoline to do the rest of the work, which
consists of:
- saving the remaining registers into the ProbeContext.
- calling the ProbeFunction, and passing it the ProbeContext pointer.
- restoring the registers from the ProbeContext after the ProbeFunction returns, and then returning to the JIT generated code.
The ProbeContext is stack allocated and is only valid for the duration
that the ProbeFunction is executing.
If the user supplied ProbeFunction alters the register values in the
ProbeContext, the new values will be installed into the registers upon
returning from the probe. This can be useful for some debugging or
testing purposes.
The probe mechanism is built conditional on USE(MASM_PROBE) which is
defined in config.h. USE(MASM_PROBE) will off by default.
This changeset only implements the probe mechanism for X86 and X86_64.
- CMakeLists.txt:
- GNUmakefile.list.am:
- JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
- JavaScriptCore.xcodeproj/project.pbxproj:
- Target.pri:
- assembler/MacroAssembler.h:
(MacroAssembler):
(JSC::MacroAssembler::shouldBlind):
(JSC::MacroAssembler::store32):
- assembler/MacroAssemblerX86.h:
(MacroAssemblerX86):
(JSC::MacroAssemblerX86::trustedImm32FromPtr):
(JSC::MacroAssemblerX86::probe):
- assembler/MacroAssemblerX86Common.cpp: Added.
(JSC::MacroAssemblerX86Common::ProbeContext::dumpCPURegisters):
- CPU specific register dumper called by ProbeContext::dump().
(JSC::MacroAssemblerX86Common::ProbeContext::dump):
- Prints the ProbeContext to the DataLog.
- assembler/MacroAssemblerX86Common.h:
(MacroAssemblerX86Common):
(CPUState): Added.
(ProbeContext): Added.
- assembler/MacroAssemblerX86_64.h:
(MacroAssemblerX86_64):
(JSC::MacroAssemblerX86_64::trustedImm64FromPtr):
(JSC::MacroAssemblerX86_64::probe):
- assembler/X86Assembler.h:
- config.h: Added WTF_USE_MASM_PROBE flag.
- jit/JITStubs.cpp:
- jit/JITStubs.h:
- jit/JITStubsX86.h:
- jit/JITStubsX86Common.h: Added.
- jit/JITStubsX86_64.h:
- 9:00 PM Changeset in webkit [153161] by
-
- 23 edits11 copies in trunk/Source/JavaScriptCore
fourthTier: DFG should separate link phase into things that must be done concurrently and things that must be done synchronously, and have a way of passing data from one to the other
https://bugs.webkit.org/show_bug.cgi?id=116060
Reviewed by Gavin Barraclough.
This introduces the concept of a DFG::Plan, which corresponds to:
- The data that the concurrent DFG or FTL need to start compiling a CodeBlock. This mostly includes basic things like CodeBlock*, but also a list of must-handle values for OSR entry.
- The data that the synchronous linker need to link in code compiled by a concurrent compilation thread. This is further encapsulated by DFG::Finalizer, since the data, and the actions that need to be taken, are different in DFG versus FTL. This patch also institutes the policy that the concurrent compilation thread shall not use LinkBuffer::performFinalization(), since that code assumes that it's running on the same thread that will actually run the code.
- The actions that need to be taken to compile code. In other words, most of the code that previously lived in DFGDriver.cpp now lives in DFG::Plan::compileInThread().
- The actions that need to be taken when synchronously linking the code. This includes "really" adding watchpoints and identifiers, checking watchpoint and chain validity, and running the DFG::Finalizer.
Currently, DFGDriver just creates a Plan and runs it synchronously. But in the
future, we will be able to malloc some Plans and enqueue them, and have the
concurrent thread dequeue them and call Plan::compileInThread().
For now, this has no behavior or performance change.
- JavaScriptCore.xcodeproj/project.pbxproj:
- assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::performFinalization):
- assembler/LinkBuffer.h:
(LinkBuffer):
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::~LinkBuffer):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::initialize):
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::setFuturePossibleStructure):
(JSC::DFG::AbstractValue::filterFuturePossibleStructure):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::addStructureTransitionCheck):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::parseResolveOperations):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
(JSC::DFG::ByteCodeParser::parseCodeBlock):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
(JSC::DFG::ConstantFoldingPhase::addStructureTransitionCheck):
- dfg/DFGDriver.cpp:
(DFG):
(JSC::DFG::compile):
- dfg/DFGFailedFinalizer.cpp: Added.
(DFG):
(JSC::DFG::FailedFinalizer::FailedFinalizer):
(JSC::DFG::FailedFinalizer::~FailedFinalizer):
(JSC::DFG::FailedFinalizer::finalize):
(JSC::DFG::FailedFinalizer::finalizeFunction):
- dfg/DFGFailedFinalizer.h: Added.
(DFG):
(FailedFinalizer):
- dfg/DFGFinalizer.cpp: Added.
(DFG):
(JSC::DFG::Finalizer::Finalizer):
(JSC::DFG::Finalizer::~Finalizer):
- dfg/DFGFinalizer.h: Added.
(DFG):
(Finalizer):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::canOptimizeStringObjectAccess):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::Graph):
(JSC::DFG::Graph::dump):
(DFG):
- dfg/DFGGraph.h:
(Graph):
(JSC::DFG::Graph::masqueradesAsUndefinedWatchpointIsStillValid):
(JSC::DFG::Graph::compilation):
(JSC::DFG::Graph::identifiers):
(JSC::DFG::Graph::watchpoints):
(JSC::DFG::Graph::chains):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::linkOSRExits):
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
(JSC::DFG::JITCompiler::linkFunction):
(DFG):
(JSC::DFG::JITCompiler::disassemble):
- dfg/DFGJITCompiler.h:
(JITCompiler):
(JSC::DFG::JITCompiler::addLazily):
- dfg/DFGJITFinalizer.cpp: Added.
(DFG):
(JSC::DFG::JITFinalizer::JITFinalizer):
(JSC::DFG::JITFinalizer::~JITFinalizer):
(JSC::DFG::JITFinalizer::finalize):
(JSC::DFG::JITFinalizer::finalizeFunction):
(JSC::DFG::JITFinalizer::finalizeCommon):
- dfg/DFGJITFinalizer.h: Added.
(DFG):
(JITFinalizer):
- dfg/DFGPlan.cpp: Added.
(DFG):
(JSC::DFG::dumpAndVerifyGraph):
(JSC::DFG::Plan::Plan):
(JSC::DFG::Plan::~Plan):
(JSC::DFG::Plan::compileInThread):
(JSC::DFG::Plan::isStillValid):
(JSC::DFG::Plan::reallyAdd):
(JSC::DFG::Plan::finalize):
- dfg/DFGPlan.h: Added.
(DFG):
(Plan):
(JSC::DFG::Plan::vm):
- dfg/DFGPredictionInjectionPhase.cpp:
(JSC::DFG::PredictionInjectionPhase::run):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::identifierUID):
(JSC::DFG::SpeculativeJIT::speculateStringObjectForStructure):
- dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):
- ftl/FTLGeneratedFunction.h: Added.
(FTL):
- ftl/FTLJITFinalizer.cpp: Added.
(FTL):
(JSC::FTL::JITFinalizer::JITFinalizer):
(JSC::FTL::JITFinalizer::~JITFinalizer):
(JSC::FTL::JITFinalizer::finalize):
(JSC::FTL::JITFinalizer::finalizeFunction):
- ftl/FTLJITFinalizer.h: Added.
(FTL):
(JITFinalizer):
(JSC::FTL::JITFinalizer::initializeExitThunksLinkBuffer):
(JSC::FTL::JITFinalizer::initializeEntrypointLinkBuffer):
(JSC::FTL::JITFinalizer::initializeCode):
(JSC::FTL::JITFinalizer::initializeFunction):
(JSC::FTL::JITFinalizer::initializeArityCheck):
(JSC::FTL::JITFinalizer::initializeJITCode):
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- ftl/FTLLink.h:
(FTL):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::linkOSRExitsAndCompleteInitializationBlocks):
- ftl/FTLState.cpp:
(JSC::FTL::State::State):
- ftl/FTLState.h:
(FTL):
(State):
- 9:00 PM Changeset in webkit [153160] by
-
- 5 edits6 adds in trunk/Source/JavaScriptCore
fourthTier: Refactor JITStubs.cpp to move CPU specific parts out into their own files.
https://bugs.webkit.org/show_bug.cgi?id=116135.
Reviewed by Michael Saboff.
This mod only moves the CPU specific parts out. There is no code change.
Tested on debug builds of X86, X86_64, ARM and ARMv7. The SH4 and MIPS
ports are untested. Windows port also not tested.
- GNUmakefile.list.am:
- JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.xcodeproj/project.pbxproj:
- jit/JITStubs.cpp:
(JSC::performPlatformSpecificJITAssertions):
- jit/JITStubsARM.h: Added.
(JSC::ctiTrampoline):
(JSC::ctiTrampolineEnd):
(JSC::ctiVMThrowTrampoline):
(JSC::ctiOpThrowNotCaught):
(JSC::performARMJITAssertions):
- jit/JITStubsARMv7.h: Added.
(JSC::ctiTrampoline):
(JSC::ctiVMThrowTrampoline):
(JSC::ctiOpThrowNotCaught):
(JSC::performARMv7JITAssertions):
- jit/JITStubsMIPS.h: Added.
(JSC::performMIPSJITAssertions):
- jit/JITStubsSH4.h: Added.
- jit/JITStubsX86.h: Added.
- jit/JITStubsX86_64.h: Added.
- 9:00 PM Changeset in webkit [153159] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: Segfault in jsc with simple test program when running with profile dumping enabled
https://bugs.webkit.org/show_bug.cgi?id=116082
It's crashing because CodeBlock::baselineVersion() doesn't know how to handle the case where 'this' is the
baseline version but it hasn't been assigned to the m_blahCodeBlock field in BlahExecutable. The fix is to
check if we're the baseline version in baselineVersion() and return this if so.
Reviewed by Filip Pizlo.
- bytecode/CodeBlock.h:
(JSC::CodeBlock::baselineVersion):
- 9:00 PM Changeset in webkit [153158] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase
https://bugs.webkit.org/show_bug.cgi?id=115938
We're going to add some more types of check hoisting soon, so let's have
the right name here.
Rubber stamped by Filip Pizlo.
- CMakeLists.txt:
- GNUmakefile.list.am:
- JavaScriptCore.xcodeproj/project.pbxproj:
- Target.pri:
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- dfg/DFGStructureCheckHoistingPhase.cpp: Removed.
- dfg/DFGStructureCheckHoistingPhase.h: Removed.
- dfg/DFGTypeCheckHoistingPhase.cpp: Added.
(DFG):
(TypeCheckHoistingPhase):
(JSC::DFG::TypeCheckHoistingPhase::TypeCheckHoistingPhase):
(JSC::DFG::TypeCheckHoistingPhase::run):
(JSC::DFG::TypeCheckHoistingPhase::shouldConsiderForHoisting):
(JSC::DFG::TypeCheckHoistingPhase::noticeStructureCheck):
(CheckData):
(JSC::DFG::TypeCheckHoistingPhase::CheckData::CheckData):
(JSC::DFG::performTypeCheckHoisting):
- dfg/DFGTypeCheckHoistingPhase.h: Added.
- 9:00 PM Changeset in webkit [153157] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: SpeculativeJIT::checkArray should use the correct ExitKind
https://bugs.webkit.org/show_bug.cgi?id=115943
Currently it uses Uncountable, which gives us no information if we end up exiting due to a
mismatched ClassInfo pointer. It should instead use BadType and should pass the correct
JSValueSource and Node instead of passing empty values.
Reviewed by Filip Pizlo.
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkArray):
- 9:00 PM Changeset in webkit [153156] by
-
- 6 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support Jump and ForceOSRExit
https://bugs.webkit.org/show_bug.cgi?id=115942
Reviewed by Oliver Hunt.
Added two obvious nodes: Jump and ForceOSRExit. We already had everything we needed
to support them.
Adding these increases our coverage a fair bit, and revealed a bug: LLVM's full
instruction selector currently appears to mishandle doubles in constant pools (or
just constant pools in general) with the small code model in the MCJIT. But switching
to FastISel "fixes" it. That's what this patch does, for now. This will probably
actually be permanent; the FastISel does pretty much everything we would ever want,
at least in the foreseeable future.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
(FTL):
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileBlock):
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileJSConstant):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compileJump):
(JSC::FTL::LowerDFGToLLVM::compileReturn):
(JSC::FTL::LowerDFGToLLVM::compileForceOSRExit):
- runtime/Options.h:
(JSC):
- 9:00 PM Changeset in webkit [153155] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support CompareStrictEqConstant
https://bugs.webkit.org/show_bug.cgi?id=115941
Reviewed by Mark Hahnenberg.
Pretty simple, but factors out the craziness of comparing against null or undefined
in a way that is reusable for both == and ===.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileCompareEqConstant):
(JSC::FTL::LowerDFGToLLVM::compileCompareStrictEqConstant):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::equalNullOrUndefined):
- 8:59 PM Changeset in webkit [153154] by
-
- 7 edits2 adds in trunk/Source/JavaScriptCore
fourthTier: FTL should support CompareEqConstant
https://bugs.webkit.org/show_bug.cgi?id=115939
Reviewed by Oliver Hunt and Mark Hahnenberg.
The most interesting part of this patch is the way I make it easier to deal with
the inputs to Phi functions. This adds the notion of ValueFromBlock, which you
can get by doing m_out.anchor(value). You can build up a vector of these, and then
pass them to m_out.phi(type, vector) in one go.
- JavaScriptCore.xcodeproj/project.pbxproj:
- ftl/FTLAbbreviatedTypes.h: Added.
(FTL):
- ftl/FTLAbbreviations.h:
(FTL):
(JSC::FTL::addIncoming):
(JSC::FTL::buildPhi):
- ftl/FTLAbstractHeapRepository.h:
(FTL):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileCompareEqConstant):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::lowDouble):
(JSC::FTL::LowerDFGToLLVM::masqueradesAsUndefinedWatchpointIfIsStillValid):
- ftl/FTLOutput.h:
(JSC::FTL::Output::phi):
(Output):
(JSC::FTL::Output::anchor):
- ftl/FTLValueFromBlock.h: Added.
(FTL):
(ValueFromBlock):
(JSC::FTL::ValueFromBlock::ValueFromBlock):
(JSC::FTL::ValueFromBlock::value):
(JSC::FTL::ValueFromBlock::block):
- 8:59 PM Changeset in webkit [153153] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support CompareStrictEq
https://bugs.webkit.org/show_bug.cgi?id=115927
Reviewed by Mark Hahnenberg.
Do the sensible thing, and make it so that for common cases, CompareEq is
implemented in terms of CompareStrictEq in the FTL backend. All of the cases
we currently support can be done this way.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileCompareEq):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq):
- 8:59 PM Changeset in webkit [153152] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support Int32ToDouble
https://bugs.webkit.org/show_bug.cgi?id=115926
Reviewed by Mark Hahnenberg.
This node exists mainly to help the DFG see that a node may have both an int
and a double representation. But in the FTL, nodes already have multiple
representations. So this is just a no-op for the FTL.
I considered making it so that the node isn't even inserted if we're doing
FTL compilation, but that would have required a bunch of conditionalizing in
the DFG's optimization phases, which sort of expect this node to be present
and necessary.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileInt32ToDouble):
(LowerDFGToLLVM):
- 8:59 PM Changeset in webkit [153151] by
-
- 5 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support LogicalNot
https://bugs.webkit.org/show_bug.cgi?id=115924
Reviewed by Mark Hahnenberg.
- ftl/FTLAbbreviations.h:
(JSC::FTL::buildNot):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileLogicalNot):
(LowerDFGToLLVM):
- ftl/FTLOutput.h:
(JSC::FTL::Output::bitNot):
- 8:59 PM Changeset in webkit [153150] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support CompareGreater, CompareLessEq, and CompareGreaterEq
https://bugs.webkit.org/show_bug.cgi?id=115923
Reviewed by Mark Hahnenberg.
Also fixed a bug where double CompareLess would assert.
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileCompareLess):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compileCompareLessEq):
(JSC::FTL::LowerDFGToLLVM::compileCompareGreater):
(JSC::FTL::LowerDFGToLLVM::compileCompareGreaterEq):
- 8:59 PM Changeset in webkit [153149] by
-
- 1 edit in trunk/Source/JavaScriptCore/ChangeLog
fourthTier: FTL CompareEq ObjectUse should handle masquerading
https://bugs.webkit.org/show_bug.cgi?id=115920
Reviewed by Mark Hahnenberg.
We don't yet support watchpoints, but this does all the wiring right up to the
part where we would have emitted watchpoints. I've also written this in a way that
makes it easy to use the case where you would have anyway speculated non-masquerading
even if the watchpoint was invalidated.
This is inherently racy, of course: but the only race here is that you might first
set the watchpoint, and then the watchpoint is invalidated, and then you compile rest
of the code in a way that doesn't need the watchpoint. That's fine, since the FTL
will remember that it had set the watchpoint and then cancel the compilation.
- ftl/FTLAbbreviations.h:
(JSC::FTL::int8Type):
- ftl/FTLAbstractHeapRepository.h:
(FTL):
- ftl/FTLCommonValues.cpp:
(JSC::FTL::CommonValues::CommonValues):
- ftl/FTLCommonValues.h:
(CommonValues):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileCompareEq):
(JSC::FTL::LowerDFGToLLVM::lowNonNullObject):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::speculateNonNullObject):
(JSC::FTL::LowerDFGToLLVM::masqueradesAsUndefinedWatchpointIsStillValid):
(JSC::FTL::LowerDFGToLLVM::masqueradesAsUndefinedWatchpointIfIsStillValid):
- ftl/FTLOutput.h:
(JSC::FTL::Output::constInt8):
(JSC::FTL::Output::load8):
(JSC::FTL::Output::isZero8):
(JSC::FTL::Output::notZero8):
(JSC::FTL::Output::testIsZero8):
(JSC::FTL::Output::testNonZero8):
- 8:59 PM Changeset in webkit [153148] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: DFG shouldn't allocate in the GC heap
https://bugs.webkit.org/show_bug.cgi?id=115598
Reviewed by Geoffrey Garen.
I believe that we've now fixed this, and this patch just adds the relevant assertion.
- runtime/JSCellInlines.h:
(JSC::JSCell::JSCell):
- 8:59 PM Changeset in webkit [153147] by
-
- 19 edits in trunk/Source/JavaScriptCore
fourthTier: CodeBlock should be RefCounted
https://bugs.webkit.org/show_bug.cgi?id=115594
Reviewed by Geoffrey Garen.
This makes it possible to have the currently-being-compiled CodeBlock not be
installed in Executable, while also allowing it to point to its intended
alternative(). So long as we were using ownership and not reference counting, it
would have been difficult to have both CodeBlock::m_alternative and
Executable::m_codeBlockForBlah point to the previous CodeBlock.
I also took the opportunity to clean up a bunch of code that appears to have
rotted.
- assembler/MacroAssemblerCodeRef.h:
(MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::operator==):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::releaseAlternative):
(JSC::CodeBlock::setAlternative):
(CodeBlock):
(JSC::GlobalCodeBlock::GlobalCodeBlock):
(JSC::ProgramCodeBlock::ProgramCodeBlock):
(JSC::EvalCodeBlock::EvalCodeBlock):
(JSC::FunctionCodeBlock::FunctionCodeBlock):
- heap/DFGCodeBlocks.cpp:
(JSC::DFGCodeBlocks::~DFGCodeBlocks):
(JSC::DFGCodeBlocks::jettison):
(JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
- heap/DFGCodeBlocks.h:
(DFGCodeBlocks):
- heap/Heap.cpp:
(JSC::Heap::jettisonDFGCodeBlock):
- heap/Heap.h:
- jit/JITDriver.h:
(JSC::jitCompileIfAppropriate):
(JSC::jitCompileFunctionIfAppropriate):
- runtime/Executable.cpp:
(JSC::jettisonCodeBlock):
(JSC::EvalExecutable::jitCompile):
(JSC::EvalExecutable::compileInternal):
(JSC::ProgramExecutable::jitCompile):
(JSC::ProgramExecutable::compileInternal):
(JSC::FunctionExecutable::jitCompileForCall):
(JSC::FunctionExecutable::jitCompileForConstruct):
(JSC::FunctionExecutable::produceCodeBlockFor):
(JSC::FunctionExecutable::compileForCallInternal):
(JSC::FunctionExecutable::compileForConstructInternal):
- runtime/Executable.h:
(EvalExecutable):
(FunctionExecutable):
(JSC::FunctionExecutable::codeBlockFor):
- runtime/ExecutionHarness.h:
(JSC::prepareForExecution):
(JSC::prepareFunctionForExecution):
- 8:59 PM Changeset in webkit [153146] by
-
- 16 edits4 adds2 deletes in trunk/Source/JavaScriptCore
fourthTier: DFG should have its own notion of StructureChain, and it should be possible to validate it after compilation finishes
https://bugs.webkit.org/show_bug.cgi?id=115841
Reviewed by Oliver Hunt.
This adds IntendedStructureChain, which is like StructureChain, except that it holds a bit
more information and can be validated independantly of its owning Structure and lexical
GlobalObject, since it remembers both of those things. It's also malloc'd and RefCounted
rather than GC'd, so it can be allocated in a concurrent compilation thread.
Gave this class a bunch of methods to allow the following idiom:
- Snapshot a structure chain concurrently. This structure chain may end up being wrong in case of races, but in that case we will find out when we try to validate it.
- Perform validation on the structure chain itself, without recomputing the chain. Previously, many chain validation methods (prototypeChainMayInterceptStoreTo() for example) recomputed the chain, and hence, were inherently racy: you could build one chain and then validate against a different chain, and hence not realize that the chain you did build was actually broken for your purposes, because the chain you checked was a different one.
- Validate that the chain is still the right one at any time, allowing the cancellation of compilation if there was a race.
Also added DFG::DesiredStructureChains, which tracks those intended structure chains that
the compiler had already chosen to use. If any of those are invalid at link time, throw
out the compilation.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeForChain):
(JSC::GetByIdStatus::computeFor):
- bytecode/GetByIdStatus.h:
(JSC::GetByIdStatus::GetByIdStatus):
(JSC::GetByIdStatus::chain):
(GetByIdStatus):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFromLLInt):
(JSC::PutByIdStatus::computeFor):
- bytecode/PutByIdStatus.h:
(JSC::PutByIdStatus::PutByIdStatus):
(JSC::PutByIdStatus::structureChain):
(PutByIdStatus):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGDesiredStructureChains.cpp: Added.
(DFG):
(JSC::DFG::DesiredStructureChains::DesiredStructureChains):
(JSC::DFG::DesiredStructureChains::~DesiredStructureChains):
(JSC::DFG::DesiredStructureChains::areStillValid):
- dfg/DFGDesiredStructureChains.h: Added.
(DFG):
(DesiredStructureChains):
(JSC::DFG::DesiredStructureChains::addLazily):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::isStillValid):
(DFG):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::linkFunction):
- ftl/FTLLink.cpp:
(JSC::FTL::link):
- runtime/IntendedStructureChain.cpp: Added.
(JSC):
(JSC::IntendedStructureChain::IntendedStructureChain):
(JSC::IntendedStructureChain::~IntendedStructureChain):
(JSC::IntendedStructureChain::isStillValid):
(JSC::IntendedStructureChain::matches):
(JSC::IntendedStructureChain::chain):
(JSC::IntendedStructureChain::mayInterceptStoreTo):
(JSC::IntendedStructureChain::isNormalized):
(JSC::IntendedStructureChain::terminalPrototype):
- runtime/IntendedStructureChain.h: Added.
(JSC):
(IntendedStructureChain):
(JSC::IntendedStructureChain::head):
(JSC::IntendedStructureChain::size):
(JSC::IntendedStructureChain::at):
(JSC::IntendedStructureChain::operator[]):
(JSC::IntendedStructureChain::last):
- runtime/Structure.cpp:
(JSC::Structure::prototypeChainMayInterceptStoreTo):
- runtime/Structure.h:
(Structure):
- runtime/StructureInlines.h:
(JSC::Structure::storedPrototypeObject):
(JSC):
(JSC::Structure::storedPrototypeStructure):
- 8:59 PM Changeset in webkit [153145] by
-
- 88 edits in trunk
fourthTier: Rationalized 'this' conversion, includes subsequent FTL branch fixes
Reviewed by Oliver Hunt.
Source/JavaScriptCore:
Rationalized 'this' value conversion
https://bugs.webkit.org/show_bug.cgi?id=115542
This fixes a bunch of Sputnik tests, and some bad pointer access.
The new model is that the callee always performs 'this' value conversion.
My ultimate goal is to break up resolve_with_this into single-result
opcodes. This step avoids having to add a special form of convert_this
that distinguishes callers vs callees.
Only the callee knows whether it uses 'this' and/or whether 'this'
conversion should use StrictMode, so it's most natural to perform
convert_this in the callee.
- API/JSCallbackFunction.cpp: (JSC::JSCallbackFunction::call): Perform 'this' value conversion for our callee, since it may observe 'this'.
- API/JSCallbackObjectFunctions.h: (JSC::::call): Ditto.
- API/JSContextRef.cpp: (JSGlobalContextCreateInGroup): Use a proxy 'this' object in global scope even when we're not in the browser. This eliminates some odd cases where API clients used to be able to get a direct reference to an environment record. Now, any reference to an environment record unambiguously means that the VM resolved that record in the scope chain.
(JSContextGetGlobalObject): Removed an incorrect comment. Now that JSC
participates in the proxy 'this' object scheme, the behavior is not
WebCore-only.
- API/JSObjectRef.cpp: (JSObjectSetPrototype): (JSObjectCallAsFunction): Don't perform 'this' value conversion in the caller; the callee will do it if needed.
- JavaScriptCore.order: Order!
- JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
- JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in: What are the chances that this will work?
- bytecode/CodeBlock.cpp: (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::CodeBlock): Renamed convert_this to to_this, to match our other conversion opcodes.
- bytecode/CodeOrigin.h: (CodeOrigin): (InlineCallFrame): (JSC::CodeOrigin::codeOriginOwner): Use the more precise type for our executable, so compilation can discover where we're in strict mode.
- bytecode/Opcode.h: (JSC::padOpcodeName): Updated for rename.
- bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::BytecodeGenerator): Always emit to_this when 'this' is in use -- strict mode still needs to convert environment records to 'undefined'.
- dfg/DFGAbstractState.cpp: (JSC::DFG::AbstractState::executeEffects):
- dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGCapabilities.h: (JSC::DFG::canCompileOpcode): Updated for renames.
- dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): Tightened up this code to consider strict mode (a new requirement) and to consider the global object (which was always a requirement).
- dfg/DFGGraph.h: (JSC::DFG::Graph::globalThisObjectFor): (JSC::DFG::Graph::executableFor):
- dfg/DFGNodeType.h:
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): Ditto.
- interpreter/Interpreter.cpp: (JSC::eval): (JSC::Interpreter::execute): (JSC::Interpreter::executeCall):
- interpreter/Interpreter.h: Don't ASSERT about 'this' -- it's our job to fix it up if needed.
- jit/JIT.cpp: (JSC::JIT::privateCompileMainPass): (JSC::JIT::privateCompileSlowCases):
- jit/JIT.h: (JIT):
- jit/JITOpcodes.cpp: (JSC::JIT::emit_op_to_this): (JSC::JIT::emitSlow_op_to_this):
- jit/JITOpcodes32_64.cpp: (JSC::JIT::emit_op_to_this): (JSC::JIT::emitSlow_op_to_this):
- jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION):
- jit/JITStubs.h: Removed special-case code for various kinds of conversions. The baseline fast path is now final objects only. It hurt my brain to think through how to keep the other fast paths working, and our benchmarks do not object.
- llint/LLIntData.cpp: (JSC::LLInt::Data::performAssertions):
- llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL):
- llint/LLIntSlowPaths.h: (LLInt):
- llint/LowLevelInterpreter.asm:
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm: Updated for renames. Removed some special case code, as in the JIT above.
- profiler/ProfileGenerator.cpp: (JSC::ProfileGenerator::addParentForConsoleStart):
- runtime/CallData.cpp: (JSC::call):
- runtime/ClassInfo.h: (MethodTable):
- runtime/Completion.cpp: (JSC::evaluate):
- runtime/DatePrototype.cpp: (JSC::dateProtoFuncToJSON): The callee performs 'this' conversion, not the caller.
- runtime/GetterSetter.cpp: (JSC::callGetter): (JSC::callSetter):
- runtime/GetterSetter.h: Added helper functions for invoking getters and setters from C++ code, since this was duplicated in a bunch of places.
- runtime/JSActivation.cpp: (JSC::JSActivation::toThis):
- runtime/JSActivation.h: (JSActivation):
- runtime/JSCJSValue.cpp: (JSC::JSValue::toThisSlowCase): (JSC::JSValue::putToPrimitive):
- runtime/JSCJSValue.h: (JSValue):
- runtime/JSCJSValueInlines.h: (JSC::JSValue::toThis):
- runtime/JSCell.cpp: (JSC::JSCell::toThis):
- runtime/JSCell.h: (JSCell):
- runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::toThis):
- runtime/JSGlobalObject.h: (JSGlobalObject): Filled out runtime support for converting 'this' values as needed, according to the appropriate strictness, using helper functions where getter/setter code was duplicated.
- runtime/JSGlobalObjectFunctions.cpp: (JSC::globalFuncProtoGetter): (JSC::globalFuncProtoSetter): Perform 'this' value conversion, since we observe 'this'.
- runtime/JSNameScope.cpp: (JSC::JSNameScope::toThis):
- runtime/JSNameScope.h: (JSNameScope): Same as JSActivation.
- runtime/JSObject.cpp: (JSC::JSObject::put): (JSC::JSObject::setPrototypeWithCycleCheck): Bug fix. Don't peform 'this' value conversion in this helper function. The proto setter does this for us, since it's the function that logically observes 'this' -- and we can ASSERT so. Also, the previous code used "globalExec()->thisValue()", which is a read past the beginning of a buffer! I don't think this ever worked on purpose.
(JSC::JSObject::toThis):
(JSC::JSObject::fillGetterPropertySlot):
- runtime/JSObject.h: (JSC::JSObject::inlineGetOwnPropertySlot):
- runtime/JSScope.cpp: (JSC::JSScope::resolveWithThis):
- runtime/JSString.cpp: (JSC::JSString::toThis):
- runtime/JSString.h: (JSString):
- runtime/PropertySlot.cpp: (JSC::PropertySlot::functionGetter):
- runtime/PropertySlot.h: (JSC): (JSC::PropertySlot::setGetterSlot): (JSC::PropertySlot::setCacheableGetterSlot):
- runtime/SparseArrayValueMap.cpp: (JSC::SparseArrayEntry::get): (JSC::SparseArrayEntry::put):
- runtime/StrictEvalActivation.cpp: (JSC::StrictEvalActivation::toThis):
- runtime/StrictEvalActivation.h: (StrictEvalActivation): Ditto.
Source/WebCore:
Rationalized 'this' value conversion
https://bugs.webkit.org/show_bug.cgi?id=115542
Source/WebKit/mac:
Rationalized 'this' value conversion
https://bugs.webkit.org/show_bug.cgi?id=115542
Source/WebKit2:
Rationalized 'this' value conversion
https://bugs.webkit.org/show_bug.cgi?id=115542
LayoutTests:
Rationalized 'this' value conversion
https://bugs.webkit.org/show_bug.cgi?id=115542
- 8:59 PM Changeset in webkit [153144] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: DFG::ByteCodeParser doesn't need ExecState*
https://bugs.webkit.org/show_bug.cgi?id=115582
Reviewed by Geoffrey Garen.
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::ByteCodeParser):
(ByteCodeParser):
(JSC::DFG::parse):
- dfg/DFGByteCodeParser.h:
(DFG):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- 8:59 PM Changeset in webkit [153143] by
-
- 7 edits in trunk/Source/JavaScriptCore
fourthTier: Profiler should be thread-safe
https://bugs.webkit.org/show_bug.cgi?id=115445
Reviewed by Geoffrey Garen.
Change the Profiler::Database API for Compilation creation so that we don't add
it to the Database until it's completely constructed. This prevents the Database
from seeing Compilations that are being concurrently constructed.
Change the Profiler::Database itself to do locking for creation of Bytecodes and
for modifying the map. This map may be consulted by both the main thread and the
concurrent thread.
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::Graph):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::linkFunction):
- jit/JIT.cpp:
(JSC::JIT::privateCompile):
- profiler/ProfilerBytecodes.h:
- profiler/ProfilerDatabase.cpp:
(JSC::Profiler::Database::ensureBytecodesFor):
(JSC::Profiler::Database::notifyDestruction):
(JSC::Profiler::Database::addCompilation):
- profiler/ProfilerDatabase.h:
(Database):
- 8:59 PM Changeset in webkit [153142] by
-
- 41 edits3 copies in trunk/Source
fourthTier: DFG tries to ref/deref StringImpls in a ton of places
https://bugs.webkit.org/show_bug.cgi?id=115300
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
Change any code transitively called from DFG compilation to use StringImpl*
directly instead of String, Identifier, or PropertyName. I use the convention
of passing "StringImpl* uid" instead of an Identifier or PropertyName.
Switch over any code transitively called from DFG compilation to use CStrings
whenever possible for all of its debug dumping.
This makes it possible to compile things without hitting the ref/deref
assertion in StringImpl.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::inferredName):
(JSC::CodeBlock::sourceCodeForTools):
(JSC::CodeBlock::sourceCodeOnOneLine):
(JSC::constantName):
(JSC::idName):
(JSC::CodeBlock::registerName):
(JSC::regexpToSourceString):
(JSC::regexpName):
(JSC::pointerToSourceString):
(JSC::CodeBlock::printUnaryOp):
(JSC::CodeBlock::printBinaryOp):
(JSC::CodeBlock::printConditionalJump):
(JSC::CodeBlock::printGetByIdOp):
(JSC::dumpStructure):
(JSC::CodeBlock::printCallOp):
(JSC::CodeBlock::printPutByIdOp):
(JSC::CodeBlock::printStructure):
(JSC::CodeBlock::printStructures):
(JSC::CodeBlock::dumpBytecode):
- bytecode/CodeBlock.h:
(CodeBlock):
- bytecode/CodeBlockHash.cpp:
(JSC::CodeBlockHash::CodeBlockHash):
- bytecode/CodeOrigin.cpp:
(JSC::InlineCallFrame::inferredName):
- bytecode/CodeOrigin.h:
(InlineCallFrame):
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFromLLInt):
(JSC::GetByIdStatus::computeForChain):
(JSC::GetByIdStatus::computeFor):
- bytecode/GetByIdStatus.h:
(JSC):
(GetByIdStatus):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFromLLInt):
(JSC::PutByIdStatus::computeFor):
- bytecode/PutByIdStatus.h:
(JSC):
(PutByIdStatus):
- bytecode/ReduceWhitespace.cpp:
(JSC::reduceWhitespace):
- bytecode/ReduceWhitespace.h:
(JSC):
- bytecode/ResolveGlobalStatus.cpp:
(JSC::computeForStructure):
(JSC::ResolveGlobalStatus::computeFor):
- bytecode/ResolveGlobalStatus.h:
(JSC):
(ResolveGlobalStatus):
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGByteCodeParser.cpp:
(ByteCodeParser):
(JSC::DFG::ByteCodeParser::parseResolveOperations):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGDesiredIdentifiers.cpp: Added.
(DFG):
(JSC::DFG::DesiredIdentifiers::DesiredIdentifiers):
(JSC::DFG::DesiredIdentifiers::~DesiredIdentifiers):
(JSC::DFG::DesiredIdentifiers::addLazily):
(JSC::DFG::DesiredIdentifiers::reallyAdd):
- dfg/DFGDesiredIdentifiers.h: Added.
(DFG):
(DesiredIdentifiers):
(JSC::DFG::DesiredIdentifiers::numberOfIdentifiers):
(JSC::DFG::DesiredIdentifiers::at):
(JSC::DFG::DesiredIdentifiers::operator[]):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::isStringPrototypeMethodSane):
(JSC::DFG::FixupPhase::canOptimizeStringObjectAccess):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::Graph):
(JSC::DFG::Graph::dump):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGRepatch.cpp:
(JSC::DFG::tryBuildGetByIDList):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::identifierUID):
(JSC::DFG::SpeculativeJIT::callOperation):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::cachedGetById):
(JSC::DFG::SpeculativeJIT::cachedPutById):
(JSC::DFG::SpeculativeJIT::compile):
- parser/SourceCode.cpp: Added.
(JSC):
(JSC::SourceCode::toUTF8):
- parser/SourceCode.h:
(SourceCode):
- profiler/ProfilerBytecodes.cpp:
(JSC::Profiler::Bytecodes::toJS):
- profiler/ProfilerBytecodes.h:
(JSC::Profiler::Bytecodes::inferredName):
(JSC::Profiler::Bytecodes::sourceCode):
(Bytecodes):
- runtime/Identifier.h:
(JSC::Identifier::utf8):
(JSC):
- runtime/Structure.cpp:
(JSC::Structure::addPropertyTransitionToExistingStructureImpl):
(JSC::Structure::addPropertyTransitionToExistingStructure):
(JSC::Structure::addPropertyTransitionToExistingStructureConcurrently):
(JSC::Structure::getConcurrently):
(JSC::Structure::prototypeChainMayInterceptStoreTo):
(JSC):
- runtime/Structure.h:
(Structure):
- runtime/StructureInlines.h:
(JSC::Structure::getConcurrently):
Source/WTF:
Reviewed by Geoffrey Garen.
Make it possible to do more things directly to StringImpl*'s, including being
able to directly do utf8 conversion on a substring without creating the
substring first.
Add assertions to StringImpl that it isn't being ref/deref'd from the
compilation thread.
- wtf/PrintStream.cpp:
(WTF::printInternal):
(WTF):
- wtf/PrintStream.h:
(WTF):
(WTF::printInternal):
- wtf/StringPrintStream.h:
(WTF):
(WTF::toCString):
- wtf/text/StringImpl.cpp:
(WTF::StringImpl::utf8ForRange):
(WTF::StringImpl::utf8):
(WTF):
- wtf/text/StringImpl.h:
(StringImpl):
(WTF::StringImpl::hasAtLeastOneRef):
(WTF::StringImpl::ref):
(WTF::StringImpl::deref):
- 8:59 PM Changeset in webkit [153141] by
-
- 3 edits in trunk/Source/JavaScriptCore
fourthTier: Structure transition table keys don't have to ref their StringImpl's
https://bugs.webkit.org/show_bug.cgi?id=115525
Reviewed by Geoffrey Garen.
The structure transition table basically maps string to structure. The string is
always also stored, and ref'd, in the structure in Structure::m_nameInPrevious.
m_nameInPrevious is never mutated, and never cleared. The string cannot die unless
the structure dies. If the structure dies, then that entry in the transition map
becomes a zombie anyway and we will detect this separately.
So, we don't need to use RefPtr<StringImpl>. We can just use StringImpl*.
This also fixes a goof where we were getting the StringImpl's hash rather than
using a pointer hash. Not only is the latter faster, but it prevents my change
from leading to crashes: with my change we can have zombie keys, not just zombie
values. They will exist only until the next map mutation, which will clear them.
Lookups will work fine because the lookup routine will reject zombies. But it
does mean that the HashMap will have to deal with dangling StringImpl*'s; all it
takes to make this work is to ensure that the HashMap itself never dereferences
them. Using a pointer hash rather than StringImpl::existingHash() accomplishes
this.
This also ensures that we don't accidentally call ref() or deref() from the
compilation thread, if the compilation thread inspects the transition table.
And no, we wouldn't have been able to use the HashMap<RefPtr<...>, ...>
specialization, because the transition table is actually
HashMap<pair<RefPtr<StringImpl>, unsigned>, ...>: hence that specialization
doesn't kick in. We could have written a new specialization or something, but
that seemed like a lot of work given that we don't need the table to be ref'ing
the strings anyways.
- runtime/Structure.cpp:
(JSC::StructureTransitionTable::add):
- runtime/StructureTransitionTable.h:
(StructureTransitionTable):
(Hash):
(JSC::StructureTransitionTable::Hash::hash):
- 8:59 PM Changeset in webkit [153140] by
-
- 5 edits in trunk/Source/JavaScriptCore
fourthTier: Structure::addPropertyTransitionToExistingStructure should be thread-safe
https://bugs.webkit.org/show_bug.cgi?id=115468
Reviewed by Geoffrey Garen.
This makes the main thread modify the transition table while holding a lock. Note
that the GC might modify its weak pointers without locking, but the GC will lock out
the compilation thread anyway. The map will then only reshape in response to add()
and set(), which happen while holding a lock.
This allows the compilation thread to now query transition tables safely, provided it
holds a lock when doing so.
Also changed LLVM asm printer initialization to just initialize the X86 one. It makes
sense for us to just initialize the asm printer(s) that we actually use; you could
imagine us being linked to a system LLVM that has cross-compilation support; there is
no point in the WebKit or JSC process doing work to initialize all of those targets.
That part was rubber stamped by Mark Hahnenberg.
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFor):
- runtime/InitializeThreading.cpp:
(JSC::initializeThreadingOnce):
- runtime/Structure.cpp:
(JSC::Structure::addPropertyTransitionToExistingStructureImpl):
(JSC::Structure::addPropertyTransitionToExistingStructure):
(JSC):
(JSC::Structure::addPropertyTransitionToExistingStructureConcurrently):
(JSC::Structure::addPropertyTransition):
(JSC::Structure::nonPropertyTransition):
- runtime/Structure.h:
(Structure):
- 8:59 PM Changeset in webkit [153139] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: Structure::getConcurrently() may be called from for uncacheable dictionaries, and this is safe
https://bugs.webkit.org/show_bug.cgi?id=115464
Reviewed by Oliver Hunt and Geoffrey Garen.
This can happen for example transitively from JSObject::put(). getCurrently() does
work for uncacheable dictionaries; it just has the obvious race that right after it
returns, the result it returned may no longer be right. This isn't an issue if it was
called on the main thread, and may not be an issue in some other situations.
So, we should just remove the assertion, since the only thing it buys us is crashes.
- runtime/Structure.cpp:
(JSC::Structure::getConcurrently):
- 8:59 PM Changeset in webkit [153138] by
-
- 2 edits in trunk/Tools
fourthTier: Use hw.availcpu instead of hw.ncpu, and configure LLVM with --enable-zlib=no
Rubber stamped by Mark Rowe.
- Scripts/copy-webkitlibraries-to-product-directory:
- 8:59 PM Changeset in webkit [153137] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: Don't link gtest into JavaScriptCore
Rubber stamped by Mark Rowe.
- Configurations/JavaScriptCore.xcconfig:
- 8:59 PM Changeset in webkit [153136] by
-
- 3 edits in trunk/WebKitLibraries
fourthTier: Updated LLVM drops to include MCJIT fixes and newly exposed API.
Rubber stamped by Mark Hahnenberg.
- LLVMIncludesMountainLion.tar.bz2:
- LLVMLibrariesMountainLion.tar.bz2:
- 8:59 PM Changeset in webkit [153135] by
-
- 12 edits1 add in trunk/Source
fourthTier: String::utf8() should also be available as StringImpl::utf8() so that you don't have to ref() a StringImpl just to get its utf8()
https://bugs.webkit.org/show_bug.cgi?id=115393
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
- runtime/JSGlobalObjectFunctions.cpp:
(JSC::encode):
Source/WebCore:
No new tests because no new behavior.
- Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::close):
- Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::send):
- html/MediaFragmentURIParser.cpp:
(WebCore::MediaFragmentURIParser::parseFragments):
Source/WTF:
- WTF.xcodeproj/project.pbxproj:
- wtf/text/ConversionMode.h: Added.
(WTF):
- wtf/text/StringImpl.cpp:
(WTF):
(WTF::putUTF8Triple):
(WTF::StringImpl::utf8):
- wtf/text/StringImpl.h:
(StringImpl):
- wtf/text/WTFString.cpp:
(WTF):
(WTF::String::utf8):
- wtf/text/WTFString.h:
(String):
- 8:59 PM Changeset in webkit [153134] by
-
- 16 edits4 copies in trunk/Source
fourthTier: ASSERT that commonly used not-thread-safe methods in the runtime are not being called during compilation
https://bugs.webkit.org/show_bug.cgi?id=115297
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
Put in assertions that we're not doing bad things in compilation threads. Also
factored compilation into compile+link so that even though we don't yet have
concurrent compilation, we can be explicit about which parts of DFG work are
meant to be concurrent, and which aren't.
Also fix a handful of bugs found by these assertions.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/ResolveGlobalStatus.cpp:
(JSC::computeForStructure):
- bytecode/Watchpoint.cpp:
(JSC::WatchpointSet::add):
(JSC::InlineWatchpointSet::inflateSlow):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::~JITCompiler):
(DFG):
(JSC::DFG::JITCompiler::compileBody):
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compileFunction):
(JSC::DFG::JITCompiler::linkFunction):
- dfg/DFGJITCompiler.h:
(JITCompiler):
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- ftl/FTLCompile.h:
(FTL):
- ftl/FTLLink.cpp: Added.
(FTL):
(JSC::FTL::compileEntry):
(JSC::FTL::link):
- ftl/FTLLink.h: Added.
(FTL):
- ftl/FTLState.cpp:
(JSC::FTL::State::State):
- ftl/FTLState.h:
(FTL):
(State):
- runtime/Structure.cpp:
(JSC::Structure::get):
(JSC::Structure::prototypeChainMayInterceptStoreTo):
- runtime/Structure.h:
(JSC::Structure::materializePropertyMapIfNecessary):
- runtime/StructureInlines.h:
(JSC::Structure::get):
Source/WTF:
Reviewed by Geoffrey Garen.
Taught WTF the notion of compilation threads. This allows all parts of our stack
to assert that we're not being called from a JSC compilation thread. This is in
WTF because it will probably end up being used in StringImpl and WTFString.
- WTF.xcodeproj/project.pbxproj:
- wtf/CompilationThread.cpp: Added.
(WTF):
(WTF::initializeCompilationThreadsOnce):
(WTF::initializeCompilationThreads):
(WTF::isCompilationThread):
(WTF::exchangeIsCompilationThread):
- wtf/CompilationThread.h: Added.
(WTF):
(CompilationScope):
(WTF::CompilationScope::CompilationScope):
(WTF::CompilationScope::~CompilationScope):
(WTF::CompilationScope::leaveEarly):
- 8:59 PM Changeset in webkit [153133] by
-
- 8 edits in trunk/Source/JavaScriptCore
fourthTier: FTL should support double variables
https://bugs.webkit.org/show_bug.cgi?id=113624
Reviewed by Geoffrey Garen.
Made all of the operations that the FTL already supports, also support doubles.
OSR exit already basically had everything it needed, so no changes there. This
mostly just glues together bits of DFG IR to LLVM IR, in a straight-forward way.
- ftl/FTLAbbreviations.h:
(FTL):
(JSC::FTL::doubleType):
(JSC::FTL::constReal):
(JSC::FTL::buildPhi):
(JSC::FTL::addIncoming):
(JSC::FTL::buildFAdd):
(JSC::FTL::buildFSub):
(JSC::FTL::buildFMul):
(JSC::FTL::buildFNeg):
(JSC::FTL::buildSIToFP):
(JSC::FTL::buildUIToFP):
(JSC::FTL::buildBitCast):
(JSC::FTL::buildFCmp):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLCommonValues.cpp:
(JSC::FTL::CommonValues::CommonValues):
- ftl/FTLCommonValues.h:
(CommonValues):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::lower):
(JSC::FTL::LowerDFGToLLVM::compileGetLocal):
(JSC::FTL::LowerDFGToLLVM::compileSetLocal):
(JSC::FTL::LowerDFGToLLVM::compileAdd):
(JSC::FTL::LowerDFGToLLVM::compileArithSub):
(JSC::FTL::LowerDFGToLLVM::compileArithMul):
(JSC::FTL::LowerDFGToLLVM::compileArithNegate):
(JSC::FTL::LowerDFGToLLVM::compileUInt32ToNumber):
(JSC::FTL::LowerDFGToLLVM::compileGetByVal):
(JSC::FTL::LowerDFGToLLVM::compileCompareEq):
(JSC::FTL::LowerDFGToLLVM::compileCompareLess):
(JSC::FTL::LowerDFGToLLVM::lowDouble):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::lowJSValue):
(JSC::FTL::LowerDFGToLLVM::isCellOrMisc):
(JSC::FTL::LowerDFGToLLVM::unboxDouble):
(JSC::FTL::LowerDFGToLLVM::boxDouble):
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::speculateNumber):
(JSC::FTL::LowerDFGToLLVM::speculateRealNumber):
(JSC::FTL::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::LowerDFGToLLVM::addExitArgumentForNode):
- ftl/FTLOutput.h:
(JSC::FTL::Output::constDouble):
(Output):
(JSC::FTL::Output::phi):
(JSC::FTL::Output::doubleAdd):
(JSC::FTL::Output::doubleSub):
(JSC::FTL::Output::doubleMul):
(JSC::FTL::Output::doubleNeg):
(JSC::FTL::Output::intToFP):
(JSC::FTL::Output::intToDouble):
(JSC::FTL::Output::unsignedToFP):
(JSC::FTL::Output::unsignedToDouble):
(JSC::FTL::Output::bitCast):
(JSC::FTL::Output::loadDouble):
(JSC::FTL::Output::storeDouble):
(JSC::FTL::Output::doubleEqual):
(JSC::FTL::Output::doubleNotEqualOrUnordered):
(JSC::FTL::Output::doubleLessThan):
(JSC::FTL::Output::doubleLessThanOrEqual):
(JSC::FTL::Output::doubleGreaterThan):
(JSC::FTL::Output::doubleGreaterThanOrEqual):
(JSC::FTL::Output::doubleEqualOrUnordered):
(JSC::FTL::Output::doubleNotEqual):
(JSC::FTL::Output::doubleLessThanOrUnordered):
(JSC::FTL::Output::doubleLessThanOrEqualOrUnordered):
(JSC::FTL::Output::doubleGreaterThanOrUnordered):
(JSC::FTL::Output::doubleGreaterThanOrEqualOrUnordered):
(JSC::FTL::Output::testIsZero64):
- 8:59 PM Changeset in webkit [153132] by
-
- 9 edits in trunk/Source/JavaScriptCore
fourthTier: SymbolTable should be thread-safe
https://bugs.webkit.org/show_bug.cgi?id=115301
Reviewed by Geoffrey Garen.
Makes SymbolTable thread-safe. Relies on SymbolTableEntry already being immutable,
other than the WatchpointSet; but the WatchpointSet already has a righteous
concurrency protocol. So, this patch just protects the SymbolTable's HashMap.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::nameForRegister):
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::addVar):
- runtime/Executable.cpp:
(JSC::ProgramExecutable::addGlobalVar):
- runtime/JSActivation.cpp:
(JSC::JSActivation::getOwnNonIndexPropertyNames):
(JSC::JSActivation::symbolTablePutWithAttributes):
- runtime/JSSymbolTableObject.cpp:
(JSC::JSSymbolTableObject::getOwnNonIndexPropertyNames):
- runtime/JSSymbolTableObject.h:
(JSC::symbolTableGet):
(JSC::symbolTablePut):
(JSC::symbolTablePutWithAttributes):
- runtime/SymbolTable.cpp:
(JSC::SymbolTable::SymbolTable):
(JSC::SymbolTable::~SymbolTable):
- runtime/SymbolTable.h:
(JSC::SymbolTable::find):
(JSC::SymbolTable::get):
(JSC::SymbolTable::inlineGet):
(JSC::SymbolTable::begin):
(JSC::SymbolTable::end):
(JSC::SymbolTable::size):
(JSC::SymbolTable::add):
(JSC::SymbolTable::set):
(JSC::SymbolTable::contains):
- 8:59 PM Changeset in webkit [153131] by
-
- 5 edits in trunk/Source/JavaScriptCore
fourthTier: WatchpointSet should make racy uses easier to reason about
https://bugs.webkit.org/show_bug.cgi?id=115299
Reviewed by Anders Carlsson.
The compiler often does things like:
1c) Observe something that would imply that a WatchpointSet ought to be invalid
2c) Check that it is invalid
The main thread often does things like:
1m) Fire the watchpoint set
2m) Do some other thing that would cause the compiler to assume that the WatchpointSet
ought to be invalid
An example is structure transitions, where (1c) is the compiler noticing that a
put_by_id inline cache is in a transition state, with the source structure being S;
(2c) is the compiler asserting that S's watchpoint set is invalid; (1m) is the main
thread firing S's watchpoint set before it does the first transition away from S; and
(2m) is the main thread caching the put_by_id transition away from S.
This is totally fine, except that (1c) and (2c), and (1m) and (2m) could be reordered.
Probably, in most cases, this ought to do enough things that the main thread probably
already has some fencing. But the compiler thread definitely doesn't have fencing. In
any case, we should play it safe and just have additional fencing in all of the
relevant places.
We already have some idioms to put load-load and store-store fences in the right
places. But this change just makes WatchpointSet take care of this for us, thus
reducing the chances of us getting this wrong.
- bytecode/Watchpoint.cpp:
(JSC::WatchpointSet::notifyWriteSlow):
- bytecode/Watchpoint.h:
(WatchpointSet):
(JSC::WatchpointSet::isStillValid):
(JSC::WatchpointSet::hasBeenInvalidated):
(JSC::InlineWatchpointSet::hasBeenInvalidated):
(JSC::InlineWatchpointSet::notifyWrite):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGDesiredWatchpoints.h:
(JSC::DFG::GenericDesiredWatchpoints::shouldAssumeMixedState):
- 8:59 PM Changeset in webkit [153130] by
-
- 16 edits in trunk/Source/JavaScriptCore
fourthTier: CFA should defend against results seeming inconsistent due to a watchpoint firing during compilation
https://bugs.webkit.org/show_bug.cgi?id=115083
Reviewed by Geoffrey Garen.
This ruggedizes our racyness with respect to watchpoints. We want to be able to assert,
in some places, that a watchpoint-based optimization has only occurred if the
watchpoint set was still valid. But currently we *can* soundly do watchpoint-based
optimizations even for invalid watchpoints, so long as we recorded in the IR that we
had done so; this will then lead to the code being insta-jettisoned after compilation
completes. Obviously, we don't want this to happen often - but we do want to allow it
precisely in the case of watchpoint races.
This adds the ability to assert that we hadn't over-watchpointed ourselves, with and
exemption for races.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::setFuturePossibleStructure):
(JSC::DFG::AbstractValue::filterFuturePossibleStructure):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::addStructureTransitionCheck):
(JSC::DFG::ByteCodeParser::parseResolveOperations):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::addStructureTransitionCheck):
- dfg/DFGDesiredWatchpoints.h:
(GenericDesiredWatchpoints):
(JSC::DFG::GenericDesiredWatchpoints::isStillValid):
(JSC::DFG::GenericDesiredWatchpoints::shouldAssumeMixedState):
(JSC::DFG::GenericDesiredWatchpoints::isValidOrMixed):
(JSC::DFG::DesiredWatchpoints::isStillValid):
(JSC::DFG::DesiredWatchpoints::shouldAssumeMixedState):
(JSC::DFG::DesiredWatchpoints::isValidOrMixed):
(DesiredWatchpoints):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::canOptimizeStringObjectAccess):
- dfg/DFGGraph.h:
(JSC::DFG::Graph::masqueradesAsUndefinedWatchpointIsStillValid):
(Graph):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
- dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::addLazily):
(JITCompiler):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectEquality):
- dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::masqueradesAsUndefinedWatchpointIsStillValid):
(JSC::DFG::SpeculativeJIT::speculationWatchpointForMasqueradesAsUndefined):
(JSC::DFG::SpeculativeJIT::speculateStringObjectForStructure):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
(JSC::DFG::SpeculativeJIT::compileObjectEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
(JSC::DFG::SpeculativeJIT::compileObjectEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- ftl/FTLState.h:
(State):
- 8:58 PM Changeset in webkit [153129] by
-
- 5 edits1 add in trunk/Source/JavaScriptCore
fourthTier: AbstractValue methods that deal with watchpoints should have access to Graph, so that in debug mode, Graph can track the history of watchpoint states and detect races
https://bugs.webkit.org/show_bug.cgi?id=115084
Reviewed by Geoffrey Garen.
The idea is that as part of https://bugs.webkit.org/show_bug.cgi?id=115083, I'll have
Graph record the initial state of a watchpoint at the time that we decide to take
advantage of it; then I will use this to disable any watchpoint-related assertions
in debug mode. Note that this "watchpoint cache" will only be maintained in debug
mode, so there will be no release performance implications. But to do this, I need to
ensure that all of the places that reason about watchpoints have access to Graph.
For example, I'll want AbstractValue::setFuturePossibleStructure to record the state
of the watchpoint in Graph so that subsequent assertions can check if the watchpoint's
state had changed since that decision was made.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::initialize):
(JSC::DFG::AbstractState::executeEffects):
(JSC::DFG::AbstractState::mergeStateAtTail):
- dfg/DFGAbstractState.h:
(JSC::DFG::AbstractState::trySetConstant):
- dfg/DFGAbstractValue.cpp: Added.
(DFG):
(JSC::DFG::AbstractValue::setMostSpecific):
(JSC::DFG::AbstractValue::set):
(JSC::DFG::AbstractValue::filter):
(JSC::DFG::AbstractValue::setFuturePossibleStructure):
(JSC::DFG::AbstractValue::filterFuturePossibleStructure):
(JSC::DFG::AbstractValue::dump):
- dfg/DFGAbstractValue.h:
(DFG):
(AbstractValue):
(JSC::DFG::AbstractValue::setType):
(JSC::DFG::AbstractValue::filterByValue):
- 8:58 PM Changeset in webkit [153128] by
-
- 7 edits in trunk/Source/JavaScriptCore
fourthTier: Create an equivalent of Structure::get() that can work from a compilation thread
https://bugs.webkit.org/show_bug.cgi?id=114987
Reviewed by Geoffrey Garen.
This completes the work started by r148570. That patch made it possible to do
Structure::get() without modifying Structure. This patch takes this further, and
makes this thread-safe (for non-uncacheable-dictionaries) via
Structure::getConcurrently(). This method not only doesn't modify Structure, but
also ensures that any concurrent attempts to add to, remove from, or steal the
table from that structure doesn't mess up the result of the call. The call may
return invalidOffset even if a property is *just* about to be added, but it will
never do the reverse: if it returns a property then you can be sure that the
structure really does have that property and always will have it.
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFromLLInt):
(JSC::GetByIdStatus::computeForChain):
(JSC::GetByIdStatus::computeFor):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFromLLInt):
(JSC::PutByIdStatus::computeFor):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::isStringPrototypeMethodSane):
- runtime/PropertyMapHashTable.h:
(PropertyTable):
(JSC::PropertyTable::findConcurrently):
(JSC):
(JSC::PropertyTable::add):
(JSC::PropertyTable::remove):
(JSC::PropertyTable::reinsert):
(JSC::PropertyTable::rehash):
- runtime/PropertyTable.cpp:
(JSC::PropertyTable::PropertyTable):
- runtime/Structure.cpp:
(JSC::Structure::findStructuresAndMapForMaterialization):
(JSC::Structure::getConcurrently):
- runtime/Structure.h:
(Structure):
- runtime/StructureInlines.h:
(JSC::Structure::getConcurrently):
- 8:58 PM Changeset in webkit [153127] by
-
- 2 edits in trunk/Tools
fourthTier: tandem WebKit and LLVM builds should ./configure LLVM if needed
https://bugs.webkit.org/show_bug.cgi?id=114933
Reviewed by Andy Estes.
This makes it easy to get set up for tandem LLVM builds.
- Scripts/copy-webkitlibraries-to-product-directory:
- 8:58 PM Changeset in webkit [153126] by
-
- 4 edits1 add in trunk
fourthTier: WebKit's build system should relink JavaScriptCore if LLVM's libraries changed but its headers didn't
https://bugs.webkit.org/show_bug.cgi?id=114926
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
Use a phony file that includes a phony header to force JavaScriptCore to be relinked
if necessary. The external LLVM-importing scripts will touch the header if the libraries
are known to have changed.
- JavaScriptCore.xcodeproj/project.pbxproj:
- ftl/WebKitLLVMLibraryAnchor.cpp: Added.
Tools:
Reviewed by Geoffrey Garen.
If the LLVM libraries change, then touch a phony header, which will force relink
of JavaScriptCore.
- Scripts/copy-webkitlibraries-to-product-directory:
(unpackIfNecessary):
- 8:58 PM Changeset in webkit [153125] by
-
- 3 edits in trunk/Tools
fourthTier: developing LLVM in tandem with WebKit should be fun and easy
https://bugs.webkit.org/show_bug.cgi?id=114925
Reviewed by Geoffrey Garen.
This enables building LLVM along with WebKit, so that build-jsc and build-webkit
will also optionally build LLVM and quickly symlink LLVM's built products into
the right places.
Most WebKit and JSC hackers will want to rely on the checked-in already-built
versions of LLVM in WebKitLibraries. But developing both systems in tandem is an
increasingly common use-case for me, and it may become a common use case for a
handful of others. Currently, this is really painful: you first have to build
LLVM, then you have to export-llvm-build (which takes a while), and then you
have to make sure that your LLVM_LIBRARY_PACKAGE and LLVM_INCLUDE_PACKAGE
variables are set to point to the thing you exported. The whole process loses
track of dependencies very quickly: making a tiny change in LLVM requires
packaging, and then unpackaging, a large number of potentially large headers and
static libraries. Not only is this slow but it then causes the WebKit build
system to rebuild anything that transitively includes any LLVM header, which is
now quite a few files. While this sort of use pattern is still worthwhile if
you're trying to package a binary drop and test it, it's not great if you're
just trying to do experimental development that involves making small changes
in both trees.
This change fixes this use case while keeping the old use cases intact. You can
do tandem development using one of two modes:
Your own LLVM directory: just set LLVM_SOURCE_PATH to the *absolute* path of
the LLVM directory you're using. Once this is done, any invocation of a WebKit
build via build-jsc or build-webkit will also build LLVM, and then quickly
symlink things into place without perturbing dependency tracking.
Internal LLVM directory: if you check out llvm into a directory called 'llvm'
right off of the WebKit source tree, then the build system will automatically
use this.
Here's how this takes care of dependencies:
Headers: the include/llvm and include/llvm-c directories are symlinked into
$productsDir/usr/local/include. And then everything just works.
Libraries: the build system detects, by reading LLVM's Makefile.config, which
mode LLVM is built in (like Release+Asserts or Debug+Asserts) and symlinks
the .a files into $productsDir/<thingy>. It will ranlib those libraries only
if they have changed, by checking both the modification time and also whether
the last time we had a symlink, that symlink was from the same directory.
This helps if you switch to an *older* LLVM build (using LLVM_SOURCE_PATH)
but that build wasn't yet ranlib'd.
One problem that this does not yet solve is that xcodebuild will not relink
JavaScriptCore if the only thing that changed was the libraries. I will work
on this problem separately: https://bugs.webkit.org/show_bug.cgi?id=114926.
- Scripts/copy-webkitlibraries-to-product-directory:
(unpackIfNecessary):
(fileContains):
(fileContentsEquals):
- 8:58 PM Changeset in webkit [153124] by
-
- 16 edits1 copy1 add in trunk/Source
fourthTier: It should be possible to query WatchpointSets, and add Watchpoints, even if the compiler is running in another thread
https://bugs.webkit.org/show_bug.cgi?id=114909
Source/JavaScriptCore:
Reviewed by Oliver Hunt.
The idea here is that a concurrent compiler will use watchpoint sets as follows:
During concurrent compilation: It will create Watchpoints, and query WatchpointSets only
for the purpose of profiling. That is, it will use decide whether it is profitable to
compile the code "as if" the watchpoint sets are valid.
During synchronous linking: By "linking" I don't necessarily mean the LinkBuffer stuff,
but just the very bitter end of compilation where we make the JIT code callable. This
can happen after LinkBuffer stuff. Anyway, this will have to happen synchronously, and
at that point we can (a) check that all WatchpointSets that we assumed were valid are
still valid and (b) if they are then we add the watchpoints to those sets. If any of the
sets are invalid, we give up on this compilation and try again later.
The querying of WatchpointSets is engineered to say that the set is still valid if it
is so *right now*, but this is done in a racy way and so it may say so spuriously: we
may, with hopefully low probability, have a set that says it is valid even though it was
just invalidated. The goal is only to ensure that (i) a set never claims to be invalid
if it is actually valid, (ii) a set doesn't claim to be valid if it was invalidated
before compilation even began, and (iii) querying the validity of a set doesn't cause us
to crash.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/Watchpoint.cpp:
(JSC::InlineWatchpointSet::inflateSlow):
- bytecode/Watchpoint.h:
(WatchpointSet):
(InlineWatchpointSet):
(JSC::InlineWatchpointSet::hasBeenInvalidated):
(JSC::InlineWatchpointSet::isThin):
(JSC::InlineWatchpointSet::isFat):
(JSC::InlineWatchpointSet::fat):
- dfg/DFGDesiredWatchpoints.cpp: Added.
(DFG):
(JSC::DFG::DesiredWatchpoints::DesiredWatchpoints):
(JSC::DFG::DesiredWatchpoints::~DesiredWatchpoints):
(JSC::DFG::DesiredWatchpoints::addLazily):
(JSC::DFG::DesiredWatchpoints::reallyAdd):
(JSC::DFG::DesiredWatchpoints::areStillValid):
- dfg/DFGDesiredWatchpoints.h: Added.
(DFG):
(JSC::DFG::WatchpointForGenericWatchpointSet::WatchpointForGenericWatchpointSet):
(WatchpointForGenericWatchpointSet):
(GenericDesiredWatchpoints):
(JSC::DFG::GenericDesiredWatchpoints::GenericDesiredWatchpoints):
(JSC::DFG::GenericDesiredWatchpoints::addLazily):
(JSC::DFG::GenericDesiredWatchpoints::reallyAdd):
(JSC::DFG::GenericDesiredWatchpoints::areStillValid):
(DesiredWatchpoints):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
- dfg/DFGJITCompiler.h:
(JSC::DFG::JITCompiler::addLazily):
(JITCompiler):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectEquality):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
(JSC::DFG::SpeculativeJIT::compileObjectEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
(JSC::DFG::SpeculativeJIT::compileObjectEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
(JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
(JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compile):
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- ftl/FTLCompile.h:
(FTL):
- ftl/FTLState.h:
(State):
- runtime/JSFunction.h:
(JSFunction):
(JSC::JSFunction::allocationProfileWatchpointSet):
- runtime/Structure.h:
(Structure):
(JSC::Structure::transitionWatchpointSet):
Source/WTF:
Reviewed by Oliver Hunt.
Harden our notions of memory fences, now that we're doing racy algorithms.
- wtf/Atomics.h:
(WTF):
(WTF::compilerFence):
(WTF::armV7_dmb):
(WTF::armV7_dmb_st):
(WTF::loadLoadFence):
(WTF::loadStoreFence):
(WTF::storeLoadFence):
(WTF::storeStoreFence):
(WTF::memoryBarrierAfterLock):
(WTF::memoryBarrierBeforeUnlock):
(WTF::x86_mfence):
Conflicts:
Source/WTF/wtf/Atomics.h
- 8:58 PM Changeset in webkit [153123] by
-
- 31 edits2 copies in trunk/Source
fourthTier: value profiles and array profiles should be thread-safe enough to be accessible in a concurrent compilation thread
https://bugs.webkit.org/show_bug.cgi?id=114906
Source/JavaScriptCore:
Reviewed by Oliver Hunt.
This introduces thread safety to value profiles, array profiles, and
array allocation profiles.
We already have three separate operations that happen on profiles:
(1) writing, which the JIT, LLInt, and OSR exit do; (2) updating,
which happens during GC, from OSR entry slow-paths, and in the DFG;
and (3) reading, which happens in the DFG. For example, the JIT/LLInt
and OSR exit write to ValueProfile::m_buckets, which gets synthesized
into ValueProfile::m_prediction (and other fields) during update, and
the latter gets read by the DFG. Note that (2) must also happen in
the DFG since only the DFG knows which code blocks it will inline,
and those blocks' profiles may not have otherwise been updated via
any other mechanism.
I refer to these three operations as writing, updating, and reading.
Consequently, both profile updating and profile reading may happen
asynchronously, if the JIT is asynchronous.
The locking protocol for profiles works as follows:
- Writing does not require locking, but is only allowed on the main thread. We require that these fields can be stored atomically by the profiling code, even without locks. For value profiles, this only works on 64-bit platforms, currently. For array profiles, which consist of multiple separate fields, this means that an asynchronous update of the profile may see slight inconsistencies (like a structure that doesn't quite match the array modes bits), but these should be harmless: at worst, the DFG will specialize too much and we'll have OSR exits.
- Updating a value profile requires holding a lock, but must assume that the fields written by the profiling code in JIT/LLInt may be written to without locking.
- Reading a value profile requires holding a lock.
The one major exception to these rules is the ArrayAllocationProfile,
which requires no locking. We do this because it's used so often and
in places where we don't necessarily have access to the owning
CodeBlock, so if we did want it to be locked it would have to have
its own lock. Also, I believe that it is sound to just make this
profile racy and not worry about locking at all. All that was needed
were some changes to ensure that we explicitly read some raced-over
fields only once.
Two additional interesting things in this change:
- To make it easy to see which profile methods require locking, they take a const CodeBlockLocker& as an argument. I saw this idiom for identifying which methods require which locks to be held being used in LLVM, and I quite like it.
- Lazy operand value profiles, which are created lazily and at any time, require the CodeBlockLock to be held when they are being created. Writes to them are lockless and main-thread-only, but as with other profiles, updates and reads require locking.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/ArrayAllocationProfile.cpp:
(JSC::ArrayAllocationProfile::updateIndexingType):
- bytecode/ArrayAllocationProfile.h:
(JSC::ArrayAllocationProfile::selectIndexingType):
- bytecode/ArrayProfile.cpp:
(JSC::ArrayProfile::computeUpdatedPrediction):
(JSC::ArrayProfile::briefDescription):
- bytecode/ArrayProfile.h:
(ArrayProfile):
(JSC::ArrayProfile::expectedStructure):
(JSC::ArrayProfile::structureIsPolymorphic):
(JSC::ArrayProfile::hasDefiniteStructure):
(JSC::ArrayProfile::observedArrayModes):
(JSC::ArrayProfile::mayInterceptIndexedAccesses):
(JSC::ArrayProfile::mayStoreToHole):
(JSC::ArrayProfile::outOfBounds):
(JSC::ArrayProfile::usesOriginalArrayStructures):
- bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFor):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpValueProfiling):
(JSC::CodeBlock::dumpArrayProfiling):
(JSC::CodeBlock::updateAllPredictionsAndCountLiveness):
(JSC::CodeBlock::updateAllArrayPredictions):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::valueProfilePredictionForBytecodeOffset):
(JSC::CodeBlock::updateAllPredictionsAndCheckIfShouldOptimizeNow):
(CodeBlock):
- bytecode/CodeBlockLock.h: Added.
(JSC):
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor):
- bytecode/LazyOperandValueProfile.cpp:
(JSC::CompressedLazyOperandValueProfileHolder::computeUpdatedPredictions):
(JSC::CompressedLazyOperandValueProfileHolder::add):
(JSC::LazyOperandValueProfileParser::LazyOperandValueProfileParser):
(JSC::LazyOperandValueProfileParser::~LazyOperandValueProfileParser):
(JSC):
(JSC::LazyOperandValueProfileParser::initialize):
(JSC::LazyOperandValueProfileParser::prediction):
- bytecode/LazyOperandValueProfile.h:
(CompressedLazyOperandValueProfileHolder):
(LazyOperandValueProfileParser):
- bytecode/MethodOfGettingAValueProfile.cpp:
(JSC::MethodOfGettingAValueProfile::getSpecFailBucket):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFor):
- bytecode/ResolveGlobalStatus.cpp:
(JSC::ResolveGlobalStatus::computeFor):
- bytecode/ValueProfile.h:
(JSC::ValueProfileBase::briefDescription):
(ValueProfileBase):
(JSC::ValueProfileBase::computeUpdatedPrediction):
- dfg/DFGArrayMode.cpp:
(JSC::DFG::ArrayMode::fromObserved):
- dfg/DFGArrayMode.h:
(ArrayMode):
(JSC::DFG::ArrayMode::withProfile):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::injectLazyOperandSpeculation):
(JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
(JSC::DFG::ByteCodeParser::getArrayMode):
(JSC::DFG::ByteCodeParser::getArrayModeAndEmitChecks):
(JSC::DFG::ByteCodeParser::parseResolveOperations):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGOSRExitPreparation.cpp:
(JSC::DFG::prepareCodeOriginForOSRExit):
- dfg/DFGPredictionInjectionPhase.cpp:
(JSC::DFG::PredictionInjectionPhase::run):
- jit/JITInlines.h:
(JSC::JIT::chooseArrayMode):
- jit/JITStubs.cpp:
(JSC::tryCachePutByID):
(JSC::tryCacheGetByID):
(JSC::DEFINE_STUB_FUNCTION):
(JSC::lazyLinkFor):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setUpCall):
- profiler/ProfilerBytecodeSequence.cpp:
(JSC::Profiler::BytecodeSequence::BytecodeSequence):
- runtime/JSScope.cpp:
(JSC::JSScope::resolveContainingScopeInternal):
(JSC::JSScope::resolvePut):
Source/WTF:
Reviewed by Oliver Hunt.
Add ability to abstract whether or not the CodeBlock requires locking at all,
since some platforms may not support the byte spin-locking and/or may not want
to, if they turn off concurrent JIT.
- WTF.xcodeproj/project.pbxproj:
- wtf/ByteSpinLock.h:
- wtf/NoLock.h: Added.
(WTF):
(NoLock):
(WTF::NoLock::lock):
(WTF::NoLock::unlock):
(WTF::NoLock::isHeld):
- wtf/Platform.h:
- 8:58 PM Changeset in webkit [153122] by
-
- 16 edits1 copy in trunk/Source
fourthTier: all inline caches should thread-safe enough to allow a concurrent compilation thread to read them safely
https://bugs.webkit.org/show_bug.cgi?id=114762
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
For most inline caches this is easy: the inline cache has a clean temporal
separation between doing the requested action (which may take an unbounded
amount of time, may recurse, and may do arbitrary things) and recording the
relevant information in the cache. So, we just put locks around the
recording bit. That part is always O(1) and does not recurse. The lock we
use is per-CodeBlock to achieve a good balance between locking granularity
and low space overhead. So a concurrent compilation thread will only block
if an inline cache ping-pongs in the code block being compiled (or inlined)
and never when other inline caches do things.
For resolve operations, it's a bit tricky. The global resolve bit works
like any other IC in that it has the clean temporal separation. But the
operations vector itself doesn't have this separation, since we will be
filling it in tandem with actions that may take a long time. This patch
gets around this by having a m_ready bit in the ResolveOperations and
PutToBaseOperation. This is set while holding the CodeBlock's lock. If the
DFG observes the m_ready bit not set (while holding the lock) then it
conservatively assumes that the resolve hasn't happened yet and just
plants a ForceOSRExit.
- bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFor):
- bytecode/CodeBlock.h:
(CodeBlock):
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFor):
- bytecode/ResolveGlobalStatus.cpp:
(JSC::ResolveGlobalStatus::computeFor):
- bytecode/ResolveOperation.h:
(JSC::ResolveOperations::ResolveOperations):
(ResolveOperations):
(JSC::PutToBaseOperation::PutToBaseOperation):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseResolveOperations):
(JSC::DFG::ByteCodeParser::parseBlock):
- jit/JITStubs.cpp:
(JSC::tryCachePutByID):
(JSC::tryCacheGetByID):
(JSC::DEFINE_STUB_FUNCTION):
(JSC::lazyLinkFor):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setUpCall):
- runtime/JSScope.cpp:
(JSC::JSScope::resolveContainingScopeInternal):
(JSC::JSScope::resolveContainingScope):
(JSC::JSScope::resolvePut):
Source/WTF:
Reviewed by Mark Hahnenberg.
Implemented a new spinlock that is optimized for compactness, by using just a byte.
This will be useful as we start using fine-grained locking on a bunch of places.
At some point I'll make these byte-sized spinlocks into adaptive mutexes, but for
now I think it's fine to do the evil thing and use spinning particularly since we
only use them for short critical sections.
- WTF.xcodeproj/project.pbxproj:
- wtf/Atomics.h:
(WTF):
(WTF::weakCompareAndSwap):
- wtf/ByteSpinLock.h: Added.
(WTF):
(ByteSpinLock):
(WTF::ByteSpinLock::ByteSpinLock):
(WTF::ByteSpinLock::lock):
(WTF::ByteSpinLock::unlock):
(WTF::ByteSpinLock::isHeld):
- wtf/ThreadingPrimitives.h:
(WTF::pauseBriefly):
(WTF):
- 8:58 PM Changeset in webkit [153121] by
-
- 51 edits32 copies25 adds in trunk
fourthTier: Landing the initial FTL logic in a single commit to avoid spurious
broken builds.
- 8:58 PM Changeset in webkit [153120] by
-
- 6 edits in trunk/Source/JavaScriptCore
fourthTier: DFG should be able to query Structure without modifying it
https://bugs.webkit.org/show_bug.cgi?id=114708
Reviewed by Oliver Hunt.
This is work towards allowing the DFG, and FTL, to run on a separate thread.
The idea is that the most evil thing that the DFG does that has thread-safety
issues is fiddling with Structures by calling Structure::get(). This can lead
to rematerialization of property tables, which is definitely not thread-safe
due to how StringImpl works. So, this patch completely side-steps the problem
by creating a new version of Structure::get, called
Structure::getWithoutMaterializing, which may choose to do an O(n) search if
necessary to avoid materialization. I believe this should be fine - the DFG
does't call into these code path often enough for this to matter, and most of
the time, the Structure that we call this on will already have a property
table because some inline cache would have already called ::get() on that
Structure.
Also cleaned up the materialization logic: we can stop the search as soon as
we find any Structure with a property table rather than searching all the way
for a pinned one.
- bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor):
- bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFromLLInt):
(JSC::PutByIdStatus::computeFor):
- runtime/Structure.cpp:
(JSC::Structure::findStructuresAndMapForMaterialization):
(JSC::Structure::materializePropertyMap):
(JSC::Structure::getWithoutMaterializing):
(JSC):
- runtime/Structure.h:
(Structure):
- runtime/StructureInlines.h:
(JSC::Structure::getWithoutMaterializing):
(JSC):
- 8:58 PM Changeset in webkit [153119] by
-
- 9 edits1 copy1 add in trunk/Source/JavaScriptCore
fourthTier: DFG should provide utilities for common OSR exit tasks
https://bugs.webkit.org/show_bug.cgi?id=114306
Reviewed by Mark Hahnenberg.
Just abstract out some things that the FTL will want to use as well.
- CMakeLists.txt:
- GNUmakefile.list.am:
- JavaScriptCore.xcodeproj/project.pbxproj:
- Target.pri:
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
- dfg/DFGOSRExitCompiler.cpp:
- dfg/DFGOSRExitCompiler.h:
(OSRExitCompiler):
- dfg/DFGOSRExitCompiler32_64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGOSRExitCompiler64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGOSRExitCompilerCommon.cpp: Added.
(DFG):
(JSC::DFG::handleExitCounts):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):
- dfg/DFGOSRExitCompilerCommon.h: Added.
(DFG):
- 8:58 PM Changeset in webkit [153118] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: DFG should better abstract floating point arguments
https://bugs.webkit.org/show_bug.cgi?id=114300
Reviewed by Mark Hahnenberg.
- dfg/DFGFPRInfo.h:
(FPRInfo):
(JSC::DFG::FPRInfo::toArgumentRegister):
- 8:58 PM Changeset in webkit [153117] by
-
- 2 edits in trunk/Source/JavaScriptCore
fourthTier: DFG should better abstract arguments
https://bugs.webkit.org/show_bug.cgi?id=114073
Reviewed by Mark Hahnenberg.
- dfg/DFGGPRInfo.h:
(GPRInfo):
(JSC::DFG::GPRInfo::toArgumentRegister):
- 8:58 PM Changeset in webkit [153116] by
-
- 22 edits2 copies2 adds in trunk/Source/JavaScriptCore
fourthTier: put DFG data into a DFG::JITCode, and put common DFG and FTL data into something accessible from both DFG::JITCode and FTL::JITCode
https://bugs.webkit.org/show_bug.cgi?id=113905
Reviewed by Geoffrey Garen.
This removes one pointer from CodeBlock.
It also gives us a framework for having JITType-specific data in CodeBlock, by
putting it into the appropriate JITCode class (either DFG::JITCode or
FTL::JITCode). And it allows us to have DFG and FTL share some common data,
via DFG::CommonData, which is stored in both DFG::JITCode and FTL::JITCode and
always accessible via JITCode::dfgCommon().
- CMakeLists.txt:
- GNUmakefile.list.am:
- JavaScriptCore.xcodeproj/project.pbxproj:
- Target.pri:
- bytecode/CodeBlock.cpp:
(JSC):
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::visitAggregate):
(JSC::CodeBlock::performTracingFixpointIteration):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::stronglyVisitWeakReferences):
(JSC::CodeBlock::shrinkToFit):
(JSC::CodeBlock::tallyFrequentExitSites):
- bytecode/CodeBlock.h:
(CodeBlock):
(JSC::CodeBlock::setJITCode):
(JSC::CodeBlock::shouldImmediatelyAssumeLivenessDuringScan):
(JSC::DFGCodeBlocks::mark):
- dfg/DFGAssemblyHelpers.h:
- dfg/DFGCommonData.cpp: Added.
(DFG):
(JSC::DFG::CommonData::notifyCompilingStructureTransition):
(JSC::DFG::CommonData::shrinkToFit):
- dfg/DFGCommonData.h: Added.
(JSC):
(DFG):
(JSC::DFG::WeakReferenceTransition::WeakReferenceTransition):
(WeakReferenceTransition):
(CommonData):
(JSC::DFG::CommonData::CommonData):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
(JSC::DFG::tryCompile):
(JSC::DFG::tryCompileFunction):
- dfg/DFGDriver.h:
(DFG):
(JSC::DFG::tryCompile):
(JSC::DFG::tryCompileFunction):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGJITCode.cpp: Added.
(DFG):
(JSC::DFG::JITCode::JITCode):
(JSC::DFG::JITCode::~JITCode):
(JSC::DFG::JITCode::dfgCommon):
(JSC::DFG::JITCode::dfg):
(JSC::DFG::JITCode::shrinkToFit):
- dfg/DFGJITCode.h: Added.
(DFG):
(JITCode):
(JSC::DFG::JITCode::appendOSREntryData):
(JSC::DFG::JITCode::osrEntryDataForBytecodeIndex):
(JSC::DFG::JITCode::appendOSRExit):
(JSC::DFG::JITCode::lastOSRExit):
(JSC::DFG::JITCode::appendSpeculationRecovery):
(JSC::DFG::JITCode::appendWatchpoint):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::JITCompiler):
(JSC::DFG::JITCompiler::linkOSRExits):
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
- dfg/DFGJITCompiler.h:
(JITCompiler):
(JSC::DFG::JITCompiler::addWeakReference):
(JSC::DFG::JITCompiler::noticeOSREntry):
(JSC::DFG::JITCompiler::jitCode):
- dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):
- dfg/DFGOSRExit.h:
(OSRExit):
- dfg/DFGOSRExitCompiler.cpp:
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::backwardSpeculationCheck):
(JSC::DFG::SpeculativeJIT::speculationWatchpoint):
(JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGVariableEventStream.cpp:
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::JITCode):
(JSC::FTL::JITCode::~JITCode):
(FTL):
(JSC::FTL::JITCode::initializeCode):
(JSC::FTL::JITCode::addressForCall):
(JSC::FTL::JITCode::executableAddressAtOffset):
(JSC::FTL::JITCode::dataAddressAtOffset):
(JSC::FTL::JITCode::offsetOf):
(JSC::FTL::JITCode::size):
(JSC::FTL::JITCode::contains):
(JSC::FTL::JITCode::ftl):
(JSC::FTL::JITCode::dfgCommon):
- ftl/FTLJITCode.h:
(JITCode):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileStructureTransitionWatchpoint):
(JSC::FTL::LowerDFGToLLVM::compilePutStructure):
(JSC::FTL::LowerDFGToLLVM::compilePhantomPutStructure):
(JSC::FTL::LowerDFGToLLVM::addWeakReference):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::weakPointer):
- ftl/FTLState.cpp:
(FTL):
(JSC::FTL::State::State):
(JSC::FTL::State::dumpState):
- ftl/FTLState.h:
(State):
- heap/DFGCodeBlocks.cpp:
(JSC::DFGCodeBlocks::~DFGCodeBlocks):
(JSC::DFGCodeBlocks::jettison):
(JSC::DFGCodeBlocks::clearMarks):
(JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
(JSC::DFGCodeBlocks::traceMarkedCodeBlocks):
- jit/JITCode.cpp:
(JSC::JITCode::dfgCommon):
(JSC):
(JSC::JITCode::dfg):
(JSC::JITCode::ftl):
(JSC::DirectJITCode::DirectJITCode):
(JSC::DirectJITCode::initializeCodeRef):
(JSC::DirectJITCode::addressForCall):
(JSC::DirectJITCode::executableAddressAtOffset):
(JSC::DirectJITCode::dataAddressAtOffset):
(JSC::DirectJITCode::offsetOf):
(JSC::DirectJITCode::size):
(JSC::DirectJITCode::contains):
- jit/JITCode.h:
(DFG):
(FTL):
(JSC):
(JITCode):
(DirectJITCode):
- 8:58 PM Changeset in webkit [153115] by
-
- 10 edits in trunk/Source/JavaScriptCore
fourthTier: Everyone should know about the FTL
https://bugs.webkit.org/show_bug.cgi?id=113897
Reviewed by Mark Hahnenberg.
In order to get OSR exit to work right, we need the distinction between DFG and
FTL to be clear even after compilation finishes, since they will have subtly
different OSR stories and likely use different data structures.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::resetStubInternal):
(JSC::ProgramCodeBlock::compileOptimized):
(JSC::EvalCodeBlock::compileOptimized):
(JSC::FunctionCodeBlock::compileOptimized):
(JSC::CodeBlock::adjustedExitCountThreshold):
(JSC::CodeBlock::tallyFrequentExitSites):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::setJITCode):
(JSC::CodeBlock::hasOptimizedReplacement):
(JSC::ExecState::isInlineCallFrame):
- ftl/FTLCompile.cpp:
(JSC::FTL::compile):
- ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::JITCode):
- ftl/FTLState.cpp:
(JSC::FTL::State::dumpState):
- heap/DFGCodeBlocks.cpp:
(JSC::DFGCodeBlocks::jettison):
- interpreter/Interpreter.cpp:
(JSC::getLineNumberForCallFrame):
(JSC::getCallerInfo):
- jit/JITCode.cpp:
(WTF::printInternal):
- jit/JITCode.h:
(JSC::JITCode::topTierJIT):
(JSC::JITCode::nextTierJIT):
(JITCode):
(JSC::JITCode::isJIT):
(JSC::JITCode::isLowerTier):
(JSC::JITCode::isHigherTier):
(JSC::JITCode::isLowerOrSameTier):
(JSC::JITCode::isHigherOrSameTier):
(JSC::JITCode::isOptimizingJIT):
- jit/JITDriver.h:
(JSC::jitCompileIfAppropriate):
(JSC::jitCompileFunctionIfAppropriate):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- runtime/Executable.cpp:
(JSC::EvalExecutable::compileOptimized):
(JSC::samplingDescription):
(JSC::ProgramExecutable::compileOptimized):
(JSC::FunctionExecutable::compileOptimizedForCall):
(JSC::FunctionExecutable::compileOptimizedForConstruct):
- 8:58 PM Changeset in webkit [153114] by
-
- 4 edits in trunk/Source/JavaScriptCore
fourthTier: DFG should abstract out how it does forward exits, and that code should be simplified
https://bugs.webkit.org/show_bug.cgi?id=113894
Reviewed by Mark Hahnenberg.
1) We previously had two different ways of convertingToForward, one path for
where we had a ValueRecovery for the current node and one where we didn't.
But the paths were doing exactly the same thing except that if you have a
ValueRecovery, you also find the last applicable mov hint and do some
extra things. This patch combines the two paths and bases both of them on
the previous no-ValueRecovery path, which was simpler to begin with.
2) This moves the logic into DFG::OSRExit, which further simplifies the code
and makes the logic available to the FTL.
- dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::convertToForward):
(DFG):
- dfg/DFGOSRExit.h:
(DFG):
(OSRExit):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward):
- 8:58 PM Changeset in webkit [153113] by
-
- 28 edits in trunk/Source/JavaScriptCore
fourthTier: JITCode should abstract exactly how the JIT code is structured and where it was allocated
https://bugs.webkit.org/show_bug.cgi?id=113437
Reviewed by Mark Hahnenberg.
JITCode is now a virtual base class, which will allow different JITs to have radically
different memory allocation and management conventions in the future. It will also
make it easier to store JIT-specific meta-data in CodeBlock just by putting it into
an appropriate JITCode subclass.
For now there is one subclass, DirectJITCode, which just behaves like JITCode used to
behave.
- assembler/RepatchBuffer.h:
(JSC::RepatchBuffer::RepatchBuffer):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::resetStubInternal):
(JSC::CodeBlock::bytecodeOffset):
(JSC::CodeBlock::codeOriginForReturn):
- bytecode/CodeBlock.h:
(JSC::CodeBlock::setJITCode):
(JSC::CodeBlock::getJITCode):
(JSC::CodeBlock::getJITType):
(CodeBlock):
- dfg/DFGDriver.cpp:
(JSC::DFG::compile):
(JSC::DFG::tryCompile):
(JSC::DFG::tryCompileFunction):
- dfg/DFGDriver.h:
(DFG):
(JSC::DFG::tryCompile):
(JSC::DFG::tryCompileFunction):
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
- dfg/DFGJITCompiler.h:
(JITCompiler):
- dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareOSREntry):
- dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::codeLocationForRepatch):
- dfg/DFGOSRExitCompiler32_64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGOSRExitCompiler64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGOperations.cpp:
- interpreter/Interpreter.cpp:
(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
- jit/JIT.cpp:
(JSC::JIT::privateCompile):
- jit/JIT.h:
(JSC::JIT::compile):
(JIT):
- jit/JITCode.cpp:
(JSC):
(JSC::JITCode::JITCode):
(JSC::JITCode::~JITCode):
(JSC::JITCode::execute):
(JSC::JITCode::hostFunction):
(JSC::DirectJITCode::DirectJITCode):
(JSC::DirectJITCode::~DirectJITCode):
(JSC::DirectJITCode::addressForCall):
(JSC::DirectJITCode::executableAddressAtOffset):
(JSC::DirectJITCode::dataAddressAtOffset):
(JSC::DirectJITCode::offsetOf):
(JSC::DirectJITCode::size):
(JSC::DirectJITCode::contains):
- jit/JITCode.h:
(JSC):
(JITCode):
(JSC::JITCode::bottomTierJIT):
(JSC::JITCode::topTierJIT):
(JSC::JITCode::nextTierJIT):
(JSC::JITCode::isOptimizingJIT):
(JSC::JITCode::isBaselineCode):
(JSC::JITCode::jitType):
(JSC::JITCode::jitTypeFor):
(JSC::JITCode::executableAddress):
(JSC::JITCode::start):
(JSC::JITCode::end):
(DirectJITCode):
- jit/JITDriver.h:
(JSC::jitCompileIfAppropriate):
(JSC::jitCompileFunctionIfAppropriate):
- jit/JITStubs.cpp:
(JSC::lazyLinkFor):
(JSC::DEFINE_STUB_FUNCTION):
- jit/ThunkGenerators.cpp:
(JSC::virtualForGenerator):
- llint/LLIntEntrypoints.cpp:
(JSC::LLInt::getFunctionEntrypoint):
(JSC::LLInt::getEvalEntrypoint):
(JSC::LLInt::getProgramEntrypoint):
- llint/LLIntEntrypoints.h:
(JSC):
(LLInt):
(JSC::LLInt::getEntrypoint):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::entryOSR):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- runtime/Executable.cpp:
(JSC::EvalExecutable::compileInternal):
(JSC::ProgramExecutable::compileInternal):
(JSC::FunctionExecutable::compileForCallInternal):
(JSC::FunctionExecutable::compileForConstructInternal):
- runtime/Executable.h:
(JSC::ExecutableBase::generatedJITCodeForCall):
(JSC::ExecutableBase::generatedJITCodeForConstruct):
(JSC::ExecutableBase::generatedJITCodeFor):
(ExecutableBase):
(JSC::ExecutableBase::hostCodeEntryFor):
(JSC::ExecutableBase::jsCodeEntryFor):
(JSC::ExecutableBase::jsCodeWithArityCheckEntryFor):
(JSC::NativeExecutable::create):
(JSC::NativeExecutable::finishCreation):
(JSC::EvalExecutable::generatedJITCode):
(JSC::ProgramExecutable::generatedJITCode):
- runtime/ExecutionHarness.h:
(JSC::prepareForExecution):
(JSC::prepareFunctionForExecution):
- 8:16 PM Changeset in webkit [153112] by
-
- 2 edits in trunk/Source/WebCore
[iOS] Captions are clipped in documents using pagination
https://bugs.webkit.org/show_bug.cgi?id=119072
Reviewed by Beth Dakin.
MediaControlTextTrackContainerElement::createTextTrackRepresentationImage() is called
to paint captions into a layer used for fullscreen video. It did the painting using
a subtree paint, but starting at the root RenderView's layer. This is problematic,
because the caption painting is subject to clipping for columns, and any enclosing
overflow:hidden container.
Fix this by starting the paint at the MediaControlTextTrackContainerElement's
renderer's layer. By doing this we don't have to worry about an offset, so no
translation is required.
Also make sure we update layer before grabbing the renderer (in case layout
destroys it).
- html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):
- 7:32 PM Changeset in webkit [153111] by
-
- 1 edit2 adds in trunk/LayoutTests
Add DRT test to ensure don't override z-index for overflow: scroll, -webkit-overflow-scrolling: touch
https://bugs.webkit.org/show_bug.cgi?id=119071
Reviewed by Simon Fraser.
Add a DRT test to ensure we don't regress the fix for <https://bugs.webkit.org/show_bug.cgi?id=119066>.
- compositing/overflow/should-not-override-z-index-for-element-with-non-auto-z-index-and-overflow-scroll-and-touch-expected.txt: Added.
- compositing/overflow/should-not-override-z-index-for-element-with-non-auto-z-index-and-overflow-scroll-and-touch.html: Added.
- 7:02 PM Changeset in webkit [153110] by
-
- 5 edits in branches/safari-537-branch/Source
Versioning.
- 7:00 PM Changeset in webkit [153109] by
-
- 1 copy in tags/Safari-537.52
New Tag.
- 6:08 PM Changeset in webkit [153108] by
-
- 18 edits4 moves in trunk/Source/WebKit2
Rename WebColorChooserProxy
<rdar://problem/14528039> and https://bugs.webkit.org/show_bug.cgi?id=119025
Reviewed by Brady Eidson.
Renamed WebColorChooserProxy to WebColorPicker since the name WebColorChoooserProxy
implies that it represents the same object as WebColorChooser, which is not true.
Also, renamed createColorChooserProxy to createColorPicker in WebPageProxy and
platform-equivalent versions of it.
- CMakeLists.txt:
- GNUmakefile.list.am:
- Target.pri:
- UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::createColorPicker):
- UIProcess/API/gtk/PageClientImpl.h:
- UIProcess/API/mac/PageClientImpl.h:
- UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::createColorPicker):
- UIProcess/API/qt/raw/qrawwebview.cpp:
(QRawWebViewPrivate::createColorPicker):
- UIProcess/API/qt/raw/qrawwebview_p_p.h:
- UIProcess/CoordinatedGraphics/WebView.cpp:
(WebKit::WebView::createColorPicker):
- UIProcess/CoordinatedGraphics/WebView.h:
- UIProcess/PageClient.h:
- UIProcess/WebColorChooserProxy.cpp: Removed.
- UIProcess/WebColorChooserProxy.h: Removed.
- UIProcess/WebColorPicker.cpp: Copied from Source/WebKit2/UIProcess/WebColorChooserProxy.cpp.
(WebKit::WebColorPicker::WebColorPicker):
(WebKit::WebColorPicker::~WebColorPicker):
(WebKit::WebColorPicker::endChooser):
(WebKit::WebColorPicker::setSelectedColor):
- UIProcess/WebColorPicker.h: Copied from Source/WebKit2/UIProcess/WebColorChooserProxy.h.
(WebKit::WebColorPicker::create):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::showColorChooser):
(WebKit::WebPageProxy::setColorChooserColor):
(WebKit::WebPageProxy::endColorChooser):
(WebKit::WebPageProxy::didEndColorChooser):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
- UIProcess/WebPageProxy.h: Renamed m_colorChooser to m_colorPicker.
- UIProcess/qt/QtPageClient.cpp:
(WebKit::QtPageClient::createColorPicker):
- UIProcess/qt/QtPageClient.h:
- UIProcess/qt/WebColorChooserProxyQt.cpp: Removed.
- UIProcess/qt/WebColorChooserProxyQt.h: Removed.
- UIProcess/qt/WebColorPickerQt.cpp: Added.
(WebKit::ColorChooserContextObject::ColorChooserContextObject):
(WebKit::ColorChooserContextObject::currentColor):
(WebKit::ColorChooserContextObject::elementRect):
(WebKit::ColorChooserContextObject::accept):
(WebKit::ColorChooserContextObject::reject):
(WebKit::WebColorPickerQt::WebColorPickerQt):
(WebKit::WebColorPickerQt::~WebColorPickerQt):
(WebKit::WebColorPickerQt::createItem):
(WebKit::WebColorPickerQt::createContext):
(WebKit::WebColorPickerQt::setSelectedColor):
(WebKit::WebColorPickerQt::notifyColorSelected):
(WebKit::WebColorPickerQt::endChooser):
- UIProcess/qt/WebColorPickerQt.h: Added.
(WebKit::WebColorPickerQt::create):
- WebKit2.xcodeproj/project.pbxproj:
- 5:57 PM Changeset in webkit [153107] by
-
- 5 edits1 add in trunk
Crash when calling WKPageGetProcessIdentifier after aborted process launch
https://bugs.webkit.org/show_bug.cgi?id=119069
<rdar://problem/14494064>
Reviewed by Andreas Kling.
Source/WebKit2:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processIdentifier):
Check if the page is closed instead of checking whether we have a process - We'll always have a process.
(WebKit::WebPageProxy::isValid):
Make this const.
- UIProcess/WebPageProxy.h:
Tools:
Add a test.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKit2/mac/GetPIDAfterAbortedProcessLaunch.cpp: Added.
(TestWebKitAPI::didFinishLoadForFrame):
(TestWebKitAPI::TEST):
- 3:46 PM Changeset in webkit [153106] by
-
- 1 edit4 adds in trunk/Source/WebKit2
[WK2][Soup] Add entry point for network process
https://bugs.webkit.org/show_bug.cgi?id=110136
Reviewed by Gustavo Noronha Silva.
Original patch by Balazs Kelemen <kbalazs@webkit.org>.
Added a common entry point for non-Mac Unix ports.
- NetworkProcess/unix/NetworkProcessMainUnix.cpp: Added.
(WebKit::NetworkProcessMain):
- NetworkProcess/unix/NetworkProcessMainUnix.h: Added.
- unix/NetworkMainUnix.cpp: Added.
(main):
- 3:45 PM Changeset in webkit [153105] by
-
- 2 edits in trunk/Source/WebCore
REGRESSION (r152335): Mac Pro title occluded in MobileSafari; can't scroll page
https://bugs.webkit.org/show_bug.cgi?id=119066
<rdar://problem/14499184>
Reviewed by Daniel Bates.
Following <http://trac.webkit.org/changeset/152335> (bug #118337) we set
the z-index to 0 on every element with CSS "overflow: scroll" and
"-webkit-overflow-scrolling: touch" regardless of whether the element has
non-auto z-index. Instead we should only set the z-index to 0 for such elements
that have an auto z-index.
- css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyle):
- 2:58 PM Changeset in webkit [153104] by
-
- 5 edits in trunk/Source/JavaScriptCore
It should be possible to hijack IndexingHeader for things other than lengths
https://bugs.webkit.org/show_bug.cgi?id=119065
Reviewed by Mark Hahnenberg.
Made the body of IndexingHeader be a union.
Modified the offlineasm so that you can say IndexingHeader::u.lengths.publicLength.
Previously those dots would cause parse errors. Now an identifier in offlineasm can
have a dot anywhere except the first character.
- llint/LowLevelInterpreter32_64.asm:
- llint/LowLevelInterpreter64.asm:
- offlineasm/parser.rb:
- runtime/IndexingHeader.h:
(JSC::IndexingHeader::offsetOfPublicLength):
(JSC::IndexingHeader::offsetOfVectorLength):
(JSC::IndexingHeader::IndexingHeader):
(JSC::IndexingHeader::vectorLength):
(JSC::IndexingHeader::setVectorLength):
(JSC::IndexingHeader::publicLength):
(JSC::IndexingHeader::setPublicLength):
- 2:47 PM Changeset in webkit [153103] by
-
- 39 edits6 adds in branches/dfgFourthTier/Source
fourthTier: DFG IR dumps should be easier to read
https://bugs.webkit.org/show_bug.cgi?id=119050
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Added a DumpContext that includes support for printing an endnote
that describes all structures in full, while the main flow of the
dump just uses made-up names for the structures. This is helpful
since Structure::dump() may print a lot. The stuff it prints is
useful, but if it's all inline with the surrounding thing you're
dumping (often, a node in the DFG), then you get a ridiculously
long print-out. All classes that dump structures (including
Structure itself) now have dumpInContext() methods that use
inContext() for dumping anything that might transitively print a
structure. If Structure::dumpInContext() is called with a NULL
context, it just uses dump() like before. Hence you don't have to
know anything about DumpContext unless you want to.
inContext(*structure, context) dumps something like %B4:Array,
and the endnote will have something like:
%B4:Array = 0x10e91a180:[Array, {Edge:100, Normal:101, Line:102, NumPx:103, LastPx:104}, ArrayWithContiguous, Proto:0x10e99ffe0]
where B4 is the inferred name that StringHashDumpContext came up
with.
Also shortened a bunch of other dumps, removing information that
isn't so important.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/ArrayProfile.cpp:
(JSC::dumpArrayModes):
- bytecode/CodeBlockHash.cpp:
(JSC):
(JSC::CodeBlockHash::CodeBlockHash):
(JSC::CodeBlockHash::dump):
- bytecode/CodeOrigin.cpp:
(JSC::CodeOrigin::dumpInContext):
(JSC):
(JSC::InlineCallFrame::dumpInContext):
(JSC::InlineCallFrame::dump):
- bytecode/CodeOrigin.h:
(CodeOrigin):
(InlineCallFrame):
- bytecode/Operands.h:
(JSC::OperandValueTraits::isEmptyForDump):
(Operands):
(JSC::Operands::dump):
(JSC):
- bytecode/OperandsInlines.h: Added.
(JSC):
(JSC::::dumpInContext):
- bytecode/StructureSet.h:
(JSC::StructureSet::dumpInContext):
(JSC::StructureSet::dump):
(StructureSet):
- dfg/DFGAbstractValue.cpp:
(JSC::DFG::AbstractValue::dump):
(DFG):
(JSC::DFG::AbstractValue::dumpInContext):
- dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::operator!):
(AbstractValue):
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::performBlockCFA):
- dfg/DFGCommon.cpp:
- dfg/DFGCommon.h:
(JSC::DFG::NodePointerTraits::isEmptyForDump):
- dfg/DFGDisassembler.cpp:
(JSC::DFG::Disassembler::createDumpList):
- dfg/DFGDisassembler.h:
(Disassembler):
- dfg/DFGFlushFormat.h:
(WTF::inContext):
(WTF):
- dfg/DFGFlushLivenessAnalysisPhase.cpp:
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dumpCodeOrigin):
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::dumpBlockHeader):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGLazyJSValue.cpp:
(JSC::DFG::LazyJSValue::dumpInContext):
(JSC::DFG::LazyJSValue::dump):
(DFG):
- dfg/DFGLazyJSValue.h:
(LazyJSValue):
- dfg/DFGNode.h:
(JSC::DFG::nodeMapDump):
(WTF::inContext):
(WTF):
- dfg/DFGOSRExitCompiler32_64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGOSRExitCompiler64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGStructureAbstractValue.h:
(JSC::DFG::StructureAbstractValue::dumpInContext):
(JSC::DFG::StructureAbstractValue::dump):
(StructureAbstractValue):
- ftl/FTLExitValue.cpp:
(JSC::FTL::ExitValue::dumpInContext):
(JSC::FTL::ExitValue::dump):
(FTL):
- ftl/FTLExitValue.h:
(ExitValue):
- ftl/FTLLowerDFGToLLVM.cpp:
- ftl/FTLValueSource.cpp:
(JSC::FTL::ValueSource::dumpInContext):
(FTL):
- ftl/FTLValueSource.h:
(ValueSource):
- runtime/DumpContext.cpp: Added.
(JSC):
(JSC::DumpContext::DumpContext):
(JSC::DumpContext::~DumpContext):
(JSC::DumpContext::isEmpty):
(JSC::DumpContext::dump):
- runtime/DumpContext.h: Added.
(JSC):
(DumpContext):
- runtime/JSCJSValue.cpp:
(JSC::JSValue::dump):
(JSC):
(JSC::JSValue::dumpInContext):
- runtime/JSCJSValue.h:
(JSC):
(JSValue):
- runtime/Structure.cpp:
(JSC::Structure::dumpInContext):
(JSC):
(JSC::Structure::dumpBrief):
(JSC::Structure::dumpContextHeader):
- runtime/Structure.h:
(JSC):
(Structure):
Source/WTF:
Reviewed by Mark Hahnenberg.
Added support for dumping values within a context. By default, if you say
print(inContext(value, context)) it calls value.dumpInContext(out, context)
instead of value.dump(out).
Hoisted the support for six-character hashes out of JSC::CodeBlockHash into
WTF, in the form of SixCharacterHash.h.
Added a helper for creating dump contexts where the inContext() dump will
just use a short string hash to "name" the object being dumped, and then
will print out the full dumps in an endnote to your dump.
Added support for using CString as a hashtable key.
- WTF.xcodeproj/project.pbxproj:
- wtf/PrintStream.h:
(WTF):
(ValueInContext):
(WTF::ValueInContext::ValueInContext):
(WTF::ValueInContext::dump):
(WTF::inContext):
- wtf/SixCharacterHash.cpp: Added.
(WTF):
(WTF::sixCharacterHashStringToInteger):
(WTF::integerToSixCharacterHashString):
- wtf/SixCharacterHash.h: Added.
(WTF):
- wtf/StringHashDumpContext.h: Added.
(WTF):
(StringHashDumpContext):
(WTF::StringHashDumpContext::StringHashDumpContext):
(WTF::StringHashDumpContext::getID):
(WTF::StringHashDumpContext::dumpBrief):
(WTF::StringHashDumpContext::brief):
(WTF::StringHashDumpContext::isEmpty):
(WTF::StringHashDumpContext::dump):
- wtf/text/CString.cpp:
(WTF::CString::hash):
(WTF):
(WTF::operator<):
(WTF::CStringHash::equal):
- wtf/text/CString.h:
(WTF::CString::CString):
(CString):
(WTF::CString::isHashTableDeletedValue):
(WTF):
(WTF::CStringHash::hash):
(CStringHash):
- 2:24 PM Changeset in webkit [153102] by
-
- 2 edits in trunk/Source/WebCore
Use-after-free in ApplyStyleCommand::removeInlineStyle
https://bugs.webkit.org/show_bug.cgi?id=118627
Reviewed by Oliver Hunt.
Merge https://chromium.googlesource.com/chromium/blink/+/b6471d077e012b05ccba14d0ce8e6d616106c8e6
Unfortunately, there is no test case for this bug.
- editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::removeInlineStyle):
- 2:21 PM Changeset in webkit [153101] by
-
- 2 edits1 add in trunk/Source/ThirdParty/ANGLE
Generate derived files in ANGLE at build time rather than when updating from upstream.
https://bugs.webkit.org/show_bug.cgi?id=118872
Reviewed by Mark Rowe.
- ANGLE.xcodeproj/project.pbxproj: Made Derived Sources target which calls DerivedSources.make,
moved generated files into Derived Sources group.
- DerivedSources.make: Added.
- 1:28 PM Changeset in webkit [153100] by
-
- 17 edits in branches/safari-537-branch/Source/WebKit2
Merged r153096. <rdar://problem/14421763>
- 1:25 PM Changeset in webkit [153099] by
-
- 11 edits in branches/safari-537-branch/Source
Merged r153092. <rdar://problem/14421763>
- 1:22 PM Changeset in webkit [153098] by
-
- 3 edits2 copies in branches/safari-537-branch
Merged r153002. <rdar://problem/14348927>
- 12:56 PM Changeset in webkit [153097] by
-
- 2 edits in trunk/Source/JavaScriptCore
JIT::updateTopCallFrame doesn't update the CallFrame's bytecodeOffset if bytecodeOffset == 0
https://bugs.webkit.org/show_bug.cgi?id=118923
Reviewed by Filip Pizlo.
This bug causes the CallFrame's bytecodeOffset to not be properly set when we
enter, e.g., cti_optimize from an op_enter.
- jit/JITInlines.h:
(JSC::JIT::updateTopCallFrame):
- 12:31 PM Changeset in webkit [153096] by
-
- 17 edits in trunk/Source/WebKit2
Remove WKPageGetPlugInInformation - it is not used anymore
https://bugs.webkit.org/show_bug.cgi?id=119047
Reviewed by Alexey Proskuryakov.
Revert r151172, which fixed a crash introduced in r151043, r151054, which fixed some naming
and ref-churn issues introduced in r151043, and r151043, which added
WKPageGetPlugInInformation.
- UIProcess/API/C/mac/WKPagePrivateMac.cpp:
(WKPageIsURLKnownHSTSHost):
- UIProcess/API/C/mac/WKPagePrivateMac.h:
- UIProcess/Plugins/PluginProcessManager.h:
- UIProcess/Plugins/mac/PluginProcessManagerMac.mm:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::close):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/mac/WebPageProxyMac.mm:
- WebProcess/Plugins/Netscape/NetscapePlugin.h:
- WebProcess/Plugins/PDF/SimplePDFPlugin.h:
- WebProcess/Plugins/Plugin.h:
- WebProcess/Plugins/PluginProxy.h:
- WebProcess/Plugins/PluginView.h:
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/mac/WebPageMac.mm:
- 12:23 PM Changeset in webkit [153095] by
-
- 6 edits1 delete in trunk/Source/WebCore
Remove CheckedInt, use Checked<T, RecordOverflow> instead
https://bugs.webkit.org/show_bug.cgi?id=119022
Reviewed by Oliver Hunt.
Following the cleanup in r153062, the CheckedInt uses are replaced with
using the Checked<T, RecordOverflow> class. The CheckedInt header is not
used anywhere anymore and is thus removed.
- GNUmakefile.list.am:
- WebCore.xcodeproj/project.pbxproj:
- html/canvas/CheckedInt.h: Removed.
- html/canvas/DataView.cpp:
(WebCore::DataView::create):
- html/canvas/WebGLBuffer.cpp:
(WebCore::WebGLBuffer::associateBufferSubDataImpl):
- html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::drawArrays):
- 12:11 PM Changeset in webkit [153094] by
-
- 3 edits in trunk/Source/WebCore
RenderMenuList computes the width of its longest option twice.
<http://webkit.org/b/119046>
<rdar://problem/14534679>
Reviewed by Darin Adler.
Rename the RenderMenuList::m_optionsChanged flag to m_needsOptionsWidthUpdate,
and make sure it gets cleared after we do a width computation in response to font changes.
- rendering/RenderMenuList.cpp:
(WebCore::RenderMenuList::styleDidChange):
- 12:03 PM Changeset in webkit [153093] by
-
- 4 edits in trunk
Make KURL::hasPath private
https://bugs.webkit.org/show_bug.cgi?id=118279
Reviewed by Darin Adler.
Source/WebCore:
- platform/KURL.h: The KURL::hasPath method is not used outside of the KURL class, so it is made private.
Tools:
- TestWebKitAPI/Tests/WebCore/KURL.cpp:
(TestWebKitAPI::TEST_F): Remove references to KURL::hasPath the method is now private and thus not accessible for testing.
- 11:33 AM Changeset in webkit [153092] by
-
- 11 edits in trunk/Source
Remove WKPageGetPlugInInformation - it is not used anymore
https://bugs.webkit.org/show_bug.cgi?id=119047
Rubber-stamped by Alexey Proskuryakov.
Revert r152328, which added a key used only in the callback info for
WKPageGetPlugInInformation.
Source/WebCore:
- WebCore.exp.in:
Source/WebKit2:
- Shared/API/c/WKPluginInformation.cpp:
- Shared/API/c/WKPluginInformation.h:
- Shared/Plugins/Netscape/PluginInformation.cpp:
- Shared/Plugins/Netscape/PluginInformation.h:
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::containsPlugInCallback):
- WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::containsPluginViewsWithPluginProcessToken):
- 11:28 AM Changeset in webkit [153091] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: control+clicking on a numeric token should not show the context menu
https://bugs.webkit.org/show_bug.cgi?id=119048
Reviewed by Timothy Hatcher.
Track "contextmenu" events when we're hovering a token containing a numeric value
and call preventDefault() in the event handler to ensure that the context menu does
not appear.
- UserInterface/CodeMirrorDragToAlterNumberController.js:
(WebInspector.CodeMirrorDragToAlterNumberController.prototype.handleEvent):
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._setTracksMouseClickAndDrag):
- 11:11 AM Changeset in webkit [153090] by
-
- 3 edits3 copies in branches/safari-537-branch
Merged r153075. <rdar://problem/14530072>
- 11:02 AM Changeset in webkit [153089] by
-
- 7 edits20 adds in trunk
Border drawing incorrect when using both border-collapse: collapse and overflow: hidden on a table
https://bugs.webkit.org/show_bug.cgi?id=18305
Reviewed by David Hyatt.
Source/WebCore:
overflowClipRect() clips out the table's half of a collapsed border when there is an overflow clip
on the table. This prevents the table's half of the border ever getting painted.
To fix this, clip to the border box of tables when we're in the paint phase that gets the sections to draw the collapsed borders
or when we're self painting. This will allow the table's half of the border to get painted. In the case where the table is self
painting we ensure that content gets clipped to cell's side of the collapsed border by ensuring the clip passed to child layers
from the table clips to the inside of the collapsed border.
It's worth noting that a table's collapsed borders are painted by the table's layer using functions in
RenderTableSection and RenderTableCell. So if a table section has a self-painting layer this patch still works, because
the borders aren't painted by the section's layer.
Tests: fast/table/overflow-table-collapsed-borders-cell-painting-table-self-painting-layer.html
fast/table/overflow-table-collapsed-borders-cell-painting.html
fast/table/overflow-table-collapsed-borders-section-layer-painting.html
fast/table/overflow-table-collapsed-borders-section-layer-table-self-painting-layer.html
fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting.html
fast/table/overflow-table-collapsed-borders-section-self-painting-layer-table-self-painting-layer.html
fast/table/table-overflow.html
- rendering/RenderBox.cpp:
(WebCore::RenderBox::pushContentsClip):
(WebCore::RenderBox::overflowClipRect):
- rendering/RenderBox.h:
(WebCore::RenderBox::overflowClipRectForChildLayers):
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects):
- rendering/RenderTable.cpp:
(WebCore::RenderTable::overflowClipRect):
- rendering/RenderTable.h:
(WebCore::RenderTable::overflowClipRectForChildLayers):
LayoutTests:
- fast/table/overflow-table-collapsed-borders-cell-painting-expected.png: Added.
- fast/table/overflow-table-collapsed-borders-cell-painting-expected.txt: Added.
- fast/table/overflow-table-collapsed-borders-cell-painting-table-self-painting-layer-expected.png: Added.
- fast/table/overflow-table-collapsed-borders-cell-painting-table-self-painting-layer-expected.txt: Added.
- fast/table/overflow-table-collapsed-borders-cell-painting-table-self-painting-layer.html: Added.
- fast/table/overflow-table-collapsed-borders-cell-painting.html: Added.
- fast/table/overflow-table-collapsed-borders-section-layer-painting-expected.png: Added.
- fast/table/overflow-table-collapsed-borders-section-layer-painting-expected.txt: Added.
- fast/table/overflow-table-collapsed-borders-section-layer-painting.html: Added.
- fast/table/overflow-table-collapsed-borders-section-layer-table-self-painting-layer-expected.png: Added.
- fast/table/overflow-table-collapsed-borders-section-layer-table-self-painting-layer-expected.txt: Added.
- fast/table/overflow-table-collapsed-borders-section-layer-table-self-painting-layer.html: Added.
- fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.png: Added.
- fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting-expected.txt: Added.
- fast/table/overflow-table-collapsed-borders-section-self-painting-layer-painting.html: Added.
- fast/table/overflow-table-collapsed-borders-section-self-painting-layer-table-self-painting-layer-expected.png: Added.
- fast/table/overflow-table-collapsed-borders-section-self-painting-layer-table-self-painting-layer-expected.txt: Added.
- fast/table/overflow-table-collapsed-borders-section-self-painting-layer-table-self-painting-layer.html: Added.
- fast/table/table-overflow-expected.html: Added.
- fast/table/table-overflow.html: Added.
- platform/qt/fast/table/overflowHidden-expected.txt:
- 10:12 AM Changeset in webkit [153088] by
-
- 4 edits2 adds in trunk
Graphical elements inside mphantom should not be visible.
https://bugs.webkit.org/show_bug.cgi?id=116600.
Patch by Frédéric Wang <fred.wang@free.fr> on 2013-07-24
Reviewed by Chris Fleizach.
Source/WebCore:
Test: mathml/presentation/phantom.html
- rendering/mathml/RenderMathMLFraction.cpp:
(WebCore::RenderMathMLFraction::paint): don't paint the fraction bar when the visibility is not "visible"
- rendering/mathml/RenderMathMLRoot.cpp:
(WebCore::RenderMathMLRoot::paint): don't paint the radical symbol when the visibility is not "visible"
LayoutTests:
- mathml/presentation/phantom-expected.html: Added.
- mathml/presentation/phantom.html: Added.
- 9:07 AM Changeset in webkit [153087] by
-
- 4 edits2 adds in trunk/Source/WebInspectorUI
Web Inspector: support click-and-drag editing of CSS numeric values
https://bugs.webkit.org/show_bug.cgi?id=118896
Reviewed by Timothy Hatcher.
Add support for adjustment of numeric values in the various CodeMirror editors
by holding the option key and dragging the mouse. By default, dragging one pixel
changes the value by 1, but key modifiers allow to customize that behavior by using
the control key to change the value to 0.1 and the shift key to change the value to 10.
- UserInterface/CodeMirrorAdditions.js:
Split adjustNumber() into two methods such that we may use its logic from the
CodeMirrorDragToAlterNumberController. The new method, CodeMirror.prototype.alterNumberInRange()
allow to set begin and end CodeMirror positions such that the existing alterNumber()
can use information based on the current cursor position, and CodeMirrorDragToAlterNumberController
can use information based on the hovered token.
- UserInterface/CodeMirrorDragToAlterNumberController.css: Added.
(.CodeMirror.drag-to-adjust .CodeMirror-lines):
Set the cursor to "col-resize" when a number token is hovered and the option key
modifier is pressed.
- UserInterface/CodeMirrorDragToAlterNumberController.js: Added.
(WebInspector.CodeMirrorDragToAlterNumberController):
We define the new "dragToAdjustNumbers" CodeMirror option.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype.set enabled):
The "enabled" property controls whether the associated CodeMirror instance
may act upon hovering numeric values to adjust them via a drag interaction.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype.handleEvent):
Proxy for various event-specific methods to deal with mouse events. We also bind
the value of the "active" property to the "mouseenter" and "mouseleave" events
if we're not currently dragging-to-adjust.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._setActive):
The "active" property is set when the mouse is over the associated CodeMirror
editor and when it's on we track all "mousemove" events such that we may
identify tokens containing numeric values. We also start tracking changes to the
option modifier key press state such that we may change the cursor accordingly.
We ensure that the CodeMirror instance is not read-only such that we don't
allow adjustment of numeric values in places where they couldn't be committed.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._setDragging):
The "dragging" property reflects whether a dragging-to-adjust interaction
is underway. We call into WebInspector.elementDragStart() and WebInspector.elementDragEnd()
to set the cursor to "col-resize" for the whole document while tracking mousemove
and mouseup events at the window level such that we can drag-to-adjust even outside
of the inspector window.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._setTracksMouseClickAndDrag):
The "tracksMouseClickAndDrag" property is set to true whenever the controller
has detected that a token containing a numeric value is being hovered and the
option modifier key is pressed. This property controls the cursor value for the
hovered token to reflect that a drag-to-adjust interaction is allowed and tracks
"mousedown" events for when a dragging interaction may be initiated.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._modifiersDidChange):
Sets the "tracksMouseClickAndDrag" property depending on the availability of a hovered
token containing a numeric value and the pressed state of the option modified key.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._mouseMoved):
Handles "mousemove" events when we're not in the "dragging" state such that we
check the currently hovered token, if any, to see if it contains a number that
we may drag-to-adjust. Subsequently, we may enter the "tracksMouseClickAndDrag"
state.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._mouseWasPressed):
Handles "mousedown" events during a drag-to-adjust interaction. We simply track
the current mouse position in the x-axis and enter the "dragging" state.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._mouseWasDragged):
Handles "mousemove" events when we are in the "dragging" state. We compare the
current mouse position in the x-axis with the last recoreded value and determine
the amount by which we should adjust the value, taking into account the shift and
control modifier keys. We then call into WebInspector.alterNumberInRange() to
apply the change amount to the associated CodeMirror editor.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._mouseWasReleased):
Handles "mouseup" events, simply exiting the "dragging" state and resetting other
parameters we would have customized as a result of the drag-to-adjust interaction.
(WebInspector.CodeMirrorDragToAlterNumberController.prototype._reset):
Resetting some parameters we would have customized as a result of the drag-to-adjust
interaction.
- UserInterface/Main.html:
Include the new CodeMirrorDragToAlterNumberController.{js|css} files.
- UserInterface/Main.js:
(WebInspector.elementDragStart):
(WebInspector.elementDragEnd):
Add an extra parameter to elementDragStart() such that the caller may specify the event
target for the "mousemove" and "mouseup" events.
- 8:44 AM Changeset in webkit [153086] by
-
- 2 edits in trunk/Source/WebCore
WebVTTParser's identifier buffering can ignore subsequent lines
https://bugs.webkit.org/show_bug.cgi?id=118483
Patch by Brendan Long <b.long@cablelabs.com> on 2013-07-24
Reviewed by Eric Carlson.
No new tests since this bug can't be reproduced in layout tests.
- html/track/WebVTTParser.cpp:
(WebCore::WebVTTParser::parseBytes): Only buffer the identifier if we haven't read an entire line.
- 8:27 AM Changeset in webkit [153085] by
-
- 7 edits in trunk
[GTK] TestInspectorServer unit test is timing out
https://bugs.webkit.org/show_bug.cgi?id=105866
Patch by Anton Obzhirov <Anton Obzhirov> on 2013-07-24
Reviewed by Gustavo Noronha Silva.
Source/WebKit2:
The test failed because it couldn't find inspector resources in default folder
(make install step was missing). It uses now resources available in
WebKitBuild folder. WebInspectorServerGtk was refactored as well to make
easier to use WEBKIT_INSPECTOR_SERVER_PATH variable.
- UIProcess/API/gtk/tests/GNUmakefile.am:
- UIProcess/API/gtk/tests/InspectorTestServer.cpp:
(main):
- UIProcess/API/gtk/tests/TestInspectorServer.cpp:
(testInspectorServerPageList):
- UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp:
(WebKit::WebInspectorServer::platformResourceForPath):
(WebKit::WebInspectorServer::buildPageList):
(WebKit::WebInspectorServer::inspectorServerFilesPath):
Tools:
- Scripts/run-gtk-tests:
(TestRunner):
- 7:53 AM Changeset in webkit [153084] by
-
- 2 edits in trunk/Tools
[GTK] [WK2] Handle wheel event with delta zero
https://bugs.webkit.org/show_bug.cgi?id=118973
Patch by Anton Obzhirov <Anton Obzhirov> on 2013-07-24
Reviewed by Gustavo Noronha Silva.
Added handling of zero mouse scroll deltas in EventSenderProxy similar
to WK1 and Qt/EFL ports.
fast/events/platform-wheelevent-with-delta-zero-crash.html is no longer
failing on WK2.
- WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
(WTR::EventSenderProxy::mouseScrollBy):
- 5:52 AM Changeset in webkit [153083] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Add expectations for flaky test.
- platform/gtk/TestExpectations: Mark svg/stroke/non-scaling-stroke-pattern.svg
as flaky.
- 4:34 AM Changeset in webkit [153082] by
-
- 2 edits in trunk/Source/ThirdParty/ANGLE
Unreviewed. Setting the svn:eol-style=native property on the ANGLE.sln file.
- src/ANGLE.sln: Added property svn:eol-style.
- 3:35 AM Changeset in webkit [153081] by
-
- 2 edits in trunk/Source/ThirdParty/ANGLE
[Qt] Buildfix after r153064. Add Uniform files to the Target.pri.
Patch by Gabor Abraham <abrhm@inf.u-szeged.hu> on 2013-07-24
Reviewed by Csaba Osztrogonác.
- Target.pri:
- 2:57 AM Changeset in webkit [153080] by
-
- 2 edits in trunk
[EFL][CMAKE] Fix wrong syntax about option commands
https://bugs.webkit.org/show_bug.cgi?id=119035
Reviewed by Christophe Dumez.
second argument of cmake option command should be description.
- Source/cmake/OptionsEfl.cmake: Added description instead of wrong initial value.
- 2:36 AM Changeset in webkit [153079] by
-
- 2 edits in trunk/LayoutTests
[EFL] Unreviewed gardening
https://bugs.webkit.org/show_bug.cgi?id=118826
Unreviewed EFL gardening.
Patch by Seokju Kwon <Seokju Kwon> on 2013-07-24
- 1:58 AM Changeset in webkit [153078] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Added expectations for flaky tests.
- platform/gtk/TestExpectations: Marked animations/resume-after-page-cache.html,
css3/calc/img-size.html and perf/nested-combined-selectors.html as flaky.
Jul 23, 2013:
- 9:54 PM Changeset in webkit [153077] by
-
- 5 edits2 copies in branches/safari-537-branch
Merged r153072. <rdar://problem/14324895>
- 9:52 PM Changeset in webkit [153076] by
-
- 6 edits in branches/safari-537-branch/Source/WebKit2
Merged r153070. <rdar://problem/14223830>
- 9:51 PM Changeset in webkit [153075] by
-
- 3 edits3 adds in trunk
DFG string concatenation optimizations might emit speculative nodes after emitting nodes that kill the original inputs
https://bugs.webkit.org/show_bug.cgi?id=119032
Reviewed by Oliver Hunt.
Source/JavaScriptCore:
It just needs some Phantom action.
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
LayoutTests:
- fast/js/dfg-strcat-over-objects-then-exit-on-it-expected.txt: Added.
- fast/js/dfg-strcat-over-objects-then-exit-on-it.html: Added.
- fast/js/script-tests/dfg-strcat-over-objects-then-exit-on-it.js: Added.
(foo):
(bar):
(x):
- 6:10 PM Changeset in webkit [153074] by
-
- 2 edits in trunk/Source/JavaScriptCore
Need ExpressionRangeInfo before ResolveForPuts in strict mode.
https://bugs.webkit.org/show_bug.cgi?id=118997.
Reviewed by Oliver Hunt.
If we add an assertion in UnlinkedCodeBlock::expressionRangeForBytecodeOffset()
to ensure that we are able to find an ExpressionRangeInfo for any given bytecode
offset, the following tests will fails:
fast/js/basic-strict-mode.html
fast/js/mozilla/strict/8.7.2.html
With this fix, those tests will no longer fail.
- bytecompiler/NodesCodegen.cpp:
(JSC::AssignResolveNode::emitBytecode):
(JSC::ForInNode::emitBytecode):
- Emit expression info before calls to emitResolveBaseForPut() when in strict mode.
- 5:56 PM Changeset in webkit [153073] by
-
- 6 edits in trunk
Added ExpressionRangeInfo for BinaryOpNodes that can throw exceptions
due to type coersion.
https://bugs.webkit.org/show_bug.cgi?id=116853.
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
- bytecompiler/NodesCodegen.cpp:
(JSC::BinaryOpNode::emitBytecode):
- Added expression info for the strcat and the general binary op cases. I did not add expression info for the "compare with null" case because that comparison cannot trigger type coersion, and hence it won't throw any exceptions and doesn't need the expression info.
LayoutTests:
Added the test case from bugzilla which exercises the general binary op
type coersion case, plus another for exercising the strcat case.
- fast/js/line-column-numbers-expected.txt:
- fast/js/line-column-numbers.html:
- fast/js/script-tests/line-column-numbers.js:
- 5:53 PM Changeset in webkit [153072] by
-
- 5 edits2 adds in trunk
REGRESSION(r150867): FrameView auto-sizing + delegate denied image load may cause StyleResolver to re-enter itself.
<rdar://problem/14324895>
<http://webkit.org/b/119023>
Reviewed by Simon Fraser.
Source/WebCore:
The bug happened when FrameView::autoSizeIfEnabled() was getting called below FrameLoader::checkCompleted()
triggered by an incorrect loadDone() callback originating in SubresourceLoader::didCancel().
- css/StyleResolver.cpp:
(WebCore::StyleResolver::loadPendingResources):
Add an assertion that this function is not getting re-entered. If a similar bug occurs
in the future, this will help the lucky person debugging.
- loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didCancel):
Don't notifyDone() if the SubresourceLoader is in Uninitialized state.
Tools:
Add a test for this rather specific problem.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm: Added.
(TestWebKitAPI::TEST):
- TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing_Bundle.cpp: Added.
(TestWebKitAPI::DenyWillSendRequestTest::DenyWillSendRequestTest):
(TestWebKitAPI::DenyWillSendRequestTest::willSendRequestForFrame):
(TestWebKitAPI::DenyWillSendRequestTest::didCreatePage):
- 5:41 PM Changeset in webkit [153071] by
-
- 8 edits in trunk/Source/JavaScriptCore
Removed unused sourceOffset from JSTokenLocation.
https://bugs.webkit.org/show_bug.cgi?id=118996.
Reviewed by Geoffrey Garen.
This also removes the assertion reported in the bug because it is now
moot, thereby resolving the assertion failure issue on Windows.
- bytecompiler/NodesCodegen.cpp:
(JSC::ArrayNode::toArgumentList):
(JSC::ApplyFunctionCallDotNode::emitBytecode):
- parser/Lexer.cpp:
(JSC::::lex):
- parser/Lexer.h:
(JSC::::lexExpectIdentifier):
- parser/Nodes.h:
- parser/Parser.cpp:
(JSC::::Parser):
(JSC::::parseFunctionInfo):
(JSC::::parseExpressionOrLabelStatement):
(JSC::::parseMemberExpression):
- parser/Parser.h:
(JSC::::parse):
- parser/ParserTokens.h:
(JSC::JSTokenLocation::JSTokenLocation):
- 5:35 PM Changeset in webkit [153070] by
-
- 6 edits in trunk/Source/WebKit2
10.7: Java applets do not work due to sandbox violation/exception
https://bugs.webkit.org/show_bug.cgi?id=118920
<rdar://problem/14471541&12910934&14223830&14260729&14267679>
Patch by Simon Cooper <scooper@apple.com> on 2013-07-23
Reviewed by Alexey Proskuryakov.
Introduce versioning into the common profile and use it to fix
a number of issues with Java on 10.7 and 10.8. Allow writing the
com.apple.java.util.prefs preference file. This change also
introduces a "/Library/Application Support/Java/PublicFiles"
area which Java can read without any restrictions. Files written
to this location will need to be created and written to by
a privileged process.
- Resources/PlugInSandboxProfiles/com.apple.WebKit.plugin-common.sb:
- Resources/PlugInSandboxProfiles/com.oracle.java.JavaAppletPlugin.sb:
- 5:26 PM Changeset in webkit [153069] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153068. <rdar://problem/14523331>
- 4:46 PM Changeset in webkit [153068] by
-
- 2 edits in trunk/Source/WebCore
Pixel-snap the unavailable plugin indicator arrow for maximum sharpness
https://bugs.webkit.org/show_bug.cgi?id=119024
<rdar://problem/14523331>
Reviewed by Anders Carlsson.
- rendering/RenderEmbeddedObject.cpp:
(WebCore::addReplacementArrowPath):
(WebCore::RenderEmbeddedObject::getReplacementTextGeometry):
Pixel-snap the unavailable plugin indicator arrow. Snapping directions
were chosen by eye/symmetry to look best on 1x and 2x devices at
1x and 2x page scale.
- 4:42 PM Changeset in webkit [153067] by
-
- 4 edits2 adds in trunk
The computed values of fix length padding should be subpixel precision like margin
https://bugs.webkit.org/show_bug.cgi?id=118936
Reviewed by Simon Fraser.
Source/WebCore:
The bug was caused by ComputedStyleExtractor::propertyValue always returning the used value
for padding. Fixed the bug by returning the computed value when they're of fixed length.
This aligns the behaviors of getComputedStyle(~).padding~ with getComputedStyle(~).margin~,
which had been fixed in r102149. While the current CSSOM specification says getComputedStyle
should return the used values for margins when display property is set to anything but none,
new behavior matches that of Chrome, Firefox, and Internet Explorer.
Also extracted zoomAdjustedPaddingOrMarginPixelValue to reduce the code duplication.
Test: fast/css/getComputedStyle/getComputedStyle-padding-margin-subpixel-length.html
- css/CSSComputedStyleDeclaration.cpp:
(WebCore::zoomAdjustedPaddingOrMarginPixelValue): Extracted.
(WebCore::ComputedStyleExtractor::propertyValue):
LayoutTests:
Add a regression test for obtaining the computed values of floating point padding and margin.
They shouldn't be rounded to whole pixels.
- fast/css/getComputedStyle/getComputedStyle-padding-margin-subpixel-length-expected.txt: Added.
- fast/css/getComputedStyle/getComputedStyle-padding-margin-subpixel-length.html: Added.
- fast/shapes/shape-inside/shape-inside-shape-logical-top-expected.html: Use a different technique to detect
the subpixel layout since paddings
- 3:51 PM Changeset in webkit [153066] by
-
- 6 edits2 copies in branches/safari-537-branch
Merged r153060. <rdar://problem/14478260>
- 3:49 PM Changeset in webkit [153065] by
-
- 7 edits3 copies in branches/safari-537-branch
Merged r153003. <rdar://problem/14403809>
- 3:35 PM Changeset in webkit [153064] by
-
- 57 edits185 adds2 deletes in trunk/Source
Source/ThirdParty/ANGLE: Updated ANGLE to latest git commit (047373aa3eb408be62be52ade840fa5f11e72337).
Added missing ANGLE files except unused tests, extensions, samples, build, and .git directories.
Ran Bison after making some changes to fix compile errors (see below).
https://bugs.webkit.org/show_bug.cgi?id=118550
Reviewed by Dean Jackson.
- ANGLE.plist: Updated from svn to git.
- ANGLE.xcodeproj/project.pbxproj: Renamed DetectRecursion to DetectCallDepth.
- AUTHORS: Added.
- CONTRIBUTORS: Added.
- DEPS: Added.
- GNUmakefile.am: Renamed DetectRecursion to DetectCallDepth and added Uniform.cpp.
- LICENSE: Added.
- README.chromium: Added.
- Target.pri: Renamed DetectRecursion to DetectCallDepth.
- codereview.settings: Added.
- include/EGL/eglext.h:
- include/GLES2/gl2ext.h:
- include/GLSLANG/ShaderLang.h:
- src/ANGLE.sln: Added.
- src/build_angle.gyp: Added.
- src/build_angle.gypi: Added.
- src/common/RefCountObject.cpp:
- src/common/angleutils.h:
(ArraySize):
(SafeRelease):
- src/common/debug.cpp:
- src/common/debug.h:
- src/common/system.h:
- src/common/version.h:
- src/compiler/64bit-lexer-safety.patch: Added.
- src/compiler/BaseTypes.h:
(getQualifierString):
- src/compiler/CodeGenHLSL.cpp:
(ConstructCompiler):
- src/compiler/Common.h:
- src/compiler/Compiler.cpp:
(TCompiler::TCompiler):
(TCompiler::Init):
(TCompiler::compile):
(TCompiler::InitBuiltInSymbolTable):
(TCompiler::detectCallDepth):
(TCompiler::limitExpressionComplexity):
(TCompiler::getResources):
- src/compiler/ConstantUnion.h:
(ConstantUnion::ConstantUnion):
- src/compiler/DetectCallDepth.cpp: Added.
(DetectCallDepth::FunctionNode::FunctionNode):
(DetectCallDepth::FunctionNode::getName):
(DetectCallDepth::FunctionNode::addCallee):
(DetectCallDepth::FunctionNode::detectCallDepth):
(DetectCallDepth::FunctionNode::reset):
(DetectCallDepth::DetectCallDepth):
(DetectCallDepth::~DetectCallDepth):
(DetectCallDepth::visitAggregate):
(DetectCallDepth::checkExceedsMaxDepth):
(DetectCallDepth::resetFunctionNodes):
(DetectCallDepth::detectCallDepthForFunction):
(DetectCallDepth::detectCallDepth):
(DetectCallDepth::findFunctionByName):
- src/compiler/DetectCallDepth.h: Added.
(DetectCallDepth::getInfoSink):
- src/compiler/DetectRecursion.cpp: Removed.
- src/compiler/DetectRecursion.h: Removed.
- src/compiler/Diagnostics.cpp:
(TDiagnostics::writeInfo):
- src/compiler/ForLoopUnroll.cpp:
(ForLoopUnroll::evaluateIntConstant):
- src/compiler/InfoSink.cpp:
(TInfoSinkBase::prefix):
(TInfoSinkBase::location):
(TInfoSinkBase::message):
- src/compiler/InfoSink.h:
- src/compiler/Initialize.cpp:
(InsertBuiltInFunctions):
(IdentifyBuiltIns):
(InitExtensionBehavior):
- src/compiler/Initialize.h:
- src/compiler/Intermediate.cpp:
(TIntermediate::addSymbol):
(TIntermediate::addBinaryMath):
(TIntermediate::addAssign):
(TIntermediate::addIndex):
(TIntermediate::addUnaryMath):
(TIntermediate::setAggregateOperator):
(TIntermediate::addConversion):
(TIntermediate::growAggregate):
(TIntermediate::makeAggregate):
(TIntermediate::addSelection):
(TIntermediate::addComma):
(TIntermediate::addConstantUnion):
(TIntermediate::addSwizzle):
(TIntermediate::addLoop):
(TIntermediate::addBranch):
(TIntermUnary::promote):
(TIntermBinary::promote):
(CompareStruct):
(CompareStructure):
(TIntermConstantUnion::fold): Added implied static_casts to fix compiling errors on Mac.
(TIntermediate::promoteConstantUnion):
- src/compiler/OutputGLSL.cpp:
(TOutputGLSL::visitSymbol):
- src/compiler/OutputGLSL.h:
- src/compiler/OutputGLSLBase.cpp:
(TOutputGLSLBase::writeVariableType):
(TOutputGLSLBase::writeConstantUnion):
(TOutputGLSLBase::visitBinary):
(TOutputGLSLBase::visitAggregate):
(TOutputGLSLBase::getTypeName):
(TOutputGLSLBase::structDeclared):
(TOutputGLSLBase::declareStruct):
- src/compiler/OutputGLSLBase.h:
- src/compiler/OutputHLSL.cpp:
(sh::OutputHLSL::OutputHLSL):
(sh::OutputHLSL::getUniforms):
(sh::OutputHLSL::header):
(sh::OutputHLSL::visitSymbol):
(sh::OutputHLSL::visitBinary):
(sh::OutputHLSL::visitAggregate):
(sh::OutputHLSL::visitSelection):
(sh::OutputHLSL::visitLoop):
(sh::OutputHLSL::handleExcessiveLoop):
(sh::OutputHLSL::argumentString):
(sh::OutputHLSL::typeString):
(sh::OutputHLSL::textureString):
(sh::OutputHLSL::initializer):
(sh::OutputHLSL::addConstructor):
(sh::OutputHLSL::writeConstantUnion):
(sh::OutputHLSL::decorateUniform):
(sh::OutputHLSL::decorateField):
(sh::OutputHLSL::registerString):
(sh::OutputHLSL::samplerRegister):
(sh::OutputHLSL::uniformRegister):
(sh::OutputHLSL::declareUniform):
(sh::OutputHLSL::glVariableType):
(sh::OutputHLSL::glVariablePrecision):
- src/compiler/OutputHLSL.h:
- src/compiler/ParseHelper.cpp:
(TParseContext::parseVectorFields):
(TParseContext::parseMatrixFields):
(TParseContext::error):
(TParseContext::warning):
(TParseContext::assignError):
(TParseContext::unaryOpError):
(TParseContext::binaryOpError):
(TParseContext::precisionErrorCheck):
(TParseContext::lValueErrorCheck):
(TParseContext::globalErrorCheck):
(TParseContext::reservedErrorCheck):
(TParseContext::constructorErrorCheck):
(TParseContext::voidErrorCheck):
(TParseContext::boolErrorCheck):
(TParseContext::samplerErrorCheck):
(TParseContext::structQualifierErrorCheck):
(TParseContext::parameterSamplerErrorCheck):
(TParseContext::containsSampler):
(TParseContext::arraySizeErrorCheck):
(TParseContext::arrayQualifierErrorCheck):
(TParseContext::arrayTypeErrorCheck):
(TParseContext::arrayErrorCheck):
(TParseContext::nonInitConstErrorCheck):
(TParseContext::nonInitErrorCheck):
(TParseContext::paramErrorCheck):
(TParseContext::extensionErrorCheck):
(TParseContext::isExtensionEnabled):
Replaced auto with std::map<std::string, TBehavior>::const_iterator to fix Qt and EFL compiling errors.
(TParseContext::findFunction):
(TParseContext::executeInitializer):
(TParseContext::addConstructor):
(TParseContext::constructBuiltIn):
(TParseContext::constructStruct):
(TParseContext::addConstVectorNode):
(TParseContext::addConstMatrixNode):
(TParseContext::addConstArrayNode):
(TParseContext::addConstStruct):
(TParseContext::enterStructDeclaration):
(TParseContext::structNestingErrorCheck):
(TParseContext::addIndexExpression):
- src/compiler/ParseHelper.h:
(TParseContext::TParseContext):
(TParseContext::pragma):
- src/compiler/PoolAlloc.cpp:
(TPoolAllocator::allocate):
- src/compiler/ShHandle.h:
(TShHandleBase::getAsTranslatorHLSL):
- src/compiler/ShaderLang.cpp:
(ShInitBuiltInResources):
(ShGetInfoPointer):
- src/compiler/SymbolTable.cpp:
(TType::TType):
(TType::buildMangledName):
(TType::getObjectSize):
(TStructure::containsArrays):
(TStructure::buildMangledName):
(TStructure::calculateObjectSize):
(TStructure::calculateDeepestNesting):
(TSymbolTableLevel::relateToExtension):
- src/compiler/SymbolTable.h:
(TSymbol::relateToExtension):
(TSymbol::getExtension):
(TVariable::TVariable):
(TVariable::setQualifier):
(TVariable::shareConstPointer):
(TSymbolTableLevel::insert):
(TSymbolTable::insertConstInt):
(TSymbolTable::insertBuiltIn):
- src/compiler/TranslatorHLSL.cpp:
(TranslatorHLSL::TranslatorHLSL):
(TranslatorHLSL::translate):
- src/compiler/TranslatorHLSL.h:
(TranslatorHLSL::getAsTranslatorHLSL):
(TranslatorHLSL::getUniforms):
- src/compiler/Types.h: Removed enum bit fields to fix gcc compiler errors.
(TField::TField):
(TField::type):
(TField::name):
(NewPoolTFieldList):
(TStructure::TStructure):
(TStructure::name):
(TStructure::fields):
(TStructure::mangledName):
(TStructure::objectSize):
(TStructure::deepestNesting):
(TType::TType):
(TType::elementRegisterCount):
(TType::totalRegisterCount):
(TType::clearArrayness):
(TType::getStruct):
(TType::setStruct):
(TType::getMangledName):
(TType::getDeepestStructNesting):
(TType::isStructureContainingArrays):
(TPublicType::setBasic):
- src/compiler/Uniform.cpp: Added.
(sh::Uniform::Uniform):
- src/compiler/Uniform.h: Added.
- src/compiler/VariableInfo.cpp:
(getUserDefinedVariableInfo):
- src/compiler/glslang.l:
- src/compiler/glslang.y: Moved YYLTYPE definition into %union to work with Bison 2.3.
- src/compiler/glslang_lex.cpp:
(yy_get_previous_state):
(yy_try_NUL_trans):
(yyget_lloc):
(yyset_lloc):
(string_input):
(check_type):
(reserved_word):
(glslang_scan):
- src/compiler/glslang_tab.cpp:
(yyerror):
- src/compiler/glslang_tab.h:
- src/compiler/intermOut.cpp:
(TOutputTraverser::visitUnary):
(TOutputTraverser::visitAggregate):
(TOutputTraverser::visitConstantUnion):
- src/compiler/intermediate.h:
(TIntermNode::TIntermNode):
(TIntermNode::~TIntermNode):
(TIntermNode::getLine):
(TIntermNode::setLine):
(TIntermNode::getAsLoopNode):
(TIntermTyped::totalRegisterCount):
(TIntermTyped::elementRegisterCount):
(TIntermTyped::getArraySize):
(TIntermConstantUnion::getIConst):
(TIntermConstantUnion::getFConst):
(TIntermConstantUnion::getBConst):
(TIntermAggregate::TIntermAggregate):
(TIntermTraverser::TIntermTraverser):
(TIntermTraverser::getMaxDepth):
(TIntermTraverser::incrementDepth):
- src/compiler/localintermediate.h:
- src/compiler/parseConst.cpp:
(TConstTraverser::visitSymbol):
(TConstTraverser::visitBinary):
(TConstTraverser::visitUnary):
(TConstTraverser::visitAggregate):
(TConstTraverser::visitSelection):
(TConstTraverser::visitConstantUnion):
(TConstTraverser::visitLoop):
(TConstTraverser::visitBranch):
(TIntermediate::parseConstTree):
- src/compiler/preprocessor/64bit-tokenizer-safety.patch: Added.
- src/compiler/preprocessor/Tokenizer.cpp:
(yy_get_previous_state):
(yy_try_NUL_trans):
- src/compiler/preprocessor/Tokenizer.l:
- src/compiler/preprocessor/preprocessor.vcxproj: Added.
- src/compiler/preprocessor/preprocessor.vcxproj.filters: Added.
- src/compiler/timing/RestrictVertexShaderTiming.cpp:
(RestrictVertexShaderTiming::visitSymbol):
- src/compiler/translator_common.vcxproj: Added.
- src/compiler/translator_common.vcxproj.filters: Added.
- src/compiler/translator_hlsl.vcxproj: Added.
- src/compiler/translator_hlsl.vcxproj.filters: Added.
- src/libEGL/Config.cpp: Added.
(egl::Config::Config):
(egl::Config::getHandle):
(egl::SortConfig::SortConfig):
(egl::SortConfig::scanForWantedComponents):
(egl::SortConfig::wantedComponentsSize):
(egl::SortConfig::operator()):
(egl::ConfigSet::ConfigSet):
(egl::ConfigSet::add):
(egl::ConfigSet::size):
(egl::ConfigSet::getConfigs):
(egl::ConfigSet::get):
- src/libEGL/Config.h: Added.
- src/libEGL/Display.cpp: Added.
(egl::Display::getDisplay):
(egl::Display::Display):
(egl::Display::~Display):
(egl::Display::initialize):
(egl::Display::terminate):
(egl::Display::getConfigs):
(egl::Display::getConfigAttrib):
(egl::Display::createWindowSurface):
(egl::Display::createOffscreenSurface):
(egl::Display::createContext):
(egl::Display::restoreLostDevice):
(egl::Display::destroySurface):
(egl::Display::destroyContext):
(egl::Display::notifyDeviceLost):
(egl::Display::recreateSwapChains):
(egl::Display::isInitialized):
(egl::Display::isValidConfig):
(egl::Display::isValidContext):
(egl::Display::isValidSurface):
(egl::Display::hasExistingWindowSurface):
(egl::Display::initExtensionString):
(egl::Display::getExtensionString):
(egl::Display::initVendorString):
(egl::Display::getVendorString):
- src/libEGL/Display.h: Added.
(egl::Display::getRenderer):
- src/libEGL/Surface.cpp: Added.
(egl::Surface::Surface):
(egl::Surface::~Surface):
(egl::Surface::initialize):
(egl::Surface::release):
(egl::Surface::resetSwapChain):
(egl::Surface::resizeSwapChain):
(egl::Surface::swapRect):
(egl::Surface::getWindowHandle):
(egl::SurfaceWindowProc):
(egl::Surface::subclassWindow):
(egl::Surface::unsubclassWindow):
(egl::Surface::checkForOutOfDateSwapChain):
(egl::Surface::swap):
(egl::Surface::postSubBuffer):
(egl::Surface::getWidth):
(egl::Surface::getHeight):
(egl::Surface::isPostSubBufferSupported):
(egl::Surface::getSwapChain):
(egl::Surface::setSwapInterval):
(egl::Surface::getTextureFormat):
(egl::Surface::getTextureTarget):
(egl::Surface::setBoundTexture):
(egl::Surface::getBoundTexture):
(egl::Surface::getFormat):
- src/libEGL/Surface.h: Added.
- src/libEGL/libEGL.cpp: Added.
(validateDisplay):
(validateConfig):
(validateContext):
(validateSurface):
- src/libEGL/libEGL.def: Added.
- src/libEGL/libEGL.rc: Added.
- src/libEGL/libEGL.vcxproj: Added.
- src/libEGL/libEGL.vcxproj.filters: Added.
- src/libEGL/main.cpp: Added.
(DllMain):
(egl::setCurrentError):
(egl::getCurrentError):
(egl::setCurrentAPI):
(egl::getCurrentAPI):
(egl::setCurrentDisplay):
(egl::getCurrentDisplay):
(egl::setCurrentDrawSurface):
(egl::getCurrentDrawSurface):
(egl::setCurrentReadSurface):
(egl::getCurrentReadSurface):
(egl::error):
- src/libEGL/main.h: Added.
(egl::error):
(egl::success):
- src/libEGL/resource.h: Added.
- src/libGLESv2/BinaryStream.h: Added.
(gl::BinaryInputStream::BinaryInputStream):
(gl::BinaryInputStream::read):
(gl::BinaryInputStream::skip):
(gl::BinaryInputStream::offset):
(gl::BinaryInputStream::error):
(gl::BinaryInputStream::endOfStream):
(gl::BinaryOutputStream::BinaryOutputStream):
(gl::BinaryOutputStream::write):
(gl::BinaryOutputStream::length):
(gl::BinaryOutputStream::data):
- src/libGLESv2/Buffer.cpp: Added.
(gl::Buffer::Buffer):
(gl::Buffer::~Buffer):
(gl::Buffer::bufferData):
(gl::Buffer::bufferSubData):
(gl::Buffer::getStorage):
(gl::Buffer::size):
(gl::Buffer::usage):
(gl::Buffer::getStaticVertexBuffer):
(gl::Buffer::getStaticIndexBuffer):
(gl::Buffer::invalidateStaticData):
(gl::Buffer::promoteStaticUsage):
- src/libGLESv2/Buffer.h: Added.
- src/libGLESv2/Context.cpp: Added.
(gl::makeStaticString):
(gl::Context::Context):
(gl::Context::~Context):
(gl::Context::makeCurrent):
(gl::Context::markContextLost):
(gl::Context::isContextLost):
(gl::Context::setClearColor):
(gl::Context::setClearDepth):
(gl::Context::setClearStencil):
(gl::Context::setCullFace):
(gl::Context::isCullFaceEnabled):
(gl::Context::setCullMode):
(gl::Context::setFrontFace):
(gl::Context::setDepthTest):
(gl::Context::isDepthTestEnabled):
(gl::Context::setDepthFunc):
(gl::Context::setDepthRange):
(gl::Context::setBlend):
(gl::Context::isBlendEnabled):
(gl::Context::setBlendFactors):
(gl::Context::setBlendColor):
(gl::Context::setBlendEquation):
(gl::Context::setStencilTest):
(gl::Context::isStencilTestEnabled):
(gl::Context::setStencilParams):
(gl::Context::setStencilBackParams):
(gl::Context::setStencilWritemask):
(gl::Context::setStencilBackWritemask):
(gl::Context::setStencilOperations):
(gl::Context::setStencilBackOperations):
(gl::Context::setPolygonOffsetFill):
(gl::Context::isPolygonOffsetFillEnabled):
(gl::Context::setPolygonOffsetParams):
(gl::Context::setSampleAlphaToCoverage):
(gl::Context::isSampleAlphaToCoverageEnabled):
(gl::Context::setSampleCoverage):
(gl::Context::isSampleCoverageEnabled):
(gl::Context::setSampleCoverageParams):
(gl::Context::setScissorTest):
(gl::Context::isScissorTestEnabled):
(gl::Context::setDither):
(gl::Context::isDitherEnabled):
(gl::Context::setLineWidth):
(gl::Context::setGenerateMipmapHint):
(gl::Context::setFragmentShaderDerivativeHint):
(gl::Context::setViewportParams):
(gl::Context::setScissorParams):
(gl::Context::setColorMask):
(gl::Context::setDepthMask):
(gl::Context::setActiveSampler):
(gl::Context::getReadFramebufferHandle):
(gl::Context::getDrawFramebufferHandle):
(gl::Context::getRenderbufferHandle):
(gl::Context::getArrayBufferHandle):
(gl::Context::getActiveQuery):
(gl::Context::setEnableVertexAttribArray):
(gl::Context::getVertexAttribState):
(gl::Context::setVertexAttribState):
(gl::Context::getVertexAttribPointer):
(gl::Context::setPackAlignment):
(gl::Context::getPackAlignment):
(gl::Context::setUnpackAlignment):
(gl::Context::getUnpackAlignment):
(gl::Context::setPackReverseRowOrder):
(gl::Context::getPackReverseRowOrder):
(gl::Context::createBuffer):
(gl::Context::createProgram):
(gl::Context::createShader):
(gl::Context::createTexture):
(gl::Context::createRenderbuffer):
(gl::Context::createFramebuffer):
(gl::Context::createFence):
(gl::Context::createQuery):
(gl::Context::deleteBuffer):
(gl::Context::deleteShader):
(gl::Context::deleteProgram):
(gl::Context::deleteTexture):
(gl::Context::deleteRenderbuffer):
(gl::Context::deleteFramebuffer):
(gl::Context::deleteFence):
(gl::Context::deleteQuery):
(gl::Context::getBuffer):
(gl::Context::getShader):
(gl::Context::getProgram):
(gl::Context::getTexture):
(gl::Context::getRenderbuffer):
(gl::Context::getReadFramebuffer):
(gl::Context::getDrawFramebuffer):
(gl::Context::bindArrayBuffer):
(gl::Context::bindElementArrayBuffer):
(gl::Context::bindTexture2D):
(gl::Context::bindTextureCubeMap):
(gl::Context::bindReadFramebuffer):
(gl::Context::bindDrawFramebuffer):
(gl::Context::bindRenderbuffer):
(gl::Context::useProgram):
(gl::Context::linkProgram):
(gl::Context::setProgramBinary):
(gl::Context::beginQuery):
(gl::Context::endQuery):
(gl::Context::setFramebufferZero):
(gl::Context::setRenderbufferStorage):
(gl::Context::getFramebuffer):
(gl::Context::getFence):
(gl::Context::getQuery):
(gl::Context::getArrayBuffer):
(gl::Context::getElementArrayBuffer):
(gl::Context::getCurrentProgramBinary):
(gl::Context::getTexture2D):
(gl::Context::getTextureCubeMap):
(gl::Context::getSamplerTexture):
(gl::Context::getBooleanv):
(gl::Context::getFloatv):
(gl::Context::getIntegerv):
(gl::Context::getQueryParameterInfo):
(gl::Context::applyRenderTarget):
(gl::Context::applyState):
(gl::Context::applyShaders):
(gl::Context::applyTextures):
(gl::Context::readPixels):
(gl::Context::clear):
(gl::Context::drawArrays):
(gl::Context::drawElements):
(gl::Context::sync):
(gl::Context::recordInvalidEnum):
(gl::Context::recordInvalidValue):
(gl::Context::recordInvalidOperation):
(gl::Context::recordOutOfMemory):
(gl::Context::recordInvalidFramebufferOperation):
(gl::Context::getError):
(gl::Context::getResetStatus):
(gl::Context::isResetNotificationEnabled):
(gl::Context::getMajorShaderModel):
(gl::Context::getMaximumPointSize):
(gl::Context::getMaximumCombinedTextureImageUnits):
(gl::Context::getMaxSupportedSamples):
(gl::Context::getMaximumRenderTargets):
(gl::Context::supportsEventQueries):
(gl::Context::supportsOcclusionQueries):
(gl::Context::supportsBGRATextures):
(gl::Context::supportsDXT1Textures):
(gl::Context::supportsDXT3Textures):
(gl::Context::supportsDXT5Textures):
(gl::Context::supportsFloat32Textures):
(gl::Context::supportsFloat32LinearFilter):
(gl::Context::supportsFloat32RenderableTextures):
(gl::Context::supportsFloat16Textures):
(gl::Context::supportsFloat16LinearFilter):
(gl::Context::supportsFloat16RenderableTextures):
(gl::Context::getMaximumRenderbufferDimension):
(gl::Context::getMaximumTextureDimension):
(gl::Context::getMaximumCubeTextureDimension):
(gl::Context::getMaximumTextureLevel):
(gl::Context::supportsLuminanceTextures):
(gl::Context::supportsLuminanceAlphaTextures):
(gl::Context::supportsDepthTextures):
(gl::Context::supports32bitIndices):
(gl::Context::supportsNonPower2Texture):
(gl::Context::supportsInstancing):
(gl::Context::supportsTextureFilterAnisotropy):
(gl::Context::getTextureMaxAnisotropy):
(gl::Context::getCurrentReadFormatType):
(gl::Context::detachBuffer):
(gl::Context::detachTexture):
(gl::Context::detachFramebuffer):
(gl::Context::detachRenderbuffer):
(gl::Context::getIncompleteTexture):
(gl::Context::skipDraw):
(gl::Context::setVertexAttrib):
(gl::Context::setVertexAttribDivisor):
(gl::Context::initExtensionString):
(gl::Context::getExtensionString):
(gl::Context::initRendererString):
(gl::Context::getRendererString):
(gl::Context::blitFramebuffer):
- src/libGLESv2/Context.h: Added.
(gl::VertexAttribute::VertexAttribute):
(gl::VertexAttribute::typeSize):
(gl::VertexAttribute::stride):
- src/libGLESv2/Fence.cpp: Added.
(gl::Fence::Fence):
(gl::Fence::~Fence):
(gl::Fence::isFence):
(gl::Fence::setFence):
(gl::Fence::testFence):
(gl::Fence::finishFence):
(gl::Fence::getFenceiv):
- src/libGLESv2/Fence.h: Added.
- src/libGLESv2/Float16ToFloat32.cpp: Added.
(gl::float16ToFloat32):
- src/libGLESv2/Float16ToFloat32.py: Added.
(convertMantissa):
(convertExponent):
(convertOffset):
- src/libGLESv2/Framebuffer.cpp: Added.
(gl::Framebuffer::Framebuffer):
(gl::Framebuffer::~Framebuffer):
(gl::Framebuffer::lookupRenderbuffer):
(gl::Framebuffer::setColorbuffer):
(gl::Framebuffer::setDepthbuffer):
(gl::Framebuffer::setStencilbuffer):
(gl::Framebuffer::detachTexture):
(gl::Framebuffer::detachRenderbuffer):
(gl::Framebuffer::getRenderTargetSerial):
(gl::Framebuffer::getDepthbufferSerial):
(gl::Framebuffer::getStencilbufferSerial):
(gl::Framebuffer::getColorbuffer):
(gl::Framebuffer::getDepthbuffer):
(gl::Framebuffer::getStencilbuffer):
(gl::Framebuffer::getDepthOrStencilbuffer):
(gl::Framebuffer::getReadColorbuffer):
(gl::Framebuffer::getReadColorbufferType):
(gl::Framebuffer::getFirstColorbuffer):
(gl::Framebuffer::getColorbufferType):
(gl::Framebuffer::getDepthbufferType):
(gl::Framebuffer::getStencilbufferType):
(gl::Framebuffer::getColorbufferHandle):
(gl::Framebuffer::getDepthbufferHandle):
(gl::Framebuffer::getStencilbufferHandle):
(gl::Framebuffer::getDrawBufferState):
(gl::Framebuffer::setDrawBufferState):
(gl::Framebuffer::isEnabledColorAttachment):
(gl::Framebuffer::hasEnabledColorAttachment):
(gl::Framebuffer::hasStencil):
(gl::Framebuffer::usingExtendedDrawBuffers):
(gl::Framebuffer::completeness):
(gl::DefaultFramebuffer::DefaultFramebuffer):
(gl::Framebuffer::getSamples):
(gl::DefaultFramebuffer::completeness):
- src/libGLESv2/Framebuffer.h: Added.
- src/libGLESv2/HandleAllocator.cpp: Added.
(gl::HandleAllocator::HandleAllocator):
(gl::HandleAllocator::~HandleAllocator):
(gl::HandleAllocator::setBaseHandle):
(gl::HandleAllocator::allocate):
(gl::HandleAllocator::release):
- src/libGLESv2/HandleAllocator.h: Added.
- src/libGLESv2/Program.cpp: Added.
(gl::AttributeBindings::AttributeBindings):
(gl::AttributeBindings::~AttributeBindings):
(gl::InfoLog::InfoLog):
(gl::InfoLog::~InfoLog):
(gl::InfoLog::getLength):
(gl::InfoLog::getLog):
(gl::InfoLog::appendSanitized):
(gl::InfoLog::append):
(gl::InfoLog::reset):
(gl::Program::Program):
(gl::Program::~Program):
(gl::Program::attachShader):
(gl::Program::detachShader):
(gl::Program::getAttachedShadersCount):
(gl::AttributeBindings::bindAttributeLocation):
(gl::Program::bindAttributeLocation):
(gl::Program::link):
(gl::AttributeBindings::getAttributeBinding):
(gl::Program::unlink):
(gl::Program::isLinked):
(gl::Program::getProgramBinary):
(gl::Program::setProgramBinary):
(gl::Program::release):
(gl::Program::addRef):
(gl::Program::getRefCount):
(gl::Program::getProgramBinaryLength):
(gl::Program::getInfoLogLength):
(gl::Program::getInfoLog):
(gl::Program::getAttachedShaders):
(gl::Program::getActiveAttribute):
(gl::Program::getActiveAttributeCount):
(gl::Program::getActiveAttributeMaxLength):
(gl::Program::getActiveUniform):
(gl::Program::getActiveUniformCount):
(gl::Program::getActiveUniformMaxLength):
(gl::Program::flagForDeletion):
(gl::Program::isFlaggedForDeletion):
(gl::Program::validate):
(gl::Program::isValidated):
- src/libGLESv2/Program.h: Added.
- src/libGLESv2/ProgramBinary.cpp: Added.
(gl::str):
(gl::UniformLocation::UniformLocation):
(gl::ProgramBinary::ProgramBinary):
(gl::ProgramBinary::~ProgramBinary):
(gl::ProgramBinary::getSerial):
(gl::ProgramBinary::issueSerial):
(gl::ProgramBinary::getPixelExecutable):
(gl::ProgramBinary::getVertexExecutable):
(gl::ProgramBinary::getGeometryExecutable):
(gl::ProgramBinary::getAttributeLocation):
(gl::ProgramBinary::getSemanticIndex):
(gl::ProgramBinary::getUsedSamplerRange):
(gl::ProgramBinary::usesPointSize):
(gl::ProgramBinary::usesPointSpriteEmulation):
(gl::ProgramBinary::usesGeometryShader):
(gl::ProgramBinary::getSamplerMapping):
(gl::ProgramBinary::getSamplerTextureType):
(gl::ProgramBinary::getUniformLocation):
(gl::ProgramBinary::setUniform1fv):
(gl::ProgramBinary::setUniform2fv):
(gl::ProgramBinary::setUniform3fv):
(gl::ProgramBinary::setUniform4fv):
(gl::transposeMatrix):
(gl::ProgramBinary::setUniformMatrix2fv):
(gl::ProgramBinary::setUniformMatrix3fv):
(gl::ProgramBinary::setUniformMatrix4fv):
(gl::ProgramBinary::setUniform1iv):
(gl::ProgramBinary::setUniform2iv):
(gl::ProgramBinary::setUniform3iv):
(gl::ProgramBinary::setUniform4iv):
(gl::ProgramBinary::getUniformfv):
(gl::ProgramBinary::getUniformiv):
(gl::ProgramBinary::dirtyAllUniforms):
(gl::ProgramBinary::applyUniforms):
(gl::ProgramBinary::packVaryings):
(gl::ProgramBinary::linkVaryings):
(gl::ProgramBinary::load):
(gl::ProgramBinary::save):
(gl::ProgramBinary::getLength):
(gl::ProgramBinary::link):
(gl::ProgramBinary::linkAttributes):
(gl::ProgramBinary::linkUniforms):
(gl::ProgramBinary::defineUniform):
(gl::ProgramBinary::generateGeometryShaderHLSL):
(gl::ProgramBinary::generatePointSpriteHLSL):
(gl::ProgramBinary::decorateAttribute):
(gl::ProgramBinary::isValidated):
(gl::ProgramBinary::getActiveAttribute):
(gl::ProgramBinary::getActiveAttributeCount):
(gl::ProgramBinary::getActiveAttributeMaxLength):
(gl::ProgramBinary::getActiveUniform):
(gl::ProgramBinary::getActiveUniformCount):
(gl::ProgramBinary::getActiveUniformMaxLength):
(gl::ProgramBinary::validate):
(gl::ProgramBinary::validateSamplers):
(gl::ProgramBinary::Sampler::Sampler):
(gl::AttributeSorter::AttributeSorter):
(gl::AttributeSorter::operator()):
(gl::ProgramBinary::sortAttributesByLayout):
- src/libGLESv2/ProgramBinary.h: Added.
(gl::UniformLocation::UniformLocation):
- src/libGLESv2/Query.cpp: Added.
(gl::Query::Query):
(gl::Query::~Query):
(gl::Query::begin):
(gl::Query::end):
(gl::Query::getResult):
(gl::Query::isResultAvailable):
(gl::Query::getType):
- src/libGLESv2/Query.h: Added.
- src/libGLESv2/Renderbuffer.cpp: Added.
(gl::RenderbufferInterface::RenderbufferInterface):
(gl::RenderbufferInterface::addProxyRef):
(gl::RenderbufferInterface::releaseProxy):
(gl::RenderbufferInterface::getRedSize):
(gl::RenderbufferInterface::getGreenSize):
(gl::RenderbufferInterface::getBlueSize):
(gl::RenderbufferInterface::getAlphaSize):
(gl::RenderbufferInterface::getDepthSize):
(gl::RenderbufferInterface::getStencilSize):
(gl::RenderbufferTexture2D::RenderbufferTexture2D):
(gl::RenderbufferTexture2D::~RenderbufferTexture2D):
(gl::RenderbufferTexture2D::addProxyRef):
(gl::RenderbufferTexture2D::releaseProxy):
(gl::RenderbufferTexture2D::getRenderTarget):
(gl::RenderbufferTexture2D::getDepthStencil):
(gl::RenderbufferTexture2D::getWidth):
(gl::RenderbufferTexture2D::getHeight):
(gl::RenderbufferTexture2D::getInternalFormat):
(gl::RenderbufferTexture2D::getActualFormat):
(gl::RenderbufferTexture2D::getSamples):
(gl::RenderbufferTexture2D::getSerial):
(gl::RenderbufferTextureCubeMap::RenderbufferTextureCubeMap):
(gl::RenderbufferTextureCubeMap::~RenderbufferTextureCubeMap):
(gl::RenderbufferTextureCubeMap::addProxyRef):
(gl::RenderbufferTextureCubeMap::releaseProxy):
(gl::RenderbufferTextureCubeMap::getRenderTarget):
(gl::RenderbufferTextureCubeMap::getDepthStencil):
(gl::RenderbufferTextureCubeMap::getWidth):
(gl::RenderbufferTextureCubeMap::getHeight):
(gl::RenderbufferTextureCubeMap::getInternalFormat):
(gl::RenderbufferTextureCubeMap::getActualFormat):
(gl::RenderbufferTextureCubeMap::getSamples):
(gl::RenderbufferTextureCubeMap::getSerial):
(gl::Renderbuffer::Renderbuffer):
(gl::Renderbuffer::~Renderbuffer):
(gl::Renderbuffer::addRef):
(gl::Renderbuffer::release):
(gl::Renderbuffer::getRenderTarget):
(gl::Renderbuffer::getDepthStencil):
(gl::Renderbuffer::getWidth):
(gl::Renderbuffer::getHeight):
(gl::Renderbuffer::getInternalFormat):
(gl::Renderbuffer::getActualFormat):
(gl::Renderbuffer::getRedSize):
(gl::Renderbuffer::getGreenSize):
(gl::Renderbuffer::getBlueSize):
(gl::Renderbuffer::getAlphaSize):
(gl::Renderbuffer::getDepthSize):
(gl::Renderbuffer::getStencilSize):
(gl::Renderbuffer::getSamples):
(gl::Renderbuffer::getSerial):
(gl::Renderbuffer::setStorage):
(gl::RenderbufferStorage::RenderbufferStorage):
(gl::RenderbufferStorage::~RenderbufferStorage):
(gl::RenderbufferStorage::getRenderTarget):
(gl::RenderbufferStorage::getDepthStencil):
(gl::RenderbufferStorage::getWidth):
(gl::RenderbufferStorage::getHeight):
(gl::RenderbufferStorage::getInternalFormat):
(gl::RenderbufferStorage::getActualFormat):
(gl::RenderbufferStorage::getSamples):
(gl::RenderbufferStorage::getSerial):
(gl::RenderbufferStorage::issueSerial):
(gl::RenderbufferStorage::issueCubeSerials):
(gl::Colorbuffer::Colorbuffer):
(gl::Colorbuffer::~Colorbuffer):
(gl::Colorbuffer::getRenderTarget):
(gl::DepthStencilbuffer::DepthStencilbuffer):
(gl::DepthStencilbuffer::~DepthStencilbuffer):
(gl::DepthStencilbuffer::getDepthStencil):
(gl::Depthbuffer::Depthbuffer):
(gl::Depthbuffer::~Depthbuffer):
(gl::Stencilbuffer::Stencilbuffer):
(gl::Stencilbuffer::~Stencilbuffer):
- src/libGLESv2/Renderbuffer.h: Added.
(gl::RenderbufferInterface::~RenderbufferInterface):
- src/libGLESv2/ResourceManager.cpp: Added.
(gl::ResourceManager::ResourceManager):
(gl::ResourceManager::~ResourceManager):
(gl::ResourceManager::addRef):
(gl::ResourceManager::release):
(gl::ResourceManager::createBuffer):
(gl::ResourceManager::createShader):
(gl::ResourceManager::createProgram):
(gl::ResourceManager::createTexture):
(gl::ResourceManager::createRenderbuffer):
(gl::ResourceManager::deleteBuffer):
(gl::ResourceManager::deleteShader):
(gl::ResourceManager::deleteProgram):
(gl::ResourceManager::deleteTexture):
(gl::ResourceManager::deleteRenderbuffer):
(gl::ResourceManager::getBuffer):
(gl::ResourceManager::getShader):
(gl::ResourceManager::getTexture):
(gl::ResourceManager::getProgram):
(gl::ResourceManager::getRenderbuffer):
(gl::ResourceManager::setRenderbuffer):
(gl::ResourceManager::checkBufferAllocation):
(gl::ResourceManager::checkTextureAllocation):
(gl::ResourceManager::checkRenderbufferAllocation):
- src/libGLESv2/ResourceManager.h: Added.
- src/libGLESv2/Shader.cpp: Added.
(gl::Shader::Shader):
(gl::Shader::~Shader):
(gl::Shader::getHandle):
(gl::Shader::setSource):
(gl::Shader::getInfoLogLength):
(gl::Shader::getInfoLog):
(gl::Shader::getSourceLength):
(gl::Shader::getTranslatedSourceLength):
(gl::Shader::getSourceImpl):
(gl::Shader::getSource):
(gl::Shader::getTranslatedSource):
(gl::Shader::getUniforms):
(gl::Shader::isCompiled):
(gl::Shader::getHLSL):
(gl::Shader::addRef):
(gl::Shader::release):
(gl::Shader::getRefCount):
(gl::Shader::isFlaggedForDeletion):
(gl::Shader::flagForDeletion):
(gl::Shader::initializeCompiler):
(gl::Shader::releaseCompiler):
(gl::Shader::parseVaryings):
(gl::Shader::resetVaryingsRegisterAssignment):
(gl::Shader::uncompile):
(gl::Shader::compileToHLSL):
(gl::Shader::parseType):
(gl::Shader::compareVarying):
(gl::VertexShader::VertexShader):
(gl::VertexShader::~VertexShader):
(gl::VertexShader::getType):
(gl::VertexShader::uncompile):
(gl::VertexShader::compile):
(gl::VertexShader::getSemanticIndex):
(gl::VertexShader::parseAttributes):
(gl::FragmentShader::FragmentShader):
(gl::FragmentShader::~FragmentShader):
(gl::FragmentShader::getType):
(gl::FragmentShader::compile):
- src/libGLESv2/Shader.h: Added.
(gl::Varying::Varying):
(gl::Attribute::Attribute):
- src/libGLESv2/Texture.cpp: Added.
(gl::Texture::Texture):
(gl::Texture::~Texture):
(gl::Texture::setMinFilter):
(gl::Texture::setMagFilter):
(gl::Texture::setWrapS):
(gl::Texture::setWrapT):
(gl::Texture::setMaxAnisotropy):
(gl::Texture::setUsage):
(gl::Texture::getMinFilter):
(gl::Texture::getMagFilter):
(gl::Texture::getWrapS):
(gl::Texture::getWrapT):
(gl::Texture::getMaxAnisotropy):
(gl::Texture::getLodOffset):
(gl::Texture::getSamplerState):
(gl::Texture::getUsage):
(gl::Texture::isMipmapFiltered):
(gl::Texture::setImage):
(gl::Texture::setCompressedImage):
(gl::Texture::subImage):
(gl::Texture::subImageCompressed):
(gl::Texture::getNativeTexture):
(gl::Texture::hasDirtyImages):
(gl::Texture::resetDirty):
(gl::Texture::getTextureSerial):
(gl::Texture::getRenderTargetSerial):
(gl::Texture::isImmutable):
(gl::Texture::creationLevels):
(gl::Texture2D::Texture2D):
(gl::Texture2D::~Texture2D):
(gl::Texture2D::addProxyRef):
(gl::Texture2D::releaseProxy):
(gl::Texture2D::getTarget):
(gl::Texture2D::getWidth):
(gl::Texture2D::getHeight):
(gl::Texture2D::getInternalFormat):
(gl::Texture2D::getActualFormat):
(gl::Texture2D::redefineImage):
(gl::Texture2D::setImage):
(gl::Texture2D::bindTexImage):
(gl::Texture2D::releaseTexImage):
(gl::Texture2D::setCompressedImage):
(gl::Texture2D::commitRect):
(gl::Texture2D::subImage):
(gl::Texture2D::subImageCompressed):
(gl::Texture2D::copyImage):
(gl::Texture2D::copySubImage):
(gl::Texture2D::storage):
(gl::Texture2D::isSamplerComplete):
(gl::Texture2D::isMipmapComplete):
(gl::Texture2D::isCompressed):
(gl::Texture2D::isDepth):
(gl::Texture2D::createTexture):
(gl::Texture2D::updateTexture):
(gl::Texture2D::convertToRenderTarget):
(gl::Texture2D::generateMipmaps):
(gl::Texture2D::getRenderbuffer):
(gl::Texture2D::getRenderTarget):
(gl::Texture2D::getDepthStencil):
(gl::Texture2D::levelCount):
(gl::Texture2D::getStorage):
(gl::TextureCubeMap::TextureCubeMap):
(gl::TextureCubeMap::~TextureCubeMap):
(gl::TextureCubeMap::addProxyRef):
(gl::TextureCubeMap::releaseProxy):
(gl::TextureCubeMap::getTarget):
(gl::TextureCubeMap::getWidth):
(gl::TextureCubeMap::getHeight):
(gl::TextureCubeMap::getInternalFormat):
(gl::TextureCubeMap::getActualFormat):
(gl::TextureCubeMap::setImagePosX):
(gl::TextureCubeMap::setImageNegX):
(gl::TextureCubeMap::setImagePosY):
(gl::TextureCubeMap::setImageNegY):
(gl::TextureCubeMap::setImagePosZ):
(gl::TextureCubeMap::setImageNegZ):
(gl::TextureCubeMap::setCompressedImage):
(gl::TextureCubeMap::commitRect):
(gl::TextureCubeMap::subImage):
(gl::TextureCubeMap::subImageCompressed):
(gl::TextureCubeMap::isSamplerComplete):
(gl::TextureCubeMap::isCubeComplete):
(gl::TextureCubeMap::isMipmapCubeComplete):
(gl::TextureCubeMap::isCompressed):
(gl::TextureCubeMap::createTexture):
(gl::TextureCubeMap::updateTexture):
(gl::TextureCubeMap::convertToRenderTarget):
(gl::TextureCubeMap::setImage):
(gl::TextureCubeMap::faceIndex):
(gl::TextureCubeMap::redefineImage):
(gl::TextureCubeMap::copyImage):
(gl::TextureCubeMap::copySubImage):
(gl::TextureCubeMap::storage):
(gl::TextureCubeMap::generateMipmaps):
(gl::TextureCubeMap::getRenderbuffer):
(gl::TextureCubeMap::getRenderTarget):
(gl::TextureCubeMap::levelCount):
(gl::TextureCubeMap::getStorage):
- src/libGLESv2/Texture.h: Added.
- src/libGLESv2/Uniform.cpp: Added.
(gl::Uniform::Uniform):
(gl::Uniform::~Uniform):
(gl::Uniform::isArray):
(gl::Uniform::elementCount):
- src/libGLESv2/Uniform.h: Added.
- src/libGLESv2/angletypes.h: Added.
- src/libGLESv2/constants.h: Added.
- src/libGLESv2/libGLESv2.cpp: Added.
(validImageSize):
(checkTextureFormatType):
(validateSubImageParams2D):
(validateSubImageParamsCube):
(validReadFormatType):
- src/libGLESv2/libGLESv2.def: Added.
- src/libGLESv2/libGLESv2.rc: Added.
- src/libGLESv2/libGLESv2.vcxproj: Added.
- src/libGLESv2/libGLESv2.vcxproj.filters: Added.
- src/libGLESv2/main.cpp: Added.
(DllMain):
(gl::makeCurrent):
(gl::getContext):
(gl::getNonLostContext):
(gl::getDisplay):
(gl::error):
- src/libGLESv2/main.h: Added.
(gl::error):
- src/libGLESv2/mathutil.h: Added.
(gl::Vector4::Vector4):
(gl::isPow2):
(gl::log2):
(gl::ceilPow2):
(gl::clamp):
(gl::clamp01):
(gl::unorm):
(gl::supportsSSE2):
(gl::float32ToFloat16):
(rx::Range::Range):
- src/libGLESv2/precompiled.cpp: Added.
- src/libGLESv2/precompiled.h: Added.
- src/libGLESv2/renderer: Added.
- src/libGLESv2/renderer/Blit.cpp: Added.
(rx::Blit::Blit):
(rx::Blit::~Blit):
(rx::Blit::initGeometry):
(rx::Blit::setShader):
(rx::Blit::setVertexShader):
(rx::Blit::setPixelShader):
(rx::Blit::getSurfaceRect):
(rx::Blit::boxFilter):
(rx::Blit::copy):
(rx::Blit::formatConvert):
(rx::Blit::setFormatConvertShaders):
(rx::Blit::copySurfaceToTexture):
(rx::Blit::setViewport):
(rx::Blit::setCommonBlitState):
(rx::Blit::render):
(rx::Blit::saveState):
(rx::Blit::restoreState):
- src/libGLESv2/renderer/Blit.h: Added.
- src/libGLESv2/renderer/BufferStorage.cpp: Added.
(rx::BufferStorage::BufferStorage):
(rx::BufferStorage::~BufferStorage):
(rx::BufferStorage::getSerial):
(rx::BufferStorage::updateSerial):
(rx::BufferStorage::markBufferUsage):
- src/libGLESv2/renderer/BufferStorage.h: Added.
- src/libGLESv2/renderer/BufferStorage11.cpp: Added.
(rx::BufferStorage11::BufferStorage11):
(rx::BufferStorage11::~BufferStorage11):
(rx::BufferStorage11::makeBufferStorage11):
(rx::BufferStorage11::getData):
(rx::BufferStorage11::setData):
(rx::BufferStorage11::clear):
(rx::BufferStorage11::getSize):
(rx::BufferStorage11::supportsDirectBinding):
(rx::BufferStorage11::markBufferUsage):
(rx::BufferStorage11::getBuffer):
- src/libGLESv2/renderer/BufferStorage11.h: Added.
- src/libGLESv2/renderer/BufferStorage9.cpp: Added.
(rx::BufferStorage9::BufferStorage9):
(rx::BufferStorage9::~BufferStorage9):
(rx::BufferStorage9::makeBufferStorage9):
(rx::BufferStorage9::getData):
(rx::BufferStorage9::setData):
(rx::BufferStorage9::clear):
(rx::BufferStorage9::getSize):
(rx::BufferStorage9::supportsDirectBinding):
- src/libGLESv2/renderer/BufferStorage9.h: Added.
- src/libGLESv2/renderer/Fence11.cpp: Added.
(rx::Fence11::Fence11):
(rx::Fence11::~Fence11):
(rx::Fence11::isFence):
(rx::Fence11::setFence):
(rx::Fence11::testFence):
(rx::Fence11::finishFence):
(rx::Fence11::getFenceiv):
- src/libGLESv2/renderer/Fence11.h: Added.
- src/libGLESv2/renderer/Fence9.cpp: Added.
(rx::Fence9::Fence9):
(rx::Fence9::~Fence9):
(rx::Fence9::isFence):
(rx::Fence9::setFence):
(rx::Fence9::testFence):
(rx::Fence9::finishFence):
(rx::Fence9::getFenceiv):
- src/libGLESv2/renderer/Fence9.h: Added.
- src/libGLESv2/renderer/FenceImpl.h: Added.
(rx::FenceImpl::FenceImpl):
(rx::FenceImpl::~FenceImpl):
(rx::FenceImpl::setStatus):
(rx::FenceImpl::getStatus):
(rx::FenceImpl::setCondition):
(rx::FenceImpl::getCondition):
- src/libGLESv2/renderer/Image.cpp: Added.
(rx::Image::Image):
(rx::Image::loadAlphaDataToBGRA):
(rx::Image::loadAlphaDataToNative):
(rx::Image::loadAlphaFloatDataToRGBA):
(rx::Image::loadAlphaHalfFloatDataToRGBA):
(rx::Image::loadLuminanceDataToNativeOrBGRA):
(rx::Image::loadLuminanceFloatDataToRGBA):
(rx::Image::loadLuminanceFloatDataToRGB):
(rx::Image::loadLuminanceHalfFloatDataToRGBA):
(rx::Image::loadLuminanceAlphaDataToNativeOrBGRA):
(rx::Image::loadLuminanceAlphaFloatDataToRGBA):
(rx::Image::loadLuminanceAlphaHalfFloatDataToRGBA):
(rx::Image::loadRGBUByteDataToBGRX):
(rx::Image::loadRGBUByteDataToRGBA):
(rx::Image::loadRGB565DataToBGRA):
(rx::Image::loadRGB565DataToRGBA):
(rx::Image::loadRGBFloatDataToRGBA):
(rx::Image::loadRGBFloatDataToNative):
(rx::Image::loadRGBHalfFloatDataToRGBA):
(rx::Image::loadRGBAUByteDataToBGRA):
(rx::Image::loadRGBAUByteDataToNative):
(rx::Image::loadRGBA4444DataToBGRA):
(rx::Image::loadRGBA4444DataToRGBA):
(rx::Image::loadRGBA5551DataToBGRA):
(rx::Image::loadRGBA5551DataToRGBA):
(rx::Image::loadRGBAFloatDataToRGBA):
(rx::Image::loadRGBAHalfFloatDataToRGBA):
(rx::Image::loadBGRADataToBGRA):
- src/libGLESv2/renderer/Image.h: Added.
(rx::Image::~Image):
(rx::Image::getWidth):
(rx::Image::getHeight):
(rx::Image::getInternalFormat):
(rx::Image::getActualFormat):
(rx::Image::markDirty):
(rx::Image::markClean):
(rx::Image::setManagedSurface):
- src/libGLESv2/renderer/Image11.cpp: Added.
(rx::Image11::Image11):
(rx::Image11::~Image11):
(rx::Image11::makeImage11):
(rx::Image11::generateMipmap):
(rx::Image11::isDirty):
(rx::Image11::updateSurface):
(rx::Image11::redefine):
(rx::Image11::isRenderableFormat):
(rx::Image11::getDXGIFormat):
(rx::Image11::loadData):
(rx::Image11::loadCompressedData):
(rx::Image11::copy):
(rx::Image11::getStagingTexture):
(rx::Image11::getStagingSubresource):
(rx::Image11::createStagingTexture):
(rx::Image11::map):
(rx::Image11::unmap):
- src/libGLESv2/renderer/Image11.h: Added.
- src/libGLESv2/renderer/Image9.cpp: Added.
(rx::Image9::Image9):
(rx::Image9::~Image9):
(rx::Image9::generateMip):
(rx::Image9::makeImage9):
(rx::Image9::generateMipmap):
(rx::Image9::copyLockableSurfaces):
(rx::Image9::redefine):
(rx::Image9::createSurface):
(rx::Image9::lock):
(rx::Image9::unlock):
(rx::Image9::isRenderableFormat):
(rx::Image9::getD3DFormat):
(rx::Image9::getSurface):
(rx::Image9::setManagedSurface):
(rx::Image9::updateSurface):
(rx::Image9::loadData):
(rx::Image9::loadCompressedData):
(rx::Image9::copy):
- src/libGLESv2/renderer/Image9.h: Added.
(rx::Image9::isDirty):
- src/libGLESv2/renderer/ImageSSE2.cpp: Added.
(rx::Image::loadRGBAUByteDataToBGRASSE2):
(rx::Image::loadAlphaDataToBGRASSE2):
- src/libGLESv2/renderer/IndexBuffer.cpp: Added.
(rx::IndexBuffer::IndexBuffer):
(rx::IndexBuffer::~IndexBuffer):
(rx::IndexBuffer::getSerial):
(rx::IndexBuffer::updateSerial):
(rx::IndexBufferInterface::IndexBufferInterface):
(rx::IndexBufferInterface::~IndexBufferInterface):
(rx::IndexBufferInterface::getIndexType):
(rx::IndexBufferInterface::getBufferSize):
(rx::IndexBufferInterface::getSerial):
(rx::IndexBufferInterface::mapBuffer):
(rx::IndexBufferInterface::unmapBuffer):
(rx::IndexBufferInterface::getIndexBuffer):
(rx::IndexBufferInterface::getWritePosition):
(rx::IndexBufferInterface::setWritePosition):
(rx::IndexBufferInterface::discard):
(rx::IndexBufferInterface::setBufferSize):
(rx::StreamingIndexBufferInterface::StreamingIndexBufferInterface):
(rx::StreamingIndexBufferInterface::~StreamingIndexBufferInterface):
(rx::StreamingIndexBufferInterface::reserveBufferSpace):
(rx::StaticIndexBufferInterface::StaticIndexBufferInterface):
(rx::StaticIndexBufferInterface::~StaticIndexBufferInterface):
(rx::StaticIndexBufferInterface::reserveBufferSpace):
(rx::StaticIndexBufferInterface::lookupRange):
(rx::StaticIndexBufferInterface::addRange):
- src/libGLESv2/renderer/IndexBuffer.h: Added.
(rx::StaticIndexBufferInterface::IndexRange::operator<):
- src/libGLESv2/renderer/IndexBuffer11.cpp: Added.
(rx::IndexBuffer11::IndexBuffer11):
(rx::IndexBuffer11::~IndexBuffer11):
(rx::IndexBuffer11::initialize):
(rx::IndexBuffer11::makeIndexBuffer11):
(rx::IndexBuffer11::mapBuffer):
(rx::IndexBuffer11::unmapBuffer):
(rx::IndexBuffer11::getIndexType):
(rx::IndexBuffer11::getBufferSize):
(rx::IndexBuffer11::setSize):
(rx::IndexBuffer11::discard):
(rx::IndexBuffer11::getIndexFormat):
(rx::IndexBuffer11::getBuffer):
- src/libGLESv2/renderer/IndexBuffer11.h: Added.
- src/libGLESv2/renderer/IndexBuffer9.cpp: Added.
(rx::IndexBuffer9::IndexBuffer9):
(rx::IndexBuffer9::~IndexBuffer9):
(rx::IndexBuffer9::initialize):
(rx::IndexBuffer9::makeIndexBuffer9):
(rx::IndexBuffer9::mapBuffer):
(rx::IndexBuffer9::unmapBuffer):
(rx::IndexBuffer9::getIndexType):
(rx::IndexBuffer9::getBufferSize):
(rx::IndexBuffer9::setSize):
(rx::IndexBuffer9::discard):
(rx::IndexBuffer9::getIndexFormat):
(rx::IndexBuffer9::getBuffer):
- src/libGLESv2/renderer/IndexBuffer9.h: Added.
- src/libGLESv2/renderer/IndexDataManager.cpp: Added.
(rx::IndexDataManager::IndexDataManager):
(rx::IndexDataManager::~IndexDataManager):
(rx::indexTypeSize):
(rx::convertIndices):
(rx::computeRange):
(rx::IndexDataManager::prepareIndexData):
(rx::IndexDataManager::getCountingIndices):
- src/libGLESv2/renderer/IndexDataManager.h: Added.
- src/libGLESv2/renderer/InputLayoutCache.cpp: Added.
(rx::InputLayoutCache::InputLayoutCache):
(rx::InputLayoutCache::~InputLayoutCache):
(rx::InputLayoutCache::initialize):
(rx::InputLayoutCache::clear):
(rx::InputLayoutCache::applyVertexBuffers):
(rx::InputLayoutCache::hashInputLayout):
(rx::InputLayoutCache::compareInputLayouts):
- src/libGLESv2/renderer/InputLayoutCache.h: Added.
- src/libGLESv2/renderer/Query11.cpp: Added.
(rx::Query11::Query11):
(rx::Query11::~Query11):
(rx::Query11::begin):
(rx::Query11::end):
(rx::Query11::getResult):
(rx::Query11::isResultAvailable):
(rx::Query11::testQuery):
- src/libGLESv2/renderer/Query11.h: Added.
- src/libGLESv2/renderer/Query9.cpp: Added.
(rx::Query9::Query9):
(rx::Query9::~Query9):
(rx::Query9::begin):
(rx::Query9::end):
(rx::Query9::getResult):
(rx::Query9::isResultAvailable):
(rx::Query9::testQuery):
- src/libGLESv2/renderer/Query9.h: Added.
- src/libGLESv2/renderer/QueryImpl.h: Added.
(rx::QueryImpl::QueryImpl):
(rx::QueryImpl::~QueryImpl):
(rx::QueryImpl::getType):
- src/libGLESv2/renderer/RenderStateCache.cpp: Added.
(rx::RenderStateCache::RenderStateCache):
(rx::RenderStateCache::~RenderStateCache):
(rx::RenderStateCache::initialize):
(rx::RenderStateCache::clear):
(rx::RenderStateCache::hashBlendState):
(rx::RenderStateCache::compareBlendStates):
(rx::RenderStateCache::getBlendState):
(rx::RenderStateCache::hashRasterizerState):
(rx::RenderStateCache::compareRasterizerStates):
(rx::RenderStateCache::getRasterizerState):
(rx::RenderStateCache::hashDepthStencilState):
(rx::RenderStateCache::compareDepthStencilStates):
(rx::RenderStateCache::getDepthStencilState):
(rx::RenderStateCache::hashSamplerState):
(rx::RenderStateCache::compareSamplerStates):
(rx::RenderStateCache::getSamplerState):
- src/libGLESv2/renderer/RenderStateCache.h: Added.
- src/libGLESv2/renderer/RenderTarget.h: Added.
(rx::RenderTarget::RenderTarget):
(rx::RenderTarget::~RenderTarget):
(rx::RenderTarget::getWidth):
(rx::RenderTarget::getHeight):
(rx::RenderTarget::getInternalFormat):
(rx::RenderTarget::getActualFormat):
(rx::RenderTarget::getSamples):
- src/libGLESv2/renderer/RenderTarget11.cpp: Added.
(rx::getRTVSubresourceIndex):
(rx::getDSVSubresourceIndex):
(rx::RenderTarget11::RenderTarget11):
(rx::RenderTarget11::~RenderTarget11):
(rx::RenderTarget11::makeRenderTarget11):
(rx::RenderTarget11::getTexture):
(rx::RenderTarget11::getRenderTargetView):
(rx::RenderTarget11::getDepthStencilView):
(rx::RenderTarget11::getShaderResourceView):
(rx::RenderTarget11::getSubresourceIndex):
- src/libGLESv2/renderer/RenderTarget11.h: Added.
- src/libGLESv2/renderer/RenderTarget9.cpp: Added.
(rx::RenderTarget9::RenderTarget9):
(rx::RenderTarget9::~RenderTarget9):
(rx::RenderTarget9::makeRenderTarget9):
(rx::RenderTarget9::getSurface):
- src/libGLESv2/renderer/RenderTarget9.h: Added.
- src/libGLESv2/renderer/Renderer.cpp: Added.
(rx::Renderer::Renderer):
(rx::Renderer::~Renderer):
(rx::Renderer::initializeCompiler):
(rx::Renderer::compileToBinary):
- src/libGLESv2/renderer/Renderer.h: Added.
(getComparableOSVersion):
(rx::Renderer::getVertexTextureSupport):
- src/libGLESv2/renderer/Renderer11.cpp: Added.
(rx::Renderer11::Renderer11):
(rx::Renderer11::~Renderer11):
(rx::Renderer11::makeRenderer11):
(rx::Renderer11::initialize):
(rx::Renderer11::initializeDevice):
(rx::Renderer11::generateConfigs):
(rx::Renderer11::deleteConfigs):
(rx::Renderer11::sync):
(rx::Renderer11::createSwapChain):
(rx::Renderer11::setSamplerState):
(rx::Renderer11::setTexture):
(rx::Renderer11::setRasterizerState):
(rx::Renderer11::setBlendState):
(rx::Renderer11::setDepthStencilState):
(rx::Renderer11::setScissorRectangle):
(rx::Renderer11::setViewport):
(rx::Renderer11::applyPrimitiveType):
(rx::Renderer11::applyRenderTarget):
(rx::Renderer11::applyVertexBuffer):
(rx::Renderer11::applyIndexBuffer):
(rx::Renderer11::drawArrays):
(rx::Renderer11::drawElements):
(rx::Renderer11::drawLineLoop):
(rx::Renderer11::drawTriangleFan):
(rx::Renderer11::applyShaders):
(rx::Renderer11::applyUniforms):
(rx::Renderer11::clear):
(rx::Renderer11::maskedClear):
(rx::Renderer11::markAllStateDirty):
(rx::Renderer11::releaseDeviceResources):
(rx::Renderer11::notifyDeviceLost):
(rx::Renderer11::isDeviceLost):
(rx::Renderer11::testDeviceLost):
(rx::Renderer11::testDeviceResettable):
(rx::Renderer11::release):
(rx::Renderer11::resetDevice):
(rx::Renderer11::getAdapterVendor):
(rx::Renderer11::getRendererDescription):
(rx::Renderer11::getAdapterIdentifier):
(rx::Renderer11::getBGRATextureSupport):
(rx::Renderer11::getDXT1TextureSupport):
(rx::Renderer11::getDXT3TextureSupport):
(rx::Renderer11::getDXT5TextureSupport):
(rx::Renderer11::getDepthTextureSupport):
(rx::Renderer11::getFloat32TextureSupport):
(rx::Renderer11::getFloat16TextureSupport):
(rx::Renderer11::getLuminanceTextureSupport):
(rx::Renderer11::getLuminanceAlphaTextureSupport):
(rx::Renderer11::getTextureFilterAnisotropySupport):
(rx::Renderer11::getTextureMaxAnisotropy):
(rx::Renderer11::getEventQuerySupport):
(rx::Renderer11::getViewportBounds):
(rx::Renderer11::getMaxVertexTextureImageUnits):
(rx::Renderer11::getMaxCombinedTextureImageUnits):
(rx::Renderer11::getReservedVertexUniformVectors):
(rx::Renderer11::getReservedFragmentUniformVectors):
(rx::Renderer11::getMaxVertexUniformVectors):
(rx::Renderer11::getMaxFragmentUniformVectors):
(rx::Renderer11::getMaxVaryingVectors):
(rx::Renderer11::getNonPower2TextureSupport):
(rx::Renderer11::getOcclusionQuerySupport):
(rx::Renderer11::getInstancingSupport):
(rx::Renderer11::getShareHandleSupport):
(rx::Renderer11::getDerivativeInstructionSupport):
(rx::Renderer11::getPostSubBufferSupport):
(rx::Renderer11::getMajorShaderModel):
(rx::Renderer11::getMinorShaderModel):
(rx::Renderer11::getMaxPointSize):
(rx::Renderer11::getMaxViewportDimension):
(rx::Renderer11::getMaxTextureWidth):
(rx::Renderer11::getMaxTextureHeight):
(rx::Renderer11::get32BitIndexSupport):
(rx::Renderer11::getMinSwapInterval):
(rx::Renderer11::getMaxSwapInterval):
(rx::Renderer11::getMaxSupportedSamples):
(rx::Renderer11::getNearestSupportedSamples):
(rx::Renderer11::getMaxRenderTargets):
(rx::Renderer11::copyToRenderTarget):
(rx::Renderer11::copyImage):
(rx::Renderer11::copyTexture):
(rx::Renderer11::unapplyRenderTargets):
(rx::Renderer11::setOneTimeRenderTarget):
(rx::Renderer11::createRenderTarget):
(rx::Renderer11::loadExecutable):
(rx::Renderer11::compileToExecutable):
(rx::Renderer11::createVertexBuffer):
(rx::Renderer11::createIndexBuffer):
(rx::Renderer11::createBufferStorage):
(rx::Renderer11::createQuery):
(rx::Renderer11::createFence):
(rx::Renderer11::getRenderTargetResource):
(rx::Renderer11::blitRect):
(rx::Renderer11::readPixels):
(rx::Renderer11::createImage):
(rx::Renderer11::generateMipmap):
(rx::Renderer11::createTextureStorage2D):
(rx::Renderer11::createTextureStorageCube):
(rx::getFastPixelCopySize):
(rx::readPixelColor):
(rx::writePixelColor):
(rx::Renderer11::readTextureData):
(rx::Renderer11::blitRenderbufferRect):
(rx::Renderer11::resolveMultisampledTexture):
(rx::Renderer11::getLUID):
- src/libGLESv2/renderer/Renderer11.h: Added.
(rx::Renderer11::getDevice):
(rx::Renderer11::getDeviceContext):
(rx::Renderer11::getDxgiFactory):
- src/libGLESv2/renderer/Renderer9.cpp: Added.
(rx::Renderer9::Renderer9):
(rx::Renderer9::~Renderer9):
(rx::Renderer9::makeRenderer9):
(rx::Renderer9::initialize):
(rx::Renderer9::initializeDevice):
(rx::Renderer9::getDefaultPresentParameters):
(rx::Renderer9::generateConfigs):
(rx::Renderer9::deleteConfigs):
(rx::Renderer9::startScene):
(rx::Renderer9::endScene):
(rx::Renderer9::sync):
(rx::Renderer9::createSwapChain):
(rx::Renderer9::allocateEventQuery):
(rx::Renderer9::freeEventQuery):
(rx::Renderer9::createVertexShader):
(rx::Renderer9::createPixelShader):
(rx::Renderer9::createVertexBuffer):
(rx::Renderer9::createIndexBuffer):
(rx::Renderer9::createBufferStorage):
(rx::Renderer9::createQuery):
(rx::Renderer9::createFence):
(rx::Renderer9::setSamplerState):
(rx::Renderer9::setTexture):
(rx::Renderer9::setRasterizerState):
(rx::Renderer9::setBlendState):
(rx::Renderer9::setDepthStencilState):
(rx::Renderer9::setScissorRectangle):
(rx::Renderer9::setViewport):
(rx::Renderer9::applyPrimitiveType):
(rx::Renderer9::getNullColorbuffer):
(rx::Renderer9::applyRenderTarget):
(rx::Renderer9::applyVertexBuffer):
(rx::Renderer9::applyIndexBuffer):
(rx::Renderer9::drawArrays):
(rx::Renderer9::drawElements):
(rx::Renderer9::drawLineLoop):
(rx::drawPoints):
(rx::Renderer9::drawIndexedPoints):
(rx::Renderer9::applyShaders):
(rx::Renderer9::applyUniforms):
(rx::Renderer9::applyUniformnfv):
(rx::Renderer9::applyUniformniv):
(rx::Renderer9::applyUniformnbv):
(rx::Renderer9::clear):
(rx::Renderer9::markAllStateDirty):
(rx::Renderer9::releaseDeviceResources):
(rx::Renderer9::notifyDeviceLost):
(rx::Renderer9::isDeviceLost):
(rx::Renderer9::testDeviceLost):
(rx::Renderer9::testDeviceResettable):
(rx::Renderer9::resetDevice):
(rx::Renderer9::getAdapterVendor):
(rx::Renderer9::getRendererDescription):
(rx::Renderer9::getAdapterIdentifier):
(rx::Renderer9::getMultiSampleSupport):
(rx::Renderer9::getBGRATextureSupport):
(rx::Renderer9::getDXT1TextureSupport):
(rx::Renderer9::getDXT3TextureSupport):
(rx::Renderer9::getDXT5TextureSupport):
(rx::Renderer9::getDepthTextureSupport):
(rx::Renderer9::getFloat32TextureSupport):
(rx::Renderer9::getFloat16TextureSupport):
(rx::Renderer9::getLuminanceTextureSupport):
(rx::Renderer9::getLuminanceAlphaTextureSupport):
(rx::Renderer9::getTextureFilterAnisotropySupport):
(rx::Renderer9::getTextureMaxAnisotropy):
(rx::Renderer9::getEventQuerySupport):
(rx::Renderer9::getMaxVertexTextureImageUnits):
(rx::Renderer9::getMaxCombinedTextureImageUnits):
(rx::Renderer9::getReservedVertexUniformVectors):
(rx::Renderer9::getReservedFragmentUniformVectors):
(rx::Renderer9::getMaxVertexUniformVectors):
(rx::Renderer9::getMaxFragmentUniformVectors):
(rx::Renderer9::getMaxVaryingVectors):
(rx::Renderer9::getNonPower2TextureSupport):
(rx::Renderer9::getOcclusionQuerySupport):
(rx::Renderer9::getInstancingSupport):
(rx::Renderer9::getShareHandleSupport):
(rx::Renderer9::getDerivativeInstructionSupport):
(rx::Renderer9::getPostSubBufferSupport):
(rx::Renderer9::getMajorShaderModel):
(rx::Renderer9::getMaxPointSize):
(rx::Renderer9::getMaxViewportDimension):
(rx::Renderer9::getMaxTextureWidth):
(rx::Renderer9::getMaxTextureHeight):
(rx::Renderer9::get32BitIndexSupport):
(rx::Renderer9::getCapsDeclTypes):
(rx::Renderer9::getMinSwapInterval):
(rx::Renderer9::getMaxSwapInterval):
(rx::Renderer9::getMaxSupportedSamples):
(rx::Renderer9::getNearestSupportedSamples):
(rx::Renderer9::getMaxRenderTargets):
(rx::Renderer9::ConvertTextureInternalFormat):
(rx::Renderer9::copyToRenderTarget):
(rx::Renderer9::getBufferPool):
(rx::Renderer9::copyImage):
(rx::Renderer9::blitRect):
(rx::Renderer9::readPixels):
(rx::Renderer9::createRenderTarget):
(rx::Renderer9::loadExecutable):
(rx::Renderer9::compileToExecutable):
(rx::Renderer9::boxFilter):
(rx::Renderer9::getTexturePool):
(rx::Renderer9::createImage):
(rx::Renderer9::generateMipmap):
(rx::Renderer9::createTextureStorage2D):
(rx::Renderer9::createTextureStorageCube):
(rx::Renderer9::getLUID):
- src/libGLESv2/renderer/Renderer9.h: Added.
(rx::Renderer9::getDevice):
- src/libGLESv2/renderer/ShaderCache.h: Added.
(rx::ShaderCache::ShaderCache):
(rx::ShaderCache::~ShaderCache):
(rx::ShaderCache::initialize):
(rx::ShaderCache::create):
(rx::ShaderCache::clear):
(rx::ShaderCache::createShader):
- src/libGLESv2/renderer/ShaderExecutable.h: Added.
(rx::ShaderExecutable::ShaderExecutable):
(rx::ShaderExecutable::~ShaderExecutable):
(rx::ShaderExecutable::getFunction):
(rx::ShaderExecutable::getLength):
- src/libGLESv2/renderer/ShaderExecutable11.cpp: Added.
(rx::ShaderExecutable11::ShaderExecutable11):
(rx::ShaderExecutable11::~ShaderExecutable11):
(rx::ShaderExecutable11::makeShaderExecutable11):
(rx::ShaderExecutable11::getVertexShader):
(rx::ShaderExecutable11::getPixelShader):
(rx::ShaderExecutable11::getGeometryShader):
(rx::ShaderExecutable11::getConstantBuffer):
- src/libGLESv2/renderer/ShaderExecutable11.h: Added.
- src/libGLESv2/renderer/ShaderExecutable9.cpp: Added.
(rx::ShaderExecutable9::ShaderExecutable9):
(rx::ShaderExecutable9::~ShaderExecutable9):
(rx::ShaderExecutable9::makeShaderExecutable9):
(rx::ShaderExecutable9::getVertexShader):
(rx::ShaderExecutable9::getPixelShader):
- src/libGLESv2/renderer/ShaderExecutable9.h: Added.
- src/libGLESv2/renderer/SwapChain.h: Added.
(rx::SwapChain::SwapChain):
(rx::SwapChain::~SwapChain):
(rx::SwapChain::getShareHandle):
- src/libGLESv2/renderer/SwapChain11.cpp: Added.
(rx::SwapChain11::SwapChain11):
(rx::SwapChain11::~SwapChain11):
(rx::SwapChain11::release):
(rx::SwapChain11::releaseOffscreenTexture):
(rx::SwapChain11::resetOffscreenTexture):
(rx::SwapChain11::resize):
(rx::SwapChain11::reset):
(rx::SwapChain11::initPassThroughResources):
(rx::SwapChain11::swapRect):
(rx::SwapChain11::getOffscreenTexture):
(rx::SwapChain11::getRenderTarget):
(rx::SwapChain11::getRenderTargetShaderResource):
(rx::SwapChain11::getDepthStencil):
(rx::SwapChain11::getDepthStencilTexture):
(rx::SwapChain11::makeSwapChain11):
(rx::SwapChain11::recreate):
- src/libGLESv2/renderer/SwapChain11.h: Added.
(rx::SwapChain11::getWidth):
(rx::SwapChain11::getHeight):
- src/libGLESv2/renderer/SwapChain9.cpp: Added.
(rx::SwapChain9::SwapChain9):
(rx::SwapChain9::~SwapChain9):
(rx::SwapChain9::release):
(rx::convertInterval):
(rx::SwapChain9::resize):
(rx::SwapChain9::reset):
(rx::SwapChain9::swapRect):
(rx::SwapChain9::getRenderTarget):
(rx::SwapChain9::getDepthStencil):
(rx::SwapChain9::getOffscreenTexture):
(rx::SwapChain9::makeSwapChain9):
(rx::SwapChain9::recreate):
- src/libGLESv2/renderer/SwapChain9.h: Added.
- src/libGLESv2/renderer/TextureStorage.cpp: Added.
(rx::TextureStorageInterface::TextureStorageInterface):
(rx::TextureStorageInterface::~TextureStorageInterface):
(rx::TextureStorageInterface::isRenderTarget):
(rx::TextureStorageInterface::isManaged):
(rx::TextureStorageInterface::getTextureSerial):
(rx::TextureStorageInterface::issueTextureSerial):
(rx::TextureStorageInterface::getLodOffset):
(rx::TextureStorageInterface::levelCount):
(rx::TextureStorageInterface2D::TextureStorageInterface2D):
(rx::TextureStorageInterface2D::~TextureStorageInterface2D):
(rx::TextureStorageInterface2D::getRenderTarget):
(rx::TextureStorageInterface2D::generateMipmap):
(rx::TextureStorageInterface2D::getRenderTargetSerial):
(rx::TextureStorageInterfaceCube::TextureStorageInterfaceCube):
(rx::TextureStorageInterfaceCube::~TextureStorageInterfaceCube):
(rx::TextureStorageInterfaceCube::getRenderTarget):
(rx::TextureStorageInterfaceCube::generateMipmap):
(rx::TextureStorageInterfaceCube::getRenderTargetSerial):
- src/libGLESv2/renderer/TextureStorage.h: Added.
(rx::TextureStorage::TextureStorage):
(rx::TextureStorage::~TextureStorage):
(rx::TextureStorageInterface::getStorageInstance):
- src/libGLESv2/renderer/TextureStorage11.cpp: Added.
(rx::TextureStorage11::TextureStorage11):
(rx::TextureStorage11::~TextureStorage11):
(rx::TextureStorage11::makeTextureStorage11):
(rx::TextureStorage11::GetTextureBindFlags):
(rx::TextureStorage11::IsTextureFormatRenderable):
(rx::TextureStorage11::getBindFlags):
(rx::TextureStorage11::getBaseTexture):
(rx::TextureStorage11::getLodOffset):
(rx::TextureStorage11::isRenderTarget):
(rx::TextureStorage11::isManaged):
(rx::TextureStorage11::levelCount):
(rx::TextureStorage11::getSubresourceIndex):
(rx::TextureStorage11::updateSubresourceLevel):
(rx::TextureStorage11::generateMipmapLayer):
(rx::TextureStorage11_2D::TextureStorage11_2D):
(rx::TextureStorage11_2D::~TextureStorage11_2D):
(rx::TextureStorage11_2D::makeTextureStorage11_2D):
(rx::TextureStorage11_2D::getRenderTarget):
(rx::TextureStorage11_2D::getSRV):
(rx::TextureStorage11_2D::generateMipmap):
(rx::TextureStorage11_Cube::TextureStorage11_Cube):
(rx::TextureStorage11_Cube::~TextureStorage11_Cube):
(rx::TextureStorage11_Cube::makeTextureStorage11_Cube):
(rx::TextureStorage11_Cube::getRenderTarget):
(rx::TextureStorage11_Cube::getSRV):
(rx::TextureStorage11_Cube::generateMipmap):
- src/libGLESv2/renderer/TextureStorage11.h: Added.
(rx::TextureStorage11::getRenderTarget):
(rx::TextureStorage11::generateMipmap):
- src/libGLESv2/renderer/TextureStorage9.cpp: Added.
(rx::TextureStorage9::TextureStorage9):
(rx::TextureStorage9::~TextureStorage9):
(rx::TextureStorage9::makeTextureStorage9):
(rx::TextureStorage9::GetTextureUsage):
(rx::TextureStorage9::IsTextureFormatRenderable):
(rx::TextureStorage9::isRenderTarget):
(rx::TextureStorage9::isManaged):
(rx::TextureStorage9::getPool):
(rx::TextureStorage9::getUsage):
(rx::TextureStorage9::getLodOffset):
(rx::TextureStorage9::levelCount):
(rx::TextureStorage9_2D::TextureStorage9_2D):
(rx::TextureStorage9_2D::~TextureStorage9_2D):
(rx::TextureStorage9_2D::makeTextureStorage9_2D):
(rx::TextureStorage9_2D::getSurfaceLevel):
(rx::TextureStorage9_2D::getRenderTarget):
(rx::TextureStorage9_2D::generateMipmap):
(rx::TextureStorage9_2D::getBaseTexture):
(rx::TextureStorage9_2D::initializeRenderTarget):
(rx::TextureStorage9_Cube::TextureStorage9_Cube):
(rx::TextureStorage9_Cube::~TextureStorage9_Cube):
(rx::TextureStorage9_Cube::makeTextureStorage9_Cube):
(rx::TextureStorage9_Cube::getCubeMapSurface):
(rx::TextureStorage9_Cube::getRenderTarget):
(rx::TextureStorage9_Cube::generateMipmap):
(rx::TextureStorage9_Cube::getBaseTexture):
(rx::TextureStorage9_Cube::initializeRenderTarget):
- src/libGLESv2/renderer/TextureStorage9.h: Added.
(rx::TextureStorage9::getRenderTarget):
(rx::TextureStorage9::generateMipmap):
- src/libGLESv2/renderer/VertexBuffer.cpp: Added.
(rx::VertexBuffer::VertexBuffer):
(rx::VertexBuffer::~VertexBuffer):
(rx::VertexBuffer::updateSerial):
(rx::VertexBuffer::getSerial):
(rx::VertexBufferInterface::VertexBufferInterface):
(rx::VertexBufferInterface::~VertexBufferInterface):
(rx::VertexBufferInterface::getSerial):
(rx::VertexBufferInterface::getBufferSize):
(rx::VertexBufferInterface::setBufferSize):
(rx::VertexBufferInterface::getWritePosition):
(rx::VertexBufferInterface::setWritePosition):
(rx::VertexBufferInterface::discard):
(rx::VertexBufferInterface::storeVertexAttributes):
(rx::VertexBufferInterface::storeRawData):
(rx::VertexBufferInterface::reserveVertexSpace):
(rx::VertexBufferInterface::reserveRawDataSpace):
(rx::VertexBufferInterface::getVertexBuffer):
(rx::StreamingVertexBufferInterface::StreamingVertexBufferInterface):
(rx::StreamingVertexBufferInterface::~StreamingVertexBufferInterface):
(rx::StreamingVertexBufferInterface::reserveSpace):
(rx::StaticVertexBufferInterface::StaticVertexBufferInterface):
(rx::StaticVertexBufferInterface::~StaticVertexBufferInterface):
(rx::StaticVertexBufferInterface::lookupAttribute):
(rx::StaticVertexBufferInterface::reserveSpace):
(rx::StaticVertexBufferInterface::storeVertexAttributes):
- src/libGLESv2/renderer/VertexBuffer.h: Added.
- src/libGLESv2/renderer/VertexBuffer11.cpp: Added.
(rx::VertexBuffer11::VertexBuffer11):
(rx::VertexBuffer11::~VertexBuffer11):
(rx::VertexBuffer11::initialize):
(rx::VertexBuffer11::makeVertexBuffer11):
(rx::VertexBuffer11::storeVertexAttributes):
(rx::VertexBuffer11::storeRawData):
(rx::VertexBuffer11::getSpaceRequired):
(rx::VertexBuffer11::requiresConversion):
(rx::VertexBuffer11::getBufferSize):
(rx::VertexBuffer11::setBufferSize):
(rx::VertexBuffer11::discard):
(rx::VertexBuffer11::getVertexSize):
(rx::VertexBuffer11::getDXGIFormat):
(rx::VertexBuffer11::getBuffer):
(rx::copyVertexData):
(rx::copyFixedVertexData):
(rx::copyToFloatVertexData):
(rx::VertexBuffer11::getVertexConversion):
- src/libGLESv2/renderer/VertexBuffer11.h: Added.
- src/libGLESv2/renderer/VertexBuffer9.cpp: Added.
(rx::VertexBuffer9::VertexBuffer9):
(rx::VertexBuffer9::~VertexBuffer9):
(rx::VertexBuffer9::initialize):
(rx::VertexBuffer9::makeVertexBuffer9):
(rx::VertexBuffer9::storeVertexAttributes):
(rx::VertexBuffer9::storeRawData):
(rx::VertexBuffer9::getSpaceRequired):
(rx::VertexBuffer9::requiresConversion):
(rx::VertexBuffer9::getVertexSize):
(rx::VertexBuffer9::getDeclType):
(rx::VertexBuffer9::getBufferSize):
(rx::VertexBuffer9::setBufferSize):
(rx::VertexBuffer9::discard):
(rx::VertexBuffer9::getBuffer):
(rx::VertexBuffer9::initializeTranslations):
(rx::VertexBuffer9::typeIndex):
(rx::VertexBuffer9::formatConverter):
(rx::VertexBuffer9::spaceRequired):
- src/libGLESv2/renderer/VertexBuffer9.h: Added.
- src/libGLESv2/renderer/VertexDataManager.cpp: Added.
(rx::elementsInBuffer):
(rx::VertexDataManager::VertexDataManager):
(rx::VertexDataManager::~VertexDataManager):
(rx::directStoragePossible):
(rx::VertexDataManager::prepareVertexData):
- src/libGLESv2/renderer/VertexDataManager.h: Added.
- src/libGLESv2/renderer/VertexDeclarationCache.cpp: Added.
(rx::VertexDeclarationCache::VertexDeclarationCache):
(rx::VertexDeclarationCache::~VertexDeclarationCache):
(rx::VertexDeclarationCache::applyDeclaration):
(rx::VertexDeclarationCache::markStateDirty):
- src/libGLESv2/renderer/VertexDeclarationCache.h: Added.
- src/libGLESv2/renderer/generatemip.h: Added.
(rx::L8::average):
(rx::A8L8::average):
(rx::A8R8G8B8::average):
(rx::A16B16G16R16F::average):
(rx::R16F::average):
(rx::R16G16F::average):
(rx::A32B32G32R32F::average):
(rx::R32F::average):
(rx::R32G32F::average):
(rx::R32G32B32F::average):
(rx::GenerateMip):
- src/libGLESv2/renderer/renderer11_utils.cpp: Added.
(gl_d3d11::ConvertBlendFunc):
(gl_d3d11::ConvertBlendOp):
(gl_d3d11::ConvertColorMask):
(gl_d3d11::ConvertCullMode):
(gl_d3d11::ConvertComparison):
(gl_d3d11::ConvertDepthMask):
(gl_d3d11::ConvertStencilMask):
(gl_d3d11::ConvertStencilOp):
(gl_d3d11::ConvertFilter):
(gl_d3d11::ConvertTextureWrap):
(gl_d3d11::ConvertMinLOD):
(gl_d3d11::ConvertMaxLOD):
(d3d11_gl::ConvertBackBufferFormat):
(d3d11_gl::ConvertDepthStencilFormat):
(d3d11_gl::ConvertRenderbufferFormat):
(d3d11_gl::ConvertTextureInternalFormat):
(gl_d3d11::ConvertRenderbufferFormat):
(gl_d3d11::ConvertTextureFormat):
(d3d11::SetPositionTexCoordVertex):
(d3d11::SetPositionDepthColorVertex):
(d3d11::ComputePixelSizeBits):
(d3d11::ComputeBlockSizeBits):
(d3d11::IsCompressed):
(d3d11::GetTextureFormatDimensionAlignment):
(d3d11::IsDepthStencilFormat):
(d3d11::GetDepthTextureFormat):
(d3d11::GetDepthShaderResourceFormat):
(d3d11::SetDebugName):
- src/libGLESv2/renderer/renderer11_utils.h: Added.
(d3d11::isDeviceLostError):
- src/libGLESv2/renderer/renderer9_utils.cpp: Added.
(gl_d3d9::ConvertComparison):
(gl_d3d9::ConvertColor):
(gl_d3d9::ConvertBlendFunc):
(gl_d3d9::ConvertBlendOp):
(gl_d3d9::ConvertStencilOp):
(gl_d3d9::ConvertTextureWrap):
(gl_d3d9::ConvertCullMode):
(gl_d3d9::ConvertCubeFace):
(gl_d3d9::ConvertColorMask):
(gl_d3d9::ConvertMagFilter):
(gl_d3d9::ConvertMinFilter):
(gl_d3d9::ConvertRenderbufferFormat):
(gl_d3d9::GetMultisampleTypeFromSamples):
(d3d9_gl::GetStencilSize):
(d3d9_gl::GetAlphaSize):
(d3d9_gl::GetSamplesFromMultisampleType):
(d3d9_gl::IsFormatChannelEquivalent):
(d3d9_gl::ConvertBackBufferFormat):
(d3d9_gl::ConvertDepthStencilFormat):
(d3d9_gl::ConvertRenderTargetFormat):
(d3d9_gl::GetEquivalentFormat):
(d3d9::IsCompressedFormat):
(d3d9::ComputeRowSize):
- src/libGLESv2/renderer/renderer9_utils.h: Added.
(d3d9::isDeviceLostError):
- src/libGLESv2/renderer/shaders: Added.
- src/libGLESv2/renderer/shaders/Blit.ps: Added.
- src/libGLESv2/renderer/shaders/Blit.vs: Added.
- src/libGLESv2/renderer/shaders/Clear11.hlsl: Added.
- src/libGLESv2/renderer/shaders/Passthrough11.hlsl: Added.
- src/libGLESv2/renderer/shaders/compiled: Added.
- src/libGLESv2/renderer/shaders/compiled/clear11vs.h: Added.
- src/libGLESv2/renderer/shaders/compiled/clearmultiple11ps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/clearsingle11ps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/componentmaskps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/flipyvs.h: Added.
- src/libGLESv2/renderer/shaders/compiled/luminanceps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/passthrough11vs.h: Added.
- src/libGLESv2/renderer/shaders/compiled/passthroughlum11ps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/passthroughlumalpha11ps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/passthroughps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/passthroughrgb11ps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/passthroughrgba11ps.h: Added.
- src/libGLESv2/renderer/shaders/compiled/standardvs.h: Added.
- src/libGLESv2/renderer/shaders/generate_shaders.bat: Added.
- src/libGLESv2/renderer/vertexconversion.h: Added.
(rx::Identity::convert):
(rx::Cast::convert):
(rx::Normalize::convert):
(rx::FixedToFloat::convert):
(rx::SimpleDefaultValues::zero):
(rx::SimpleDefaultValues::one):
(rx::NormalizedDefaultValues::zero):
(rx::NormalizedDefaultValues::one):
(rx::VertexDataConverter::convertArray):
(rx::VertexDataConverter::pointerAddBytes):
(rx::VertexDataConverter::copyComponent):
- src/libGLESv2/resource.h: Added.
- src/libGLESv2/utilities.cpp: Added.
(gl::UniformComponentCount):
(gl::UniformComponentType):
(gl::UniformComponentSize):
(gl::UniformInternalSize):
(gl::UniformExternalSize):
(gl::VariableRowCount):
(gl::VariableColumnCount):
(gl::AllocateFirstFreeBits):
(gl::ComputePitch):
(gl::ComputeCompressedPitch):
(gl::ComputeCompressedSize):
(gl::IsCompressed):
(gl::IsDepthTexture):
(gl::IsStencilTexture):
(gl::MakeValidSize):
(gl::ComputePixelSize):
(gl::IsCubemapTextureTarget):
(gl::IsInternalTextureTarget):
(gl::ConvertSizedInternalFormat):
(gl::ExtractFormat):
(gl::ExtractType):
(gl::IsColorRenderable):
(gl::IsDepthRenderable):
(gl::IsStencilRenderable):
(gl::IsFloat32Format):
(gl::IsFloat16Format):
(gl::GetAlphaSize):
(gl::GetRedSize):
(gl::GetGreenSize):
(gl::GetBlueSize):
(gl::GetDepthSize):
(gl::GetStencilSize):
(gl::IsTriangleMode):
(getTempPath):
(writeFile):
- src/libGLESv2/utilities.h: Added.
- src/third_party/murmurhash: Added.
- src/third_party/murmurhash/LICENSE: Added.
- src/third_party/murmurhash/MurmurHash3.cpp: Added, replaced tabs with spaces.
(rotl32):
(rotl64):
(getblock):
(fmix):
(MurmurHash3_x86_32):
(MurmurHash3_x86_128):
(MurmurHash3_x64_128):
- src/third_party/murmurhash/MurmurHash3.h: Added, replaced tabs with spaces.
Source/WebCore: Updated ANGLE to latest git commit (047373aa3eb408be62be52ade840fa5f11e72337).
https://bugs.webkit.org/show_bug.cgi?id=118550
Reviewed by Dean Jackson.
- CMakeLists.txt: Renamed DetectRecursion to DetectCallDepth and added Uniform.cpp.
- 3:20 PM Changeset in webkit [153063] by
-
- 3 edits6 moves5 adds2 deletes in trunk/LayoutTests
[CSS Shapes] New positioning model: support for rounded rectangle shape-outside
https://bugs.webkit.org/show_bug.cgi?id=118081
Patch by Bem Jones-Bey <Bem Jones-Bey> on 2013-07-23
Reviewed by Dean Jackson.
Update the shape-outside rounded rectangle tests and import them from
the CSS WG's repository. They have been moved to the CSS WG repository
so they can be part of the spec test suite for CSS Shapes.
- TestExpectations: Remove skipping for tests that have been replaced.
- csswg/submitted/shapes/shape-outside/resources/rounded-rectangle.js: Added.
(ellipseXIntercept):
(scanConvertRoundedRectangleOutside):
(genLeftRightRoundedRectFloatShapeOutsideRefTest):
(genLeftRoundedRectFloatShapeOutsideRefTest):
(genRightRoundedRectFloatShapeOutsideRefTest):
- csswg/submitted/shapes/shape-outside/resources/subpixel-utils.js: Added.
(SubPixelLayout):
(SubPixelLayout.):
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-001-expected.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-001-expected.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-001.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-001.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-002-expected.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-002-expected.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-002.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-002.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-003-expected.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-003-expected.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-003.html: Renamed from LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-003.html.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-004-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-rounded-rectangle-004.html: Added.
- csswg/submitted/shapes/shape-outside/w3c-import.log:
- 2:53 PM Changeset in webkit [153062] by
-
- 2 edits in trunk/Source/WebCore
Use Checked<uint32_t, RecordOverflow> instead of CheckedInt in GraphicsContext3D
https://bugs.webkit.org/show_bug.cgi?id=118988
Reviewed by Oliver Hunt.
Use the WTF's Checked class, with uint32_t as the numeric type and RecordOverflow as the overflow handler,
instead of the CheckedInt class. This removes a layering violation that's occurring due to including the CheckedInt
header that's currently located in the WebCore layer (alongside the HTML canvas code in Source/WebCore/html/canvas).
- platform/graphics/GraphicsContext3D.cpp:
(WebCore::GraphicsContext3D::computeImageSizeInBytes):
- 12:47 PM Changeset in webkit [153061] by
-
- 3 edits2 adds in trunk
REGRESSION(r152313): Links in certain twitter postings don't warp correctly on page
https://bugs.webkit.org/show_bug.cgi?id=118435
Reviewed by David Hyatt.
When we find an empty inline in the middle of the word, prefer breaking it before
instead of after to match other browsers' rendering.
Source/WebCore:
Test: fast/text/whitespace/inline-whitespace-wrapping-12.html
- rendering/RenderBlockLineLayout.cpp:
(WebCore::canBreakAtThisPosition):
LayoutTests:
- fast/text/whitespace/inline-whitespace-wrapping-12-expected.html: Added.
- fast/text/whitespace/inline-whitespace-wrapping-12.html: Added.
- 12:09 PM Changeset in webkit [153060] by
-
- 6 edits2 adds in trunk
Dictionary hotkey does not work on vertical text
https://bugs.webkit.org/show_bug.cgi?id=118993
<rdar://problem/14478260>
Reviewed by Enrica Casucci.
Test: platform/mac/editing/input/firstrectforcharacterrange-vertical.html
- editing/Editor.cpp: (WebCore::collapseCaretWidth): A helper function. (WebCore::Editor::firstRectForRange): Many changes:
- use RenderObject::absoluteBoundingBoxRectForRange() in regular case, because that's more direct that getting caret rects and computing bounding rect from those.
- handle collapsed ranges separately, because absoluteBoundingBoxRectForRange() doesn't provide the needed result, and because it can be done faster.
- wherever we use carets to compute the result, account for vertical text (in a hackish way, as we don't have layout information at Editor level).
- rendering/RenderBlock.cpp: (WebCore::RenderBlock::localCaretRect): Removed dead code.
- 12:02 PM Changeset in webkit [153059] by
-
- 2 edits in trunk/Source/WebKit/win
[Win] WebView didReceiveIcon delegate call doesn't have the icon in it
https://bugs.webkit.org/show_bug.cgi?id=100379
Patch by peavo@outlook.com <peavo@outlook.com> on 2013-07-23
Reviewed by Brent Fulgham.
Added missing icon to WebView didReceiveIcon delegate call, fixes <rdar://problem/5491010>.
- WebView.cpp:
(WebView::dispatchDidReceiveIconFromWebFrame):
- 11:49 AM Changeset in webkit [153058] by
-
- 7 edits2 adds in trunk
[CSS Shapes] New positioning model: Borders
https://bugs.webkit.org/show_bug.cgi?id=118822
Patch by Bem Jones-Bey <Bem Jones-Bey> on 2013-07-23
Reviewed by Dean Jackson.
Source/WebCore:
Converting to the shape coordinate system was not properly accounting
for borders and padding. This has been fixed and a new convienence
method added because of the added complexity of the conversion.
Test: csswg/submitted/shapes/shape-outside/shape-outside-floats-square-border-000.html
- rendering/RenderBlock.cpp:
(WebCore::RenderBlock::logicalLeftFloatOffsetForLine): Update to use
computeSegmentsForContainingBlockLine to do the coordinate
conversion.
(WebCore::RenderBlock::logicalRightFloatOffsetForLine): Ditto.
- rendering/RenderBlockLineLayout.cpp:
(WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded): Ditto.
- rendering/shapes/ShapeOutsideInfo.cpp:
(WebCore::ShapeOutsideInfo::computeSegmentsForContainingBlockLine):
Add new method to do the coordinate conversion from the containing
block coordinate system to the coordinate system of the shape so
that the segments can be correctly calculated.
LayoutTests:
Test that the shape is properly respected when the float has a border.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-square-border-000-expected.html: Added.
- csswg/submitted/shapes/shape-outside/shape-outside-floats-square-border-000.html: Added.
- csswg/submitted/shapes/shape-outside/w3c-import.log: Updated with new
import information.
- 10:36 AM Changeset in webkit [153057] by
-
- 5 edits4 adds32 deletes in trunk/LayoutTests
[CSS Regions] Convert percentage-margins-* tests to ref-tests
https://bugs.webkit.org/show_bug.cgi?id=118723
Reviewed by Andreas Kling.
The patch converts the percentage margins tests for regions in ref tests.
- fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.html: Added.
- fast/regions/percentage-margins-mixed-ltr-dominant-regions.html:
- fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.html: Added.
- fast/regions/percentage-margins-mixed-rtl-dominant-regions.html:
- fast/regions/percentage-margins-rtl-variable-width-regions-expected.html: Added.
- fast/regions/percentage-margins-rtl-variable-width-regions.html:
- fast/regions/percentage-margins-variable-width-regions-expected.html: Added.
- fast/regions/percentage-margins-variable-width-regions.html:
- platform/efl/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Removed.
- platform/efl/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Removed.
- platform/efl/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Removed.
- platform/efl/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Removed.
- platform/efl/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Removed.
- platform/efl/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Removed.
- platform/efl/fast/regions/percentage-margins-variable-width-regions-expected.png: Removed.
- platform/efl/fast/regions/percentage-margins-variable-width-regions-expected.txt: Removed.
- platform/gtk/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Removed.
- platform/gtk/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Removed.
- platform/gtk/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Removed.
- platform/gtk/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Removed.
- platform/gtk/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Removed.
- platform/gtk/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Removed.
- platform/gtk/fast/regions/percentage-margins-variable-width-regions-expected.png: Removed.
- platform/gtk/fast/regions/percentage-margins-variable-width-regions-expected.txt: Removed.
- platform/mac/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Removed.
- platform/mac/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Removed.
- platform/mac/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Removed.
- platform/mac/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Removed.
- platform/mac/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Removed.
- platform/mac/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Removed.
- platform/mac/fast/regions/percentage-margins-variable-width-regions-expected.png: Removed.
- platform/mac/fast/regions/percentage-margins-variable-width-regions-expected.txt: Removed.
- platform/qt/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Removed.
- platform/qt/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Removed.
- platform/qt/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Removed.
- platform/qt/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Removed.
- platform/qt/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Removed.
- platform/qt/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Removed.
- platform/qt/fast/regions/percentage-margins-variable-width-regions-expected.png: Removed.
- platform/qt/fast/regions/percentage-margins-variable-width-regions-expected.txt: Removed.
- 10:36 AM Changeset in webkit [153056] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed build fix after r153054.
- WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
- 10:16 AM Changeset in webkit [153055] by
-
- 4 edits in trunk/Source
Remove deprecated and unused compositing settings
https://bugs.webkit.org/show_bug.cgi?id=119014
Reviewed by Andreas Kling.
Source/WebCore:
- page/Settings.in:
Source/WebKit/qt:
Remove A set of settings to control accelerated compositing that have long been
replaced with triggers returned by ChromeClient, but haven't been fully removed.
They are only set by the Qt port but not read anywhere.
- Api/qwebsettings.cpp:
(QWebSettingsPrivate::apply):
- 10:14 AM Changeset in webkit [153054] by
-
- 16 edits2 adds in trunk
Add a test for plug-in unavailability indicator obscurity detection
https://bugs.webkit.org/show_bug.cgi?id=119007
Reviewed by Anders Carlsson.
Test: plugins/unavailable-plugin-indicator-obscurity.html
Expose the ability to test whether the unavailable plugin indicator
is obscured via the internals object.
- testing/Internals.cpp:
(WebCore::Internals::isPluginUnavailabilityIndicatorObscured):
- testing/Internals.h:
- testing/Internals.idl:
Expose RenderEmbeddedObject::isReplacementObscured as
internals.isPluginUnavailabilityIndicatorObscured for testing purposes.
Expose the ability to block plug-ins via pluginLoadPolicy to testRunner.
- WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setBlockAllPlugins):
- WebKitTestRunner/InjectedBundle/TestRunner.h:
- WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
Add testRunner.setBlockAllPlugins function (and corresponding message to
forward it through to TestController).
- WebKitTestRunner/TestController.cpp:
Initialize m_shouldBlockAllPlugins to false (and drive-by initialize m_handlesAuthenticationChallenges).
(WTR::TestController::createWebViewWithOptions):
Register our pluginLoadPolicy callback.
(WTR::TestController::resetStateToConsistentValues):
Reset m_shouldBlockAllPlugins to false.
(WTR::TestController::pluginLoadPolicy):
Return the existing plugin load policy, unless setBlockAllPlugins(true)
was called, in which case we reject all plugins with kWKPluginLoadPolicyBlocked.
- WebKitTestRunner/TestController.h:
(WTR::TestController::setBlockAllPlugins):
Add a test that ensures that RenderEmbeddedObject accurately detects the
various different ways the unavailable plugin dialog can be obscured.
- platform/mac-wk2/TestExpectations:
- platform/mac/TestExpectations:
- plugins/unavailable-plugin-indicator-obscurity-expected.txt: Added.
- plugins/unavailable-plugin-indicator-obscurity.html: Added.
- Source/autotools/symbols.filter:
Expose RenderEmbeddedObject::isReplacementObscured to internals.
- 9:43 AM Changeset in webkit [153053] by
-
- 4 edits in trunk/LayoutTests
[Qt] REGRESSION(r152906) Modified fast/shapes/shape-inside/shape-inside-overflow.html ref test fails.
https://bugs.webkit.org/show_bug.cgi?id=118964
Reviewed by Andreas Kling.
I modified the test to use Ahem font. Now it's working well on Qt as well.
- fast/shapes/shape-inside/shape-inside-overflow-expected.html:
- fast/shapes/shape-inside/shape-inside-overflow.html:
- 8:36 AM Changeset in webkit [153052] by
-
- 3 edits in trunk/Source/WebKit/gtk
[GTK] GtkAdjustmentWatcher idle source not correctly handled
https://bugs.webkit.org/show_bug.cgi?id=119003
Reviewed by Martin Robinson.
GtkAdjustmentWatcher::updateAdjustmentsFromScrollbarsLater()
creates a new idle source and initializes
m_updateAdjustmentCallbackId, which is used everywhere and
specially in the destructor to cancel the source when the
GtkAdjustmentWatcher is deleted. However,
m_updateAdjustmentCallbackId is reset to 0 in
GtkAdjustmentWatcher::updateAdjustmentsFromScrollbars() only when
not returning early. This method is public and not only called by
the updateAdjustmentCallback, which means that a call to
updateAdjustmentsFromScrollbars could reset the
m_updateAdjustmentCallbackId without actually destroying the source.
- WebCoreSupport/GtkAdjustmentWatcher.cpp:
(WebKit::GtkAdjustmentWatcher::updateAdjustmentsFromScrollbars):
Cancel the adjustment later idle if it has been scheduled.
(WebKit::GtkAdjustmentWatcher::updateAdjustmentCallback): Reset
m_updateAdjustmentCallbackId.
- WebCoreSupport/GtkAdjustmentWatcher.h:
- 8:08 AM WebKitGTK/2.0.x edited by
- (diff)
- 6:34 AM Changeset in webkit [153051] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Added expectations for flaky tests.
- platform/gtk/TestExpectations: Added new expectations.
- 6:32 AM Changeset in webkit [153050] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Unskip passing tests.
https://bugs.webkit.org/show_bug.cgi?id=119008
Unreviewed GTK gardening.
Patch by Simon Pena <simon.pena@samsung.com> on 2013-07-23
- platform/gtk/TestExpectations: unskip editing/selection/mixed-editability-10.html,
editing/selection/5825350-1.html and editing/selection/5825350-2.html since they have new
baselines, unskip http/tests/security/mixedContent/insecure-audio-video-in-main-frame.html
after r152778, unskip fast/images/webgl-teximage2d.html after r152531 and
svg/custom/xlink-prefix-in-attributes.html after r152785
- 6:20 AM Changeset in webkit [153049] by
-
- 2 edits2 adds in trunk/LayoutTests
[GTK] Unreviewed gardening. Baseline and rebaseline needed after r152612 and r152911.
- platform/gtk/editing/caret/caret-color-expected.txt: Added.
- platform/gtk/fast/multicol/shrink-to-column-height-for-pagination-expected.txt: Updated.
- 5:35 AM Changeset in webkit [153048] by
-
- 12 edits in trunk/Source/WebKit2
[EFL][WK2] Add doneWithTouchEvent callback to the WKViewClient.
https://bugs.webkit.org/show_bug.cgi?id=110085
Patch by Eunmi Lee <eunmi15.lee@samsung.com> on 2013-07-23
Reviewed by Kenneth Rohde Christiansen.
Add doneWithTouchEvent callback to the WKViewClient in order to get the
result of touch events in the EwkView. The result will be used to
recognize gestures in the Bug 102643.
APIs to get values from WKTouchEventRef and WKTouchPointRef are added
because WKTypeRef is opaque to the applications.
- UIProcess/API/C/CoordinatedGraphics/WKView.h:
- UIProcess/API/C/efl/WKAPICastEfl.h:
(WebKit::toAPI):
- UIProcess/API/C/efl/WKEventEfl.cpp:
(WKTouchEventGetType):
(WKTouchEventGetTouchPoints):
(WKTouchEventGetModifiers):
(WKTouchEventGetTimestamp):
(WKTouchPointGetID):
(WKTouchPointGetState):
(WKTouchPointGetScreenPosition):
(WKTouchPointGetPosition):
(WKTouchPointGetRadius):
(WKTouchPointGetRotationAngle):
(WKTouchPointGetForceFactor):
- UIProcess/API/C/efl/WKEventEfl.h:
- UIProcess/API/efl/EwkView.cpp:
(EwkView::doneWithTouchEvent):
- UIProcess/API/efl/EwkView.h:
- UIProcess/CoordinatedGraphics/WebView.cpp:
(WebKit::WebView::doneWithTouchEvent):
- UIProcess/CoordinatedGraphics/WebViewClient.cpp:
(WebKit::WebViewClient::doneWithTouchEvent):
- UIProcess/CoordinatedGraphics/WebViewClient.h:
- UIProcess/efl/ViewClientEfl.cpp:
(WebKit::ViewClientEfl::doneWithTouchEvent):
(WebKit::ViewClientEfl::ViewClientEfl):
- UIProcess/efl/ViewClientEfl.h:
- 5:24 AM Changeset in webkit [153047] by
-
- 1 edit2 adds in trunk/LayoutTests
[GTK] Unreviewed gardening. Added needed baselines after r104133.
- platform/gtk/perf/nested-combined-selectors-expected.txt: Added.
- 4:51 AM Changeset in webkit [153046] by
-
- 4 edits in trunk/Source/WebCore
[Soup] Clean up header inclusions in ResourceRequest(Soup), SocketStreamHandle
https://bugs.webkit.org/show_bug.cgi?id=118984
Reviewed by Darin Adler.
Execute a minor cleanup of the header inclusions in Soup-specific ResourceRequestSoup.cpp, ResourceRequest.h
and SocketStreamHandle.h source files. The inclusions are sorted into proper order, with blank lines and unnecessary
reinclusions removed.
- platform/network/soup/ResourceRequest.h:
- platform/network/soup/ResourceRequestSoup.cpp:
- platform/network/soup/SocketStreamHandle.h:
- 4:38 AM Changeset in webkit [153045] by
-
- 2 edits in trunk/Source/WebCore
[Soup] Remove unnecessary header inclusions in ResourceHandleSoup.cpp
https://bugs.webkit.org/show_bug.cgi?id=118983
Reviewed by Martin Robinson.
Remove inclusions of the CachedResourceLoader, ChromeClient, Frame and Page headers. These are not
necessary (anymore) and only prevent the source file to be built independently of WebCore, as it should be.
- platform/network/soup/ResourceHandleSoup.cpp:
- 4:30 AM Changeset in webkit [153044] by
-
- 4 edits in trunk/Source/WebInspectorUI
WebSocket initialization to use remote inspector
https://bugs.webkit.org/show_bug.cgi?id=118678
Patch by Roland Takacs <rtakacs@inf.u-szeged.hu> on 2013-07-23
Reviewed by Timothy Hatcher.
Add WebSocket initialization and define a 'connect-src' directive in the
Content-Security-Policy HTTP header to enable the connection.
- UserInterface/InspectorFrontendHostStub.js:
(.WebInspector.InspectorFrontendHostStub.prototype.sendMessageToBackend):
- UserInterface/Main.html:
- UserInterface/Main.js:
(WebInspector.loaded):
(WebInspector._initializeWebSocketIfNeeded.createSocket.WebInspector):
(WebInspector._initializeWebSocketIfNeeded.createSocket):
(WebInspector._initializeWebSocketIfNeeded):
- 4:25 AM Changeset in webkit [153043] by
-
- 3 edits in trunk/Source/WebCore
Remove unnecessary header inclusions in GraphicsContext3D.cpp, GraphicsContext3DOpenGLCommon.cpp
https://bugs.webkit.org/show_bug.cgi?id=118989
Reviewed by Darin Adler.
- platform/graphics/GraphicsContext3D.cpp: Remove the unnecessary DrawingBuffer header inclusion.
- platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: Remove the unnecessary
CanvasRenderingContext and WebGLObject header inclusions.
- 4:24 AM Changeset in webkit [153042] by
-
- 3 edits in trunk/Source/WebCore
Remove the topDocumentURL member of the GraphicsContext3D::Attributes struct
https://bugs.webkit.org/show_bug.cgi?id=118987
Reviewed by Darin Adler.
Remove the topDocumentURL member that currently resides in the GraphicsContext3D::Attributes struct.
It's not used anywhere and only has one place where it is set, in WebGLRenderingContext::create.
- html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::create):
- platform/graphics/GraphicsContext3D.h:
- 4:21 AM Changeset in webkit [153041] by
-
- 3 edits in trunk/Source/WebCore
Remove unused DrawingBuffer::paintRenderingResultsToImageData
https://bugs.webkit.org/show_bug.cgi?id=118986
Reviewed by Darin Adler.
Remove the paintRenderingResultsToImageData method of the DrawingBuffer class. It is not used anywhere
and also introduces a nasty layering violation by including and operating with the ImageData class.
- platform/graphics/gpu/DrawingBuffer.cpp:
- platform/graphics/gpu/DrawingBuffer.h:
- 4:20 AM Changeset in webkit [153040] by
-
- 2 edits in trunk/Source/WebCore
Remove unnecessary includes in FormDataBuilder.cpp
https://bugs.webkit.org/show_bug.cgi?id=118991
Reviewed by Darin Adler.
- platform/network/FormDataBuilder.cpp: Remove the Frame and FrameLoader header inclusions,
nothing these two headers provide is used in this source file.
- 4:17 AM Changeset in webkit [153039] by
-
- 2 edits in trunk/Source/WebCore
Fix the style of the ContentDispositionType enum definition
https://bugs.webkit.org/show_bug.cgi?id=118990
Reviewed by Darin Adler.
- platform/network/HTTPParsers.h: Align the style of the ContentDispositionType enumeration
definition with the other enumeration definitions in the HTTPParsers header, using the
'enum Name { ... }' style instead of a typedef.
- 3:35 AM Changeset in webkit [153038] by
-
- 1 edit2 adds in trunk/LayoutTests
[GTK] Unreviewed gardening. New baselines after r152941.
https://bugs.webkit.org/show_bug.cgi?id=119005
Unreviewed GTK gardening.
GTK's DumpRenderTree prints CONFIRM instead of CONFIRM NAVIGATION, so we need
platform-specific expectations.
Patch by Simon Pena <simon.pena@samsung.com> on 2013-07-23
- platform/gtk/fast/loader/show-only-one-beforeunload-dialog-expected.txt: Added.
- platform/gtk/http/tests/misc/iframe-beforeunload-dialog-matching-ancestor-securityorigin-expected.txt: Added.
- 3:08 AM Changeset in webkit [153037] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Skip failing test.
https://bugs.webkit.org/show_bug.cgi?id=119006
Unreviewed GTK gardening.
Patch by Simon Pena <simon.pena@samsung.com> on 2013-07-23
- platform/gtk/TestExpectations: mathml/presentation/fenced-mi.html fails
after being converted to ref test.
- 3:03 AM Changeset in webkit [153036] by
-
- 1 edit7 adds in trunk/LayoutTests
[GTK] Unreviewed gardening. Added needed baselines for GTK+.
- platform/gtk/fast/block/lineboxcontain/block-with-ideographs-expected.txt: Added.
- platform/gtk/fast/css-generated-content/details-summary-before-after-expected.txt: Added.
- platform/gtk/fast/css3-text/css3-text-decoration/text-decoration-line-scaled-expected.txt: Added.
- platform/gtk/fast/regions/region-dynamic-after-before-expected.txt: Added.
- platform/gtk/fast/regions/region-generated-content-before-after-expected.txt: Added.
- platform/gtk/fast/text/text-combine-different-fonts-expected.txt: Added.
- platform/gtk/svg/text/text-overflow-ellipsis-svgfont-kerning-ligatures-expected.txt: Added.
- 2:49 AM Changeset in webkit [153035] by
-
- 2 edits in trunk/Source/WebCore
[GTK] Mock GDK_IS_X11_DISPLAY macro can be redefined unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=118980
Reviewed by Martin Robinson.
- platform/gtk/GtkVersioning.h: Only define the GDK_IS_X11_DISPLAY macro when using the GTK+ 2 API version
as that's the only supported configuration where the macro is not defined. Definining it only if it's not
yet defined at the time of inclusion of this header can cause redefinitions in GTK+ headers that are normally
included later.
- 1:24 AM Changeset in webkit [153034] by
-
- 3 edits in trunk/LayoutTests
Enable some MathML reftests on Windows and EFL ports.
https://bugs.webkit.org/show_bug.cgi?id=118916
Patch by Frédéric Wang <fred.wang@free.fr> on 2013-07-23
Reviewed by Chris Fleizach.
- platform/efl/TestExpectations: do not skip over.html
- platform/win/TestExpectations: enable most of the non-pixel tests
Jul 22, 2013:
- 10:40 PM Changeset in webkit [153033] by
-
- 13 edits5 adds in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: DFG should do a high-level LICM before going to FTL
https://bugs.webkit.org/show_bug.cgi?id=118749
Reviewed by Oliver Hunt.
Implements LICM hoisting for nodes that never write anything and never read
things that are clobbered by the loop. There are some other preconditions for
hoisting, see DFGLICMPhase.cpp.
Also did a few fixes:
- ClobberSet::add was failing to switch Super entries to Direct entries in some cases.
- DFGClobberize.cpp needed to #include "Operations.h".
- DCEPhase needs to process the graph in reverse DFS order, when we're in SSA.
- AbstractInterpreter can now execute a Node without knowing its indexInBlock. Knowing the indexInBlock is an optional optimization that all other clients of AI still opt into, but LICM doesn't.
This makes the FTL a 2.19x speed-up on imaging-gaussian-blur.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractInterpreter.h:
(AbstractInterpreter):
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
(JSC::DFG::::execute):
(DFG):
(JSC::DFG::::clobberWorld):
(JSC::DFG::::clobberStructures):
- dfg/DFGAtTailAbstractState.cpp: Added.
(DFG):
(JSC::DFG::AtTailAbstractState::AtTailAbstractState):
(JSC::DFG::AtTailAbstractState::~AtTailAbstractState):
(JSC::DFG::AtTailAbstractState::createValueForNode):
(JSC::DFG::AtTailAbstractState::forNode):
- dfg/DFGAtTailAbstractState.h: Added.
(DFG):
(AtTailAbstractState):
(JSC::DFG::AtTailAbstractState::initializeTo):
(JSC::DFG::AtTailAbstractState::forNode):
(JSC::DFG::AtTailAbstractState::variables):
(JSC::DFG::AtTailAbstractState::block):
(JSC::DFG::AtTailAbstractState::isValid):
(JSC::DFG::AtTailAbstractState::setDidClobber):
(JSC::DFG::AtTailAbstractState::setIsValid):
(JSC::DFG::AtTailAbstractState::setBranchDirection):
(JSC::DFG::AtTailAbstractState::setFoundConstants):
(JSC::DFG::AtTailAbstractState::haveStructures):
(JSC::DFG::AtTailAbstractState::setHaveStructures):
- dfg/DFGBasicBlock.h:
(JSC::DFG::BasicBlock::insertBeforeLast):
- dfg/DFGBasicBlockInlines.h:
(DFG):
- dfg/DFGClobberSet.cpp:
(JSC::DFG::ClobberSet::add):
(JSC::DFG::ClobberSet::addAll):
- dfg/DFGClobberize.cpp:
(JSC::DFG::doesWrites):
- dfg/DFGClobberize.h:
(DFG):
- dfg/DFGDCEPhase.cpp:
(JSC::DFG::DCEPhase::DCEPhase):
(JSC::DFG::DCEPhase::run):
(JSC::DFG::DCEPhase::fixupBlock):
(DCEPhase):
- dfg/DFGEdgeDominates.h: Added.
(DFG):
(EdgeDominates):
(JSC::DFG::EdgeDominates::EdgeDominates):
(JSC::DFG::EdgeDominates::operator()):
(JSC::DFG::EdgeDominates::result):
(JSC::DFG::edgesDominate):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::checkArray):
- dfg/DFGLICMPhase.cpp: Added.
(LICMPhase):
(JSC::DFG::LICMPhase::LICMPhase):
(JSC::DFG::LICMPhase::run):
(JSC::DFG::LICMPhase::attemptHoist):
(DFG):
(JSC::DFG::performLICM):
- dfg/DFGLICMPhase.h: Added.
(DFG):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
- 9:52 PM Changeset in webkit [153032] by
-
- 3 edits in trunk/Source/WebCore
StickyPositionConstraints should store the constrainingRectAtLastLayout
https://bugs.webkit.org/show_bug.cgi?id=118999
Reviewed by Simon Fraser.
Much like how FixedPositionConstraints store a viewportRectAtLastLayout,
StickyConstraints should store a constrainingRectAtLastLayout. We'll need this to
get sticky right in overflow areas once overflow areas scroll on the scrolling
thread.
- page/scrolling/ScrollingConstraints.h:
(WebCore::StickyPositionViewportConstraints::StickyPositionViewportConstraints):
(WebCore::StickyPositionViewportConstraints::constrainingRectAtLastLayout):
(WebCore::StickyPositionViewportConstraints::setConstrainingRectAtLastLayout):
- rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::computeStickyPositionConstraints):
- 7:30 PM Changeset in webkit [153031] by
-
- 11 edits in branches/safari-537-branch/Source
Merged r153017. <rdar://problem/14511268>
- 7:16 PM Changeset in webkit [153030] by
-
- 3 edits in branches/safari-537-branch/Source/WebCore
Merged r153014. <rdar://problem/14516421>
- 7:12 PM Changeset in webkit [153029] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r153013. <rdar://problem/14511232>
- 7:10 PM Changeset in webkit [153028] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r152989. <rdar://problem/13580220>
- 7:08 PM Changeset in webkit [153027] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r152984. <rdar://problem/14155030>
- 7:04 PM Changeset in webkit [153026] by
-
- 4 edits in branches/safari-537-branch
Merged r152951. <rdar://problem/14504480>
- 7:03 PM Changeset in webkit [153025] by
-
- 2 edits in branches/safari-537-branch/Tools
Merged r152484. <rdar://problem/14504480>
- 6:51 PM Changeset in webkit [153024] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r152950. <rdar://problem/14496721>
- 6:47 PM Changeset in webkit [153023] by
-
- 3 edits in branches/safari-537-branch/Source/WebKit2
Merged r152787. <rdar://problem/14418799>
- 6:43 PM Changeset in webkit [153022] by
-
- 2 edits in trunk/Source/WebCore
DateInputType constructor initiate incorrect base class
https://bugs.webkit.org/show_bug.cgi?id=118962
Patch by Santosh Mahto <santosh.ma@samsung.com> on 2013-07-22
Reviewed by Gyuyoung Kim.
No new test required since solving code error
- html/DateInputType.cpp:
(WebCore::DateInputType::DateInputType):
Corrected the base class instantiation in constructor.
- 6:24 PM Changeset in webkit [153021] by
-
- 15 edits9 copies in branches/safari-537-branch
Merged r152941. <rdar://problem/14475779>
- 6:16 PM Changeset in webkit [153020] by
-
- 2 edits in branches/safari-537-branch
Merged r152939. <rdar://problem/14497952>
- 6:15 PM Changeset in webkit [153019] by
-
- 5 edits in branches/safari-537-branch
Merged r152939. <rdar://problem/14365153>
- 6:03 PM Changeset in webkit [153018] by
-
- 14 edits50 copies in branches/safari-537-branch
Merged r152911. <rdar://problem/14109351>
- 6:02 PM Changeset in webkit [153017] by
-
- 11 edits in trunk/Source
Plug-in unavailability indicator should not be displayed if a blocked plugin's indicator is clipped
https://bugs.webkit.org/show_bug.cgi?id=118998
<rdar://problem/14511268>
Reviewed by Anders Carlsson.
- html/HTMLEmbedElement.cpp:
(WebCore::HTMLEmbedElement::updateWidget):
- html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::updateWidget):
- html/HTMLPlugInElement.cpp:
(WebCore::HTMLPlugInElement::defaultEventHandler):
(WebCore::HTMLPlugInElement::supportsFocus):
- html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::updateWidgetIfNecessary):
- loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::createJavaAppletWidget):
(WebCore::SubframeLoader::loadPlugin):
- page/FrameView.cpp:
(WebCore::FrameView::updateWidget):
Rename showsUnavailablePluginIndicator to isPluginUnavailable, since being unavailable
and actually showing the indicator are two totally different things.
- WebCore.exp.in: Expose setUnavailablePluginIndicatorIsHidden.
- rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::RenderEmbeddedObject):
Rename m_showsUnavailablePluginIndicator to m_isPluginUnavailable.
Add m_isUnavailablePluginIndicatorHidden, defaulting to false.
(WebCore::RenderEmbeddedObject::setPluginUnavailabilityReasonWithDescription):
Set m_isPluginUnavailable when we get an unavailability reason.
(WebCore::RenderEmbeddedObject::paint):
(WebCore::RenderEmbeddedObject::setUnavailablePluginIndicatorIsHidden): Added.
- rendering/RenderEmbeddedObject.h:
(WebCore::RenderEmbeddedObject::isPluginUnavailable): Added.
(WebCore::RenderEmbeddedObject::showsUnavailablePluginIndicator):
Repurpose "showsUnavailablePluginIndicator" to actually represent whether
the indicator is displayed (i.e. the plugin is unavailable, and the
indicator is not hidden).
- 5:54 PM Changeset in webkit [153016] by
-
- 3 edits2 copies in branches/safari-537-branch
Merged r152907. <rdar://problem/14494580>
- 5:51 PM Changeset in webkit [153015] by
-
- 2 edits in branches/safari-537-branch/Source/JavaScriptCore
Merged r152882. <rdar://problem/14488577>
- 5:14 PM Changeset in webkit [153014] by
-
- 3 edits in trunk/Source/WebCore
RenderEmbeddedObject::isReplacementObscured should include the arrow in its area-of-interest
https://bugs.webkit.org/show_bug.cgi?id=118995
<rdar://problem/14516421>
Reviewed by Anders Carlsson.
- rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::unavailablePluginIndicatorBounds):
Rename method from replacementTextRect to unavailablePluginIndicatorBounds for accuracy.
Use the bounding box of the indicator's path, which includes the rounded rect behind
the text as well as the arrow button.
(WebCore::RenderEmbeddedObject::isReplacementObscured):
- rendering/RenderEmbeddedObject.h:
- 5:05 PM Changeset in webkit [153013] by
-
- 2 edits in trunk/Source/WebCore
<applet> plugins are instantiated post-attach (instead of post-layout like for object and embed)
https://bugs.webkit.org/show_bug.cgi?id=118994
<rdar://problem/14511232>
Reviewed by Anders Carlsson.
Make <applet> consistent with <object> and <embed>, deferring plugin
instantiation to post-layout, so that layout is up-to-date if anything
needs it (like RenderEmbeddedObject::isReplacementObscured) during creation.
- html/HTMLAppletElement.cpp:
(WebCore::HTMLAppletElement::updateWidget):
Copy code from HTMLObjectElement/HTMLEmbedElement that defers plugin
creation until post-layout tasks. Java is always an NPAPI plugin, so
we should always defer if requested.
- 4:53 PM Changeset in webkit [153012] by
-
- 4 edits in branches/safari-537-branch
Merged r152874. <rdar://problem/14473010>
- 4:43 PM Changeset in webkit [153011] by
-
- 2 edits in branches/safari-537-branch/Source/JavaScriptCore
Merged r152868. <rdar://problem/14486297>
- 4:37 PM Changeset in webkit [153010] by
-
- 3 edits in branches/safari-537-branch/Source/WebKit2
Merged r152866. <rdar://problem/14474988>
- 4:34 PM Changeset in webkit [153009] by
-
- 4 edits in branches/safari-537-branch/Source/WebKit2
Merged r152862. <rdar://problem/13826348>
- 3:33 PM Changeset in webkit [153008] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r152858. <rdar://problem/14480588>
- 3:29 PM Changeset in webkit [153007] by
-
- 2 edits in trunk/Source/WTF
String::lower() - Skip to slow path on the first failure
https://bugs.webkit.org/show_bug.cgi?id=118885
Reviewed by Andreas Kling.
In the 8 bits case, we don't need to know the state of the full string before changing characters
to their lowercase variant.
Just fail immediately and start transforming characters from the point of failure.
This avoid reading the string twice when the uppercase character is not at the end of the string.
- wtf/text/StringImpl.cpp:
(WTF::StringImpl::lower):
- 3:26 PM Changeset in webkit [153006] by
-
- 4 edits in branches/safari-537-branch/Source
Merged r152848. <rdar://problem/14481659>
- 3:23 PM Changeset in webkit [153005] by
-
- 4 edits in trunk/Source/WebCore
Do not allocate 2 AtomicString just to do a comparison in HTMLAnchorElement::setRel()
https://bugs.webkit.org/show_bug.cgi?id=118941
Reviewed by Gavin Barraclough.
Currently, the only type of link relation supported by HTMLAnchorElement is RelationNoReferrer.
To find the value, we create a SpaceSplitString with the input value of the attribute (which
create one or more AtomicString depending on the input). Then we create a new AtomicString for
the literal "noreferrer". Finally, we compare the pointers and throw away all the AtomicStrings.
This causes a lot of memory operations for something really simple.
This patch adds a little helper method to SpaceSplitString to find a literal in the input. The only
allocation happens if we need to foldCase(). The following operations are done without allocating
new buffer and without hashing the input.
- dom/SpaceSplitString.cpp:
(WebCore::tokenizeSpaceSplitString):
(WebCore::AppendTokenToVectorTokenProcessor::AppendTokenToVectorTokenProcessor):
(WebCore::AppendTokenToVectorTokenProcessor::processToken):
(WebCore::SpaceSplitStringData::createVector):
(WebCore::TokenIsEqualToCStringTokenProcessor::TokenIsEqualToCStringTokenProcessor):
(WebCore::TokenIsEqualToCStringTokenProcessor::processToken):
(WebCore::TokenIsEqualToCStringTokenProcessor::referenceStringWasFound):
(WebCore::SpaceSplitString::spaceSplitStringContainsValue):
- dom/SpaceSplitString.h:
(WebCore::SpaceSplitString::spaceSplitStringContainsValue):
- html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::setRel):
- 3:17 PM Changeset in webkit [153004] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r152839. <rdar://problem/14247011>
- 3:10 PM Changeset in webkit [153003] by
-
- 7 edits3 adds in trunk
segfault in RenderLayerCompositor when the iframe's position attribute is changed and it embeds <object>.
https://bugs.webkit.org/show_bug.cgi?id=118965
Patch by Zalan Bujtas <Alan Bujtas> on 2013-07-22
Reviewed by Simon Fraser.
Do not change the composition state unless we can reliably figure out the iframe's size.
If the renderer is not yet attached, its size is not computable.
Source/WebCore:
Test: compositing/iframes/iframe-position-absolute-with-padding-percentage-crash.html
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForFrame):
LayoutTests:
- compositing/iframes/iframe-position-absolute-with-padding-percentage-crash-expected.txt: Added.
- compositing/iframes/iframe-position-absolute-with-padding-percentage-crash.html: Added.
- compositing/iframes/resources/embed-tag-with-composition.html: Added.
- platform/efl/TestExpectations: skip
- platform/efl-wk2/TestExpectations: skip
- platform/qt-5.0-wk1/TestExpectations: skip
- platform/qt-5.0-wk2/TestExpectations: skip
- 3:04 PM Changeset in webkit [153002] by
-
- 3 edits2 adds in trunk
AX: VoiceOver only read the first column in a safari table
https://bugs.webkit.org/show_bug.cgi?id=118992
Reviewed by Tim Horton.
Source/WebCore:
In case the first section has fewer columns than the rest of the table, the AXTable was only reporting the number of
columns for the first section. We need to take the max number of columns out of all sections.
Test: accessibility/table-with-mismatch-column-count-in-initial-section.html
- accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::addChildren):
LayoutTests:
- accessibility/table-with-mismatch-column-count-in-initial-section-expected.txt: Added.
- accessibility/table-with-mismatch-column-count-in-initial-section.html: Added.
- 2:59 PM Changeset in webkit [153001] by
-
- 18 edits in branches/safari-537-branch
Merged r152824. <rdar://problem/14209318>
- 2:50 PM Changeset in webkit [153000] by
-
- 38 edits1 delete in branches/safari-537-branch
Rollout of r152701. <rdar://problem/14209318>
- 2:48 PM Changeset in webkit [152999] by
-
- 4 edits in branches/safari-537-branch/LayoutTests
Rollout of r152703. <rdar://problem/14209318>
- 2:32 PM Changeset in webkit [152998] by
-
- 7 edits2 adds in trunk
StickyPositionContraints should not need to change to account for a RenderLayer's
scrollOffset
https://bugs.webkit.org/show_bug.cgi?id=118958
-and corresponding-
<rdar://problem/12469203>
Reviewed by Simon Fraser.
Source/WebCore:
Before this patch, to get sticky offsets right in overflow areas, the
StickyPositionConstraints changed on every scroll to factor it in. This will be a
problem once we can scroll overflow areas on the scrolling thread. The constraints
should never have to change to account for the scroll position. This patch fixes
that issue by changing the StickyPositionViewportConstraints’s containerBlockRect
and stickyBoxRect to be in a coordinate space that is relative to the scrolling
ancestor rather than being absolute. This patch also removes ‘absolute’ from those
variable names since they are no longer absolute.
A few re-names in the StickyPositionViewportConstraints class. The parameter to
computeStickyOffset() used to be called viewportRect, and is now called
constrainingRect. m_absoluteStickyBoxRect is now m_stickyBoxRect, and
m_absoluteContainingBlockRect is now m_containingBlockRect. And finally,
layerPositionForViewportRect() is now layerPositionForConstrainingRect()
- page/scrolling/ScrollingConstraints.cpp:
(WebCore::StickyPositionViewportConstraints::computeStickyOffset):
(WebCore::StickyPositionViewportConstraints::layerPositionForConstrainingRect):
- page/scrolling/ScrollingConstraints.h:
(WebCore::StickyPositionViewportConstraints::StickyPositionViewportConstraints):
(WebCore::StickyPositionViewportConstraints::containingBlockRect):
(WebCore::StickyPositionViewportConstraints::setContainingBlockRect):
(WebCore::StickyPositionViewportConstraints::stickyBoxRect):
(WebCore::StickyPositionViewportConstraints::setStickyBoxRect):
(WebCore::StickyPositionViewportConstraints::operator==):
Accounting for the re-names.
- page/scrolling/ScrollingStateStickyNode.cpp:
(WebCore::ScrollingStateStickyNode::syncLayerPositionForViewportRect):
(WebCore::ScrollingStateStickyNode::dumpProperties):
- page/scrolling/mac/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::parentScrollPositionDidChange):
Compute all values relative to the scrolling ancestor. This requires some juggling
in the overflow case to factor border and padding in or out.
- rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::computeStickyPositionConstraints):
This is where the scrollOffset should be factored in.
(WebCore::RenderBoxModelObject::stickyPositionOffset):
LayoutTests:
This tests stick in overflow areas where the sticky’s containing block overflows
the overflow area. The sticky object should not extend beyond the overflow area in
that case.
- fast/css/sticky/sticky-top-overflow-container-overflow-expected.html: Added.
- fast/css/sticky/sticky-top-overflow-container-overflow.html: Added.
- 2:24 PM Changeset in webkit [152997] by
-
- 7 edits2 copies in branches/safari-537-branch
Merged r152793. <rdar://problem/14152444>
- 2:21 PM Changeset in webkit [152996] by
-
- 11 edits in branches/safari-537-branch
Merged r152788. <rdar://problem/14421609>
- 2:17 PM Changeset in webkit [152995] by
-
- 3 edits2 copies in branches/safari-537-branch
Merged r152783. <rdar://problem/13540428>
- 2:15 PM Changeset in webkit [152994] by
-
- 2 edits in branches/safari-537-branch/Websites/bugs.webkit.org
Merged r152751. <rdar://problem/14450661>
- 2:12 PM Changeset in webkit [152993] by
-
- 2 edits in branches/safari-537-branch/Source/WebCore
Merged r152743. <rdar://problem/14459780>
- 2:09 PM Changeset in webkit [152992] by
-
- 2 edits in branches/safari-537-branch/Source/JavaScriptCore
Merged r152737. <rdar://problem/14435663>
- 2:07 PM Changeset in webkit [152991] by
-
- 3 edits4 copies in branches/safari-537-branch
Merged r152721. <rdar://problem/14446514>
- 1:56 PM Changeset in webkit [152990] by
-
- 2 edits in branches/safari-537-branch/Source/WebInspectorUI
Merged r152651. <rdar://problem/14406853>
- 1:54 PM Changeset in webkit [152989] by
-
- 2 edits in trunk/Source/WebCore
PlugIn content can disappear after restarting
https://bugs.webkit.org/show_bug.cgi?id=118982
Reviewed by Simon Fraser.
When a snapshotted plug-in is restarted, we inserted its compositing
layer back into the tree, but didn't recalculate style. This meant
that a subsequent compositing tree operation (such as any hardware
animation) could cause the content to disappear.
- html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::setDisplayState): Force a style recalc.
(WebCore::HTMLPlugInImageElement::removeSnapshotTimerFired): Ditto.
- 1:52 PM Changeset in webkit [152988] by
-
- 2 edits in branches/safari-537-branch/Source/JavaScriptCore
Merged r152600. <rdar://problem/14474400>
- 12:49 PM Changeset in webkit [152987] by
-
- 2 edits5 adds in trunk/LayoutTests
Rebaseline the caret color test for the Mac port after r152612
https://bugs.webkit.org/show_bug.cgi?id=118961
Reviewed by Alexey Proskuryakov.
Added expected results of the caret color test for the Mac port.
- platform/mac-wk2/editing/caret/caret-color-expected.png: Added.
- platform/mac/TestExpectations:
- platform/mac/editing/caret/caret-color-expected.png: Added.
- platform/mac/editing/caret/caret-color-expected.txt: Added.
- 12:38 PM Changeset in webkit [152986] by
-
- 3 edits2 adds in trunk
REGRESSION(r152227) Images with compositing layer don't show up unless the containing window is resized.
https://bugs.webkit.org/show_bug.cgi?id=118951
Patch by Zalan Bujtas <Alan Bujtas> on 2013-07-22
Reviewed by Simon Fraser.
Ensure that the content rect is initialized when the image is set on the graphics layer.
RenderLayerBacking::updateGraphicsLayerGeometry() only updates the contents rect when
the associated graphics layer has a content layer. Since the image gets committed
on the graphics layer after the update calls, the contents rect is left uninitialized.
Source/WebCore:
Test: compositing/images/positioned-image-content-rect.html
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateImageContents):
LayoutTests:
- compositing/images/positioned-image-content-rect-expected.html: Added.
- compositing/images/positioned-image-content-rect.html: Added.
- 11:48 AM Changeset in webkit [152985] by
-
- 3 edits in trunk/Source/WebCore
[Old Web Inspector] When right-clicking on a DataGrid column, show editing menu option as "Edit <columnName>" instead of just "Edit"
https://bugs.webkit.org/show_bug.cgi?id=118971
Patch by Diego Pino Garcia <Diego Pino Garcia> on 2013-07-22
Reviewed by Timothy Hatcher.
- English.lproj/localizedStrings.js:
- inspector/front-end/DataGrid.js: Change "Edit" for "Edit <columnTitle>"
(WebInspector.DataGrid.prototype._contextMenuInDataTable):
- 11:25 AM Changeset in webkit [152984] by
-
- 2 edits in trunk/Source/WebKit2
Frequent MESSAGE_CHECK failures in WebPageProxy::didReceiveEvent
https://bugs.webkit.org/show_bug.cgi?id=118976
<rdar://problem/14155030>
Reviewed by Sam Weinig.
- UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::resetStateAfterProcessExited): Clear m_gestureEventQueue, just like we clear all other event queues here.
- 11:14 AM Changeset in webkit [152983] by
-
- 2 edits in trunk/Source/WebKit
Fixed WinCairo build configurations.
https://bugs.webkit.org/show_bug.cgi?id=118932
Reviewed by Brent Fulgham.
- WebKit.vcxproj/WebKit.sln:
Made WinCairo not build AssembleBuildLogs (wasn't working, not necessary).
Made Debug_WinCairo build with Debug_WinCairo configuration.
Made 64-bit WinCairo not build QTMovieWin.
- 11:12 AM Changeset in webkit [152982] by
-
- 6 edits in trunk/Source
Added assembly files to Windows 64-bit builds.
https://bugs.webkit.org/show_bug.cgi?id=118931
Reviewed by Brent Fulgham.
Source/JavaScriptCore:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: Added JITStubsMSVC64.asm for x64 and enabled MASM.
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: Added JITStubsMSVC64.asm.
Source/WebCore:
- WebCore.vcxproj/WebCore.vcxproj: Added PaintHooks.asm for x64 and enabled MASM.
- WebCore.vcxproj/WebCore.vcxproj.filters: Added PaintHooks.asm.
- 11:10 AM Changeset in webkit [152981] by
-
- 4 edits30 adds3 deletes in trunk/LayoutTests
Unreviewed, rolling out r152968.
http://trac.webkit.org/changeset/152968
https://bugs.webkit.org/show_bug.cgi?id=118975
"I forgot to add a test" (Requested by abucur on #webkit).
- fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.html: Removed.
- fast/regions/percentage-margins-mixed-ltr-dominant-regions.html:
- fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.html: Removed.
- fast/regions/percentage-margins-mixed-rtl-dominant-regions.html:
- fast/regions/percentage-margins-rtl-variable-width-regions-expected.html: Removed.
- fast/regions/percentage-margins-rtl-variable-width-regions.html:
- platform/efl/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Added.
- platform/efl/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Added.
- platform/efl/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Added.
- platform/efl/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Added.
- platform/efl/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Added.
- platform/efl/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Added.
- platform/efl/fast/regions/percentage-margins-variable-width-regions-expected.png: Added.
- platform/efl/fast/regions/percentage-margins-variable-width-regions-expected.txt: Added.
- platform/gtk/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Added.
- platform/gtk/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Added.
- platform/gtk/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Added.
- platform/gtk/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Added.
- platform/gtk/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Added.
- platform/gtk/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Added.
- platform/gtk/fast/regions/percentage-margins-variable-width-regions-expected.png: Added.
- platform/gtk/fast/regions/percentage-margins-variable-width-regions-expected.txt: Added.
- platform/mac/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Added.
- platform/mac/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Added.
- platform/mac/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Added.
- platform/mac/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Added.
- platform/mac/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Added.
- platform/mac/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Added.
- platform/qt/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Added.
- platform/qt/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Added.
- platform/qt/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Added.
- platform/qt/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Added.
- platform/qt/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Added.
- platform/qt/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Added.
- platform/qt/fast/regions/percentage-margins-variable-width-regions-expected.png: Added.
- platform/qt/fast/regions/percentage-margins-variable-width-regions-expected.txt: Added.
- 11:06 AM Changeset in webkit [152980] by
-
- 2 edits in trunk/Source/WebCore
[BlackBerry] Fix WebGL to a 2D canvas copies.
https://bugs.webkit.org/show_bug.cgi?id=118921
https://jira.bbqnx.net/browse/BRWSR-12714
JIRA 449577
Patch by Jakob Petsovits <jpetsovits@blackberry.com> on 2013-07-22
Reviewed by George Staikos.
The transform here was converted incorrectly when it
replaced the pixel copy that was there before.
As a true draw transformation, it doesn't need the "- 1"
modification that pixel copies often require.
Fixes existing webgl/conformance/canvas tests.
- platform/graphics/blackberry/GraphicsContext3DBlackBerry.cpp:
(WebCore::GraphicsContext3D::paintToCanvas):
- 10:05 AM Changeset in webkit [152979] by
-
- 3 edits in trunk/Source/WebInspectorUI
Web Inspector: When right-clicking on a DataGrid column, show editing
menu option as "Edit <columnName>" instead of just "Edit"
https://bugs.webkit.org/show_bug.cgi?id=118970
Patch by Diego Pino Garcia <Diego Pino Garcia> on 2013-07-22
Reviewed by Timothy Hatcher.
- Localizations/en.lproj/localizedStrings.js: Add literal "Edit '%s'"
- UserInterface/DataGrid.js: Change "Edit" for "Edit <columnTitle>"
(WebInspector.DataGrid.prototype._contextMenuInDataTable):
- 10:04 AM Changeset in webkit [152978] by
-
- 2 edits in trunk/LayoutTests
Unreviewed gardening of AppleWin port. Skip some crashing tests.
- platform/win/TestExpectations:
- 9:39 AM Changeset in webkit [152977] by
-
- 1 edit2 adds in trunk/LayoutTests
[GTK] Unreviewed gardening. Added baselines needed after r110542.
- platform/gtk/fast/forms/label/labelable-elements-expected.txt: Added.
- 9:35 AM Changeset in webkit [152976] by
-
- 6 edits in trunk/Source
[Curl] Download fails for certain urls.
https://bugs.webkit.org/show_bug.cgi?id=118468
Patch by peavo@outlook.com <peavo@outlook.com> on 2013-07-22
Reviewed by Brent Fulgham.
Source/WebCore:
The current Curl download implementation has a few shortcomings:
1) Downloading from secure locations fails. We need to provide Curl with the path to a certificate file (.pem file).
2) Cookies are not set in the download request. We need to give Curl the path to the cookie file.
3) When a normal load is converted to a download, some of the headers from the original request is not sent (e.g. Referer, User agent).
- platform/network/curl/CurlDownload.cpp:
(WebCore::CurlDownload::CurlDownload): Initialize custom headers member.
(WebCore::CurlDownload::~CurlDownload): Free custom headers member.
(WebCore::CurlDownload::init): Set certificate and cookie file path.
(WebCore::CurlDownload::closeFile): Check file handle against value for invalid platform handle.
(WebCore::CurlDownload::writeDataToFile): Added utility method to write download data to file.
(WebCore::CurlDownload::addHeaders): Added utility method to add headers to request.
(WebCore::CurlDownload::didReceiveData): Use writeDataToFile utility method.
- platform/network/curl/CurlDownload.h:
Put class in WebCore namespace.
Added method to init download from resource handle, request, and response object.
Added utility method to write download data to file.
Added utility method to add headers to request.
Added custom headers member.
Source/WebKit/win:
Initialize download from provided resource handle, request, and response object.
- WebDownload.h: Use WebCore namespace for Curl download class.
- WebDownloadCurl.cpp:
(WebDownload::init): Initialize download from provided resource handle, request, and response object.
- 9:26 AM Changeset in webkit [152975] by
-
- 4 edits in trunk/Source/WebCore
[iOS] captions sometimes positioned incorrectly after fullscreen state change
https://bugs.webkit.org/show_bug.cgi?id=118912
Reviewed by Jer Noble.
- html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay): Call clearTextTrackRepresentation.
(WebCore::MediaControlTextTrackContainerElement::updateTimerFired): Call updateDisplay so
cues are re-rendered with the updated size.
(WebCore::MediaControlTextTrackContainerElement::clearTextTrackRepresentation): Cleanup the
text track representation.
(WebCore::MediaControlTextTrackContainerElement::enteredFullscreen): New, force cues to be updated.
(WebCore::MediaControlTextTrackContainerElement::exitedFullscreen): Ditto.
- html/shadow/MediaControlElements.h:
- html/shadow/MediaControls.cpp:
(WebCore::MediaControls::enteredFullscreen): Call MediaControlTextTrackContainerElement::enteredFullscreen.
(WebCore::MediaControls::exitedFullscreen): Call MediaControlTextTrackContainerElement::exitedFullscreen.
- 9:23 AM Changeset in webkit [152974] by
-
- 2 edits in trunk/LayoutTests
[Qt] Unreviewed gardening. Rebase after r152814.
Patch by Gabor Abraham <abrhm@inf.u-szeged.hu> on 2013-07-22
- platform/qt-5.0-wk1/http/tests/security/contentSecurityPolicy/object-src-none-allowed-expected.txt:
- 9:23 AM Changeset in webkit [152973] by
-
- 2 edits in trunk/Source/WTF
[Windows] Unreviewed build fix.
- WTF.vcxproj/WTFGenerated.make: Stop triggering a "Build All" when things have not changed.
- 9:19 AM Changeset in webkit [152972] by
-
- 1 edit17 adds in trunk/LayoutTests
Unreviewed gardening. Added new baselines for GTK+ after r152911.
- platform/gtk/fast/multicol/pagination/BottomToTop-bt-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/BottomToTop-lr-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/BottomToTop-rl-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/BottomToTop-tb-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/LeftToRight-bt-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/LeftToRight-lr-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/LeftToRight-rl-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/LeftToRight-tb-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/RightToLeft-bt-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/RightToLeft-lr-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/RightToLeft-rl-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/RightToLeft-tb-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/TopToBottom-bt-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/TopToBottom-lr-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/TopToBottom-rl-expected.txt: Added.
- platform/gtk/fast/multicol/pagination/TopToBottom-tb-expected.txt: Added.
- 9:10 AM Changeset in webkit [152971] by
-
- 1 edit8 adds in trunk/LayoutTests
Unreviewed gardening. Added baselines for GTK+ related to subpixel layout.
- platform/gtk/editing/selection/mixed-editability-10-expected.txt: Added.
- platform/gtk/svg/W3C-SVG-1.1/animate-elem-22-b-expected.txt: Added.
- platform/gtk/svg/W3C-SVG-1.1/animate-elem-23-t-expected.txt: Added.
- platform/gtk/svg/W3C-SVG-1.1/coords-units-03-b-expected.txt: Added.
- platform/gtk/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt: Added.
- platform/gtk/svg/W3C-SVG-1.1/filters-example-01-b-expected.txt: Added.
- platform/gtk/svg/custom/pattern-with-transformation-expected.txt: Added.
- platform/gtk/svg/text/text-midpoint-split-bug-expected.txt: Added.
- 8:01 AM Changeset in webkit [152970] by
-
- 1 edit2 adds in trunk/LayoutTests
Unreviewed gardening. Added needed baselines for GTK after r149088.
- platform/gtk/editing/selection/5825350-1-expected.txt: Added.
- platform/gtk/editing/selection/5825350-2-expected.txt: Added.
- 7:04 AM Changeset in webkit [152969] by
-
- 2 edits in trunk/Source/WebCore
[Qt][WK1] Support direct painting without GraphicsSurface
https://bugs.webkit.org/show_bug.cgi?id=118302
Reviewed by Jocelyn Turcotte.
Configure the WebGL OpenGL context to share texture with
the HostWindow OpenGL if available, and paint accelerated
using the the now shared textures.
This should return the performance without GraphicsSurface
on the WK1 code path to what it was before r135995 (28/11 2012).
- platform/graphics/qt/GraphicsContext3DQt.cpp:
(WebCore::GraphicsContext3DPrivate::GraphicsContext3DPrivate):
(WebCore::GraphicsContext3DPrivate::paintToTextureMapper):
- 7:02 AM Changeset in webkit [152968] by
-
- 4 edits3 adds30 deletes in trunk/LayoutTests
[CSS Regions] Convert percentage-margins-* tests to ref-tests
https://bugs.webkit.org/show_bug.cgi?id=118723
Reviewed by Andreas Kling.
The patch converts the percentage margins tests for regions in ref tests.
- fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.html: Added.
- fast/regions/percentage-margins-mixed-ltr-dominant-regions.html:
- fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.html: Added.
- fast/regions/percentage-margins-mixed-rtl-dominant-regions.html:
- fast/regions/percentage-margins-rtl-variable-width-regions-expected.html: Added.
- fast/regions/percentage-margins-rtl-variable-width-regions.html:
- platform/efl/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Removed.
- platform/efl/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Removed.
- platform/efl/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Removed.
- platform/efl/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Removed.
- platform/efl/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Removed.
- platform/efl/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Removed.
- platform/efl/fast/regions/percentage-margins-variable-width-regions-expected.png: Removed.
- platform/efl/fast/regions/percentage-margins-variable-width-regions-expected.txt: Removed.
- platform/gtk/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Removed.
- platform/gtk/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Removed.
- platform/gtk/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Removed.
- platform/gtk/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Removed.
- platform/gtk/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Removed.
- platform/gtk/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Removed.
- platform/gtk/fast/regions/percentage-margins-variable-width-regions-expected.png: Removed.
- platform/gtk/fast/regions/percentage-margins-variable-width-regions-expected.txt: Removed.
- platform/mac/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Removed.
- platform/mac/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Removed.
- platform/mac/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Removed.
- platform/mac/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Removed.
- platform/mac/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Removed.
- platform/mac/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Removed.
- platform/qt/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.png: Removed.
- platform/qt/fast/regions/percentage-margins-mixed-ltr-dominant-regions-expected.txt: Removed.
- platform/qt/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.png: Removed.
- platform/qt/fast/regions/percentage-margins-mixed-rtl-dominant-regions-expected.txt: Removed.
- platform/qt/fast/regions/percentage-margins-rtl-variable-width-regions-expected.png: Removed.
- platform/qt/fast/regions/percentage-margins-rtl-variable-width-regions-expected.txt: Removed.
- platform/qt/fast/regions/percentage-margins-variable-width-regions-expected.png: Removed.
- platform/qt/fast/regions/percentage-margins-variable-width-regions-expected.txt: Removed.
- 6:39 AM Changeset in webkit [152967] by
-
- 2 edits in trunk/LayoutTests
Unreviewed gardening. Add accesibility/lists.html as 'Missing' expectation.
- platform/gtk/TestExpectations: Added test.
- 6:21 AM Changeset in webkit [152966] by
-
- 3 edits in trunk/LayoutTests
[Qt] Unreviewed gardening. Skipping failing tests.
Patch by Gabor Abraham <abrhm@inf.u-szeged.hu> on 2013-07-22
- platform/qt-5.0-wk1/TestExpectations:
- platform/qt/TestExpectations:
- 6:15 AM Changeset in webkit [152965] by
-
- 2 edits in trunk/LayoutTests
[GTK] Regression: Multiple tests fail after r152701 changed how unavailable plugins are handled
https://bugs.webkit.org/show_bug.cgi?id=118730
Unreviewed GTK gardening. Unskip tests no longer failing.
Changes from r152701 were reverted in r152814 and later reworked in r152824,
so the tests no longer fail.
Patch by Simon Pena <simon.pena@samsung.com> on 2013-07-22
- platform/gtk/TestExpectations:
- 6:03 AM Changeset in webkit [152964] by
-
- 3 edits in trunk/LayoutTests
Unreviewed gardening. Update test expectations for GTK.
- platform/gtk/accessibility/aria-option-role-expected.txt: Update
expectations to match those from EFL.
- platform/gtk/TestExpectations: Removed test from failures expectations,
now it's running as expected.
- 5:08 AM Changeset in webkit [152963] by
-
- 8 edits in trunk/Source/WebCore
Introduce toSVGUseElement(), use it
https://bugs.webkit.org/show_bug.cgi?id=118942
Reviewed by Allan Sandfeld Jensen.
As a step to change static_cast with toSVGXXX, static_cast<SVGUseElement*> can
be changed with toSVGUseElement().
No new tests, no behavior change.
- dom/EventRetargeter.h:
(WebCore::EventRetargeter::eventTargetRespectingTargetRules):
- page/EventHandler.cpp:
(WebCore::instanceAssociatedWithShadowTreeElement):
- rendering/svg/RenderSVGResourceClipper.cpp:
(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
- rendering/svg/RenderSVGTransformableContainer.cpp:
(WebCore::RenderSVGTransformableContainer::calculateLocalTransform):
- svg/SVGStyledElement.cpp:
(WebCore::SVGStyledElement::title):
- svg/SVGUseElement.cpp:
(WebCore::dumpInstanceTree):
(WebCore::SVGUseElement::buildInstanceTree):
(WebCore::SVGUseElement::expandUseElementsInShadowTree):
- svg/SVGUseElement.h:
(WebCore::toSVGUseElement):
- 5:07 AM Changeset in webkit [152962] by
-
- 9 edits in trunk/Source/WebCore
Use toSVGPathElement() instead of static_cast<>
https://bugs.webkit.org/show_bug.cgi?id=118960
Reviewed by Allan Sandfeld Jensen.
Though there is toSVGPathElement(), some files still use static_cast<SVGPathElement*>.
To remove all static_cast<> use, we need to change argument from SVGElement to Element.
Merge from https://src.chromium.org/viewvc/blink?view=rev&revision=154621
No new tests, no behavior change.
- rendering/svg/RenderSVGTextPath.cpp:
(WebCore::RenderSVGTextPath::layoutPath):
- rendering/svg/SVGPathData.cpp:
(WebCore::updatePathFromPathElement):
- rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::operator<<):
- svg/SVGMPathElement.cpp:
(WebCore::SVGMPathElement::pathElement):
- svg/SVGPathElement.h:
(WebCore::toSVGPathElement):
- svg/SVGPathSegList.cpp:
(WebCore::SVGPathSegList::commitChange):
- svg/properties/SVGAnimatedPathSegListPropertyTearOff.h:
(WebCore::SVGAnimatedPathSegListPropertyTearOff::animValDidChange):
- svg/properties/SVGPathSegListPropertyTearOff.cpp:
(WebCore::SVGPathSegListPropertyTearOff::contextElement):
- 4:44 AM Changeset in webkit [152961] by
-
- 2 edits in trunk/Source/WebCore
[Qt] Implement more of DOM3 KeyEvent key-identifiers
https://bugs.webkit.org/show_bug.cgi?id=118566
Reviewed by Jocelyn Turcotte.
Implemented as many of the key values from http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list
as Qt keycodes support.
Also corrected the mapping of the Menu key, which was confused because MENU
is also the ancient Microsoft speak for the Alt keys.
- platform/qt/PlatformKeyboardEventQt.cpp:
(WebCore::keyIdentifierForQtKeyCode):
- 1:46 AM Changeset in webkit [152960] by
-
- 2 edits1 move2 adds1 delete in trunk/LayoutTests
[Qt] Unreviewed gardening. Update platform specific expectations.
- platform/qt-5.0-wk1/fast/loader/show-only-one-beforeunload-dialog-expected.txt: Added after r152941.
- platform/qt-5.0-wk1/http/tests/misc/iframe-beforeunload-dialog-matching-ancestor-securityorigin-expected.txt: Added after r152941.
- platform/qt-5.0-wk2/fast/multicol/shrink-to-column-height-for-pagination-expected.png: Removed.
- platform/qt/fast/multicol/shrink-to-column-height-for-pagination-expected.png: Added after r152911.
- platform/qt/fast/multicol/shrink-to-column-height-for-pagination-expected.txt: Renamed from LayoutTests/platform/qt-5.0-wk2/fast/multicol/shrink-to-column-height-for-pagination-expected.txt.
Jul 21, 2013:
- 9:04 PM Changeset in webkit [152959] by
-
- 5 edits6 adds in branches/dfgFourthTier/Source
fourthTier: DFG Nodes should be able to abstractly tell you what they read and what they write
https://bugs.webkit.org/show_bug.cgi?id=118910
Source/JavaScriptCore:
Reviewed by Sam Weinig.
Add the notion of AbstractHeap to the DFG. This is analogous to the AbstractHeap in
the FTL, except that the FTL's AbstractHeaps are used during LLVM lowering and are
engineered to obey LLVM TBAA logic. The FTL's AbstractHeaps are also engineered to
be inexpensive to use (they just give you a TBAA node) but expensive to create (you
create them all up front). FTL AbstractHeaps also don't actually give you the
ability to reason about aliasing; they are *just* a mechanism for lowering to TBAA.
The DFG's AbstractHeaps are engineered to be both cheap to create and cheap to use.
They also give you aliasing machinery. The DFG AbstractHeaps are represented
internally by a int64_t. Many comparisons between them are just integer comaprisons.
AbstractHeaps form a three-level hierarchy (World is the supertype of everything,
Kind with a TOP payload is a direct subtype of World, and Kind with a non-TOP
payload is the direct subtype of its corresponding TOP Kind).
Add the notion of a ClobberSet. This is the set of AbstractHeaps that you had
clobbered. It represents the set that results from unifying a bunch of
AbstractHeaps, and is intended to quickly answer overlap questions: does the given
AbstractHeap overlap any AbstractHeap in the ClobberSet? To this end, if you add an
AbstractHeap to a set, it "directly" adds the heap itself, and "super" adds all of
its ancestors. An AbstractHeap is said to overlap a set if any direct or super
member is equal to it, or if any of its ancestors are equal to a direct member.
Example #1:
- I add Variables(5). I.e. Variables is the Kind and 5 is the payload. This is a subtype of Variables, which is a subtype of World.
- You query Variables. I.e. Variables with a TOP payload, which is the supertype of Variables(X) for any X, and a subtype of World.
The set will have Variables(5) as a direct member, and Variables and World as
super members. The Variables query will immediately return true, because
Variables is indeed a super member.
Example #2:
- I add Variables(5)
- You query NamedProperties
NamedProperties is not a member at all (neither direct or super). We next
query World. World is a member, but it's a super member, so we return false.
Example #3:
- I add Variables
- You query Variables(5)
The set will have Variables as a direct member, and World as a super member.
The Variables(5) query will not find Variables(5) in the set, but then it
will query Variables. Variables is a direct member, so we return true.
Example #4:
- I add Variables
- You query NamedProperties(5)
Neither NamedProperties nor NamedProperties(5) are members. We next query
World. World is a member, but it's a super member, so we return false.
Overlap queries require that either the heap being queried is in the set (either
direct or super), or that one of its ancestors is a direct member. Another way to
think about how this works is that two heaps A and B are said to overlap if
A.isSubtypeOf(B) or B.isSubtypeOf(A). This is sound since heaps form a
single-inheritance heirarchy. Consider that we wanted to implement a set that holds
heaps and answers the question, "is any member in the set an ancestor (i.e.
supertype) of some other heap". We would have the set contain the heaps themselves,
and we would satisfy the query "A.isSubtypeOfAny(set)" by walking the ancestor
chain of A, and repeatedly querying its membership in the set. This is what the
"direct" members of our set do. Now consider the other part, where we want to ask if
any member of the set is a descendent of a heap, or "A.isSupertypeOfAny(set)". We
would implement this by implementing set.add(B) as adding not just B but also all of
B's ancestors; then we would answer A.isSupertypeOfAny(set) by just checking if A is
in the set. With two such sets - one that answers isSubtypeOfAny() and another that
answers isSupertypeOfAny() - we could answer the "do any of my heaps overlap your
heap" question. ClobberSet does this, but combines the two sets into a single
HashMap. The HashMap's value, "direct", means that the key is a member of both the
supertype set and the subtype set; if it's false then it's only a member of one of
them.
Finally, this adds a functorized clobberize() method that adds the read and write
clobbers of a DFG::Node to read and write functors. Common functors for adding to
ClobberSets, querying overlap, and doing nothing are provided. Convenient wrappers
are also provided. This allows you to say things like:
ClobberSet set;
addWrites(graph, node1, set);
if (readsOverlap(graph, node2, set))
We know that node1 may write to something that node2 may read from.
Currently this facility is only used to improve graph dumping, but it will be
instrumental in both LICM and GVN. In the future, I want to completely kill the
NodeClobbersWorld and NodeMightClobber flags, and eradicate CSEPhase's hackish way
of accomplishing almost exactly what AbstractHeap gives you.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractHeap.cpp: Added.
(DFG):
(JSC::DFG::AbstractHeap::Payload::dump):
(JSC::DFG::AbstractHeap::dump):
(WTF):
(WTF::printInternal):
- dfg/DFGAbstractHeap.h: Added.
(DFG):
(AbstractHeap):
(Payload):
(JSC::DFG::AbstractHeap::Payload::Payload):
(JSC::DFG::AbstractHeap::Payload::top):
(JSC::DFG::AbstractHeap::Payload::isTop):
(JSC::DFG::AbstractHeap::Payload::value):
(JSC::DFG::AbstractHeap::Payload::valueImpl):
(JSC::DFG::AbstractHeap::Payload::operator==):
(JSC::DFG::AbstractHeap::Payload::operator!=):
(JSC::DFG::AbstractHeap::Payload::operator<):
(JSC::DFG::AbstractHeap::Payload::isDisjoint):
(JSC::DFG::AbstractHeap::Payload::overlaps):
(JSC::DFG::AbstractHeap::AbstractHeap):
(JSC::DFG::AbstractHeap::operator!):
(JSC::DFG::AbstractHeap::kind):
(JSC::DFG::AbstractHeap::payload):
(JSC::DFG::AbstractHeap::isDisjoint):
(JSC::DFG::AbstractHeap::overlaps):
(JSC::DFG::AbstractHeap::supertype):
(JSC::DFG::AbstractHeap::hash):
(JSC::DFG::AbstractHeap::operator==):
(JSC::DFG::AbstractHeap::operator!=):
(JSC::DFG::AbstractHeap::operator<):
(JSC::DFG::AbstractHeap::isHashTableDeletedValue):
(JSC::DFG::AbstractHeap::payloadImpl):
(JSC::DFG::AbstractHeap::encode):
(JSC::DFG::AbstractHeapHash::hash):
(JSC::DFG::AbstractHeapHash::equal):
(AbstractHeapHash):
(WTF):
- dfg/DFGClobberSet.cpp: Added.
(DFG):
(JSC::DFG::ClobberSet::ClobberSet):
(JSC::DFG::ClobberSet::~ClobberSet):
(JSC::DFG::ClobberSet::add):
(JSC::DFG::ClobberSet::addAll):
(JSC::DFG::ClobberSet::contains):
(JSC::DFG::ClobberSet::overlaps):
(JSC::DFG::ClobberSet::clear):
(JSC::DFG::ClobberSet::direct):
(JSC::DFG::ClobberSet::super):
(JSC::DFG::ClobberSet::dump):
(JSC::DFG::ClobberSet::setOf):
(JSC::DFG::addReads):
(JSC::DFG::addWrites):
(JSC::DFG::addReadsAndWrites):
(JSC::DFG::readsOverlap):
(JSC::DFG::writesOverlap):
- dfg/DFGClobberSet.h: Added.
(DFG):
(ClobberSet):
(JSC::DFG::ClobberSet::isEmpty):
(ClobberSetAdd):
(JSC::DFG::ClobberSetAdd::ClobberSetAdd):
(JSC::DFG::ClobberSetAdd::operator()):
(ClobberSetOverlaps):
(JSC::DFG::ClobberSetOverlaps::ClobberSetOverlaps):
(JSC::DFG::ClobberSetOverlaps::operator()):
(JSC::DFG::ClobberSetOverlaps::result):
- dfg/DFGClobberize.cpp: Added.
(DFG):
(JSC::DFG::didWrites):
- dfg/DFGClobberize.h: Added.
(DFG):
(JSC::DFG::clobberize):
(NoOpClobberize):
(JSC::DFG::NoOpClobberize::NoOpClobberize):
(JSC::DFG::NoOpClobberize::operator()):
(CheckClobberize):
(JSC::DFG::CheckClobberize::CheckClobberize):
(JSC::DFG::CheckClobberize::operator()):
(JSC::DFG::CheckClobberize::result):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
Source/WTF:
Reviewed by Sam Weinig.
Fix compile goof in sortedListDump().
- wtf/ListDump.h:
(WTF::sortedListDump):
- 8:57 PM Changeset in webkit [152958] by
-
- 4 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: It should be easy to figure out which blocks nodes belong to
https://bugs.webkit.org/show_bug.cgi?id=118957
Reviewed by Sam Weinig.
- dfg/DFGGraph.cpp:
(DFG):
(JSC::DFG::Graph::initializeNodeOwners):
- dfg/DFGGraph.h:
(Graph):
- dfg/DFGNode.h:
- 8:36 PM Changeset in webkit [152957] by
-
- 18 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: NodeExitsForward shouldn't be duplicated in NodeType
https://bugs.webkit.org/show_bug.cgi?id=118956
Reviewed by Sam Weinig.
We had two way of expressing that something exits forward: the NodeExitsForward
flag and the word 'Forward' in the NodeType. That's kind of dumb. This patch
makes it just be a flag.
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGArgumentsSimplificationPhase.cpp:
(JSC::DFG::ArgumentsSimplificationPhase::run):
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::int32ToDoubleCSE):
(JSC::DFG::CSEPhase::checkStructureElimination):
(JSC::DFG::CSEPhase::structureTransitionWatchpointElimination):
(JSC::DFG::CSEPhase::putStructureStoreElimination):
(JSC::DFG::CSEPhase::checkArrayElimination):
(JSC::DFG::CSEPhase::performNodeCSE):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::injectInt32ToDoubleNode):
- dfg/DFGMinifiedNode.h:
(JSC::DFG::belongsInMinifiedGraph):
(JSC::DFG::MinifiedNode::hasChild):
- dfg/DFGNode.h:
(JSC::DFG::Node::convertToStructureTransitionWatchpoint):
(JSC::DFG::Node::hasStructureSet):
(JSC::DFG::Node::hasStructure):
(JSC::DFG::Node::hasArrayMode):
(JSC::DFG::Node::willHaveCodeGenOrOSR):
- dfg/DFGNodeType.h:
(DFG):
(JSC::DFG::needsOSRForwardRewiring):
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileInt32ToDouble):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):
- dfg/DFGVariableEventStream.cpp:
(JSC::DFG::VariableEventStream::reconstruct):
- ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::addExitArgumentForNode):
- 8:24 PM Changeset in webkit [152956] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: Cleanup InspectorFrontendHostStub.js
https://bugs.webkit.org/show_bug.cgi?id=118959
Patch by Seokju Kwon <Seokju Kwon> on 2013-07-21
Reviewed by Timothy Hatcher.
Remove some functions because we dont use on New Inspector.
- UserInterface/InspectorFrontendHostStub.js:
(.WebInspector.InspectorFrontendHostStub):
(.WebInspector.InspectorFrontendHostStub.prototype.save):
- 5:13 PM Changeset in webkit [152955] by
-
- 7 edits in trunk/Source/WebCore
Introduce toSVGGradientElement(), use it
https://bugs.webkit.org/show_bug.cgi?id=118943
Reviewed by Andreas Kling.
As a step to change static_cast with toSVGXXX, static_cast<SVGGradientElement*> can
be changed with toSVGGradientElement().
No new tests, no behavior change.
- rendering/svg/RenderSVGGradientStop.cpp:
(WebCore::RenderSVGGradientStop::gradientElement):
- rendering/svg/RenderSVGResourceGradient.cpp:
(WebCore::RenderSVGResourceGradient::applyResource):
- rendering/svg/SVGResources.cpp:
(WebCore::targetReferenceFromResource):
- svg/SVGGradientElement.h:
(WebCore::toSVGGradientElement):
- svg/SVGLinearGradientElement.cpp:
(WebCore::SVGLinearGradientElement::collectGradientAttributes):
- svg/SVGRadialGradientElement.cpp:
(WebCore::SVGRadialGradientElement::collectGradientAttributes):
- 4:42 PM Changeset in webkit [152954] by
-
- 10 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: It should be possible for a DFG::Node to claim to exit to one CodeOrigin, but then claim that it belongs to a different CodeOrigin for all other purposes
https://bugs.webkit.org/show_bug.cgi?id=118946
Reviewed by Geoffrey Garen.
We want to decouple the exit target code origin of a node from the code origin
for all other purposes. The purposes of code origins are:
- Where the node will exit, if it exits. The exit target should be consistent with the surrounding nodes, in that if you just looked at the code origins of nodes in the graph, they would be consistent with the code origins in bytecode. This is necessary for live-at-bytecode analyses to work, and to preserve the original bytecode semantics when exiting.
- What kind of code the node came from, for semantics thingies. For example, we might use the code origin to find the node's global object for doing an original array check. Or we might use it to determine if the code is in strict mode. Or other similar things. When we use the code origin in this way, we're basically using it as a way of describing the node's meta-data without putting it into the node directly, to save space. In the absurd extreme you could imagine nodes not even having NodeTypes or NodeFlags, and just using the CodeOrigin to determine what bytecode the node originated from. We won't do that, but you can think of this use of code origins as just a way of compressing meta-data.
- What code origin we should supply profiling to, if we exit. This is closely related to the semantics thingies, in that the exit profiling is a persistent kind of semantic meta-data that survives between recompiles, and the only way to do that is to ascribe it to the original bytecode via the code origin.
If we hoist a node, we need to change the exit target code origin, but we must not
change the code origin for other purposes. The best way to do this is to decouple
the two kinds of code origin.
OSR exit data structures already do this, because they may edit the exit target
code origin while keeping the code origin for profiling intact. This happens for
forward exits. So, we just need to thread separation all the way back to DFG::Node.
That's what this patch does.
- dfg/DFGNode.h:
(JSC::DFG::Node::Node):
(Node):
- dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::OSRExit):
- dfg/DFGOSRExitBase.h:
(JSC::DFG::OSRExitBase::OSRExitBase):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::checkArgumentTypes):
- dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::appendOSRExit):
(LowerDFGToLLVM):
- ftl/FTLOSRExit.cpp:
(JSC::FTL::OSRExit::OSRExit):
- ftl/FTLOSRExit.h:
(OSRExit):
- 2:44 PM Changeset in webkit [152953] by
-
- 6 edits1 add in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: each DFG node that relies on other nodes to do their type checks should be able to tell you if those type checks happened
https://bugs.webkit.org/show_bug.cgi?id=118866
Reviewed by Sam Weinig.
Adds a safeToExecute() method that takes a node and an abstract state and tells you
if the node will run without crashing under that state.
- JavaScriptCore.xcodeproj/project.pbxproj:
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
- dfg/DFGCFAPhase.cpp:
(CFAPhase):
(JSC::DFG::CFAPhase::CFAPhase):
(JSC::DFG::CFAPhase::run):
(JSC::DFG::CFAPhase::performBlockCFA):
(JSC::DFG::CFAPhase::performForwardCFA):
- dfg/DFGSafeToExecute.h: Added.
(DFG):
(SafeToExecuteEdge):
(JSC::DFG::SafeToExecuteEdge::SafeToExecuteEdge):
(JSC::DFG::SafeToExecuteEdge::operator()):
(JSC::DFG::SafeToExecuteEdge::result):
(JSC::DFG::safeToExecute):
- dfg/DFGStructureAbstractValue.h:
(JSC::DFG::StructureAbstractValue::isValidOffset):
(StructureAbstractValue):
- runtime/Options.h:
(JSC):
- 2:28 PM Changeset in webkit [152952] by
-
- 9 edits3 adds in branches/dfgFourthTier
fourthTier: FTL should be able to generate LLVM IR that uses an intrinsic for OSR exit
https://bugs.webkit.org/show_bug.cgi?id=118948
Source/JavaScriptCore:
Reviewed by Sam Weinig.
- Add the ability to generate LLVM IR but then not use it, via --llvmAlwaysFails=true. This allows doing "what if" experiments with IR generation, even if the generated IR can't yet execute.
- Add an OSR exit path that just calls an intrinsic that combines the branch and the off-ramp.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
- ftl/FTLFail.cpp: Added.
(FTL):
(JSC::FTL::fail):
- ftl/FTLFail.h: Added.
(FTL):
- ftl/FTLIntrinsicRepository.h:
(FTL):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::LowerDFGToLLVM::emitOSRExitCall):
- runtime/Options.h:
(JSC):
Tools:
Reviewed by Sam Weinig.
- Make ReducedFTL capable of dealing with code that uses the fake OSR exit intrinsic, by exporting it as a function.
- Make combineModules.rb idempotent. Sometimes it's convenient to run a file through it even if you know that you've already done so. See processIRDump.sh.
- Add a script, processIRDump.sh, that takes the output of --dumpLLVMIR=true and runs it through ReducedFTL automatically. You typically want to say something like:
jsc --dumpLLVMIR=true <program(s)> > jsc-output.txt
./processIRDump.sh --timing < jsc-output.txt
- ReducedFTL/ReducedFTL.c:
(webkit_osr_exit):
- ReducedFTL/combineModules.rb:
- ReducedFTL/processIRDump.sh: Added.
- 12:05 PM Changeset in webkit [152951] by
-
- 4 edits in trunk
KURL creates duplicate strings when completing data: URIs.
<http://webkit.org/b/118952>
<rdar://problem/14504480>
Reviewed by Anders Carlsson.
Source/WebCore:
When checking if the original URL input string can be reused, compare against the part
of the parsing buffer that we would actually return, not the entire buffer.
632 kB progression on <http://www.nytimes.com/>
Test: KURLTest.KURLDataURIStringSharing
- platform/KURL.cpp:
(WebCore::KURL::parse):
Tools:
- TestWebKitAPI/Tests/WebCore/KURL.cpp:
(TestWebKitAPI::TEST_F):
- 11:55 AM Changeset in webkit [152950] by
-
- 2 edits in trunk/Source/WebKit2
Java Updater not launched on Lion and Mountain Lion
https://bugs.webkit.org/show_bug.cgi?id=118953
<rdar://problem/14496721>
Reviewed by Sam Weinig.
On Lion and Mountain Lion, -[NSURL isEqual:] will return NO for two file URLs if one of
them has "localhost" specified, even if the paths are otherwise equal. Work around this by
comparing the paths directly.
- UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
(WebKit::isJavaUpdaterURL):
Jul 20, 2013:
- 6:45 PM Changeset in webkit [152949] by
-
- 2 edits1 delete in trunk/Source/JavaScriptCore
[Windows] Remove unneeded custom stdint.h now that we build on VS2010.
https://bugs.webkit.org/show_bug.cgi?id=118868.
Reviewed by Anders Carlsson.
- os-win32/stdint.h: Removed.
- GNUmakefile.list.am: Removed reference to os-win32/stdint.h
- 6:02 PM Changeset in webkit [152948] by
-
- 6 edits in trunk/Source/WebCore
Add ASCIILiteral() on strings allocated often enough to appear in my Instruments
https://bugs.webkit.org/show_bug.cgi?id=118937
Reviewed by Alexey Proskuryakov.
- html/BaseCheckableInputType.cpp:
(WebCore::BaseCheckableInputType::saveFormControlState):
(WebCore::BaseCheckableInputType::fallbackValue):
- html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::updatePlaceholderVisibility):
- inspector/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
- loader/cache/CachedScript.cpp:
(WebCore::CachedScript::CachedScript):
- platform/network/ResourceRequestBase.h:
(WebCore::ResourceRequestBase::ResourceRequestBase):
- 5:31 PM Changeset in webkit [152947] by
-
- 2 edits in branches/dfgFourthTier/Tools
fourthTier: We should use the no-asserts build of LLVM if that's what the user configured
https://bugs.webkit.org/show_bug.cgi?id=118947
Reviewed by Dan Bernstein.
- Scripts/copy-webkitlibraries-to-product-directory:
- 3:23 PM Changeset in webkit [152946] by
-
- 43 edits1 move3 adds77 deletes in trunk/Source
Updated ANGLE is leaking like a sieve
https://bugs.webkit.org/show_bug.cgi?id=118939
Rollout 152863, r152821, r152929 and r152755.
Source/ThirdParty/ANGLE:
- ANGLE.plist:
- ANGLE.xcodeproj/project.pbxproj:
- DerivedSources.make: Removed.
- GNUmakefile.am:
- Target.pri:
- include/GLSLANG/ShaderLang.h:
- src/compiler/BaseTypes.h:
(getQualifierString):
- src/compiler/Common.h:
(EncodeSourceLoc):
(DecodeSourceLoc):
- src/compiler/Compiler.cpp:
(TCompiler::TCompiler):
(TCompiler::Init):
(TCompiler::compile):
(TCompiler::detectRecursion):
- src/compiler/ConstantUnion.h:
(ConstantUnion::ConstantUnion):
- src/compiler/DetectCallDepth.cpp: Removed.
- src/compiler/DetectRecursion.cpp: Added.
(DetectRecursion::FunctionNode::FunctionNode):
(DetectRecursion::FunctionNode::getName):
(DetectRecursion::FunctionNode::addCallee):
(DetectRecursion::FunctionNode::detectRecursion):
(DetectRecursion::DetectRecursion):
(DetectRecursion::~DetectRecursion):
(DetectRecursion::visitAggregate):
(DetectRecursion::detectRecursion):
(DetectRecursion::findFunctionByName):
- src/compiler/DetectRecursion.h: Renamed from Source/ThirdParty/ANGLE/src/compiler/DetectCallDepth.h.
- src/compiler/Diagnostics.cpp:
(TDiagnostics::writeInfo):
- src/compiler/ForLoopUnroll.cpp:
(ForLoopUnroll::evaluateIntConstant):
- src/compiler/InfoSink.cpp:
(TInfoSinkBase::prefix):
(TInfoSinkBase::location):
(TInfoSinkBase::message):
- src/compiler/InfoSink.h:
- src/compiler/Initialize.cpp:
(BuiltInFunctionsCommon):
(BuiltInFunctionsVertex):
(TBuiltIns::initialize):
(IdentifyBuiltIns):
(InitExtensionBehavior):
- src/compiler/Intermediate.cpp:
(TIntermediate::addSymbol):
(TIntermediate::addBinaryMath):
(TIntermediate::addAssign):
(TIntermediate::addIndex):
(TIntermediate::addUnaryMath):
(TIntermediate::setAggregateOperator):
(TIntermediate::addConversion):
(TIntermediate::growAggregate):
(TIntermediate::makeAggregate):
(TIntermediate::addSelection):
(TIntermediate::addComma):
(TIntermediate::addConstantUnion):
(TIntermediate::addSwizzle):
(TIntermediate::addLoop):
(TIntermediate::addBranch):
(TIntermUnary::promote):
(TIntermBinary::promote):
(CompareStruct):
(CompareStructure):
(TIntermConstantUnion::fold):
(TIntermediate::promoteConstantUnion):
- src/compiler/OutputGLSL.cpp:
(TOutputGLSL::writeVariablePrecision):
- src/compiler/OutputGLSL.h:
- src/compiler/OutputGLSLBase.cpp:
(TOutputGLSLBase::writeVariableType):
(TOutputGLSLBase::writeConstantUnion):
(TOutputGLSLBase::visitBinary):
(TOutputGLSLBase::visitAggregate):
(TOutputGLSLBase::getTypeName):
(TOutputGLSLBase::hashFunctionName):
- src/compiler/OutputGLSLBase.h:
- src/compiler/OutputHLSL.cpp:
(sh::OutputHLSL::OutputHLSL):
(sh::OutputHLSL::header):
(sh::OutputHLSL::visitSymbol):
(sh::OutputHLSL::visitBinary):
(sh::OutputHLSL::visitAggregate):
(sh::OutputHLSL::visitSelection):
(sh::OutputHLSL::visitLoop):
(sh::OutputHLSL::handleExcessiveLoop):
(sh::OutputHLSL::typeString):
(sh::OutputHLSL::initializer):
(sh::OutputHLSL::addConstructor):
(sh::OutputHLSL::writeConstantUnion):
(sh::OutputHLSL::decorateField):
- src/compiler/OutputHLSL.h:
- src/compiler/ParseHelper.cpp:
(TParseContext::parseVectorFields):
(TParseContext::parseMatrixFields):
(TParseContext::error):
(TParseContext::warning):
(TParseContext::assignError):
(TParseContext::unaryOpError):
(TParseContext::binaryOpError):
(TParseContext::precisionErrorCheck):
(TParseContext::lValueErrorCheck):
(TParseContext::globalErrorCheck):
(TParseContext::reservedErrorCheck):
(TParseContext::constructorErrorCheck):
(TParseContext::voidErrorCheck):
(TParseContext::boolErrorCheck):
(TParseContext::samplerErrorCheck):
(TParseContext::structQualifierErrorCheck):
(TParseContext::parameterSamplerErrorCheck):
(TParseContext::containsSampler):
(TParseContext::arraySizeErrorCheck):
(TParseContext::arrayQualifierErrorCheck):
(TParseContext::arrayTypeErrorCheck):
(TParseContext::arrayErrorCheck):
(TParseContext::arraySetMaxSize):
(TParseContext::nonInitConstErrorCheck):
(TParseContext::nonInitErrorCheck):
(TParseContext::paramErrorCheck):
(TParseContext::extensionErrorCheck):
(TParseContext::handleExtensionDirective):
(TParseContext::handlePragmaDirective):
(TParseContext::findFunction):
(TParseContext::executeInitializer):
(TParseContext::addConstructor):
(TParseContext::constructBuiltIn):
(TParseContext::constructStruct):
(TParseContext::addConstVectorNode):
(TParseContext::addConstMatrixNode):
(TParseContext::addConstArrayNode):
(TParseContext::addConstStruct):
(TParseContext::enterStructDeclaration):
(TParseContext::structNestingErrorCheck):
- src/compiler/ParseHelper.h:
(TParseContext::TParseContext):
(TParseContext::pragma):
- src/compiler/PoolAlloc.cpp:
(TPoolAllocator::allocate):
- src/compiler/ShHandle.h:
- src/compiler/ShaderLang.cpp:
(ShInitBuiltInResources):
- src/compiler/SymbolTable.cpp:
(TType::TType):
(TType::buildMangledName):
(TType::getStructSize):
(TType::computeDeepestStructNesting):
(TType::isStructureContainingArrays):
(TSymbolTableLevel::relateToExtension):
(TSymbol::TSymbol):
(TVariable::TVariable):
(TVariable::clone):
(TFunction::TFunction):
(TFunction::clone):
(TSymbolTableLevel::clone):
(TSymbolTable::copyTable):
- src/compiler/SymbolTable.h:
(TVariable::TVariable):
(TVariable::updateArrayInformationType):
(TVariable::getArrayInformationType):
(TParameter::copyParam):
(TFunction::relateToExtension):
(TFunction::getExtension):
- src/compiler/Types.h:
(NewPoolTTypeList):
(TType::TType):
(TType::copyType):
(TType::clone):
(TType::getObjectSize):
(TType::getMaxArraySize):
(TType::setMaxArraySize):
(TType::clearArrayness):
(TType::setArrayInformationType):
(TType::getArrayInformationType):
(TType::getStruct):
(TType::setStruct):
(TType::getTypeName):
(TType::setTypeName):
(TType::isField):
(TType::getFieldName):
(TType::setFieldName):
(TType::getMangledName):
(TType::getDeepestStructNesting):
(TPublicType::setBasic):
- src/compiler/VariableInfo.cpp:
(getUserDefinedVariableInfo):
- src/compiler/builtin_symbol_table.cpp: Removed.
- src/compiler/builtin_symbol_table.h: Removed.
- src/compiler/builtin_symbols.json: Removed.
- src/compiler/generate_builtin_symbol_table.py: Removed.
- src/compiler/glslang.l:
- src/compiler/glslang.y:
- src/compiler/glslang_lex.cpp:
(yy_get_previous_state):
(yy_try_NUL_trans):
(yy_push_state):
(yy_pop_state):
(yy_top_state):
(string_input):
(check_type):
(reserved_word):
(yyerror):
(glslang_scan):
- src/compiler/glslang_tab.cpp:
- src/compiler/glslang_tab.h:
- src/compiler/intermOut.cpp:
(TOutputTraverser::visitUnary):
(TOutputTraverser::visitAggregate):
(TOutputTraverser::visitConstantUnion):
- src/compiler/intermediate.h:
(TIntermNode::TIntermNode):
(TIntermNode::getLine):
(TIntermNode::setLine):
(TIntermNode::~TIntermNode):
(TIntermConstantUnion::setUnionArrayPointer):
(TIntermAggregate::TIntermAggregate):
(TIntermAggregate::setEndLine):
(TIntermAggregate::getEndLine):
(TIntermTraverser::TIntermTraverser):
(TIntermTraverser::incrementDepth):
- src/compiler/localintermediate.h:
- src/compiler/parseConst.cpp:
(TConstTraverser::visitSymbol):
(TConstTraverser::visitBinary):
(TConstTraverser::visitUnary):
(TConstTraverser::visitAggregate):
(TConstTraverser::visitSelection):
(TConstTraverser::visitConstantUnion):
(TConstTraverser::visitLoop):
(TConstTraverser::visitBranch):
(TIntermediate::parseConstTree):
- src/compiler/timing/RestrictVertexShaderTiming.cpp:
(RestrictVertexShaderTiming::visitSymbol):
- src/libEGL/Config.cpp: Removed.
- src/libEGL/Config.h: Removed.
- src/libEGL/Display.cpp: Removed.
- src/libEGL/Display.h: Removed.
- src/libEGL/README: Added.
- src/libEGL/ShaderCache.h: Removed.
- src/libEGL/Surface.cpp: Removed.
- src/libEGL/Surface.h: Removed.
- src/libEGL/libEGL.cpp: Removed.
- src/libEGL/libEGL.def: Removed.
- src/libEGL/libEGL.rc: Removed.
- src/libEGL/libEGL.vcxproj: Removed.
- src/libEGL/libEGL.vcxproj.filters: Removed.
- src/libEGL/main.cpp: Removed.
- src/libEGL/main.h: Removed.
- src/libEGL/resource.h: Removed.
- src/libGLESv2/BinaryStream.h: Removed.
- src/libGLESv2/Blit.cpp: Removed.
- src/libGLESv2/Blit.h: Removed.
- src/libGLESv2/Buffer.cpp: Removed.
- src/libGLESv2/Buffer.h: Removed.
- src/libGLESv2/Context.cpp: Removed.
- src/libGLESv2/Context.h: Removed.
- src/libGLESv2/D3DConstantTable.cpp: Removed.
- src/libGLESv2/D3DConstantTable.h: Removed.
- src/libGLESv2/Fence.cpp: Removed.
- src/libGLESv2/Fence.h: Removed.
- src/libGLESv2/Float16ToFloat32.cpp: Removed.
- src/libGLESv2/Float16ToFloat32.py: Removed.
- src/libGLESv2/Framebuffer.cpp: Removed.
- src/libGLESv2/Framebuffer.h: Removed.
- src/libGLESv2/HandleAllocator.cpp: Removed.
- src/libGLESv2/HandleAllocator.h: Removed.
- src/libGLESv2/IndexDataManager.cpp: Removed.
- src/libGLESv2/IndexDataManager.h: Removed.
- src/libGLESv2/Program.cpp: Removed.
- src/libGLESv2/Program.h: Removed.
- src/libGLESv2/ProgramBinary.cpp: Removed.
- src/libGLESv2/ProgramBinary.h: Removed.
- src/libGLESv2/Query.cpp: Removed.
- src/libGLESv2/Query.h: Removed.
- src/libGLESv2/README: Added.
- src/libGLESv2/Renderbuffer.cpp: Removed.
- src/libGLESv2/Renderbuffer.h: Removed.
- src/libGLESv2/ResourceManager.cpp: Removed.
- src/libGLESv2/ResourceManager.h: Removed.
- src/libGLESv2/Shader.cpp: Removed.
- src/libGLESv2/Shader.h: Removed.
- src/libGLESv2/Texture.cpp: Removed.
- src/libGLESv2/Texture.h: Removed.
- src/libGLESv2/TextureSSE2.cpp: Removed.
- src/libGLESv2/VertexDataManager.cpp: Removed.
- src/libGLESv2/VertexDataManager.h: Removed.
- src/libGLESv2/libGLESv2.cpp: Removed.
- src/libGLESv2/libGLESv2.def: Removed.
- src/libGLESv2/libGLESv2.rc: Removed.
- src/libGLESv2/libGLESv2.vcxproj: Removed.
- src/libGLESv2/libGLESv2.vcxproj.filters: Removed.
- src/libGLESv2/main.cpp: Removed.
- src/libGLESv2/main.h: Removed.
- src/libGLESv2/mathutil.h: Removed.
- src/libGLESv2/resource.h: Removed.
- src/libGLESv2/shaders/Blit.ps: Removed.
- src/libGLESv2/shaders/Blit.vs: Removed.
- src/libGLESv2/shaders/componentmaskps.h: Removed.
- src/libGLESv2/shaders/flipyvs.h: Removed.
- src/libGLESv2/shaders/generate_shaders.bat: Removed.
- src/libGLESv2/shaders/luminanceps.h: Removed.
- src/libGLESv2/shaders/passthroughps.h: Removed.
- src/libGLESv2/shaders/standardvs.h: Removed.
- src/libGLESv2/utilities.cpp: Removed.
- src/libGLESv2/utilities.h: Removed.
- src/libGLESv2/vertexconversion.h: Removed.
Source/WebCore:
- CMakeLists.txt:
- 11:39 AM Changeset in webkit [152945] by
-
- 4 edits1 add in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: StringObjectUse uses structures, and CSE should know that
https://bugs.webkit.org/show_bug.cgi?id=118940
Reviewed by Geoffrey Garen.
This is asymptomatic right now, but we should fix it.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::putStructureStoreElimination):
- dfg/DFGEdgeUsesStructure.h: Added.
(DFG):
(EdgeUsesStructure):
(JSC::DFG::EdgeUsesStructure::EdgeUsesStructure):
(JSC::DFG::EdgeUsesStructure::operator()):
(JSC::DFG::EdgeUsesStructure::result):
(JSC::DFG::edgesUseStructure):
- dfg/DFGUseKind.h:
(DFG):
(JSC::DFG::usesStructure):
- 10:58 AM Changeset in webkit [152944] by
-
- 9 edits13 adds in branches/dfgFourthTier
fourthTier: String GetByVal out-of-bounds handling is so wrong
https://bugs.webkit.org/show_bug.cgi?id=118935
Source/JavaScriptCore:
Reviewed by Geoffrey Garen.
Bunch of String GetByVal out-of-bounds fixes:
- Even if the string proto chain is sane, we need to watch out for negative indices. They may get values or call getters in the prototypes, since proto sanity doesn't check for negative indexed properties, as they are not technically indexed properties.
- GetByVal String out-of-bounds does in fact clobberWorld(). CSE should be given this information.
- GetByVal String out-of-bounds does in fact clobberWorld(). CFA should be given this information.
Also fixed some other things:
- If the DFG is disabled, the testRunner should pretend that we've done a bunch of DFG compiles. That's necessary to prevent the tests from timing out.
- Disassembler shouldn't try to dump source code since it's not safe in the concurrent JIT.
- API/JSCTestRunnerUtils.cpp:
(JSC::numberOfDFGCompiles):
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGDisassembler.cpp:
(JSC::DFG::Disassembler::dumpHeader):
- dfg/DFGGraph.h:
(JSC::DFG::Graph::byValIsPure):
- dfg/DFGSaneStringGetByValSlowPathGenerator.h: Added.
(DFG):
(SaneStringGetByValSlowPathGenerator):
(JSC::DFG::SaneStringGetByValSlowPathGenerator::SaneStringGetByValSlowPathGenerator):
(JSC::DFG::SaneStringGetByValSlowPathGenerator::generateInternal):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
LayoutTests:
Reviewed by Geoffrey Garen.
- fast/js/dfg-string-out-of-bounds-check-structure-expected.txt: Added.
- fast/js/dfg-string-out-of-bounds-check-structure.html: Added.
- fast/js/dfg-string-out-of-bounds-cse-expected.txt: Added.
- fast/js/dfg-string-out-of-bounds-cse.html: Added.
- fast/js/dfg-string-out-of-bounds-negative-check-structure-expected.txt: Added.
- fast/js/dfg-string-out-of-bounds-negative-check-structure.html: Added.
- fast/js/dfg-string-out-of-bounds-negative-proto-value-expected.txt: Added.
- fast/js/dfg-string-out-of-bounds-negative-proto-value.html: Added.
- fast/js/jsc-test-list:
- fast/js/script-tests/dfg-string-out-of-bounds-check-structure.js: Added.
(foo):
- fast/js/script-tests/dfg-string-out-of-bounds-cse.js: Added.
(foo):
- fast/js/script-tests/dfg-string-out-of-bounds-negative-check-structure.js: Added.
(foo):
(while):
- fast/js/script-tests/dfg-string-out-of-bounds-negative-proto-value.js: Added.
(foo):
- 12:26 AM Changeset in webkit [152943] by
-
- 2 edits in trunk/Source/WebCore
Pagination: Do not paint the baseBackgroundColor if asked to skipRootBackground.
https://bugs.webkit.org/show_bug.cgi?id=118933
Reviewed by Simon Fraser.
Captions rendered through TextTrackRepresentation are rendered with a background
color when in paginated views. Do not fill the paint area with the
baseBackgroundColor when the paint flags include SkipRootBackground.
- rendering/RenderView.cpp:
(WebCore::RenderView::paint):
- 12:02 AM Changeset in webkit [152942] by
-
- 1 copy in releases/WebKitGTK/webkit-2.0.4
Tagging the WebKitGTK+ 2.0.4 release
Jul 19, 2013:
- 11:43 PM Changeset in webkit [152941] by
-
- 15 edits9 adds in trunk
Pages should not be able to abuse users inside beforeunload handlers.
<rdar://problem/14475779> and https://bugs.webkit.org/show_bug.cgi?id=118871.
Reviewed by Alexey Proskuryakov.
Source/WebCore:
Tests: fast/loader/show-only-one-beforeunload-dialog.html
http/tests/misc/iframe-beforeunload-dialog-matching-ancestor-securityorigin.html
http/tests/misc/iframe-beforeunload-dialog-not-matching-ancestor-securityorigin.html
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::FrameLoader):
(WebCore::FrameLoader::shouldClose):
(WebCore::FrameLoader::handleBeforeUnloadEvent):
(WebCore::FrameLoader::shouldCloseFiringBeforeUnloadEvent): Renamed from fireBeforeUnloadEvent.
Add logic to enforce "1 beforeunload dialog per navigation" as well as "iframes can only show beforeunload
dialogs if their entire ancestry's security origins match the navigating frame."
- loader/FrameLoader.h:
- loader/FrameLoader.h:
Add the ability for Page to know when any frame is dispatching beforeunload:
- page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::incrementFrameHandlingBeforeUnloadEventCount):
(WebCore::Page::decrementFrameHandlingBeforeUnloadEventCount):
(WebCore::Page::isAnyFrameHandlingBeforeUnloadEvent):
- page/Page.h:
- page/DOMWindow.cpp:
(WebCore::DOMWindow::print): Disallow if any frame is in beforeunload dispatch.
(WebCore::DOMWindow::alert): Ditto.
(WebCore::DOMWindow::confirm): Ditto.
(WebCore::DOMWindow::prompt): Ditto.
(WebCore::DOMWindow::showModalDialog): Ditto.
LayoutTests:
In addition to the new tests, updated some results of previous tests that were relying on "alert"
as a poor man's logging method.
- fast/events/onbeforeunload-focused-iframe-expected.txt:
- fast/events/onbeforeunload-focused-iframe.html:
- fast/events/onunload-clears-onbeforeunload-expected.txt:
- fast/events/onunload-clears-onbeforeunload.html:
- fast/loader/page-dismissal-modal-dialogs-expected.txt:
- fast/loader/page-dismissal-modal-dialogs.html:
- fast/loader/recursive-before-unload-crash-expected.txt:
- fast/loader/recursive-before-unload-crash.html:
- fast/loader/resources/iframe-with-beforeunload.html: Added.
- fast/loader/show-only-one-beforeunload-dialog-expected.txt: Added.
- fast/loader/show-only-one-beforeunload-dialog.html: Added.
- http/tests/misc/iframe-beforeunload-dialog-matching-ancestor-securityorigin-expected.txt: Added.
- http/tests/misc/iframe-beforeunload-dialog-matching-ancestor-securityorigin.html: Added.
- http/tests/misc/iframe-beforeunload-dialog-not-matching-ancestor-securityorigin-expected.txt: Added.
- http/tests/misc/iframe-beforeunload-dialog-not-matching-ancestor-securityorigin.html: Added.
- http/tests/misc/resources/iframe-with-beforeunload.html: Added.
- http/tests/misc/resources/notify-done.html: Added.
- 11:42 PM Changeset in webkit [152940] by
-
- 4 edits in releases/WebKitGTK/webkit-2.0
Unreviewed. Update NEWS and Versions.m4 for 2.0.4 release.
.:
- Source/autotools/Versions.m4: Bump version numbers.
Source/WebKit/gtk:
- NEWS: Added release notes for 2.0.4.
- 8:37 PM Changeset in webkit [152939] by
-
- 5 edits in trunk
AX: VoiceOver not detecting misspelled words don't work in all cases
https://bugs.webkit.org/show_bug.cgi?id=118924
Reviewed by Tim Horton.
Source/WebCore:
VoiceOver is now looking for a new misspelled attribute.
- accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(AXAttributeStringSetSpelling):
(AXAttributedStringAppendText):
Tools:
Make the misspelled detection dependent on both types of attributes being present.
- DumpRenderTree/mac/AccessibilityUIElementMac.mm:
(AccessibilityUIElement::attributedStringRangeIsMisspelled):
- WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElement::attributedStringRangeIsMisspelled):
- 7:59 PM Changeset in webkit [152938] by
-
- 2 edits in trunk/Source/WebCore
Extract computeRenderStyleForProperty and nodeOrItsAncestorNeedsStyleRecalc from ComputedStyleExtractor::propertyValue
https://bugs.webkit.org/show_bug.cgi?id=118930
Reviewed by Andreas Kling.
Extracted two functions as a preparation to fix bugs 118032 and 118618.
- css/CSSComputedStyleDeclaration.cpp:
(WebCore::nodeOrItsAncestorNeedsStyleRecalc):
(WebCore::computeRenderStyleForProperty):
(WebCore::ComputedStyleExtractor::propertyValue):
- 7:53 PM Changeset in webkit [152937] by
-
- 2 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: Structure::isValidOffset() should be able to tell you if you're loading a valid JSValue, and not just not crashing
https://bugs.webkit.org/show_bug.cgi?id=118911
Reviewed by Geoffrey Garen.
We could also have a separate method like "willNotCrash(offset)", but that's not
what isValidOffset() is intended to mean.
- runtime/Structure.h:
(JSC::Structure::isValidOffset):
- 6:32 PM Changeset in webkit [152936] by
-
- 2 edits in trunk/Tools
<rdar://problem/14499595> pagination wk2 api test failing on ML (118928)
Unreviewed.
Rebaseline pagination test after http://trac.webkit.org/changeset/152911
- TestWebKitAPI/Tests/WebKit2/ResizeReversePaginatedWebView.cpp:
(TestWebKitAPI::didLayout):
- 5:58 PM Changeset in webkit [152935] by
-
- 3 edits in trunk/Source/WebCore
Cache style declaration CSSOM wrappers directly on MutableStylePropertySet.
<http://webkit.org/b/118883>
Reviewed by Gavin Barraclough
Merge https://chromium.googlesource.com/chromium/blink/+/183bcd51eb0e79cab930cf46695df05dc793630f
From Blink r153700 by <ager@chromium.org>:
In my measurements the mapping is adding more overhead than just having a field
in all MutableStylePropertySet objects. So this saves memory and makes access
faster.
- css/StylePropertySet.cpp:
(WebCore::MutableStylePropertySet::MutableStylePropertySet):
(WebCore::MutableStylePropertySet::~MutableStylePropertySet):
(WebCore::StylePropertySet::hasCSSOMWrapper):
(WebCore::MutableStylePropertySet::cssStyleDeclaration):
(WebCore::MutableStylePropertySet::ensureCSSStyleDeclaration):
(WebCore::MutableStylePropertySet::ensureInlineCSSStyleDeclaration):
- css/StylePropertySet.h:
(WebCore::StylePropertySet::StylePropertySet):
- 5:11 PM Changeset in webkit [152934] by
-
- 3 edits in trunk/Tools
Improved code coverage generation.
https://bugs.webkit.org/show_bug.cgi?id=118926
Reviewed by Tim Horton.
- Scripts/build-webkit: Removed exception preventing ANGLE code coverage support.
- Scripts/generate-coverage-data: Added --no-build to run-javascriptcore-tests call.
(generateReport): Moved report generation to a subroutine.
- 4:30 PM Changeset in webkit [152933] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed build fix on Windows after r152930.
- WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Added missing close paren.
- 4:08 PM Changeset in webkit [152932] by
-
- 2 edits in trunk/LayoutTests
Some compositing tests fail on ML WK2 Debugi
https://bugs.webkit.org/show_bug.cgi?id=118925
Unreviewed.
- platform/mac-wk2/TestExpectations:
- 3:46 PM Changeset in webkit [152931] by
-
- 2 edits in trunk/Tools
Make Perl tools work when using git bisect with Git branch build setup
https://bugs.webkit.org/show_bug.cgi?id=118512
Reviewed by Martin Robinson.
The various Perl tools (run-webkit-app, {debug, run}-safari, et cetera) don't work
during a git bisect session with a Git branch build setup (i.e. git config
core.webKitBranchBuild true). Specifically, the tools cannot find the branch-
specific build of WebKit because they cannot determine the branch Git is on (since
git bisect puts Git into a detached HEAD state). We should teach our tooling to
parse the file .git/BISECT_START (created by git bisect start) for the name of the
branch Git was on when we began a git bisect session. Then the tools can determine
the path to the built WebKit.
- Scripts/VCSUtils.pm:
(gitDirectory): Added.
(gitBisectStartBranch): Added.
(gitBranch): Modified to call gitBisectStartBranch() when we have a detached
HEAD (e.g. running git bisect).
(determineVCSRoot): Modified to call gitDirectory() to determine the path to
the .git directory in the Git checkout.
- 3:44 PM Changeset in webkit [152930] by
-
- 3 edits in trunk/Source/WebKit
Added 64-bit symbols to WebKitExports.def.in for 64-bit Windows builds
and a macro to only use them for 64-bit builds.
https://bugs.webkit.org/show_bug.cgi?id=118887
Reviewed by Brent Fulgham.
- WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in: Added 64-bit symbols.
- WebKit.vcxproj/WebKitExportGenerator/make-export-file-generator:
Added support for new symbolWithPointer macro.
- 3:07 PM Changeset in webkit [152929] by
-
- 2 edits1 add in trunk/Source/ThirdParty/ANGLE
Generate derived files in ANGLE at build time rather than when updating from upstream.
https://bugs.webkit.org/show_bug.cgi?id=118872
Reviewed by Mark Rowe.
- ANGLE.xcodeproj/project.pbxproj: Made Derived Sources target which calls DerivedSources.make,
moved generated files into Derived Sources group.
- DerivedSources.make: Added.
- 2:51 PM Changeset in webkit [152928] by
-
- 2 edits in trunk/LayoutTests
Unreviewed. Skip failing tests to make WinEWS bots happy.
- platform/win/TestExpectations:
- 2:40 PM Changeset in webkit [152927] by
-
- 4 edits in trunk/Source/WebCore
[Windows] Avoid passing addresses of temporaries to Windows API.
https://bugs.webkit.org/show_bug.cgi?id=118917
Reviewed by Anders Carlsson.
The temporary Vector returned by String::charactersWithNullTermination
was going out of scope before its first use, causing Windows API to
receive garbage memory.
- platform/win/ContextMenuWin.cpp:
(WebCore::ContextMenu::createPlatformContextMenuFromItems):
- platform/win/PasteboardWin.cpp:
(WebCore::createGlobalHDropContent):
- platform/win/SSLKeyGeneratorWin.cpp:
(WebCore::WebCore::signedPublicKeyAndChallengeString):
- 1:54 PM Changeset in webkit [152926] by
-
- 2 edits in trunk/LayoutTests
Unskip flaky tests on AppleWin.
Flakiness is not an issue with the tests themselves but with the test infrastructure.
- platform/win/TestExpectations:
- 1:32 PM Changeset in webkit [152925] by
-
- 2 edits in trunk/Source/WebCore
[CSS Shapes] Remove lineWithinShapeBounds() from ShapeInfo since it's no longer used
https://bugs.webkit.org/show_bug.cgi?id=118913
Reviewed by Andreas Kling.
No new tests, no behavior change.
- rendering/shapes/ShapeInfo.h: Remove lineWithinShapeBounds().
- 1:30 PM Changeset in webkit [152924] by
-
- 2 edits in trunk/LayoutTests
Unreviewed. Skip some flaky tests on AppleWin port.
- platform/win/TestExpectations:
- 1:14 PM Changeset in webkit [152923] by
-
- 3 edits17 adds48 deletes in trunk/LayoutTests
More conversions from MathML pixel tests to reftests.
https://bugs.webkit.org/show_bug.cgi?id=118853
Patch by Frédéric Wang <fred.wang@free.fr> on 2013-07-19
Reviewed by Chris Fleizach.
- mathml/presentation/fenced-expected.html: Added.
- mathml/presentation/fenced-mi-expected.html: Added.
- mathml/presentation/fenced-mi.html: Added.
- mathml/presentation/fenced-mi.xhtml: Removed.
- mathml/presentation/fenced.html: Added.
- mathml/presentation/fenced.xhtml: Removed.
- mathml/presentation/mroot-pref-width-expected.html: Added.
- mathml/presentation/mroot-pref-width.html:
- mathml/presentation/row-alignment.xhtml: Removed.
- mathml/presentation/style-border-padding-background-expected.html: Added.
- mathml/presentation/style-border-padding-background.html: Added.
- mathml/presentation/style-color-sqrt-expected-mismatch.html: Added.
- mathml/presentation/style-color-sqrt.html: Added.
- mathml/presentation/style.xhtml: Removed.
- mathml/presentation/tables-columnalign-expected.html: Added.
- mathml/presentation/tables-columnalign.html: Added.
- mathml/presentation/tables-simple-expected.html: Added.
- mathml/presentation/tables-simple.html: Added.
- mathml/presentation/tables-spans-dynamic-expected.html: Added.
- mathml/presentation/tables-spans-dynamic.html: Added.
- mathml/presentation/tables-spans-expected.html: Added.
- mathml/presentation/tables-spans.html: Added.
- mathml/presentation/tables.xhtml: Removed.
- mathml/xHeight.xhtml: Removed.
- platform/efl/mathml/presentation/fenced-expected.png: Removed.
- platform/efl/mathml/presentation/fenced-expected.txt: Removed.
- platform/efl/mathml/presentation/fenced-mi-expected.png: Removed.
- platform/efl/mathml/presentation/fenced-mi-expected.txt: Removed.
- platform/efl/mathml/presentation/mroot-pref-width-expected.png: Removed.
- platform/efl/mathml/presentation/mroot-pref-width-expected.txt: Removed.
- platform/efl/mathml/presentation/row-alignment-expected.png: Removed.
- platform/efl/mathml/presentation/row-alignment-expected.txt: Removed.
- platform/efl/mathml/presentation/style-expected.png: Removed.
- platform/efl/mathml/presentation/style-expected.txt: Removed.
- platform/efl/mathml/presentation/tables-expected.png: Removed.
- platform/efl/mathml/presentation/tables-expected.txt: Removed.
- platform/efl/mathml/xHeight-expected.png: Removed.
- platform/efl/mathml/xHeight-expected.txt: Removed.
- platform/gtk/mathml/presentation/fenced-expected.png: Removed.
- platform/gtk/mathml/presentation/fenced-expected.txt: Removed.
- platform/gtk/mathml/presentation/fenced-mi-expected.png: Removed.
- platform/gtk/mathml/presentation/fenced-mi-expected.txt: Removed.
- platform/gtk/mathml/presentation/mroot-pref-width-expected.png: Removed.
- platform/gtk/mathml/presentation/mroot-pref-width-expected.txt: Removed.
- platform/gtk/mathml/presentation/row-alignment-expected.png: Removed.
- platform/gtk/mathml/presentation/row-alignment-expected.txt: Removed.
- platform/gtk/mathml/presentation/style-expected.png: Removed.
- platform/gtk/mathml/presentation/style-expected.txt: Removed.
- platform/gtk/mathml/presentation/tables-expected.png: Removed.
- platform/gtk/mathml/presentation/tables-expected.txt: Removed.
- platform/gtk/mathml/xHeight-expected.png: Removed.
- platform/gtk/mathml/xHeight-expected.txt: Removed.
- platform/mac/TestExpectations:
- platform/mac/mathml/presentation/fenced-expected.png: Removed.
- platform/mac/mathml/presentation/fenced-expected.txt: Removed.
- platform/mac/mathml/presentation/fenced-mi-expected.png: Removed.
- platform/mac/mathml/presentation/fenced-mi-expected.txt: Removed.
- platform/mac/mathml/presentation/mroot-pref-width-expected.png: Removed.
- platform/mac/mathml/presentation/mroot-pref-width-expected.txt: Removed.
- platform/mac/mathml/presentation/row-alignment-expected.png: Removed.
- platform/mac/mathml/presentation/row-alignment-expected.txt: Removed.
- platform/mac/mathml/presentation/style-expected.png: Removed.
- platform/mac/mathml/presentation/style-expected.txt: Removed.
- platform/mac/mathml/presentation/tables-expected.png: Removed.
- platform/mac/mathml/presentation/tables-expected.txt: Removed.
- platform/mac/mathml/xHeight-expected.png: Removed.
- platform/mac/mathml/xHeight-expected.txt: Removed.
- 1:04 PM Changeset in webkit [152922] by
-
- 4 edits2 adds in trunk/Source/WebKit2
[GTK] Need a way to enable region based columns from the command line
https://bugs.webkit.org/show_bug.cgi?id=116611
Patch by Morten Stenshorne <mstensho@opera.com> on 2013-07-19
Reviewed by Martin Robinson.
Add an environment variable to enable experimental features.
This provides a means to enable experimental features without polluting
the public API.
Environment variable name: WEBKITGTK_EXPERIMENTAL_FEATURES
Format: WEBKITGTK_EXPERIMENTAL_FEATURES="<feature1>=1,<feature2>=1,..."
Or, to enable all experimental features: WEBKITGTK_EXPERIMENTAL_FEATURES=all
So far the only feature is region based columns (implement multicol using
the CSS regions implementation rather than ColumnInfo & co) - REGION_BASED_COLUMNS.
Example: WEBKITGTK_EXPERIMENTAL_FEATURES="REGION_BASED_COLUMNS=1"
- GNUmakefile.list.am:
- PlatformGTK.cmake:
- UIProcess/API/gtk/WebKitSettings.cpp:
(webKitSettingsConstructed):
(webkit_settings_class_init):
- UIProcess/gtk/ExperimentalFeatures.cpp: Added.
(WebKit):
(Setting):
(WebKit::ExperimentalFeatures::ExperimentalFeatures):
(WebKit::ExperimentalFeatures::isEnabled):
(WebKit::ExperimentalFeatures::setEnableByName):
(WebKit::ExperimentalFeatures::parseEnvironment):
- UIProcess/gtk/ExperimentalFeatures.h: Added.
(WebKit):
(ExperimentalFeatures):
- 12:43 PM Changeset in webkit [152921] by
-
- 40 edits in trunk
Added x64 configuration to Visual Studio build.
https://bugs.webkit.org/show_bug.cgi?id=118888
Reviewed by Brent Fulgham.
Source/JavaScriptCore:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
- JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
- JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
- JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
- JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
- JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
- JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
Source/ThirdParty:
- gtest/msvc/gtest-md.vcxproj:
Source/WebCore:
- WebCore.vcxproj/QTMovieWin/QTMovieWin.vcxproj:
- WebCore.vcxproj/WebCore.vcxproj:
- WebCore.vcxproj/WebCoreGenerated.vcxproj:
- WebCore.vcxproj/WebCoreTestSupport.vcxproj:
Source/WebKit:
- WebKit.vcxproj/Interfaces/Interfaces.vcxproj:
- WebKit.vcxproj/WebKit.sln:
- WebKit.vcxproj/WebKit/WebKit.vcxproj:
- WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj:
- WebKit.vcxproj/WebKitExportGenerator/WebKitExportGenerator.vcxproj.filters:
- WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj:
- WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters:
Source/WTF:
- WTF.vcxproj/WTF.vcxproj:
- WTF.vcxproj/WTF.vcxproj.filters:
- WTF.vcxproj/WTFGenerated.vcxproj:
Tools:
- DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj:
- DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj.filters:
- DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj:
- DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj:
- DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj:
- DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj:
- TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
- WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj:
- WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj:
- win/AssembleBuildLogs/AssembleBuildLogs.vcxproj:
- win/record-memory/record-memory.vcxproj:
- 12:42 PM Changeset in webkit [152920] by
-
- 2 edits in trunk/LayoutTests
Unreviewed. Skip some flaky tests on AppleWin port.
- platform/win/TestExpectations:
- 12:21 PM Changeset in webkit [152919] by
-
- 5 edits2 adds in trunk
Spatial Navigation handling of space key in <select> appears to confuse listIndex and optionIndex.
https://bugs.webkit.org/show_bug.cgi?id=99525
Source/WebCore:
HTMLSelect Element inherently contains the logic to focus option node and thus, implementing an explicit logic to find the focus index is not required.
Patch by Abhijeet Kandalkar <abhijeet.k@samsung.com> on 2013-07-19
Reviewed by Joseph Pecoraro.
Test: fast/spatial-navigation/snav-multiple-select-optgroup.html
- html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
- page/SpatialNavigation.cpp:
(WebCore::canScrollInDirection):
- rendering/RenderListBox.cpp:
(WebCore::RenderListBox::addFocusRingRects):
LayoutTests:
Added testcase to test support of option group within HTMLSelect element.
Patch by Abhijeet Kandalkar <abhijeet.k@samsung.com> on 2013-07-19
Reviewed by Joseph Pecoraro.
- fast/spatial-navigation/snav-multiple-select-optgroup-expected.txt: Added.
- fast/spatial-navigation/snav-multiple-select-optgroup.html: Added.
- 11:56 AM Changeset in webkit [152918] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r152877. <rdar://problem/14271327>
- 11:55 AM Changeset in webkit [152917] by
-
- 3 edits in branches/safari-537-branch/Source/JavaScriptCore
Merged r152818. <rdar://problem/14473897>
- 11:54 AM Changeset in webkit [152916] by
-
- 12 edits12 copies in branches/safari-537-branch
Merged r152813. <rdar://problem/14473897>
- 11:51 AM Changeset in webkit [152915] by
-
- 2 edits in tags/Safari-537.51.3/Source/WebKit2
Merged r152877. <rdar://problem/14271327>
- 11:49 AM Changeset in webkit [152914] by
-
- 3 edits in tags/Safari-537.51.3/Source/JavaScriptCore
Merged r152818. <rdar://problem/14473897>
- 11:46 AM Changeset in webkit [152913] by
-
- 12 edits12 copies in tags/Safari-537.51.3
Merged r152813. <rdar://problem/14473897>
- 11:38 AM Changeset in webkit [152912] by
-
- 5 edits in tags/Safari-537.51.3/Source
Versioning.
- 11:37 AM Changeset in webkit [152911] by
-
- 14 edits50 adds in trunk
OSX: ePub: Unable to select text in vertical Japanese book
https://bugs.webkit.org/show_bug.cgi?id=118864
<rdar://problem/14109351>
Reviewed by Dan Bernstein and Sam Weinig.
Source/WebCore:
This patch fixes all of the various writing-mode and pagination combinations
so that the columns are painted in the correct location. The code that sets up
the initial painting translation offset in the block direction and that advances
that offset has been pulled into two helper functions, initialBlockOffsetForPainting
and blockDeltaForPaintingNextColumn, and that code is now shared by the four call
sites that need it (painting and hit testing in RenderBlock and painting and hit testing
in RenderLayer).
This patch also backs out the maximumScrollPosition change, since it only occurred because
of incorrect sizing of the RenderView, and this sizing issue has now been corrected by
ensuring that computeLogicalHeight() always makes sure you are the size of the viewport
and does not shrink you to the column height.
There was also a race condition that caused pagination to be incorrect if layout occurred
before the html/body renderer that set the writing-mode were available. When this happened,
the writing mode got propagated up to the view, but the column styles didn't get
adjusted to compensate for the writing mode change.
Added tests for every pagination and writing-mode combination in fast/multicol/pagination.
- css/StyleResolver.cpp:
(WebCore::StyleResolver::styleForDocument):
(WebCore::StyleResolver::adjustRenderStyle):
Move setStylesForPaginationMode into RenderStyle and make it a member function. This is
necessary so that the style can be adjusted dynamically to fix the race condition mentioned
above.
- page/FrameView.cpp:
(WebCore::FrameView::maximumScrollPosition):
Back out this change since the symptom it was fixing only occurred because the logical
height of the view was being set incorrectly.
- rendering/RenderBlock.cpp:
(WebCore::RenderBlock::checkForPaginationLogicalHeightChange):
Patch the column code that sets up the initial page height to use the pagination API's
page height rather than the viewport logical height. This allows the view to still match
the viewport in dimensions rather than being incorrectly sized to the column height.
(WebCore::RenderBlock::initialBlockOffsetForPainting):
(WebCore::RenderBlock::blockDeltaForPaintingNextColumn):
Two new helper functions used to set up the block direction paint/hit testing translation.
The major bug fix that occurred in this code is that the old block axis code didn't handle
reversal correctly and it also used physical coordinates to try to determine the translation
offset, when you really need to use logical coordinates in the original writing mode coordinate
system to determine the offset.
(WebCore::RenderBlock::paintColumnContents):
Patched to call the new helper functions.
(WebCore::ColumnRectIterator::ColumnRectIterator):
(WebCore::ColumnRectIterator::adjust):
(WebCore::ColumnRectIterator::update):
Patched to call the new helper functions.
- rendering/RenderBlock.h:
Add the two new helper functions to the RenderBlock header.
- rendering/RenderBox.cpp:
(WebCore::RenderBox::styleDidChange):
If the writing mode of the html/body propagates to the viewport and changes its writing mode,
also change our column styles to match if we're in paginated mode.
(WebCore::RenderBox::computeLogicalHeight):
(WebCore::RenderBox::computePercentageLogicalHeight):
Call the new pageOrViewLogicalHeight function on RenderView instead of
RenderBox::viewLogicalHeightForPercentages (which is now removed).
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintChildLayerIntoColumns):
(WebCore::RenderLayer::hitTestChildLayerColumns):
Patched to use the two new helper functions for block direction paint offset setup and
advancement.
- rendering/RenderView.cpp:
(WebCore::RenderView::pageOrViewLogicalHeight):
New helper function that does what viewLogicalHeightForPercentages used to do but also
handles returning the page length for block axis column progression. Again, this is to
allow the view to retain its correct size (matching the viewport).
(WebCore::RenderView::viewLogicalHeight):
Back out the code that made the view grow or shrink to the size of the Pagination API page
length when the progression was block axis. This was the source of most of the scroll origin
and scrolling issues.
- rendering/RenderView.h:
Add the new pageOrViewLogicalHeight() function.
- rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::setColumnStylesFromPaginationMode):
This is the old StyleResolver function for setting up the column styles. It's in RenderStyle
now so that it can be called at any time to change a style rather than only at style resolution
time.
- rendering/style/RenderStyle.h:
Declaration of the setColumnStylesFromPaginationMode function.
LayoutTests:
- fast/multicol/pagination: Added.
- fast/multicol/pagination/BottomToTop-bt.html: Added.
- fast/multicol/pagination/BottomToTop-lr.html: Added.
- fast/multicol/pagination/BottomToTop-rl.html: Added.
- fast/multicol/pagination/BottomToTop-tb.html: Added.
- fast/multicol/pagination/LeftToRight-bt.html: Added.
- fast/multicol/pagination/LeftToRight-lr.html: Added.
- fast/multicol/pagination/LeftToRight-rl.html: Added.
- fast/multicol/pagination/LeftToRight-tb.html: Added.
- fast/multicol/pagination/RightToLeft-bt.html: Added.
- fast/multicol/pagination/RightToLeft-lr.html: Added.
- fast/multicol/pagination/RightToLeft-rl.html: Added.
- fast/multicol/pagination/RightToLeft-tb.html: Added.
- fast/multicol/pagination/TopToBottom-bt.html: Added.
- fast/multicol/pagination/TopToBottom-lr.html: Added.
- fast/multicol/pagination/TopToBottom-rl.html: Added.
- fast/multicol/pagination/TopToBottom-tb.html: Added.
- platform/mac/fast/multicol/pagination: Added.
- platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.png: Added.
- platform/mac/fast/multicol/pagination/BottomToTop-bt-expected.txt: Added.
- platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.png: Added.
- platform/mac/fast/multicol/pagination/BottomToTop-lr-expected.txt: Added.
- platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.png: Added.
- platform/mac/fast/multicol/pagination/BottomToTop-rl-expected.txt: Added.
- platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.png: Added.
- platform/mac/fast/multicol/pagination/BottomToTop-tb-expected.txt: Added.
- platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.png: Added.
- platform/mac/fast/multicol/pagination/LeftToRight-bt-expected.txt: Added.
- platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.png: Added.
- platform/mac/fast/multicol/pagination/LeftToRight-lr-expected.txt: Added.
- platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.png: Added.
- platform/mac/fast/multicol/pagination/LeftToRight-rl-expected.txt: Added.
- platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.png: Added.
- platform/mac/fast/multicol/pagination/LeftToRight-tb-expected.txt: Added.
- platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.png: Added.
- platform/mac/fast/multicol/pagination/RightToLeft-bt-expected.txt: Added.
- platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.png: Added.
- platform/mac/fast/multicol/pagination/RightToLeft-lr-expected.txt: Added.
- platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.png: Added.
- platform/mac/fast/multicol/pagination/RightToLeft-rl-expected.txt: Added.
- platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.png: Added.
- platform/mac/fast/multicol/pagination/RightToLeft-tb-expected.txt: Added.
- platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.png: Added.
- platform/mac/fast/multicol/pagination/TopToBottom-bt-expected.txt: Added.
- platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.png: Added.
- platform/mac/fast/multicol/pagination/TopToBottom-lr-expected.txt: Added.
- platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.png: Added.
- platform/mac/fast/multicol/pagination/TopToBottom-rl-expected.txt: Added.
- platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.png: Added.
- platform/mac/fast/multicol/pagination/TopToBottom-tb-expected.txt: Added.
- platform/mac/fast/multicol/shrink-to-column-height-for-pagination-expected.png:
- platform/mac/fast/multicol/shrink-to-column-height-for-pagination-expected.txt:
- 11:31 AM Changeset in webkit [152910] by
-
- 1 copy in tags/Safari-537.51.3
New Tag.
- 11:14 AM Changeset in webkit [152909] by
-
- 13 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: Structure should be able to tell you if it's valid to load at a given offset from any object with that structure
https://bugs.webkit.org/show_bug.cgi?id=118878
Reviewed by Oliver Hunt.
- Change Structure::isValidOffset() to actually answer the question "If I attempted to load from an object of this structure, at this offset, would I commit suicide or would I get back some kind of value?"
- Change StorageAccessData::offset to use a PropertyOffset. It should have been that way from the start.
- Fix PutStructure so that it sets haveStructures in all of the cases that it should.
- Make GetByOffset also reference the base object in addition to the butterfly.
The future use of this power will be to answer questions like "If I hoisted this
GetByOffset or PutByOffset to this point, would it cause crashes, or would it be
fine?"
I don't currently plan to use this power to perform validation, since the CSE has
the power to eliminate CheckStructure's that the CFA wouldn't be smart enough to
remove - both in the case of StructureSets where size >= 2 and in the case of
CheckStructures that match across PutStructures. At first I tried to write a
validator that was aware of this, but the validation code got way too complicated
and I started having nightmares of spurious assertion bugs being filed against me.
This also changes some of the code for how we hash FunctionExecutable's for debug
dumps, since that code still had some thread-safety issues. Basically, the
concurrent JIT needs to use the CodeBlock's precomputed hash and never call anything
that could transitively try to compute the hash from the source code. The source
code is a string that may be lazily computed, and that involves all manner of thread
unsafe things.
- bytecode/CodeOrigin.cpp:
(JSC::InlineCallFrame::hash):
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleGetByOffset):
(JSC::DFG::ByteCodeParser::handlePutByOffset):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::performBlockCFA):
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
- dfg/DFGGraph.h:
(StorageAccessData):
- dfg/DFGNode.h:
(JSC::DFG::Node::convertToGetByOffset):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileGetByOffset):
(JSC::FTL::LowerDFGToLLVM::compilePutByOffset):
- runtime/FunctionExecutableDump.cpp:
(JSC::FunctionExecutableDump::dump):
- runtime/Structure.h:
(Structure):
(JSC::Structure::isValidOffset):
- 10:52 AM Changeset in webkit [152908] by
-
- 9 edits in trunk/Source
[Curl] Http response code 401 (Authentication required) is not handled.
https://bugs.webkit.org/show_bug.cgi?id=118849
Patch by peavo@outlook.com <peavo@outlook.com> on 2013-07-19
Reviewed by Brent Fulgham.
The current Curl implementation does not handle a 401 response.
When receiving http code 401, we need to give a notification that authorization is required, by calling the appropriate notification method.
This gives a WebKit client the possibility to present a password dialog to the user.
In response to this, we should provide Curl with the given username and password, so another request can be sent with the given credentials.
Source/WebCore:
- platform/network/ResourceHandle.h:
Added method to check if credential storage should be used.
- platform/network/ResourceHandleInternal.h:
Added member to keep track of number of authentication failures.
(WebCore::ResourceHandleInternal::ResourceHandleInternal):
- platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::shouldUseCredentialStorage):
Added method to check if credential storage should be used.
(WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
Implement method; notify client when authentication is required.
(WebCore::ResourceHandle::receivedCredential):
Implement method; provide Curl with password and username when available.
(WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
Implement method; reset Curl username and password.
(WebCore::ResourceHandle::receivedCancellation):
Implement method; notify client that authorization has been cancelled.
- platform/network/curl/ResourceHandleManager.cpp:
(WebCore::isHttpAuthentication):
Added function to check if http code is an 'Authorization required' code.
(WebCore::getProtectionSpace):
Added function to initialize a protection space object from a Curl handle and a response object.
(WebCore::headerCallback):
Notify client when authorization is required.
(WebCore::ResourceHandleManager::applyAuthenticationToRequest):
Added method to set Curl username and password.
(WebCore::ResourceHandleManager::initializeHandle):
Use method to set Curl username and password.
- platform/network/curl/ResourceHandleManager.h:
Added method to set Curl username and password.
Source/WebKit/win:
- WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::dispatchDidReceiveAuthenticationChallenge):
Implement empty method; use the same implementation as the CFNetwork version does,
notify delegate when authorization is required.
- WebURLAuthenticationChallengeSenderCurl.cpp:
(WebURLAuthenticationChallengeSender::cancelAuthenticationChallenge):
Implement empty method; use the same implementation as the CFNetwork version does.
(WebURLAuthenticationChallengeSender::continueWithoutCredentialForAuthenticationChallenge):
Implement empty method; use the same implementation as the CFNetwork version does.
(WebURLAuthenticationChallengeSender::useCredential):
Implement empty method; use the same implementation as the CFNetwork version does.
- 10:47 AM Changeset in webkit [152907] by
-
- 3 edits2 adds in trunk
Hover doesn't work for block elements inside a href element
https://bugs.webkit.org/show_bug.cgi?id=118907
Patch by Radu Stavila <stavila@adobe.com> on 2013-07-19
Reviewed by David Hyatt.
Source/WebCore:
Added test for hovering block elements inside a href element.
Test: fast/css/hover-display-block.html
- rendering/RenderObject.cpp:
(WebCore::RenderObject::hoverAncestor):
LayoutTests:
Don't skip all anonymous objects when searching for the hover ancestor, only the ones
directly flowed into a region.
- fast/css/hover-display-block-expected.txt: Added.
- fast/css/hover-display-block.html: Added.
- 10:46 AM Changeset in webkit [152906] by
-
- 5 edits in trunk
[CSS Shapes] Clear overflowing line's segments in pushShapeContentOverflowBelowTheContentBox
https://bugs.webkit.org/show_bug.cgi?id=118002
Reviewed by David Hyatt.
When the last line in the shape overlaps with the shape bottom boundaries we need to clear the computed segments. (We need to compute
the segments anyway, since shape-outside's code uses the same code path to determine its segments and the line containing is not a
requirement in that case.) Rather then doing the job in RenderBlock::LineBreaker::nextLineBreak I moved the functionality to its correct
place to pushShapeContentOverflowBelowTheContentBox. Now all the overflow related functionality is located in one function. I fixed the
corresponding layout test.
Source/WebCore:
Tests: I modified shape-inside-overflow.html.
- rendering/RenderBlockLineLayout.cpp:
(WebCore::pushShapeContentOverflowBelowTheContentBox): Remove segments if line overlaps with the shape's boundaries.
(WebCore::RenderBlock::LineBreaker::nextLineBreak): Move segments clear logic to pushShapeContentOverflowBelowContentBox.
LayoutTests:
- fast/shapes/shape-inside/shape-inside-overflow-expected.html:
- fast/shapes/shape-inside/shape-inside-overflow.html:
- 10:43 AM Changeset in webkit [152905] by
-
- 2 edits in trunk/Source/WebCore
TrailingObjects shouldn't shrink vector capacity in a loop
https://bugs.webkit.org/show_bug.cgi?id=118322
Reviewed by Darin Adler.
This seems to take about 3% off the profile of loading a large text file.
- rendering/RenderBlockLineLayout.cpp:
(WebCore::TrailingObjects::clear): clear() has the built-in side effect
of throwing away existing capacity. Use shrink(0) to indicate that we
want to keep our existing capacity.
- 10:40 AM Changeset in webkit [152904] by
-
- 7 edits in trunk/LayoutTests
[CSS Shapes][CSS Regions] Modify existing tests to test overflow also when padding is applied on the container
https://bugs.webkit.org/show_bug.cgi?id=117881
Reviewed by David Hyatt.
Currently, we don't have tests which test the overflow behavior when there is padding applied on the container.
I modified the existing tests to cover these cases as well and increase our test coverage.
- fast/shapes/shape-inside/shape-inside-overflow-fixed-dimensions-expected.html:
- fast/shapes/shape-inside/shape-inside-overflow-fixed-dimensions.html:
- fast/regions/shape-inside/shape-inside-on-regions-block-content-overflow-bottom-positioned-multiple-shapes-expected.html:
- fast/regions/shape-inside/shape-inside-on-regions-block-content-overflow-bottom-positioned-multiple-shapes.html:
- fast/regions/shape-inside/shape-inside-on-regions-inline-content-overflow-bottom-positioned-multiple-shapes-expected.html:
- fast/regions/shape-inside/shape-inside-on-regions-inline-content-overflow-bottom-positioned-multiple-shapes.html:
- 10:33 AM Changeset in webkit [152903] by
-
- 3 edits in trunk/Tools
Add a couple people to the MathML watchlist
https://bugs.webkit.org/show_bug.cgi?id=118909
Reviewed by Andreas Kling.
Add a couple people to the MathML watchlist and add Kalyan's other
email address to fix style checker warnings about the watchlist
contents.
- Scripts/webkitpy/common/config/contributors.json: Add Frédéric to the
list of contributors and add Kalyan's second email address.
- Scripts/webkitpy/common/config/watchlist: Add myself and Frédéric to the MathML
watchlist.
- 9:13 AM Changeset in webkit [152902] by
-
- 3 edits in trunk/LayoutTests
Update test expectations for MathML after r152840.
https://bugs.webkit.org/show_bug.cgi?id=118053
Patch by Frédéric Wang <fred.wang@free.fr> on 2013-07-19
Reviewed by Chris Fleizach.
- TestExpectations: unskip mspace tests
- platform/mac/TestExpectations: ImageOnlyFailure for mspace-units
- 8:21 AM Changeset in webkit [152901] by
-
- 7 edits3 adds in trunk/LayoutTests
[GTK] Unreviewed gardening. Update expectations after r152793, r152777 and r152872
https://bugs.webkit.org/show_bug.cgi?id=118906
Unreviewed GTK gardening.
Patch by Simon Pena <simon.pena@samsung.com> on 2013-07-19
- platform/gtk/TestExpectations: Mark svg/animations/svgenum-animation-6.html as flaky, and
mathml/presentation/bug95404.html, introduced in r152777, as ImageOnlyFailure.
- platform/gtk/editing/pasteboard/emacs-cntl-y-001-expected.txt: New baseline after r152872.
- platform/gtk/editing/pasteboard/emacs-ctrl-k-y-001-expected.txt: Ditto.
- platform/gtk/fast/dom/Range/getClientRects-expected.txt: Ditto.
- platform/gtk/fast/js/function-length-expected.txt: Ditto.
- platform/gtk/plugins/npruntime/object-from-destroyed-plugin-expected.txt: Added after r152872.
- platform/gtk/plugins/npruntime/object-from-destroyed-plugin-in-subframe-expected.txt: Added after r152872.
- platform/gtk/tables/mozilla/marvin/backgr_index-expected.txt: New baseline after r152793.
- 6:37 AM Changeset in webkit [152900] by
-
- 2 edits in trunk/LayoutTests
[Qt][WK2] More unreviewed cleanup for pixel tester bot.
- platform/qt-5.0-wk2/TestExpectations:
- 6:27 AM Changeset in webkit [152899] by
-
- 2 edits in trunk/LayoutTests
[Qt][WK2] Unreviewed cleanup for pixel tester bot.
- platform/qt-5.0-wk2/TestExpectations:
- 5:46 AM Changeset in webkit [152898] by
-
- 2 edits in trunk/Source/WebCore
[GTK] Merge decamelizations fix ups in the GObject DOM bindings code generator
https://bugs.webkit.org/show_bug.cgi?id=117543
Patch by Diego Pino Garcia <Diego Pino Garcia> on 2013-07-19
Reviewed by Carlos Garcia Campos.
Ensure that all the code that calls to decamelize() applies the same fix ups
Now all functions that need to decamelize a string should simply call
to decamelize(). This function calls to FixUpDecamelize to apply some
fix ups.
- bindings/scripts/CodeGeneratorGObject.pm:
(decamelize): decamelizes a string and applies fix ups
(FixUpDecamelize): applies a series of fix ups to a decamelized string
(GetParentGObjType): moved fix ups to FixUpDecamelize()
(GenerateProperties): simply call to decamelize
(GenerateHeader): simply call to decamelize
(GetGReturnMacro): simply call to decamelize
(GenerateFunction): simply call to decamelize
(GenerateCFile): simply call to decamelize
(GenerateEventTargetIface): simply call to decamelize
- 5:18 AM Changeset in webkit [152897] by
-
- 2 edits in trunk/Tools
[GTK] Fix regression in DumpRenderTree introduced in r152782 by checking if uri is valid
https://bugs.webkit.org/show_bug.cgi?id=118895
Patch by Simon Pena <simon.pena@samsung.com> on 2013-07-19
Reviewed by Philippe Normand.
In r152782 an uri is used to create an string representation without checking first if it
is valid. That fails later when the string is used to check for existing redirections. This
patch ensures that the uri is valid before using it.
- DumpRenderTree/gtk/DumpRenderTree.cpp:
(willSendRequestCallback): Ensure an uri is valid before using it.
- 5:13 AM WebKitGTK/2.0.x edited by
- (diff)
- 5:11 AM Changeset in webkit [152896] by
-
- 2 edits in releases/WebKitGTK/webkit-2.0/Source/WebKit2
Merge r152340 - [WK2] Invalidate FontCache before purging MemoryCache upon WebProcess termination/closure
https://bugs.webkit.org/show_bug.cgi?id=118280
Reviewed by Darin Adler.
Invalidate the FontCache before disabling and purging the MemoryCache in WebProcess::didClose
and WebProcess::terminate. This frees up additional references to objects that were held
by the FontCache, reducing the amount of 'LEAK: *' output when exiting MiniBrowser or
WebKitTestRunner in debug builds.
- WebProcess/WebProcess.cpp:
(WebKit::WebProcess::terminate):
(WebKit::WebProcess::didClose):
- 5:09 AM WebKitGTK/2.0.x edited by
- (diff)
- 5:07 AM Changeset in webkit [152895] by
-
- 2 edits in releases/WebKitGTK/webkit-2.0
Merge r151674 - [GTK][GStreamer] Fullscreen option in video element context menu not working
https://bugs.webkit.org/show_bug.cgi?id=105191
.:
Fullscreen with native controls is outdated and even broken in
[GTK][WK2], so they are deactivated for now.
Patch by Xabier Rodriguez Calvar <calvaris@igalia.com> on 2013-06-18
Reviewed by Philippe Normand.
- Source/autotools/SetupAutoconfHeader.m4: Removed the use of
fullscreen native media controls.
- 4:52 AM Changeset in webkit [152894] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed.
Fix an assertion failure which causes debug bots to fail.
- platform/network/NetworkStateNotifier.cpp:
(WebCore::NetworkStateNotifier::addNetworkStateChangeListener):
- 3:31 AM Changeset in webkit [152893] by
-
- 4 edits in trunk
[GTK] media/video-seek-multiple.html is failing
https://bugs.webkit.org/show_bug.cgi?id=117580
Patch by Miguel Gomez <magomez@igalia.com> on 2013-07-19
Reviewed by Philippe Normand.
Source/WebCore:
When receiving several seek calls in a row, ensure that the final position
is the one requested in the last call received.
Already covered in test media/video-seek-multiple.html
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::seek):
LayoutTests:
Change expectation for media/video-seek-multiple.html test
- platform/gtk/TestExpectations:
- 3:28 AM WebKitGTK/2.0.x edited by
- (diff)
- 3:26 AM Changeset in webkit [152892] by
-
- 3 edits in releases/WebKitGTK/webkit-2.0/Source/WebCore
Merge r149543 - [GStreamer] GStreamer log crashes in MediaPlayerPrivateGStreamerBase because of uninitialized category
https://bugs.webkit.org/show_bug.cgi?id=115575
Patch by Xabier Rodriguez Calvar <calvaris@igalia.com> on 2013-05-03
Reviewed by Philippe Normand.
No new tests needed.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
Using extern debug category.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
Declaring debug category as not static.
- 3:21 AM WebKitGTK/2.0.x edited by
- (diff)
- 3:19 AM Changeset in webkit [152891] by
-
- 3 edits2 adds in releases/WebKitGTK/webkit-2.0
Merge r148131 - Clicking on the volume slider of HTML5 elements is pausing sometimes
https://bugs.webkit.org/show_bug.cgi?id=112548
Patch by Xabier Rodriguez Calvar <calvaris@igalia.com> on 2013-04-10
Reviewed by Eric Carlson.
Source/WebCore:
Test: media/click-volume-bar-not-pausing.html
- html/shadow/MediaControlElementTypes.cpp:
(WebCore::MediaControlVolumeSliderElement::defaultEventHandler):
Calling the setDefaultHandled() method on the event prevents it
from being incorrectly propagated from the volume button up to the
MediaDocument.
LayoutTests:
Added test.
- media/click-volume-bar-not-pausing-expected.txt: Added.
- media/click-volume-bar-not-pausing.html: Added.
- 3:13 AM Changeset in webkit [152890] by
-
- 2 edits in releases/WebKitGTK/webkit-2.0
Merge r152712 - [GTK] Remove compile warnings about GTK+ API deprecated after 3.6
https://bugs.webkit.org/show_bug.cgi?id=118237
Reviewed by Philippe Normand.
We depend on GTK+3.6 so we are not interested in compile warnings
about deprecated API after 3.6
- Source/autotools/SetupAutoconfHeader.m4: Define
GDK_VERSION_MIN_REQUIRED in config.h.
- 2:10 AM Changeset in webkit [152889] by
-
- 9 edits in trunk/Source/WebCore
Use explicit HTMLFrameElementBase cast and introduce toHTMLFrameElementBase
https://bugs.webkit.org/show_bug.cgi?id=118873
Reviewed by Ryosuke Niwa.
It should be HTMLFrameElementBase that embraces both HTMLFrameElement and HTMLIFrameElement.
This also makes correct toFooElement possible.
Next, to avoid direct use of static_cast, this patch introduces toHTMLFrameElementBase for code cleanup.
- editing/FrameSelection.cpp:
(WebCore::scanForForm):
- html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::didNotifySubtreeInsertions):
- html/HTMLFrameElementBase.h:
(WebCore::toHTMLFrameElementBase):
- loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::loadSubframe):
- page/EventHandler.cpp:
(WebCore::targetIsFrame):
- page/FrameView.cpp:
(WebCore::FrameView::init):
- rendering/RenderFrameBase.cpp:
(WebCore::RenderFrameBase::layoutWithFlattening):
- rendering/RenderLayer.cpp:
(WebCore::frameElementAndViewPermitScroll):
(WebCore::RenderLayer::scrollRectToVisible):
- 1:38 AM WebKitGTK/2.0.x edited by
- (diff)
- 1:36 AM Changeset in webkit [152888] by
-
- 3 edits in releases/WebKitGTK/webkit-2.0/Source/WebCore
Merge r152552 - Fix build against GTK+ 2.0
https://bugs.webkit.org/show_bug.cgi?id=117895
Patch by Dominique Leuenberger <dimstar@opensuse.org> on 2013-07-10
Reviewed by Martin Robinson.
GTK2 build fails for undefined GDK_IS_X11_DISPLAY
GTK 2.0 does define GDK_WINDOWING_X11,but GDK_IS_X11_DISPLAY is not
present in GTK+ 2.0. A dummy defines is sufficient, as GTK 2.0 is not
that multiple backend aware anyway...
- platform/gtk/GtkVersioning.h: Define GDK_IS_X11_DISPLAY for GTK+ 2.0 and compatibility for gtk_widget_get_preferred_size()
- plugins/gtk/gtk2xtbin.c: Include config.h
- 1:22 AM Changeset in webkit [152887] by
-
- 5 edits1 copy in trunk/LayoutTests
[Qt] Unreviewed gardening. Rebase failing tests.
Patch by Gabor Abraham <abrhm@inf.u-szeged.hu> on 2013-07-19
- platform/qt-5.0-wk2/tables/mozilla/marvin/backgr_index-expected.png:
- platform/qt-5.0-wk2/tables/mozilla/marvin/backgr_index-expected.txt: Copied from LayoutTests/platform/qt/tables/mozilla/marvin/backgr_index-expected.txt.
- platform/qt/fast/lists/inlineBoxWrapperNullCheck-expected.txt:
- platform/qt/http/tests/security/contentSecurityPolicy/object-src-none-blocked-expected.txt:
- platform/qt/tables/mozilla/marvin/backgr_index-expected.txt:
Jul 18, 2013:
- 11:53 PM Changeset in webkit [152886] by
-
- 2 edits in trunk/Source/WebCore
Bindings generation tests are failing
https://bugs.webkit.org/show_bug.cgi?id=118877
Reviewed by Kentaro Hara.
I inadvertently removed the wrong part of the if statement
in r152845, causing hasAttribute() to be used unconditionally
for reflected boolean attributes instead of fastHasAttribute().
This patch fixes the issue.
No new tests, covered by bindings tests.
- bindings/scripts/CodeGenerator.pm:
(GetterExpression):
- 10:07 PM Changeset in webkit [152885] by
-
- 16 edits in trunk/Source/WebCore
WorkerGlobalScope should support onoffline/ononline event handlers
https://bugs.webkit.org/show_bug.cgi?id=118832
Reviewed by Alexey Proskuryakov.
HTML5 spec says that WorkerGlobalScope should support
onoffline/ononline event handlers as stated in
http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#event-offline
Modified NetworkStateNotifier to support multiple callbacks and added a
callback to dispatch offline and online events to WorkerGlobalScope
when network state is changed.
No new test because the current test infrastructure does not provide a
mock network state notifier.
- page/Page.cpp:
(WebCore::networkStateChanged):
Change the function to take an additional argument, isOnLine so that we
can remove a call to NetworkStateNotifier::onLine().
(WebCore::Page::Page):
Use NetworkStateNotifier::addNetworkStateChangeListener which
allows us to add multiple callbacks.
- platform/network/NetworkStateNotifier.cpp:
(WebCore::NetworkStateNotifier::addNetworkStateChangeListener):
Replace NetworkStateNotifier::setNetworkStateChangedFunction with
NetworkStateNotifier::addNetworkStateChangeListener.
(WebCore::NetworkStateNotifier::notifyNetworkStateChange):
A helper method to notify all registered network state change
callbacks.
- platform/network/NetworkStateNotifier.h:
(WebCore::NetworkStateNotifier::NetworkStateNotifier):
- platform/network/blackberry/NetworkStateNotifierBlackBerry.cpp:
(WebCore::NetworkStateNotifier::NetworkStateNotifier):
(WebCore::NetworkStateNotifier::networkStateChange):
- platform/network/efl/NetworkStateNotifierEfl.cpp:
(WebCore::NetworkStateNotifier::networkInterfaceChanged):
(WebCore::NetworkStateNotifier::NetworkStateNotifier):
- platform/network/mac/NetworkStateNotifierMac.cpp:
(WebCore::NetworkStateNotifier::networkStateChangeTimerFired):
(WebCore::NetworkStateNotifier::NetworkStateNotifier):
- platform/network/qt/NetworkStateNotifierQt.cpp:
(WebCore::NetworkStateNotifier::updateState):
(WebCore::NetworkStateNotifier::NetworkStateNotifier):
- platform/network/win/NetworkStateNotifierWin.cpp:
(WebCore::NetworkStateNotifier::addressChanged):
(WebCore::NetworkStateNotifier::NetworkStateNotifier):
Replace m_networkStateChangedFunction() with notifyNetworkStateChange().
- workers/Worker.cpp:
(WebCore::networkStateChanged):
Notify network state change by iterating all Workers.
(WebCore::Worker::Worker):
Initialize allWorkers and add networkStateChanged to
NetworkStateNotifier in first invocation. Add this Worker to
allWorkers.
(WebCore::Worker::~Worker):
Remove this Worker from allWorkers.
(WebCore::Worker::notifyNetworkStateChange):
- workers/Worker.h:
- workers/WorkerGlobalScope.h:
Add onoffline and ononline event handlers.
- workers/WorkerGlobalScope.idl:
Add onoffline and ononline event handlers
- workers/WorkerGlobalScopeProxy.h:
- workers/WorkerMessagingProxy.cpp:
(WebCore::NotifyNetworkStateChangeTask::create):
(WebCore::NotifyNetworkStateChangeTask::NotifyNetworkStateChangeTask):
(WebCore::NotifyNetworkStateChangeTask::performTask):
A subclass of ScriptExecutionContext::Task to dispatch offline and
online events to WorkerGlobalScope.
(WebCore::WorkerMessagingProxy::notifyNetworkStateChange):
Notify network state change using ScriptExecutionContext::postTask to
dispatch events across threads.
- workers/WorkerMessagingProxy.h:
- 8:58 PM Changeset in webkit [152884] by
-
- 2 edits in trunk/Source/WebCore
Build fix after r152876.
- platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::processNewAndRemovedTextTracks):
- 8:34 PM Changeset in webkit [152883] by
-
- 2 edits in trunk/Source/WTF
Fix the build after r152881
- wtf/text/StringImpl.cpp:
(WTF::StringImpl::lower):
- 8:30 PM Changeset in webkit [152882] by
-
- 2 edits in trunk/Source/JavaScriptCore
CodeBlock DFG entry list isn't getting shrunk-to-fit after linking.
<http://webkit.org/b/118875>
<rdar://problem/14488577>
Reviewed by Geoffrey Garen.
Move the CodeBlock::shrinkToFit() call out of JITCompiler::link() and to the call sites
so SpeculativeJIT::linkOSREntries() can fill in CodeBlock::m_dfgData->osrEntry first.
886 kB progression on <http://twitter.com/awesomekling>
- dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
- 8:24 PM Changeset in webkit [152881] by
-
- 2 edits in trunk/Source/WTF
Little cleaning of StringImpl::lower() and StringImpl::upper() for ARM
https://bugs.webkit.org/show_bug.cgi?id=118831
Reviewed by Gavin Barraclough.
Clean lower() and upper() before trying some optimizations:
-Prefix the code with the empty() case. Otherwise, each descending loop starts with
a check for length == 0.
-Change ored to a 32 bits registers. ARM only has 32 bits registers and access to full word.
To keep the value a UChar, the compiler is adding a bunch of useless value & 0xffff in the loops.
-Change the pointer based loops for index based loops. The compiler does a mighty job at optimizing
those for each architecture. No need to make the code more complex.
-Don't perform the check for int32 unless we need to. The only code limited to int is Unicode::toLower.
- wtf/text/StringImpl.cpp:
(WTF::StringImpl::lower):
(WTF::StringImpl::upper):
- 8:04 PM Changeset in webkit [152880] by
-
- 3 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: AbstractInterpreter should explicitly ask AbstractState to create new AbstractValues for newly born nodes
https://bugs.webkit.org/show_bug.cgi?id=118880
Reviewed by Sam Weinig.
It should be possible to have an AbstractState that is backed by a HashMap. But to
do this, the AbstractInterpreter should explicitly ask for new nodes to be added to
the map, since otherwise the idiom of getting a reference to the AbstractValue
returned by forNode() would cause really subtle memory corruption bugs.
- dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::::executeEffects):
- dfg/DFGInPlaceAbstractState.h:
(JSC::DFG::InPlaceAbstractState::createValueForNode):
(InPlaceAbstractState):
- 7:19 PM Changeset in webkit [152879] by
-
- 11 edits5 adds2 deletes in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: Decouple the way that CFA stores its state from the way it does abstract interpretation
https://bugs.webkit.org/show_bug.cgi?id=118835
Reviewed by Oliver Hunt.
This separates AbstractState into two things:
- InPlaceAbstractState, which can tell you the abstract state of anything you might care about, and uses the old AbstractState's algorithms and data structures for doing so.
- AbstractInterpreter<AbstractStateType>, which can execute a DFG::Node* with respect to an AbstractStateType. Currently we always use AbstractStateType = InPlaceAbstractState. But we could drop in an other class that supports basic primitives like forNode() and variables().
This is important because:
- We want to hoist things out of loops.
- We don't know what things rely on what type checks.
- We only want to hoist type checks out of loops if they aren't clobbered.
- We may want to still hoist things that depended on those type checks, if it's safe to do those things based on the CFA state at the tail of the loop pre-header.
- We don't want things to rely on their type checks by way of a token, because that's just weird.
So, we want to be able to have a special form of the CFA that can
incrementally update a basic block's state-at-tail, and we want to be able to
do this for multiple blocks simultaneously. This requires *not* storing the
per-node state in the nodes themselves, but instead using the at-tail HashMap
directly.
Hence we need to have a way of making the abstract interpreter (i.e.
AbstractState::execute) polymorphic with respect to state representation. Put
another way, we need to separate the way that abstract state is represented
from the way DFG IR is abstractly interpreted.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAbstractInterpreter.h: Added.
(DFG):
(AbstractInterpreter):
(JSC::DFG::AbstractInterpreter::forNode):
(JSC::DFG::AbstractInterpreter::variables):
(JSC::DFG::AbstractInterpreter::needsTypeCheck):
(JSC::DFG::AbstractInterpreter::filterEdgeByUse):
(JSC::DFG::AbstractInterpreter::filter):
(JSC::DFG::AbstractInterpreter::filterArrayModes):
(JSC::DFG::AbstractInterpreter::filterByValue):
(JSC::DFG::AbstractInterpreter::trySetConstant):
(JSC::DFG::AbstractInterpreter::filterByType):
- dfg/DFGAbstractInterpreterInlines.h: Added.
(DFG):
(JSC::DFG::::AbstractInterpreter):
(JSC::DFG::::~AbstractInterpreter):
(JSC::DFG::::booleanResult):
(JSC::DFG::::startExecuting):
(JSC::DFG::::executeEdges):
(JSC::DFG::::verifyEdge):
(JSC::DFG::::verifyEdges):
(JSC::DFG::::executeEffects):
(JSC::DFG::::execute):
(JSC::DFG::::clobberWorld):
(JSC::DFG::::clobberCapturedVars):
(JSC::DFG::::clobberStructures):
(JSC::DFG::::dump):
(JSC::DFG::::filter):
(JSC::DFG::::filterArrayModes):
(JSC::DFG::::filterByValue):
- dfg/DFGAbstractState.cpp: Removed.
- dfg/DFGAbstractState.h: Removed.
- dfg/DFGArgumentsSimplificationPhase.cpp:
- dfg/DFGCFAPhase.cpp:
(JSC::DFG::CFAPhase::CFAPhase):
(JSC::DFG::CFAPhase::performBlockCFA):
(CFAPhase):
- dfg/DFGCFGSimplificationPhase.cpp:
- dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::ConstantFoldingPhase):
(JSC::DFG::ConstantFoldingPhase::foldConstants):
(ConstantFoldingPhase):
- dfg/DFGInPlaceAbstractState.cpp: Added.
(DFG):
(JSC::DFG::InPlaceAbstractState::InPlaceAbstractState):
(JSC::DFG::InPlaceAbstractState::~InPlaceAbstractState):
(JSC::DFG::InPlaceAbstractState::beginBasicBlock):
(JSC::DFG::setLiveValues):
(JSC::DFG::InPlaceAbstractState::initialize):
(JSC::DFG::InPlaceAbstractState::endBasicBlock):
(JSC::DFG::InPlaceAbstractState::reset):
(JSC::DFG::InPlaceAbstractState::mergeStateAtTail):
(JSC::DFG::InPlaceAbstractState::merge):
(JSC::DFG::InPlaceAbstractState::mergeToSuccessors):
(JSC::DFG::InPlaceAbstractState::mergeVariableBetweenBlocks):
- dfg/DFGInPlaceAbstractState.h: Added.
(DFG):
(InPlaceAbstractState):
(JSC::DFG::InPlaceAbstractState::forNode):
(JSC::DFG::InPlaceAbstractState::variables):
(JSC::DFG::InPlaceAbstractState::block):
(JSC::DFG::InPlaceAbstractState::didClobber):
(JSC::DFG::InPlaceAbstractState::isValid):
(JSC::DFG::InPlaceAbstractState::setDidClobber):
(JSC::DFG::InPlaceAbstractState::setIsValid):
(JSC::DFG::InPlaceAbstractState::setBranchDirection):
(JSC::DFG::InPlaceAbstractState::setFoundConstants):
(JSC::DFG::InPlaceAbstractState::haveStructures):
(JSC::DFG::InPlaceAbstractState::setHaveStructures):
- dfg/DFGMergeMode.h: Added.
(DFG):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::backwardTypeCheck):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::compileToStringOnCell):
(JSC::DFG::SpeculativeJIT::speculateStringIdentAndLoadStorage):
(JSC::DFG::SpeculativeJIT::speculateStringObject):
(JSC::DFG::SpeculativeJIT::speculateStringOrStringObject):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::needsTypeCheck):
(SpeculativeJIT):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
- ftl/FTLLowerDFGToLLVM.cpp:
(FTL):
(JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::appendTypeCheck):
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::speculateNumber):
(JSC::FTL::LowerDFGToLLVM::speculateRealNumber):
(LowerDFGToLLVM):
- 7:12 PM Changeset in webkit [152878] by
-
- 20 edits2 adds in trunk/Source/WebKit2
[WK2] Share Qt port's codes to find zoomable area with CoordinatedGraphics.
https://bugs.webkit.org/show_bug.cgi?id=118585
Patch by Eunmi Lee <eunmi15.lee@samsung.com> on 2013-07-18
Reviewed by Anders Carlsson.
The function to find zoomable area is needed in order to implement the
feature to scale for double-tap gesture. The WK2 EFL and NIX port want
to use that function, so extract the code from the Qt port, make it
usable in the CoordinatedGraphics and add API and callback.
- CMakeLists.txt:
- Target.pri:
- UIProcess/API/C/CoordinatedGraphics/WKView.cpp:
(WKViewFindZoomableAreaForRect):
- UIProcess/API/C/CoordinatedGraphics/WKView.h:
- UIProcess/API/efl/EwkView.cpp:
(EwkView::didFindZoomableArea):
- UIProcess/API/efl/EwkView.h:
- UIProcess/CoordinatedGraphics/WebPageProxyCoordinatedGraphics.cpp: Added.
(WebKit::WebPageProxy::findZoomableAreaForPoint):
(WebKit::WebPageProxy::didFindZoomableArea):
- UIProcess/CoordinatedGraphics/WebView.cpp:
(WebKit::WebView::didFindZoomableArea):
(WebKit::WebView::findZoomableAreaForPoint):
- UIProcess/CoordinatedGraphics/WebView.h:
- UIProcess/CoordinatedGraphics/WebViewClient.cpp:
(WebKit::WebViewClient::didFindZoomableArea):
- UIProcess/CoordinatedGraphics/WebViewClient.h:
- UIProcess/PageClient.h:
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/efl/ViewClientEfl.cpp:
(WebKit::ViewClientEfl::didFindZoomableArea):
(WebKit::ViewClientEfl::ViewClientEfl):
- UIProcess/efl/ViewClientEfl.h:
- UIProcess/qt/WebPageProxyQt.cpp:
- WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp: Added.
(WebKit::WebPage::findZoomableAreaForPoint):
- WebProcess/WebPage/WebPage.cpp:
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- 6:32 PM Changeset in webkit [152877] by
-
- 2 edits in trunk/Source/WebKit2
Flash Player: deny file-read-data /Library/Application Support/Macromedia/FlashAuthor.cfg
https://bugs.webkit.org/show_bug.cgi?id=118874
<rdar://problem/14271327>
Patch by Simon Cooper <scooper@apple.com> on 2013-07-18
Reviewed by Alexey Proskuryakov.
Silently deny access to FlashAuthor.cfg. This location contains
files containing lists of paths that Flash Player will
"allow" access to (without asking the user). Since the plugin
sandbox won't permit the access to the listed paths it is better
to silently block attempts to read this "whitelist".
- Resources/PlugInSandboxProfiles/com.macromedia.Flash Player.plugin.sb:
- 6:08 PM Changeset in webkit [152876] by
-
- 7 edits in trunk/Source/WebCore
[Media] Share more code between Mac and Windows implementation files.
https://bugs.webkit.org/show_bug.cgi?id=118801
Reviewed by Eric Carlson.
- platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::clearTextTracks): Move
implementation from ObjC file to parent file.
(WebCore::MediaPlayerPrivateAVFoundation::processNewAndRemovedTextTracks):
Ditto.
- platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
Remove duplicate implementation.
- platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
Ditto.
- platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
Ditto.
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
Ditto.
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
Ditto.
- 6:06 PM Changeset in webkit [152875] by
-
- 2 edits1 delete in trunk/LayoutTests
Unreviewed, rolling out r152801.
http://trac.webkit.org/changeset/152801
https://bugs.webkit.org/show_bug.cgi?id=118876
Un-rebaseline some plugin tests since r152789 was rolled out
(Requested by rfong on #webkit).
- platform/win/editing/pasteboard/paste-noplugin-expected.txt: Removed.
- platform/win/platform/win/plugins/draws-gradient-expected.txt:
- 5:35 PM Changeset in webkit [152874] by
-
- 4 edits in trunk
Make sure to link against _debug binaries when appropriate.
<rdar://problem/14473010>.
- win/tools/vsprops/debugsuffix.props:
- gtest/msvc/gtest-md.vcxproj:
- 4:58 PM Changeset in webkit [152873] by
-
- 2 edits in trunk/LayoutTests
Compositing pattern tests fail on Lion WK1 Debug.
https://bugs.webkit.org/show_bug.cgi?id=118870
Unreviewed.
Update Lion expectations after http://trac.webkit.org/changeset/152470
- platform/mac-lion/TestExpectations:
- 4:32 PM Changeset in webkit [152872] by
-
- 9 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: DFG shouldn't create CheckStructures for array accesses except if the ArrayMode implies an original array access
https://bugs.webkit.org/show_bug.cgi?id=118867
Reviewed by Mark Hahnenberg.
This allows us to kill off a bunch of code in the parser, in fixup, and to simplify
ArrayProfile.
It also makes it easier to ask any array-using node how to create its type check.
Doing this required fixing a bug in LowLevelInterpreter64, where it was storing into
an array profile, thinking that it was storing into a value profile. Reshuffling the
fields in ArrayProfile revealed this.
- bytecode/ArrayProfile.cpp:
(JSC::ArrayProfile::computeUpdatedPrediction):
(JSC::ArrayProfile::briefDescriptionWithoutUpdating):
- bytecode/ArrayProfile.h:
(JSC::ArrayProfile::ArrayProfile):
(ArrayProfile):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::updateAllArrayPredictions):
(JSC::CodeBlock::updateAllPredictions):
- bytecode/CodeBlock.h:
(CodeBlock):
(JSC::CodeBlock::updateAllArrayPredictions):
- dfg/DFGArrayMode.h:
(ArrayMode):
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::getArrayModeConsideringSlowPath):
(JSC::DFG::ByteCodeParser::parseBlock):
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(FixupPhase):
(JSC::DFG::FixupPhase::checkArray):
(JSC::DFG::FixupPhase::blessArrayOperation):
- llint/LowLevelInterpreter64.asm:
- 4:24 PM Changeset in webkit [152871] by
-
- 87 edits2 copies4 adds in trunk
Fixed ASSERTION FAILED: callFrame == vm->topCallFrame in JSC::Interpreter::addStackTraceIfNecessary
https://bugs.webkit.org/show_bug.cgi?id=118498
Patch by Chris Curtis <chris_curtis@apple.com> on 2013-07-18
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
- jit/JITStubs.cpp:
(throwExceptionFromOpCall):
Created new throwExceptionFromOpCall that takes in a functor that contains
a function pointer (to create the errorObject) instead of a JSValue. Inside
of throwExceptionFromOpCall the topCallFrame is being rolled back in order
to handle the error throw. By passing the function pointer in, we can defer
the creation of the error object until after topCallFrame has been rolled
back. This allows the error object to be created with the appropriate top
frame.
DEFINE_STUB_FUNCTION(void*, stack_check):
DEFINE_STUB_FUNCTION(void*, op_call_arityCheck):
DEFINE_STUB_FUNCTION(void*, op_construct_arityCheck):
DEFINE_STUB_FUNCTION(EncodedJSValue, op_call_NotJSFunction):
DEFINE_STUB_FUNCTION(EncodedJSValue, op_construct_NotJSConstruct):
(JSC::ErrorFunctor::~ErrorFunctor):
(JSC::ErrorWithExecFunctor::ErrorWithExecFunctor):
(JSC::ErrorWithExecFunctor::operator()):
(JSC::ErrorWithExecAndCalleeFunctor::ErrorWithExecAndCalleeFunctor):
(JSC::ErrorWithExecAndCalleeFunctor::operator()):
(JSC::ErrorWithExceptionFunctor::ErrorWithExceptionFunctor):
(JSC::ErrorWithExceptionFunctor::operator()):
(JSC::throwExceptionFromOpCall):
In order to eliminate the need to duplicate code, an error functor was
created for the 3 different throwExceptionFromOpCall handles.
- The exception needs to be created, and the function pointer takes 1
parameter(callFrame->callerFrame()).
- The exception needs to be created, and the function pointer takes 2
parameters (callFrame->callerFrame(), callFrame.calleeAsValue()).
- The exception is already created. In this case, At the time when
the error functor is called, vm.exception is returned.
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- runtime/ExceptionHelpers.cpp:
(JSC::errorDescriptionForValue):
(JSC::createError):
(JSC::createInvalidParameterError):
(JSC::createNotAConstructorError):
(JSC::createNotAFunctionError):
(JSC::createNotAnObjectError):
- runtime/ExceptionHelpers.h:
The function toString() was being used to stringify an object for an exception
message. If the user wrote a toString() for that object, then the system would
continue to evaluate that code. A new helper function was created to prevent
the system to continue execution and exception creation from that execution.
LayoutTests:
New Tests to see if JSC evaluates user code after exception creation
- fast/js/not-a-constructor-to-string-expected.txt: Added.
- fast/js/not-a-constructor-to-string.html: Added.
- fast/js/not-a-function-to-string-expected.txt: Added.
- fast/js/not-a-function-to-string.html: Added.
Modified test output of the object that was being evaluated at the time of the
error. Only the error message has changed.
- fast/dom/MutationObserver/mutation-record-constructor-expected.txt:
- fast/dom/NodeList/nodelist-item-call-as-function-expected.txt:
- fast/dom/Range/getClientRects-expected.txt:
- fast/dom/SelectorAPI/dumpNodeList-almost-strict-expected.txt:
- fast/dom/SelectorAPI/dumpNodeList-expected.txt:
- fast/dom/call-a-constructor-as-a-function-expected.txt:
- fast/dom/setPrimitiveValue-exceptions-expected.txt:
- fast/events/window-onerror-exception-in-attr-expected.txt:
- fast/forms/select-namedItem-expected.txt:
- fast/js/arguments-expected.txt:
- fast/js/array-prototype-properties-expected.txt:
- fast/js/basic-strict-mode-expected.txt:
- fast/js/date-toisostring-expected.txt:
- fast/js/delete-getters-setters-expected.txt:
- fast/js/dfg-check-structure-elimination-for-non-cell-expected.txt:
- fast/js/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt:
- fast/js/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt:
- fast/js/dfg-inline-arguments-use-from-all-the-places-broken-expected.txt:
- fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-both-proven-final-object-expected.txt:
- fast/js/dfg-peephole-compare-final-object-to-final-object-or-other-when-proven-final-object-expected.txt:
- fast/js/exception-expression-offset-expected.txt:
- fast/js/exception-for-nonobject-expected.txt:
- fast/js/exception-thrown-from-new-expected.txt:
- fast/js/function-bind-expected.txt:
- fast/js/instance-of-immediates-expected.txt:
- fast/js/object-prototype-properties-expected.txt:
- fast/regex/cross-frame-callable-expected.txt:
- fast/xsl/transform-xhr-doc-expected.txt:
- http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write-expected.txt:
- http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url-expected.txt:
- http/tests/security/aboutBlank/xss-DENIED-set-opener-expected.txt:
- http/tests/security/document-all-expected.txt:
- http/tests/security/srcdoc-in-sandbox-cannot-access-parent-expected.txt:
- http/tests/security/window-named-proto-expected.txt:
- inspector/console/console-exception-stack-traces-expected.txt:
- platform/efl/css3/selectors3/xhtml/css3-modsel-15c-expected.txt:
- platform/efl/css3/selectors3/xml/css3-modsel-15c-expected.txt:
- platform/efl/fast/events/updateLayoutForHitTest-expected.txt:
- platform/efl/tables/mozilla_expected_failures/bugs/bug92868_1-expected.txt:
- platform/gtk/css3/selectors3/xhtml/css3-modsel-15c-expected.txt:
- platform/gtk/css3/selectors3/xml/css3-modsel-15c-expected.txt:
- platform/gtk/fast/events/updateLayoutForHitTest-expected.txt:
- platform/gtk/svg/custom/createelement-expected.txt:
- platform/gtk/tables/mozilla_expected_failures/bugs/bug92868_1-expected.txt:
- platform/mac-wk2/editing/spelling/markers-expected.txt:
- platform/mac-wk2/plugins/npruntime/object-from-destroyed-plugin-expected.txt: Added.
- platform/mac-wk2/plugins/npruntime/object-from-destroyed-plugin-in-subframe-expected.txt: Added.
- platform/mac/css3/selectors3/xhtml/css3-modsel-15c-expected.txt:
- platform/mac/css3/selectors3/xml/css3-modsel-15c-expected.txt:
- platform/mac/fast/events/updateLayoutForHitTest-expected.txt:
- platform/mac/tables/mozilla_expected_failures/bugs/bug92868_1-expected.txt:
- platform/qt/css3/selectors3/xhtml/css3-modsel-15c-expected.txt:
- platform/qt/css3/selectors3/xml/css3-modsel-15c-expected.txt:
- platform/qt/svg/custom/createelement-expected.txt:
- platform/qt/tables/mozilla_expected_failures/bugs/bug92868_1-expected.txt:
- platform/win/fast/dom/call-a-constructor-as-a-function-expected.txt:
- plugins/npruntime/object-from-destroyed-plugin-expected.txt:
- plugins/npruntime/object-from-destroyed-plugin-in-subframe-expected.txt:
- plugins/npruntime/plugin-scriptable-object-invoke-default-expected.txt:
- sputnik/Conformance/08_Types/8.6_The_Object_Type/8.6.2_Internal_Properties_and_Methods/S8.6.2_A7-expected.txt:
- sputnik/Conformance/13_Function_Definition/S13_A17_T2-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/S15.1_A1_T1-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/S15.1_A1_T2-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/S15.1_A2_T1-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.2_Object.prototype.toString/S15.2.4.2_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.3_Object.prototype.toLocaleString/S15.2.4.3_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.4_Object.prototype.valueOf/S15.2.4.4_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.5_Object.prototype.hasOwnProperty/S15.2.4.5_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.6_Object.prototype.isPrototypeOf/S15.2.4.6_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/15.2.4.7_Object.prototype.propertyIsEnumerable/S15.2.4.7_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/S15.2.4_A3-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/S15.2.4_A4-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/15.3.4.2_Function.prototype.toString/S15.3.4.2_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.3_Function/15.3.4/S15.3.4_A5-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.13_String.prototype.slice/S15.5.4.13_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.15_String.prototype.substring/S15.5.4.15_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.17_String.prototype.toLocaleLowerCase/S15.5.4.17_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.7_String.prototype.indexOf/S15.5.4.7_A7-expected.txt:
- sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.8_String.prototype.lastIndexOf/S15.5.4.8_A7-expected.txt:
- svg/custom/createelement-expected.txt:
- svg/custom/use-nested-missing-target-removed-expected.txt:
- svg/dom/svgpath-out-of-bounds-getPathSeg-expected.txt:
- 3:17 PM Changeset in webkit [152870] by
-
- 3 edits1 add in trunk/Tools
Add extract-localizable-js-strings and use it for WebInspectorUI.
https://bugs.webkit.org/show_bug.cgi?id=118851
Reviewed by Joseph Pecoraro.
- Scripts/extract-localizable-js-strings: Added.
- Scripts/extract-localizable-strings: Drive-by-fix: disable deprecated warnings about "goto".
- Scripts/update-webkit-localizable-strings: Use extract-localizable-js-strings for
the WebInspectorUI project.
- 3:12 PM Changeset in webkit [152869] by
-
- 2 edits in trunk/Source/WebCore
Fixed compile errors for non-Cairo platforms using EGL.
https://bugs.webkit.org/show_bug.cgi?id=118536
Reviewed by Brent Fulgham.
- platform/graphics/egl/GLContextEGL.cpp: Added #if USE(CAIRO) around cairo.h.
(WebCore::GLContextEGL::~GLContextEGL): Added #if USE(CAIRO) around cairo_device_destroy call.
- 3:06 PM Changeset in webkit [152868] by
-
- 2 edits in trunk/Source/JavaScriptCore
LLInt get_argument_by_val for JSVALUE64 stores into the array profile when it meant to store into the value profile
https://bugs.webkit.org/show_bug.cgi?id=118865
Reviewed by Mark Hahnenberg.
- llint/LowLevelInterpreter64.asm:
- 3:00 PM Changeset in webkit [152867] by
-
- 2 edits in trunk/Source/WebCore
New PDFPlugin doesn't support WebKitOmitPDFSupport, acts as if Plug-ins are off
https://bugs.webkit.org/show_bug.cgi?id=118858
Reviewed by Eric Carlson.
Expand the scope of rejecting non video/ or audio/ MIME types when
filling the MIME type cache.
- platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
(WebCore::shouldRejectMIMEType): Added utility function.
- 2:58 PM Changeset in webkit [152866] by
-
- 3 edits in trunk/Source/WebKit2
[wk2] Ensure that the plugin layer is removed completely when the PluginProcess crashes
https://bugs.webkit.org/show_bug.cgi?id=118862
Reviewed by Anders Carlsson.
- WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::PluginView):
Add m_pluginProcessHasCrashed.
(WebKit::PluginView::platformLayer):
Don't return the plugin's layer if it has crashed.
(WebKit::PluginView::pluginProcessCrashed):
Set m_pluginProcessHasCrashed.
Cause a style recalc so that we rebuild the layer tree; our layer won't be included.
- WebProcess/Plugins/PluginView.h:
Add m_pluginProcessHasCrashed.
- 2:47 PM Changeset in webkit [152865] by
-
- 2 edits in trunk/Tools
[Windows] Unreviewed build correction.
- 2:14 PM Changeset in webkit [152864] by
-
- 2 edits in trunk/Tools
Unreviewed windows build fix.
- 2:12 PM Changeset in webkit [152863] by
-
- 1 edit74 adds2 deletes in trunk/Source/ThirdParty/ANGLE
Added previously unincluded files from ANGLE r2426 with these exceptions:
No gyp files are included. No WebKit ports use them.
ANGLE.sln is not included. I will not use that.
translator_common and translator_hlsl projects and filters are not included.
I will need to make a customized translator project that uses the GLSL translator instead of the HLSL.
https://bugs.webkit.org/show_bug.cgi?id=118833
Reviewed by Dean Jackson.
- src/compiler/builtin_symbols.json: Added.
- src/compiler/generate_builtin_symbol_table.py: Added.
(parseBuiltin):
- src/libEGL: Replaced.
- src/libEGL/Config.cpp: Added.
(egl::Config::Config):
(egl::Config::setDefaults):
(egl::Config::set):
(egl::Config::getHandle):
(egl::SortConfig::SortConfig):
(egl::SortConfig::scanForWantedComponents):
(egl::SortConfig::wantedComponentsSize):
(egl::SortConfig::operator()):
(egl::ConfigSet::ConfigSet):
(egl::ConfigSet::add):
(egl::ConfigSet::size):
(egl::ConfigSet::getConfigs):
(egl::ConfigSet::get):
- src/libEGL/Config.h: Added.
- src/libEGL/Display.cpp: Added.
(egl::Display::getDisplay):
(egl::Display::Display):
(egl::Display::~Display):
(egl::Display::initialize):
(egl::Display::terminate):
(egl::Display::startScene):
(egl::Display::endScene):
(egl::Display::getConfigs):
(egl::Display::getConfigAttrib):
(egl::Display::createDevice):
(egl::Display::initializeDevice):
(egl::Display::resetDevice):
(egl::Display::createWindowSurface):
(egl::Display::createOffscreenSurface):
(egl::Display::createContext):
(egl::Display::restoreLostDevice):
(egl::Display::destroySurface):
(egl::Display::destroyContext):
(egl::Display::notifyDeviceLost):
(egl::Display::isDeviceLost):
(egl::Display::isInitialized):
(egl::Display::isValidConfig):
(egl::Display::isValidContext):
(egl::Display::isValidSurface):
(egl::Display::hasExistingWindowSurface):
(egl::Display::getMinSwapInterval):
(egl::Display::getMaxSwapInterval):
(egl::Display::getDevice):
(egl::Display::getDeviceCaps):
(egl::Display::getAdapterIdentifier):
(egl::Display::testDeviceLost):
(egl::Display::testDeviceResettable):
(egl::Display::sync):
(egl::Display::allocateEventQuery):
(egl::Display::freeEventQuery):
(egl::Display::getMultiSampleSupport):
(egl::Display::getDXT1TextureSupport):
(egl::Display::getDXT3TextureSupport):
(egl::Display::getDXT5TextureSupport):
(egl::Display::getDepthTextureSupport):
(egl::Display::getFloat32TextureSupport):
(egl::Display::getFloat16TextureSupport):
(egl::Display::getLuminanceTextureSupport):
(egl::Display::getLuminanceAlphaTextureSupport):
(egl::Display::getTextureFilterAnisotropySupport):
(egl::Display::getBufferPool):
(egl::Display::getTexturePool):
(egl::Display::getEventQuerySupport):
(egl::Display::getDefaultPresentParameters):
(egl::Display::initExtensionString):
(egl::Display::getExtensionString):
(egl::Display::initVendorString):
(egl::Display::getVendorString):
(egl::Display::shareHandleSupported):
(egl::Display::createVertexShader):
(egl::Display::compileShaderSource):
(egl::Display::createPixelShader):
(egl::Display::getVertexTextureSupport):
(egl::Display::getNonPower2TextureSupport):
(egl::Display::getOcclusionQuerySupport):
(egl::Display::getInstancingSupport):
- src/libEGL/Display.h: Added.
(getComparableOSVersion):
(egl::Display::isD3d9ExDevice):
- src/libEGL/README: Removed.
- src/libEGL/ShaderCache.h: Added.
(egl::ShaderCache::ShaderCache):
(egl::ShaderCache::~ShaderCache):
(egl::ShaderCache::initialize):
(egl::ShaderCache::create):
(egl::ShaderCache::clear):
(egl::ShaderCache::createShader):
- src/libEGL/Surface.cpp: Added.
(egl::Surface::Surface):
(egl::Surface::~Surface):
(egl::Surface::initialize):
(egl::Surface::release):
(egl::Surface::resetSwapChain):
(egl::Surface::swapRect):
(egl::Surface::getWindowHandle):
(egl::SurfaceWindowProc):
(egl::Surface::subclassWindow):
(egl::Surface::unsubclassWindow):
(egl::Surface::checkForOutOfDateSwapChain):
(egl::Surface::convertInterval):
(egl::Surface::swap):
(egl::Surface::postSubBuffer):
(egl::Surface::getWidth):
(egl::Surface::getHeight):
(egl::Surface::isPostSubBufferSupported):
(egl::Surface::getRenderTarget):
(egl::Surface::getDepthStencil):
(egl::Surface::getOffscreenTexture):
(egl::Surface::setSwapInterval):
(egl::Surface::getTextureFormat):
(egl::Surface::getTextureTarget):
(egl::Surface::setBoundTexture):
(egl::Surface::getBoundTexture):
(egl::Surface::getFormat):
- src/libEGL/Surface.h: Added.
(egl::Surface::getShareHandle):
- src/libEGL/libEGL.cpp: Added.
(validateDisplay):
(validateConfig):
(validateContext):
(validateSurface):
- src/libEGL/libEGL.def: Added.
- src/libEGL/libEGL.rc: Added.
- src/libEGL/libEGL.vcxproj: Added.
- src/libEGL/libEGL.vcxproj.filters: Added.
- src/libEGL/main.cpp: Added.
(DllMain):
(egl::setCurrentError):
(egl::getCurrentError):
(egl::setCurrentAPI):
(egl::getCurrentAPI):
(egl::setCurrentDisplay):
(egl::getCurrentDisplay):
(egl::setCurrentDrawSurface):
(egl::getCurrentDrawSurface):
(egl::setCurrentReadSurface):
(egl::getCurrentReadSurface):
(error):
- src/libEGL/main.h: Added.
(error):
(success):
- src/libEGL/resource.h: Added.
- src/libGLESv2: Replaced.
- src/libGLESv2/BinaryStream.h: Added.
(gl::BinaryInputStream::BinaryInputStream):
(gl::BinaryInputStream::read):
(gl::BinaryInputStream::skip):
(gl::BinaryInputStream::offset):
(gl::BinaryInputStream::error):
(gl::BinaryInputStream::endOfStream):
(gl::BinaryOutputStream::BinaryOutputStream):
(gl::BinaryOutputStream::write):
(gl::BinaryOutputStream::length):
(gl::BinaryOutputStream::data):
- src/libGLESv2/Blit.cpp: Added.
(gl::Blit::Blit):
(gl::Blit::~Blit):
(gl::Blit::initGeometry):
(gl::Blit::setShader):
(gl::Blit::setVertexShader):
(gl::Blit::setPixelShader):
(gl::Blit::getSurfaceRect):
(gl::Blit::boxFilter):
(gl::Blit::copy):
(gl::Blit::formatConvert):
(gl::Blit::setFormatConvertShaders):
(gl::Blit::copySurfaceToTexture):
(gl::Blit::setViewport):
(gl::Blit::setCommonBlitState):
(gl::Blit::render):
(gl::Blit::saveState):
(gl::Blit::restoreState):
- src/libGLESv2/Blit.h: Added.
- src/libGLESv2/Buffer.cpp: Added.
(gl::Buffer::Buffer):
(gl::Buffer::~Buffer):
(gl::Buffer::bufferData):
(gl::Buffer::bufferSubData):
(gl::Buffer::getStaticVertexBuffer):
(gl::Buffer::getStaticIndexBuffer):
(gl::Buffer::invalidateStaticData):
(gl::Buffer::promoteStaticUsage):
- src/libGLESv2/Buffer.h: Added.
(gl::Buffer::data):
(gl::Buffer::size):
(gl::Buffer::usage):
- src/libGLESv2/Context.cpp: Added.
(gl::makeStaticString):
(gl::Context::Context):
(gl::Context::~Context):
(gl::Context::makeCurrent):
(gl::Context::markAllStateDirty):
(gl::Context::markDxUniformsDirty):
(gl::Context::markContextLost):
(gl::Context::isContextLost):
(gl::Context::setClearColor):
(gl::Context::setClearDepth):
(gl::Context::setClearStencil):
(gl::Context::setCullFace):
(gl::Context::isCullFaceEnabled):
(gl::Context::setCullMode):
(gl::Context::setFrontFace):
(gl::Context::setDepthTest):
(gl::Context::isDepthTestEnabled):
(gl::Context::setDepthFunc):
(gl::Context::setDepthRange):
(gl::Context::setBlend):
(gl::Context::isBlendEnabled):
(gl::Context::setBlendFactors):
(gl::Context::setBlendColor):
(gl::Context::setBlendEquation):
(gl::Context::setStencilTest):
(gl::Context::isStencilTestEnabled):
(gl::Context::setStencilParams):
(gl::Context::setStencilBackParams):
(gl::Context::setStencilWritemask):
(gl::Context::setStencilBackWritemask):
(gl::Context::setStencilOperations):
(gl::Context::setStencilBackOperations):
(gl::Context::setPolygonOffsetFill):
(gl::Context::isPolygonOffsetFillEnabled):
(gl::Context::setPolygonOffsetParams):
(gl::Context::setSampleAlphaToCoverage):
(gl::Context::isSampleAlphaToCoverageEnabled):
(gl::Context::setSampleCoverage):
(gl::Context::isSampleCoverageEnabled):
(gl::Context::setSampleCoverageParams):
(gl::Context::setScissorTest):
(gl::Context::isScissorTestEnabled):
(gl::Context::setDither):
(gl::Context::isDitherEnabled):
(gl::Context::setLineWidth):
(gl::Context::setGenerateMipmapHint):
(gl::Context::setFragmentShaderDerivativeHint):
(gl::Context::setViewportParams):
(gl::Context::setScissorParams):
(gl::Context::setColorMask):
(gl::Context::setDepthMask):
(gl::Context::setActiveSampler):
(gl::Context::getReadFramebufferHandle):
(gl::Context::getDrawFramebufferHandle):
(gl::Context::getRenderbufferHandle):
(gl::Context::getArrayBufferHandle):
(gl::Context::getActiveQuery):
(gl::Context::setEnableVertexAttribArray):
(gl::Context::getVertexAttribState):
(gl::Context::setVertexAttribState):
(gl::Context::getVertexAttribPointer):
(gl::Context::getVertexAttributes):
(gl::Context::setPackAlignment):
(gl::Context::getPackAlignment):
(gl::Context::setUnpackAlignment):
(gl::Context::getUnpackAlignment):
(gl::Context::setPackReverseRowOrder):
(gl::Context::getPackReverseRowOrder):
(gl::Context::createBuffer):
(gl::Context::createProgram):
(gl::Context::createShader):
(gl::Context::createTexture):
(gl::Context::createRenderbuffer):
(gl::Context::createFramebuffer):
(gl::Context::createFence):
(gl::Context::createQuery):
(gl::Context::deleteBuffer):
(gl::Context::deleteShader):
(gl::Context::deleteProgram):
(gl::Context::deleteTexture):
(gl::Context::deleteRenderbuffer):
(gl::Context::deleteFramebuffer):
(gl::Context::deleteFence):
(gl::Context::deleteQuery):
(gl::Context::getBuffer):
(gl::Context::getShader):
(gl::Context::getProgram):
(gl::Context::getTexture):
(gl::Context::getRenderbuffer):
(gl::Context::getReadFramebuffer):
(gl::Context::getDrawFramebuffer):
(gl::Context::bindArrayBuffer):
(gl::Context::bindElementArrayBuffer):
(gl::Context::bindTexture2D):
(gl::Context::bindTextureCubeMap):
(gl::Context::bindReadFramebuffer):
(gl::Context::bindDrawFramebuffer):
(gl::Context::bindRenderbuffer):
(gl::Context::useProgram):
(gl::Context::linkProgram):
(gl::Context::setProgramBinary):
(gl::Context::beginQuery):
(gl::Context::endQuery):
(gl::Context::setFramebufferZero):
(gl::Context::setRenderbufferStorage):
(gl::Context::getFramebuffer):
(gl::Context::getFence):
(gl::Context::getQuery):
(gl::Context::getArrayBuffer):
(gl::Context::getElementArrayBuffer):
(gl::Context::getCurrentProgramBinary):
(gl::Context::getTexture2D):
(gl::Context::getTextureCubeMap):
(gl::Context::getSamplerTexture):
(gl::Context::getBooleanv):
(gl::Context::getFloatv):
(gl::Context::getIntegerv):
(gl::Context::getQueryParameterInfo):
(gl::Context::applyRenderTarget):
(gl::Context::applyState):
(gl::Context::applyVertexBuffer):
(gl::Context::applyIndexBuffer):
(gl::Context::applyShaders):
(gl::Context::applyTextures):
(gl::Context::readPixels):
(gl::Context::clear):
(gl::Context::drawArrays):
(gl::Context::drawElements):
(gl::Context::sync):
(gl::Context::drawLineLoop):
(gl::Context::recordInvalidEnum):
(gl::Context::recordInvalidValue):
(gl::Context::recordInvalidOperation):
(gl::Context::recordOutOfMemory):
(gl::Context::recordInvalidFramebufferOperation):
(gl::Context::getError):
(gl::Context::getResetStatus):
(gl::Context::isResetNotificationEnabled):
(gl::Context::supportsShaderModel3):
(gl::Context::getMaximumPointSize):
(gl::Context::getMaximumVaryingVectors):
(gl::Context::getMaximumVertexTextureImageUnits):
(gl::Context::getMaximumCombinedTextureImageUnits):
(gl::Context::getMaximumFragmentUniformVectors):
(gl::Context::getMaxSupportedSamples):
(gl::Context::getNearestSupportedSamples):
(gl::Context::supportsEventQueries):
(gl::Context::supportsOcclusionQueries):
(gl::Context::supportsDXT1Textures):
(gl::Context::supportsDXT3Textures):
(gl::Context::supportsDXT5Textures):
(gl::Context::supportsFloat32Textures):
(gl::Context::supportsFloat32LinearFilter):
(gl::Context::supportsFloat32RenderableTextures):
(gl::Context::supportsFloat16Textures):
(gl::Context::supportsFloat16LinearFilter):
(gl::Context::supportsFloat16RenderableTextures):
(gl::Context::getMaximumRenderbufferDimension):
(gl::Context::getMaximumTextureDimension):
(gl::Context::getMaximumCubeTextureDimension):
(gl::Context::getMaximumTextureLevel):
(gl::Context::supportsLuminanceTextures):
(gl::Context::supportsLuminanceAlphaTextures):
(gl::Context::supportsDepthTextures):
(gl::Context::supports32bitIndices):
(gl::Context::supportsNonPower2Texture):
(gl::Context::supportsInstancing):
(gl::Context::supportsTextureFilterAnisotropy):
(gl::Context::supportsDerivativeInstructions):
(gl::Context::getTextureMaxAnisotropy):
(gl::Context::getCurrentReadFormatType):
(gl::Context::detachBuffer):
(gl::Context::detachTexture):
(gl::Context::detachFramebuffer):
(gl::Context::detachRenderbuffer):
(gl::Context::getIncompleteTexture):
(gl::Context::skipDraw):
(gl::Context::isTriangleMode):
(gl::Context::setVertexAttrib):
(gl::Context::setVertexAttribDivisor):
(gl::Context::initExtensionString):
(gl::Context::getExtensionString):
(gl::Context::initRendererString):
(gl::Context::getRendererString):
(gl::Context::blitFramebuffer):
(gl::VertexDeclarationCache::VertexDeclarationCache):
(gl::VertexDeclarationCache::~VertexDeclarationCache):
(gl::VertexDeclarationCache::applyDeclaration):
(gl::VertexDeclarationCache::markStateDirty):
- src/libGLESv2/Context.h: Added.
(gl::VertexAttribute::VertexAttribute):
(gl::VertexAttribute::typeSize):
(gl::VertexAttribute::stride):
(gl::Context::getBlitter):
(gl::Context::getDeviceCaps):
- src/libGLESv2/D3DConstantTable.cpp: Added.
(gl::D3DConstant::D3DConstant):
(gl::D3DConstant::~D3DConstant):
(gl::D3DConstant::addStructMembers):
(gl::D3DConstantTable::D3DConstantTable):
(gl::D3DConstantTable::~D3DConstantTable):
(gl::D3DConstantTable::getConstant):
(gl::D3DConstantTable::getConstantByName):
- src/libGLESv2/D3DConstantTable.h: Added.
(gl::D3DConstantTable::error):
(gl::D3DConstantTable::constants):
- src/libGLESv2/Fence.cpp: Added.
(gl::Fence::Fence):
(gl::Fence::~Fence):
(gl::Fence::isFence):
(gl::Fence::setFence):
(gl::Fence::testFence):
(gl::Fence::finishFence):
(gl::Fence::getFenceiv):
- src/libGLESv2/Fence.h: Added.
- src/libGLESv2/Float16ToFloat32.cpp: Added.
(gl::float16ToFloat32):
- src/libGLESv2/Float16ToFloat32.py: Added.
(convertMantissa):
(convertExponent):
(convertOffset):
- src/libGLESv2/Framebuffer.cpp: Added.
(gl::Framebuffer::Framebuffer):
(gl::Framebuffer::~Framebuffer):
(gl::Framebuffer::lookupRenderbuffer):
(gl::Framebuffer::setColorbuffer):
(gl::Framebuffer::setDepthbuffer):
(gl::Framebuffer::setStencilbuffer):
(gl::Framebuffer::detachTexture):
(gl::Framebuffer::detachRenderbuffer):
(gl::Framebuffer::getRenderTargetSerial):
(gl::Framebuffer::getRenderTarget):
(gl::Framebuffer::getDepthStencil):
(gl::Framebuffer::getDepthbufferSerial):
(gl::Framebuffer::getStencilbufferSerial):
(gl::Framebuffer::getColorbuffer):
(gl::Framebuffer::getDepthbuffer):
(gl::Framebuffer::getStencilbuffer):
(gl::Framebuffer::getNullColorbuffer):
(gl::Framebuffer::getColorbufferType):
(gl::Framebuffer::getDepthbufferType):
(gl::Framebuffer::getStencilbufferType):
(gl::Framebuffer::getColorbufferHandle):
(gl::Framebuffer::getDepthbufferHandle):
(gl::Framebuffer::getStencilbufferHandle):
(gl::Framebuffer::hasStencil):
(gl::Framebuffer::completeness):
(gl::DefaultFramebuffer::DefaultFramebuffer):
(gl::Framebuffer::getSamples):
(gl::DefaultFramebuffer::completeness):
- src/libGLESv2/Framebuffer.h: Added.
- src/libGLESv2/HandleAllocator.cpp: Added.
(gl::HandleAllocator::HandleAllocator):
(gl::HandleAllocator::~HandleAllocator):
(gl::HandleAllocator::setBaseHandle):
(gl::HandleAllocator::allocate):
(gl::HandleAllocator::release):
- src/libGLESv2/HandleAllocator.h: Added.
- src/libGLESv2/IndexDataManager.cpp: Added.
(gl::IndexDataManager::IndexDataManager):
(gl::IndexDataManager::~IndexDataManager):
(gl::convertIndices):
(gl::computeRange):
(gl::IndexDataManager::prepareIndexData):
(gl::IndexDataManager::indexSize):
(gl::IndexDataManager::typeSize):
(gl::IndexDataManager::getCountingIndices):
(gl::IndexBuffer::IndexBuffer):
(gl::IndexBuffer::~IndexBuffer):
(gl::IndexBuffer::getBuffer):
(gl::IndexBuffer::getSerial):
(gl::IndexBuffer::issueSerial):
(gl::IndexBuffer::unmap):
(gl::StreamingIndexBuffer::StreamingIndexBuffer):
(gl::StreamingIndexBuffer::~StreamingIndexBuffer):
(gl::StreamingIndexBuffer::map):
(gl::StreamingIndexBuffer::reserveSpace):
(gl::StaticIndexBuffer::StaticIndexBuffer):
(gl::StaticIndexBuffer::~StaticIndexBuffer):
(gl::StaticIndexBuffer::map):
(gl::StaticIndexBuffer::reserveSpace):
(gl::StaticIndexBuffer::lookupType):
(gl::StaticIndexBuffer::lookupRange):
(gl::StaticIndexBuffer::addRange):
- src/libGLESv2/IndexDataManager.h: Added.
(gl::IndexBuffer::size):
(gl::StaticIndexBuffer::IndexRange::operator<):
- src/libGLESv2/Program.cpp: Added.
(gl::AttributeBindings::AttributeBindings):
(gl::AttributeBindings::~AttributeBindings):
(gl::InfoLog::InfoLog):
(gl::InfoLog::~InfoLog):
(gl::InfoLog::getLength):
(gl::InfoLog::getLog):
(gl::InfoLog::appendSanitized):
(gl::InfoLog::append):
(gl::InfoLog::reset):
(gl::Program::Program):
(gl::Program::~Program):
(gl::Program::attachShader):
(gl::Program::detachShader):
(gl::Program::getAttachedShadersCount):
(gl::AttributeBindings::bindAttributeLocation):
(gl::Program::bindAttributeLocation):
(gl::Program::link):
(gl::AttributeBindings::getAttributeBinding):
(gl::Program::unlink):
(gl::Program::isLinked):
(gl::Program::getProgramBinary):
(gl::Program::setProgramBinary):
(gl::Program::release):
(gl::Program::addRef):
(gl::Program::getRefCount):
(gl::Program::getProgramBinaryLength):
(gl::Program::getInfoLogLength):
(gl::Program::getInfoLog):
(gl::Program::getAttachedShaders):
(gl::Program::getActiveAttribute):
(gl::Program::getActiveAttributeCount):
(gl::Program::getActiveAttributeMaxLength):
(gl::Program::getActiveUniform):
(gl::Program::getActiveUniformCount):
(gl::Program::getActiveUniformMaxLength):
(gl::Program::flagForDeletion):
(gl::Program::isFlaggedForDeletion):
(gl::Program::validate):
(gl::Program::isValidated):
- src/libGLESv2/Program.h: Added.
- src/libGLESv2/ProgramBinary.cpp: Added.
(gl::str):
(gl::Uniform::Uniform):
(gl::Uniform::~Uniform):
(gl::Uniform::isArray):
(gl::UniformLocation::UniformLocation):
(gl::ProgramBinary::ProgramBinary):
(gl::ProgramBinary::~ProgramBinary):
(gl::ProgramBinary::getSerial):
(gl::ProgramBinary::issueSerial):
(gl::ProgramBinary::getPixelShader):
(gl::ProgramBinary::getVertexShader):
(gl::ProgramBinary::getAttributeLocation):
(gl::ProgramBinary::getSemanticIndex):
(gl::ProgramBinary::getUsedSamplerRange):
(gl::ProgramBinary::usesPointSize):
(gl::ProgramBinary::getSamplerMapping):
(gl::ProgramBinary::getSamplerTextureType):
(gl::ProgramBinary::getUniformLocation):
(gl::ProgramBinary::setUniform1fv):
(gl::ProgramBinary::setUniform2fv):
(gl::ProgramBinary::setUniform3fv):
(gl::ProgramBinary::setUniform4fv):
(gl::transposeMatrix):
(gl::ProgramBinary::setUniformMatrix2fv):
(gl::ProgramBinary::setUniformMatrix3fv):
(gl::ProgramBinary::setUniformMatrix4fv):
(gl::ProgramBinary::setUniform1iv):
(gl::ProgramBinary::setUniform2iv):
(gl::ProgramBinary::setUniform3iv):
(gl::ProgramBinary::setUniform4iv):
(gl::ProgramBinary::getUniformfv):
(gl::ProgramBinary::getUniformiv):
(gl::ProgramBinary::dirtyAllUniforms):
(gl::ProgramBinary::applyUniforms):
(gl::ProgramBinary::compileToBinary):
(gl::ProgramBinary::packVaryings):
(gl::ProgramBinary::linkVaryings):
(gl::ProgramBinary::load):
(gl::ProgramBinary::save):
(gl::ProgramBinary::getLength):
(gl::ProgramBinary::link):
(gl::ProgramBinary::linkAttributes):
(gl::ProgramBinary::linkUniforms):
(gl::ProgramBinary::defineUniform):
(gl::ProgramBinary::createUniform):
(gl::ProgramBinary::decorateAttribute):
(gl::ProgramBinary::undecorateUniform):
(gl::ProgramBinary::applyUniformnbv):
(gl::ProgramBinary::applyUniformnfv):
(gl::ProgramBinary::applyUniform1iv):
(gl::ProgramBinary::applyUniform2iv):
(gl::ProgramBinary::applyUniform3iv):
(gl::ProgramBinary::applyUniform4iv):
(gl::ProgramBinary::applyUniformniv):
(gl::ProgramBinary::isValidated):
(gl::ProgramBinary::getActiveAttribute):
(gl::ProgramBinary::getActiveAttributeCount):
(gl::ProgramBinary::getActiveAttributeMaxLength):
(gl::ProgramBinary::getActiveUniform):
(gl::ProgramBinary::getActiveUniformCount):
(gl::ProgramBinary::getActiveUniformMaxLength):
(gl::ProgramBinary::validate):
(gl::ProgramBinary::validateSamplers):
(gl::ProgramBinary::getDxDepthRangeLocation):
(gl::ProgramBinary::getDxDepthLocation):
(gl::ProgramBinary::getDxCoordLocation):
(gl::ProgramBinary::getDxHalfPixelSizeLocation):
(gl::ProgramBinary::getDxFrontCCWLocation):
(gl::ProgramBinary::getDxPointsOrLinesLocation):
(gl::ProgramBinary::Sampler::Sampler):
- src/libGLESv2/ProgramBinary.h: Added.
(gl::Uniform::RegisterInfo::RegisterInfo):
(gl::Uniform::RegisterInfo::set):
(gl::UniformLocation::UniformLocation):
- src/libGLESv2/Query.cpp: Added.
(gl::Query::Query):
(gl::Query::~Query):
(gl::Query::begin):
(gl::Query::end):
(gl::Query::getResult):
(gl::Query::isResultAvailable):
(gl::Query::getType):
(gl::Query::testQuery):
- src/libGLESv2/Query.h: Added.
- src/libGLESv2/README: Removed.
- src/libGLESv2/Renderbuffer.cpp: Added.
(gl::RenderbufferInterface::RenderbufferInterface):
(gl::RenderbufferInterface::addProxyRef):
(gl::RenderbufferInterface::releaseProxy):
(gl::RenderbufferInterface::getRedSize):
(gl::RenderbufferInterface::getGreenSize):
(gl::RenderbufferInterface::getBlueSize):
(gl::RenderbufferInterface::getAlphaSize):
(gl::RenderbufferInterface::getDepthSize):
(gl::RenderbufferInterface::getStencilSize):
(gl::RenderbufferTexture2D::RenderbufferTexture2D):
(gl::RenderbufferTexture2D::~RenderbufferTexture2D):
(gl::RenderbufferTexture2D::addProxyRef):
(gl::RenderbufferTexture2D::releaseProxy):
(gl::RenderbufferTexture2D::getRenderTarget):
(gl::RenderbufferTexture2D::getDepthStencil):
(gl::RenderbufferTexture2D::getWidth):
(gl::RenderbufferTexture2D::getHeight):
(gl::RenderbufferTexture2D::getInternalFormat):
(gl::RenderbufferTexture2D::getD3DFormat):
(gl::RenderbufferTexture2D::getSamples):
(gl::RenderbufferTexture2D::getSerial):
(gl::RenderbufferTextureCubeMap::RenderbufferTextureCubeMap):
(gl::RenderbufferTextureCubeMap::~RenderbufferTextureCubeMap):
(gl::RenderbufferTextureCubeMap::addProxyRef):
(gl::RenderbufferTextureCubeMap::releaseProxy):
(gl::RenderbufferTextureCubeMap::getRenderTarget):
(gl::RenderbufferTextureCubeMap::getDepthStencil):
(gl::RenderbufferTextureCubeMap::getWidth):
(gl::RenderbufferTextureCubeMap::getHeight):
(gl::RenderbufferTextureCubeMap::getInternalFormat):
(gl::RenderbufferTextureCubeMap::getD3DFormat):
(gl::RenderbufferTextureCubeMap::getSamples):
(gl::RenderbufferTextureCubeMap::getSerial):
(gl::Renderbuffer::Renderbuffer):
(gl::Renderbuffer::~Renderbuffer):
(gl::Renderbuffer::addRef):
(gl::Renderbuffer::release):
(gl::Renderbuffer::getRenderTarget):
(gl::Renderbuffer::getDepthStencil):
(gl::Renderbuffer::getWidth):
(gl::Renderbuffer::getHeight):
(gl::Renderbuffer::getInternalFormat):
(gl::Renderbuffer::getD3DFormat):
(gl::Renderbuffer::getRedSize):
(gl::Renderbuffer::getGreenSize):
(gl::Renderbuffer::getBlueSize):
(gl::Renderbuffer::getAlphaSize):
(gl::Renderbuffer::getDepthSize):
(gl::Renderbuffer::getStencilSize):
(gl::Renderbuffer::getSamples):
(gl::Renderbuffer::getSerial):
(gl::Renderbuffer::setStorage):
(gl::RenderbufferStorage::RenderbufferStorage):
(gl::RenderbufferStorage::~RenderbufferStorage):
(gl::RenderbufferStorage::getRenderTarget):
(gl::RenderbufferStorage::getDepthStencil):
(gl::RenderbufferStorage::getWidth):
(gl::RenderbufferStorage::getHeight):
(gl::RenderbufferStorage::getInternalFormat):
(gl::RenderbufferStorage::getD3DFormat):
(gl::RenderbufferStorage::getSamples):
(gl::RenderbufferStorage::getSerial):
(gl::RenderbufferStorage::issueSerial):
(gl::RenderbufferStorage::issueCubeSerials):
(gl::Colorbuffer::Colorbuffer):
(gl::Colorbuffer::~Colorbuffer):
(gl::Colorbuffer::getRenderTarget):
(gl::DepthStencilbuffer::DepthStencilbuffer):
(gl::DepthStencilbuffer::~DepthStencilbuffer):
(gl::DepthStencilbuffer::getDepthStencil):
(gl::Depthbuffer::Depthbuffer):
(gl::Depthbuffer::~Depthbuffer):
(gl::Stencilbuffer::Stencilbuffer):
(gl::Stencilbuffer::~Stencilbuffer):
- src/libGLESv2/Renderbuffer.h: Added.
(gl::RenderbufferInterface::~RenderbufferInterface):
- src/libGLESv2/ResourceManager.cpp: Added.
(gl::ResourceManager::ResourceManager):
(gl::ResourceManager::~ResourceManager):
(gl::ResourceManager::addRef):
(gl::ResourceManager::release):
(gl::ResourceManager::createBuffer):
(gl::ResourceManager::createShader):
(gl::ResourceManager::createProgram):
(gl::ResourceManager::createTexture):
(gl::ResourceManager::createRenderbuffer):
(gl::ResourceManager::deleteBuffer):
(gl::ResourceManager::deleteShader):
(gl::ResourceManager::deleteProgram):
(gl::ResourceManager::deleteTexture):
(gl::ResourceManager::deleteRenderbuffer):
(gl::ResourceManager::getBuffer):
(gl::ResourceManager::getShader):
(gl::ResourceManager::getTexture):
(gl::ResourceManager::getProgram):
(gl::ResourceManager::getRenderbuffer):
(gl::ResourceManager::setRenderbuffer):
(gl::ResourceManager::checkBufferAllocation):
(gl::ResourceManager::checkTextureAllocation):
(gl::ResourceManager::checkRenderbufferAllocation):
- src/libGLESv2/ResourceManager.h: Added.
- src/libGLESv2/Shader.cpp: Added.
(gl::Shader::Shader):
(gl::Shader::~Shader):
(gl::Shader::getHandle):
(gl::Shader::setSource):
(gl::Shader::getInfoLogLength):
(gl::Shader::getInfoLog):
(gl::Shader::getSourceLength):
(gl::Shader::getTranslatedSourceLength):
(gl::Shader::getSourceImpl):
(gl::Shader::getSource):
(gl::Shader::getTranslatedSource):
(gl::Shader::isCompiled):
(gl::Shader::getHLSL):
(gl::Shader::addRef):
(gl::Shader::release):
(gl::Shader::getRefCount):
(gl::Shader::isFlaggedForDeletion):
(gl::Shader::flagForDeletion):
(gl::Shader::initializeCompiler):
(gl::Shader::releaseCompiler):
(gl::Shader::parseVaryings):
(gl::Shader::uncompile):
(gl::Shader::compileToHLSL):
(gl::Shader::parseType):
(gl::Shader::compareVarying):
(gl::VertexShader::VertexShader):
(gl::VertexShader::~VertexShader):
(gl::VertexShader::getType):
(gl::VertexShader::uncompile):
(gl::VertexShader::compile):
(gl::VertexShader::getSemanticIndex):
(gl::VertexShader::parseAttributes):
(gl::FragmentShader::FragmentShader):
(gl::FragmentShader::~FragmentShader):
(gl::FragmentShader::getType):
(gl::FragmentShader::compile):
- src/libGLESv2/Shader.h: Added.
(gl::Varying::Varying):
(gl::Attribute::Attribute):
- src/libGLESv2/Texture.cpp: Added.
(gl::ConvertTextureInternalFormat):
(gl::IsTextureFormatRenderable):
(gl::GetTextureUsage):
(gl::MakeValidSize):
(gl::CopyLockableSurfaces):
(gl::Image::Image):
(gl::Image::~Image):
(gl::Image::redefine):
(gl::Image::createSurface):
(gl::Image::lock):
(gl::Image::unlock):
(gl::Image::isRenderableFormat):
(gl::Image::getD3DFormat):
(gl::Image::getSurface):
(gl::Image::setManagedSurface):
(gl::Image::updateSurface):
(gl::Image::loadData):
(gl::Image::loadAlphaData):
(gl::Image::loadAlphaFloatData):
(gl::Image::loadAlphaHalfFloatData):
(gl::Image::loadLuminanceData):
(gl::Image::loadLuminanceFloatData):
(gl::Image::loadLuminanceHalfFloatData):
(gl::Image::loadLuminanceAlphaData):
(gl::Image::loadLuminanceAlphaFloatData):
(gl::Image::loadLuminanceAlphaHalfFloatData):
(gl::Image::loadRGBUByteData):
(gl::Image::loadRGB565Data):
(gl::Image::loadRGBFloatData):
(gl::Image::loadRGBHalfFloatData):
(gl::Image::loadRGBAUByteData):
(gl::Image::loadRGBA4444Data):
(gl::Image::loadRGBA5551Data):
(gl::Image::loadRGBAFloatData):
(gl::Image::loadRGBAHalfFloatData):
(gl::Image::loadBGRAData):
(gl::Image::loadCompressedData):
(gl::Image::copy):
(gl::TextureStorage::TextureStorage):
(gl::TextureStorage::~TextureStorage):
(gl::TextureStorage::isRenderTarget):
(gl::TextureStorage::isManaged):
(gl::TextureStorage::getPool):
(gl::TextureStorage::getUsage):
(gl::TextureStorage::getTextureSerial):
(gl::TextureStorage::issueTextureSerial):
(gl::TextureStorage::getLodOffset):
(gl::Texture::Texture):
(gl::Texture::~Texture):
(gl::Texture::setMinFilter):
(gl::Texture::setMagFilter):
(gl::Texture::setWrapS):
(gl::Texture::setWrapT):
(gl::Texture::setMaxAnisotropy):
(gl::Texture::setUsage):
(gl::Texture::getMinFilter):
(gl::Texture::getMagFilter):
(gl::Texture::getWrapS):
(gl::Texture::getWrapT):
(gl::Texture::getMaxAnisotropy):
(gl::Texture::getUsage):
(gl::Texture::isMipmapFiltered):
(gl::Texture::setImage):
(gl::Texture::setCompressedImage):
(gl::Texture::subImage):
(gl::Texture::subImageCompressed):
(gl::Texture::getTexture):
(gl::Texture::hasDirtyParameters):
(gl::Texture::hasDirtyImages):
(gl::Texture::resetDirty):
(gl::Texture::getTextureSerial):
(gl::Texture::getRenderTargetSerial):
(gl::Texture::isImmutable):
(gl::Texture::getLodOffset):
(gl::Texture::creationLevels):
(gl::Texture::levelCount):
(gl::Texture::getBlitter):
(gl::Texture::copyToRenderTarget):
(gl::TextureStorage2D::TextureStorage2D):
(gl::TextureStorage2D::~TextureStorage2D):
(gl::TextureStorage2D::getSurfaceLevel):
(gl::TextureStorage2D::getBaseTexture):
(gl::TextureStorage2D::getRenderTargetSerial):
(gl::Texture2D::Texture2D):
(gl::Texture2D::~Texture2D):
(gl::Texture2D::addProxyRef):
(gl::Texture2D::releaseProxy):
(gl::Texture2D::getTarget):
(gl::Texture2D::getWidth):
(gl::Texture2D::getHeight):
(gl::Texture2D::getInternalFormat):
(gl::Texture2D::getD3DFormat):
(gl::Texture2D::redefineImage):
(gl::Texture2D::setImage):
(gl::Texture2D::bindTexImage):
(gl::Texture2D::releaseTexImage):
(gl::Texture2D::setCompressedImage):
(gl::Texture2D::commitRect):
(gl::Texture2D::subImage):
(gl::Texture2D::subImageCompressed):
(gl::Texture2D::copyImage):
(gl::Texture2D::copySubImage):
(gl::Texture2D::storage):
(gl::Texture2D::isSamplerComplete):
(gl::Texture2D::isMipmapComplete):
(gl::Texture2D::isCompressed):
(gl::Texture2D::isDepth):
(gl::Texture2D::getBaseTexture):
(gl::Texture2D::createTexture):
(gl::Texture2D::updateTexture):
(gl::Texture2D::convertToRenderTarget):
(gl::Texture2D::generateMipmaps):
(gl::Texture2D::getRenderbuffer):
(gl::Texture2D::getRenderTarget):
(gl::Texture2D::getDepthStencil):
(gl::Texture2D::getStorage):
(gl::TextureStorageCubeMap::TextureStorageCubeMap):
(gl::TextureStorageCubeMap::~TextureStorageCubeMap):
(gl::TextureStorageCubeMap::getCubeMapSurface):
(gl::TextureStorageCubeMap::getBaseTexture):
(gl::TextureStorageCubeMap::getRenderTargetSerial):
(gl::TextureCubeMap::TextureCubeMap):
(gl::TextureCubeMap::~TextureCubeMap):
(gl::TextureCubeMap::addProxyRef):
(gl::TextureCubeMap::releaseProxy):
(gl::TextureCubeMap::getTarget):
(gl::TextureCubeMap::getWidth):
(gl::TextureCubeMap::getHeight):
(gl::TextureCubeMap::getInternalFormat):
(gl::TextureCubeMap::getD3DFormat):
(gl::TextureCubeMap::setImagePosX):
(gl::TextureCubeMap::setImageNegX):
(gl::TextureCubeMap::setImagePosY):
(gl::TextureCubeMap::setImageNegY):
(gl::TextureCubeMap::setImagePosZ):
(gl::TextureCubeMap::setImageNegZ):
(gl::TextureCubeMap::setCompressedImage):
(gl::TextureCubeMap::commitRect):
(gl::TextureCubeMap::subImage):
(gl::TextureCubeMap::subImageCompressed):
(gl::TextureCubeMap::isSamplerComplete):
(gl::TextureCubeMap::isCubeComplete):
(gl::TextureCubeMap::isMipmapCubeComplete):
(gl::TextureCubeMap::isCompressed):
(gl::TextureCubeMap::getBaseTexture):
(gl::TextureCubeMap::createTexture):
(gl::TextureCubeMap::updateTexture):
(gl::TextureCubeMap::convertToRenderTarget):
(gl::TextureCubeMap::setImage):
(gl::TextureCubeMap::faceIndex):
(gl::TextureCubeMap::redefineImage):
(gl::TextureCubeMap::copyImage):
(gl::TextureCubeMap::copySubImage):
(gl::TextureCubeMap::storage):
(gl::TextureCubeMap::generateMipmaps):
(gl::TextureCubeMap::getRenderbuffer):
(gl::TextureCubeMap::getRenderTarget):
(gl::TextureCubeMap::getStorage):
- src/libGLESv2/Texture.h: Added.
(gl::Image::markDirty):
(gl::Image::markClean):
(gl::Image::getWidth):
(gl::Image::getHeight):
(gl::Image::getInternalFormat):
(gl::Image::isDirty):
- src/libGLESv2/TextureSSE2.cpp: Added.
(gl::Image::loadRGBAUByteDataSSE2):
(gl::Image::loadAlphaDataSSE2):
- src/libGLESv2/VertexDataManager.cpp: Added.
(gl::elementsInBuffer):
(gl::VertexDataManager::VertexDataManager):
(gl::VertexDataManager::~VertexDataManager):
(gl::VertexDataManager::writeAttributeData):
(gl::VertexDataManager::prepareVertexData):
(gl::VertexDataManager::spaceRequired):
(gl::VertexDataManager::checkVertexCaps):
(gl::VertexDataManager::typeIndex):
(gl::VertexBuffer::VertexBuffer):
(gl::VertexBuffer::~VertexBuffer):
(gl::VertexBuffer::unmap):
(gl::VertexBuffer::getBuffer):
(gl::VertexBuffer::getSerial):
(gl::VertexBuffer::issueSerial):
(gl::ArrayVertexBuffer::ArrayVertexBuffer):
(gl::ArrayVertexBuffer::~ArrayVertexBuffer):
(gl::ArrayVertexBuffer::addRequiredSpace):
(gl::StreamingVertexBuffer::StreamingVertexBuffer):
(gl::StreamingVertexBuffer::~StreamingVertexBuffer):
(gl::StreamingVertexBuffer::map):
(gl::StreamingVertexBuffer::reserveRequiredSpace):
(gl::StaticVertexBuffer::StaticVertexBuffer):
(gl::StaticVertexBuffer::~StaticVertexBuffer):
(gl::StaticVertexBuffer::map):
(gl::StaticVertexBuffer::reserveRequiredSpace):
(gl::StaticVertexBuffer::lookupAttribute):
(gl::VertexDataManager::formatConverter):
- src/libGLESv2/VertexDataManager.h: Added.
(gl::ArrayVertexBuffer::size):
(gl::VertexDataManager::dirtyCurrentValue):
- src/libGLESv2/libGLESv2.cpp: Added.
(validImageSize):
(checkTextureFormatType):
(validateSubImageParams2D):
(validateSubImageParamsCube):
(validReadFormatType):
- src/libGLESv2/libGLESv2.def: Added.
- src/libGLESv2/libGLESv2.rc: Added.
- src/libGLESv2/libGLESv2.vcxproj: Added.
- src/libGLESv2/libGLESv2.vcxproj.filters: Added.
- src/libGLESv2/main.cpp: Added.
(DllMain):
(gl::makeCurrent):
(gl::getContext):
(gl::getNonLostContext):
(gl::getDisplay):
(gl::getDevice):
(gl::checkDeviceLost):
(error):
- src/libGLESv2/main.h: Added.
(error):
- src/libGLESv2/mathutil.h: Added.
(gl::Vector4::Vector4):
(gl::isPow2):
(gl::log2):
(gl::ceilPow2):
(gl::clamp):
(gl::clamp01):
(gl::unorm):
(gl::supportsSSE2):
(gl::float32ToFloat16):
- src/libGLESv2/resource.h: Added.
- src/libGLESv2/shaders: Added.
- src/libGLESv2/shaders/Blit.ps: Added.
- src/libGLESv2/shaders/Blit.vs: Added.
- src/libGLESv2/shaders/componentmaskps.h: Added.
- src/libGLESv2/shaders/flipyvs.h: Added.
- src/libGLESv2/shaders/generate_shaders.bat: Added.
- src/libGLESv2/shaders/luminanceps.h: Added.
- src/libGLESv2/shaders/passthroughps.h: Added.
- src/libGLESv2/shaders/standardvs.h: Added.
- src/libGLESv2/utilities.cpp: Added.
(gl::UniformExternalComponentCount):
(gl::UniformInternalComponentCount):
(gl::UniformComponentType):
(gl::UniformComponentSize):
(gl::UniformInternalSize):
(gl::UniformExternalSize):
(gl::VariableRowCount):
(gl::VariableColumnCount):
(gl::AllocateFirstFreeBits):
(gl::ComputePitch):
(gl::ComputeCompressedPitch):
(gl::ComputeCompressedSize):
(gl::IsCompressed):
(gl::IsDepthTexture):
(gl::IsStencilTexture):
(gl::ComputePixelSize):
(gl::IsCubemapTextureTarget):
(gl::IsInternalTextureTarget):
(gl::ConvertSizedInternalFormat):
(gl::ExtractFormat):
(gl::ExtractType):
(gl::IsColorRenderable):
(gl::IsDepthRenderable):
(gl::IsStencilRenderable):
(gl::IsFloat32Format):
(gl::IsFloat16Format):
(es2dx::ConvertComparison):
(es2dx::ConvertColor):
(es2dx::ConvertBlendFunc):
(es2dx::ConvertBlendOp):
(es2dx::ConvertStencilOp):
(es2dx::ConvertTextureWrap):
(es2dx::ConvertCullMode):
(es2dx::ConvertCubeFace):
(es2dx::ConvertColorMask):
(es2dx::ConvertMagFilter):
(es2dx::ConvertMinFilter):
(es2dx::ConvertPrimitiveType):
(es2dx::ConvertRenderbufferFormat):
(es2dx::GetMultisampleTypeFromSamples):
(dx2es::GetStencilSize):
(dx2es::GetAlphaSize):
(dx2es::GetRedSize):
(dx2es::GetGreenSize):
(dx2es::GetBlueSize):
(dx2es::GetDepthSize):
(dx2es::GetSamplesFromMultisampleType):
(dx2es::IsFormatChannelEquivalent):
(dx2es::ConvertReadBufferFormat):
(dx2es::ConvertBackBufferFormat):
(dx2es::ConvertDepthStencilFormat):
(dx::IsCompressedFormat):
(dx::ComputeRowSize):
(getTempPath):
(writeFile):
- src/libGLESv2/utilities.h: Added.
(isDeviceLostError):
- src/libGLESv2/vertexconversion.h: Added.
(gl::Identity::convert):
(gl::Cast::convert):
(gl::Normalize::convert):
(gl::FixedToFloat::convert):
(gl::SimpleDefaultValues::zero):
(gl::SimpleDefaultValues::one):
(gl::NormalizedDefaultValues::zero):
(gl::NormalizedDefaultValues::one):
(gl::VertexDataConverter::convertArray):
(gl::VertexDataConverter::pointerAddBytes):
(gl::VertexDataConverter::copyComponent):
- 1:38 PM Changeset in webkit [152862] by
-
- 4 edits in trunk/Source/WebKit2
<rdar://problem/13886443> Assertion failures in NetworkProcess in SandboxExtension::revoke when aborting SyncNetworkResourceLoader
<rdar://problem/13826348> ASSERT(!m_useCount) fails in NetworkProcess at SandboxExtension::~SandboxExtension
https://bugs.webkit.org/show_bug.cgi?id=118855
Reviewed by Brady Eidson.
- NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::cleanup): (WebKit::NetworkResourceLoader::didFinishLoading): (WebKit::NetworkResourceLoader::didFail): Moved sandbox extension invalidation to cleanup() meaning that we won't fail to do this when aborting a loader that currently loading from network.
- NetworkProcess/SchedulableLoader.cpp: (WebKit::SchedulableLoader::SchedulableLoader): (WebKit::SchedulableLoader::consumeSandboxExtensions): (WebKit::SchedulableLoader::invalidateSandboxExtensions):
- NetworkProcess/SchedulableLoader.h: Keep track of whether sandbox extensions are consumed, we don't want to revoke extensions that were never consumed (as used to be the case with sync loaders, and would be with async ones after the above fix). Also, get rid of extensions immediately when invalidating, we won't need them again.
- 1:30 PM Changeset in webkit [152861] by
-
- 17 edits6 adds in trunk
[Windows] Support in-band text tracks.
https://bugs.webkit.org/show_bug.cgi?id=103770.
- 1:28 PM Changeset in webkit [152860] by
-
- 2 edits in trunk/Tools
Unreviewed. Test enabling WinEWS tests now that queue is at a good state and NRWT with multiple processes is enabled.
- Scripts/webkitpy/common/config/ews.json:
- 12:07 PM Changeset in webkit [152859] by
-
- 9 edits1 add in trunk
Make atob() / btoa() argument non optional
https://bugs.webkit.org/show_bug.cgi?id=118844
Reviewed by Kentaro Hara.
Source/WebCore:
According to the latest specification, the argument to atob() / btoa()
should not be optional:
http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#windowbase64
This patch makes WebKit behave according to the specification. The argument
is also mandatory in Firefox, IE10 and Blink.
atob() / btoa() are also moved to their own WindowBase64 interface which
the Window interface implements. This does not change the behavior but
this is closer to the specification and it will make exposing those
methods to workers easier later on.
No new tests, already covered by:
fast/dom/Window/atob-btoa.html
- CMakeLists.txt:
- DerivedSources.make:
- DerivedSources.pri:
- GNUmakefile.list.am:
- page/DOMWindow.idl:
- page/WindowBase64.idl: Added.
LayoutTests:
Update and rebaseline fast/dom/Window/atob-btoa.html as atob() /
btoa() 's behavior has changed to match the specification and
the behavior in other browsers.
- fast/dom/Window/atob-btoa-expected.txt:
- fast/dom/Window/atob-btoa.html:
- 11:58 AM Changeset in webkit [152858] by
-
- 2 edits in trunk/Source/WebCore
Crash in WebCore::createMarkup()
https://bugs.webkit.org/show_bug.cgi?id=118847
Reviewed by Ryosuke Niwa.
Also check that we have a containingBlock() for the renderer() so that we
may safely call node() on it.
- editing/markup.cpp:
(WebCore::highestAncestorToWrapMarkup):
- 11:54 AM Changeset in webkit [152857] by
-
- 3 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: CFA should consider live-at-head for clobbering and dumping
https://bugs.webkit.org/show_bug.cgi?id=118857
Reviewed by Mark Hahnenberg.
- clobberStructures() was not considering nodes live-at-head when in SSA form. This means it would fail to clobber some structures.
- dump() was not considering nodes live-at-head when in SSA form. This means it wouldn't dump everything that you might be interested in.
- AbstractState::m_currentNode is a useless variable and we should get rid of it.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::AbstractState):
(JSC::DFG::AbstractState::beginBasicBlock):
(JSC::DFG::AbstractState::reset):
(JSC::DFG::AbstractState::startExecuting):
(JSC::DFG::AbstractState::clobberStructures):
(JSC::DFG::AbstractState::dump):
- dfg/DFGAbstractState.h:
(AbstractState):
- 11:36 AM Changeset in webkit [152856] by
-
- 3 edits in branches/safari-537-branch/Source/JavaScriptCore
Merged r152807. <rdar://problem/14472115>
- 11:34 AM Changeset in webkit [152855] by
-
- 3 edits in tags/Safari-537.51.2/Source/JavaScriptCore
Merged r152807. <rdar://problem/14472115>
- 11:33 AM Changeset in webkit [152854] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r152805. <rdar://problem/14173389>
- 11:31 AM Changeset in webkit [152853] by
-
- 2 edits in tags/Safari-537.51.2/Source/WebKit2
Merged r152805. <rdar://problem/14173389>
- 11:26 AM Changeset in webkit [152852] by
-
- 2 edits in trunk/Tools
REGRESSION (r132678): Tests that use SSL or port 8080 time out when run using old-run-webkit-tests
https://bugs.webkit.org/show_bug.cgi?id=118854
<rdar://problem/14081339>
Reviewed by David Kilzer.
Following <http://trac.webkit.org/changeset/132678> (https://bugs.webkit.org/show_bug.cgi?id=98602)
Apache no longer listens to ports 8443 (SSL) and 8080. So, tests that use these ports time out when
run using old-run-webkit-tests. We need to update old-run-webkit-tests to explicitly tell Apache to
listen on these ports so that we can run tests that use port 8443 and 8080.
- Scripts/old-run-webkit-tests:
(configureAndOpenHTTPDIfNeeded):
- 11:05 AM Changeset in webkit [152851] by
-
- 5 edits in tags/Safari-537.51.2/Source
Versioning.
- 11:03 AM Changeset in webkit [152850] by
-
- 1 copy in tags/Safari-537.51.2
New Tag.
- 10:45 AM Changeset in webkit [152849] by
-
- 1 edit16 adds14 deletes in trunk/LayoutTests
Convert MathML fraction tests to reftests.
https://bugs.webkit.org/show_bug.cgi?id=118812
Patch by Frédéric Wang <fred.wang@free.fr> on 2013-07-18
Reviewed by Chris Fleizach.
fractions-vertical-alignment and fractions are converted to reftests.
- mathml/presentation/fractions-box-expected.html: Added.
- mathml/presentation/fractions-box.html: Added.
- mathml/presentation/fractions-color-expected-mismatch.html: Added.
- mathml/presentation/fractions-color.html: Added.
- mathml/presentation/fractions-invalid-expected.html: Added.
- mathml/presentation/fractions-invalid.html: Added.
- mathml/presentation/fractions-linethickness-expected.html: Added.
- mathml/presentation/fractions-linethickness.html: Added.
- mathml/presentation/fractions-mrow-expected.html: Added.
- mathml/presentation/fractions-mrow.html: Added.
- mathml/presentation/fractions-numalign-denomalign-expected.html: Added.
- mathml/presentation/fractions-numalign-denomalign.html: Added.
- mathml/presentation/fractions-positions-expected.html: Added.
- mathml/presentation/fractions-positions.html: Added.
- mathml/presentation/fractions-vertical-alignment-expected.html: Added.
- mathml/presentation/fractions-vertical-alignment.html: Added.
- mathml/presentation/fractions-vertical-alignment.xhtml: Removed.
- mathml/presentation/fractions.xhtml: Removed.
- platform/efl/mathml/presentation/fractions-expected.png: Removed.
- platform/efl/mathml/presentation/fractions-expected.txt: Removed.
- platform/efl/mathml/presentation/fractions-vertical-alignment-expected.png: Removed.
- platform/efl/mathml/presentation/fractions-vertical-alignment-expected.txt: Removed.
- platform/gtk/mathml/presentation/fractions-expected.png: Removed.
- platform/gtk/mathml/presentation/fractions-expected.txt: Removed.
- platform/gtk/mathml/presentation/fractions-vertical-alignment-expected.png: Removed.
- platform/gtk/mathml/presentation/fractions-vertical-alignment-expected.txt: Removed.
- platform/mac/mathml/presentation/fractions-expected.png: Removed.
- platform/mac/mathml/presentation/fractions-expected.txt: Removed.
- platform/mac/mathml/presentation/fractions-vertical-alignment-expected.png: Removed.
- platform/mac/mathml/presentation/fractions-vertical-alignment-expected.txt: Removed.
- 9:50 AM Changeset in webkit [152848] by
-
- 4 edits in trunk/Source
CodeBlock::m_argumentValueProfiles wastes a lot of memory.
<http://webkit.org/b/118852>
<rdar://problem/14481659>
Reviewed by Anders Carlsson.
Source/JavaScriptCore:
Use Vector::resizeToFit() for CodeBlock::m_argumentValueProfiles. We don't need any padding
for growth, since we won't be appending to it anyway.
921 KB progression on <http://twitter.com/awesomekling>
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::setNumParameters):
Source/WTF:
Add Vector::resizeToFit(size), like resize() but without growth padding.
- wtf/Vector.h:
(WTF::::resizeToFit):
- 8:44 AM Changeset in webkit [152847] by
-
- 4 edits in trunk/LayoutTests
fullscreen/full-screen-iframe-with-max-width-height.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=118820
Patch by Zalan Bujtas <Alan Bujtas> on 2013-07-18
Reviewed by Andreas Kling.
Don't start the test until after the iframe has finished loading.
- fullscreen/full-screen-iframe-with-max-width-height-expected.txt:
- fullscreen/full-screen-iframe-with-max-width-height.html:
- platform/mac/TestExpectations:
- 8:39 AM Changeset in webkit [152846] by
-
- 5 edits in trunk
Only the first call to 'stop' method of AudioBufferSourceNode must be entertained.
https://bugs.webkit.org/show_bug.cgi?id=118776
Patch by Praveen R Jadhav <praveen.j@samsung.com> on 2013-07-18
Reviewed by Jer Noble.
Source/WebCore:
Subsequent calls to 'stop' for a AudioSourceBufferNode throws an exception.
End time set by first 'stop' method is used for processing.
No new tests. audiobuffersource-exception.html is updated.
- Modules/webaudio/AudioScheduledSourceNode.cpp:
(WebCore::AudioScheduledSourceNode::stop):
LayoutTests:
Test case updated to check subsequent calls to 'stop' for a given AudioBufferSourceNode.
- webaudio/audiobuffersource-exception-expected.txt:
- webaudio/audiobuffersource-exception.html:
- 7:51 AM Changeset in webkit [152845] by
-
- 2 edits in trunk/Source/WebCore
Simplify SVG animated type handling in the JSC bindings generator
https://bugs.webkit.org/show_bug.cgi?id=118845
Reviewed by Kentaro Hara.
Simplify IsSVGAnimatedType subroutine in the bindings generator so that
we no longer need to hardcode SVG animated types. Also remove the
CanUseFastAttribute subroutine as it is equivalent to IsSVGAnimatedType.
This allows us to simplify the GetterExpression subroutine so that
we can use fastHasAttribute() unconditionally for boolean type.
No new tests, no behavior change.
- bindings/scripts/CodeGenerator.pm:
(IsSVGAnimatedType):
(GetterExpression):
- 7:45 AM WebKitGTK/2.0.x edited by
- (diff)
- 7:24 AM Changeset in webkit [152844] by
-
- 14 edits in trunk/Source/WebCore
Use [ImplementedAs] instead of special casing in the bindings generators
https://bugs.webkit.org/show_bug.cgi?id=118848
Reviewed by Kentaro Hara.
In several instances, special casing were used in the bindings generator to avoid
name clashes in the implementation. The [ImplementedBy] IDL extended attribute is
meant to solve this issue so we now use it instead.
No new tests, no behavior change.
- bindings/scripts/CodeGenerator.pm:
(WK_ucfirst):
(AttributeNameForGetterAndSetter):
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
(NativeToJSValue):
- bindings/scripts/CodeGeneratorObjC.pm:
(GenerateHeader):
(GenerateImplementation):
- svg/SVGAElement.idl:
- svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::SVGFECompositeElement):
(WebCore::SVGFECompositeElement::parseAttribute):
(WebCore::SVGFECompositeElement::setFilterEffectAttribute):
(WebCore::SVGFECompositeElement::build):
- svg/SVGFECompositeElement.h:
- svg/SVGFECompositeElement.idl:
- svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::SVGFEMorphologyElement):
(WebCore::SVGFEMorphologyElement::parseAttribute):
(WebCore::SVGFEMorphologyElement::setFilterEffectAttribute):
(WebCore::SVGFEMorphologyElement::build):
- svg/SVGFEMorphologyElement.h:
- svg/SVGFEMorphologyElement.idl:
- svg/SVGTransform.cpp:
(WebCore::SVGTransform::updateSVGMatrix):
- svg/SVGTransform.h:
- svg/SVGTransform.idl:
- 7:03 AM Changeset in webkit [152843] by
-
- 5 edits in trunk/Source/WebKit/qt
[Qt][WK1] Mark failing API tests as XFAIL
Patch by Gabor Abraham <abrhm@inf.u-szeged.hu> on 2013-07-18
Reviewed by Csaba Osztrogonác.
- tests/qgraphicswebview/tst_qgraphicswebview.cpp:
(tst_QGraphicsWebView::widgetsRenderingThroughCache):
(tst_QGraphicsWebView::windowResizeEvent):
- tests/qwebelement/tst_qwebelement.cpp:
(tst_QWebElement::addElementToHead):
- tests/qwebframe/tst_qwebframe.cpp:
(tst_QWebFrame::setHtmlWithImageResource):
(tst_QWebFrame::setHtmlWithStylesheetResource):
(tst_QWebFrame::setHtmlWithJSAlert):
- tests/qwebpage/tst_qwebpage.cpp:
(tst_QWebPage::geolocationRequestJS):
(tst_QWebPage::popupFormSubmission):
(tst_QWebPage::originatingObjectInNetworkRequests):
(tst_QWebPage::testStopScheduledPageRefresh):
- 6:05 AM Changeset in webkit [152842] by
-
- 2 edits in trunk/LayoutTests
Unskip mathml tests after r152840.
https://bugs.webkit.org/show_bug.cgi?id=118842
Unreviewed.
Patch by Zalan Bujtas <Alan Bujtas> on 2013-07-18
- platform/mac/TestExpectations:
- 4:01 AM WebKitGTK/WebKit2Roadmap edited by
- (diff)
- 2:35 AM Changeset in webkit [152841] by
-
- 29 edits in trunk/Source/WebKit2
Remove PDFViewController and WKView "custom representations"
https://bugs.webkit.org/show_bug.cgi?id=118720
Reviewed by Alexey Proskuryakov.
PDFViewController was the only implementation of
a "custom representation" for a WKView. As it has
been superceded by PDFPlugin, we can remove both
PDFViewController and the notion of a WKView custom
representation.
- UIProcess/API/gtk/PageClientImpl.cpp:
- UIProcess/API/gtk/PageClientImpl.h:
- UIProcess/API/mac/PDFViewController.h: Removed.
- UIProcess/API/mac/PDFViewController.mm: Removed.
- UIProcess/API/mac/PageClientImpl.h:
- UIProcess/API/mac/PageClientImpl.mm:
- UIProcess/API/mac/WKView.mm:
(-[WKView accessibilityFocusedUIElement]):
(-[WKView accessibilityHitTest:]):
(-[WKView accessibilityAttributeValue:]):
(-[WKView printOperationWithPrintInfo:forFrame:]):
- UIProcess/API/mac/WKViewInternal.h:
- UIProcess/API/qt/raw/qrawwebview_p_p.h:
- UIProcess/CoordinatedGraphics/WebView.cpp:
- UIProcess/CoordinatedGraphics/WebView.h:
- UIProcess/DrawingAreaProxy.h:
- UIProcess/DrawingAreaProxyImpl.cpp:
- UIProcess/DrawingAreaProxyImpl.h:
- UIProcess/PageClient.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::supportsTextEncoding):
(WebKit::WebPageProxy::supportsTextZoom):
(WebKit::WebPageProxy::setTextZoomFactor):
(WebKit::WebPageProxy::setPageZoomFactor):
(WebKit::WebPageProxy::setPageAndTextZoomFactors):
(WebKit::WebPageProxy::findString):
(WebKit::WebPageProxy::countStringMatches):
(WebKit::WebPageProxy::didCommitLoadForFrame):
- UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::textZoomFactor):
(WebKit::WebPageProxy::pageZoomFactor):
- UIProcess/WebPageProxy.messages.in:
- UIProcess/qt/QtPageClient.h:
- WebKit2.xcodeproj/project.pbxproj:
- WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::WebFrameLoaderClient):
(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
(WebKit::WebFrameLoaderClient::committedLoad):
(WebKit::WebFrameLoaderClient::finishedLoading):
(WebKit::WebFrameLoaderClient::transitionToCommittedFromCachedFrame):
(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
- WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
- WebProcess/WebPage/DrawingArea.h:
- WebProcess/WebPage/DrawingArea.messages.in:
- WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::setNeedsDisplayInRect):
(WebKit::DrawingAreaImpl::scroll):
(WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode):
(WebKit::DrawingAreaImpl::display):
- WebProcess/WebPage/DrawingAreaImpl.h:
- WebProcess/WebPage/WebPage.cpp:
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformPreferencesDidChange):
- mac/WebKit2.order:
- 2:09 AM Changeset in webkit [152840] by
-
- 10 edits2 adds in trunk
Incorrect calculated width for mspace.
https://bugs.webkit.org/show_bug.cgi?id=118601
Patch by Zalan Bujtas <Alan Bujtas> on 2013-07-18
Reviewed by Chris Fleizach.
Source/WebCore:
Use intrinsic logical widths to size <mspace> properly.
This patch also fixes an assert on isPreferredLogicalHeightDirty() which occurs
while layouting <mspace>. The assert fix is required, so that the sizing can be
fixed.
Test: mathml/presentation/mspace-prefered-width.html
- rendering/mathml/RenderMathMLBlock.cpp:
(WebCore::parseMathMLLength): switch to LayoutUnits.
(WebCore::parseMathMLNamedSpace): switch to LayoutUnits.
- rendering/mathml/RenderMathMLBlock.h:
- rendering/mathml/RenderMathMLFraction.cpp:
(WebCore::RenderMathMLFraction::updateFromElement):
- rendering/mathml/RenderMathMLFraction.h:
- rendering/mathml/RenderMathMLSpace.cpp:
(WebCore::RenderMathMLSpace::computeIntrinsicLogicalWidths):
- rendering/mathml/RenderMathMLSpace.h:
LayoutTests:
Use intrinsic logical widths to size <mspace> properly.
This patch also fixes an assert on isPreferredLogicalHeightDirty(), which occurs
while layouting <mspace>. The assert fix is required, so that the sizing can be
fixed.
- mathml/presentation/mspace-prefered-width-expected.html: Added.
- mathml/presentation/mspace-prefered-width.html: Added.
- platform/mac/mathml/presentation/fractions-expected.png: Rebaseline: float->LayoutUnit.
- platform/mac/mathml/presentation/fractions-expected.txt: Rebaseline: float->LayoutUnit.
- 1:45 AM Changeset in webkit [152839] by
-
- 2 edits in trunk/Source/WebCore
willWriteSelectionToPasteboard and willPerformDragSourceAction editing callbacks are not called for drag and drop
https://bugs.webkit.org/show_bug.cgi?id=118828
Reviewed by Gavin Barraclough.
Call these two callbacks when we start a drag and drop.
No new tests for now but we should start logging these callbacks in DRT and WTR's EditorClients.
- page/DragController.cpp:
(WebCore::DragController::startDrag):
- 1:28 AM Changeset in webkit [152838] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] Replace mouseClick with more meaningful method in test_ewk2_color_picker.cpp
https://bugs.webkit.org/show_bug.cgi?id=118797
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-18
Reviewed by Christophe Dumez.
Some mouseClick methods are used in test_ewk2_color_picker.cpp.
But it is difficult to understand what they mean.
So i would like to replace those with more meaningful method for readability.
- UIProcess/API/efl/tests/test_ewk2_color_picker.cpp:
(EWK2ColorPickerTest::clickButton):
(TEST_F):
- 1:05 AM Changeset in webkit [152837] by
-
- 2 edits in trunk/Source/WebKit2
[WK2] Replace getRect() to pixelSnappedBoundingBox().
https://bugs.webkit.org/show_bug.cgi?id=118588
Patch by Eunmi Lee <eunmi15.lee@samsung.com> on 2013-07-18
Reviewed by Noam Rosenthal.
The Node::getRect() function was removed in the
http://trac.webkit.org/changeset/128006, so use
pixelSnappedBoundingBox() instead.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::findZoomableAreaForPoint):
- 1:04 AM Changeset in webkit [152836] by
-
- 3 edits2 adds in trunk
ASSERTION FAILED: !listItems().size() m_activeSelectionAnchorIndex >= 0 in WebCore::HTMLSelectElement::updateListBoxSelection https://bugs.webkit.org/show_bug.cgi?id=118591
Patch by Santosh Mahto <santosh.ma@samsung.com> on 2013-07-18
Reviewed by Kent Tamura.
Source/WebCore:
Test: fast/forms/select/selectall-command-crash.html
- html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::selectAll):
We should return this function if activeSelectionAnchorIndex is not valid index
LayoutTests:
- fast/forms/select/selectall-command-crash-expected.txt: Added.
- fast/forms/select/selectall-command-crash.html: Added.
- 1:01 AM Changeset in webkit [152835] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] Replace mouseClick with more meaningful method in test_ewk2_context_menu.cpp
https://bugs.webkit.org/show_bug.cgi?id=118796
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-18
Reviewed by Christophe Dumez.
Some mouseClick methods are used in test_ewk2_context_menu.cpp.
But it is difficult to understand what they mean.
So i would like to replace those with more meaningful method for readability.
- UIProcess/API/efl/tests/test_ewk2_context_menu.cpp:
(EWK2ContextMenuTest::testContextMenu):
(EWK2ContextMenuTest::testContextMenuForRemoveAndAppend):
(EWK2ContextMenuTest::testContextMenuForSubmenu):
(EWK2ContextMenuTest::finishTest):
(EWK2ContextMenuTest::showContextMenu):
(TEST_F):
- 12:51 AM Changeset in webkit [152834] by
-
- 6 edits in trunk
[EFL] Refactor spin.edc not to use offset
https://bugs.webkit.org/show_bug.cgi?id=118830
Reviewed by Gyuyoung Kim.
Source/WebCore:
EDJE allows offset to specify the pixel based position,
but it's not good way if you want to locate object like arrow top or bottom.
Instead, this patch uses align property.
- platform/efl/DefaultTheme/widget/spinner/spinner.edc:
LayoutTests:
Updated pixel tests reults.
- platform/efl/fast/forms/number/number-appearance-rtl-expected.png:
- platform/efl/fast/forms/number/number-appearance-spinbutton-disabled-readonly-expected.png:
- platform/efl/fast/forms/number/number-appearance-spinbutton-layer-expected.png:
- 12:29 AM Changeset in webkit [152833] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] Replace mouseClick with more meaningful method in test_ewk2_file_chooser_request.cpp
https://bugs.webkit.org/show_bug.cgi?id=118792
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-18
Reviewed by Christophe Dumez.
Some mouseClick methods are used in test_ewk2_file_chooser_request.cpp.
But it is difficult to understand what they mean.
So i would like to replace those with more meaningful method for readability.
- UIProcess/API/efl/tests/test_ewk2_file_chooser_request.cpp:
(EWK2FileChooserRequestTest::clickFileInput):
(TEST_F):
- 12:27 AM Changeset in webkit [152832] by
-
- 2 edits in trunk/Source/WebCore
[gstreamer] Avoid calls to g_slist_index in webKitWebAudioSrcLoop()
https://bugs.webkit.org/show_bug.cgi?id=118827
Patch by Nick Diego Yamane <nick.yamane@openbossa.org> on 2013-07-18
Reviewed by Philippe Normand.
webKitWebAudioSrcLoop() currently calls g_slist_index for each element
to get its index in a list it's iterating over. g_list_index function uses
a sequential search to find that element, which is clearly unecessary.
This patch adds a local variable to store the current index and use it
instead of calling g_slist_index function.
No new tests, no behavior changes.
- platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webKitWebAudioSrcLoop):
- 12:27 AM Changeset in webkit [152831] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] Move all the static methods into EWK2TextCheckerTest in test_ewk2_text_checker.cpp
https://bugs.webkit.org/show_bug.cgi?id=118790
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-18
Reviewed by Christophe Dumez.
All the static methods should be moved to EWK2TextCheckerTest.
- UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:
(EWK2TextCheckerTest::resetCallbacksExecutionStats):
(EWK2TextCheckerTest::onTimeout):
(EWK2TextCheckerTest::onSettingChange):
(EWK2TextCheckerTest::onSpellDocumentTag):
(EWK2TextCheckerTest::onSpellDocumentTagClose):
(EWK2TextCheckerTest::onSpellingCheck):
(EWK2TextCheckerTest::onSpellingForKnownWord):
(EWK2TextCheckerTest::onWordGuesses):
(EWK2TextCheckerTest::onWordLearn):
(EWK2TextCheckerTest::onWordIgnore):
(EWK2TextCheckerTest::findContextMenuItem):
(EWK2TextCheckerTest::checkCorrectnessOfSpellingItems):
(EWK2TextCheckerTest::toogleCheckSpellingWhileTyping):
(EWK2TextCheckerTest::checkClientSuggestionsForWord):
(EWK2TextCheckerTest::selectLearnSpelling):
(EWK2TextCheckerTest::selectIgnoreSpelling):
(EWK2TextCheckerTest::countContextMenuItems):
(EWK2TextCheckerTest::clickButton):
(EWK2TextCheckerTest::showContextMenu):
(EWK2TextCheckerTest::selectFirstWord):
Jul 17, 2013:
- 11:36 PM Changeset in webkit [152830] by
-
- 2 edits in trunk/Source/WebInspectorUI
Web Inspector: Fix a typo in WebInspector.loaded
https://bugs.webkit.org/show_bug.cgi?id=118834
Patch by Seokju Kwon <Seokju Kwon> on 2013-07-17
Reviewed by Timothy Hatcher.
- UserInterface/Main.js:
(WebInspector.loaded):
- 10:16 PM Changeset in webkit [152829] by
-
- 8 edits2 adds in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: Add a phase to create loop pre-headers
https://bugs.webkit.org/show_bug.cgi?id=118778
Reviewed by Oliver Hunt.
Add a loop pre-header creation phase. Any loop that doesn't already have
just one predecessor that isn't part of the loop has a pre-header
prepended. All non-loop predecessors then jump to that pre-header.
Also fix a handful of bugs:
- DFG::Analysis should set m_valid before running the analysis, since that makes it easier to use ASSERT(m_valid) in the analysis' methods, which may be called by the analysis before the analysis completes. NaturalLoops does this with loopsOf().
- NaturalLoops::headerOf() was missing a check for innerMostLoopOf() returning 0, since that'll happen if the block isn't in any loop.
- Change BlockInsertionSet to dethread the graph, since anyone using it will want to do so.
- Change dethreading to ignore SSA form graphs.
This also adds NaturalLoops::belongsTo(), which I always used in the
pre-header creation phase. I didn't end up using it but I'll probably use
it in the near future.
- JavaScriptCore.xcodeproj/project.pbxproj:
- dfg/DFGAnalysis.h:
(JSC::DFG::Analysis::computeIfNecessary):
- dfg/DFGBlockInsertionSet.cpp:
(JSC::DFG::BlockInsertionSet::execute):
- dfg/DFGCriticalEdgeBreakingPhase.cpp:
(JSC::DFG::CriticalEdgeBreakingPhase::breakCriticalEdge):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dethread):
- dfg/DFGLoopPreHeaderCreationPhase.cpp: Added.
(DFG):
(LoopPreHeaderCreationPhase):
(JSC::DFG::LoopPreHeaderCreationPhase::LoopPreHeaderCreationPhase):
(JSC::DFG::LoopPreHeaderCreationPhase::run):
(JSC::DFG::performLoopPreHeaderCreation):
- dfg/DFGLoopPreHeaderCreationPhase.h: Added.
(DFG):
- dfg/DFGNaturalLoops.h:
(NaturalLoop):
(JSC::DFG::NaturalLoops::headerOf):
(JSC::DFG::NaturalLoops::innerMostLoopOf):
(JSC::DFG::NaturalLoops::innerMostOuterLoop):
(JSC::DFG::NaturalLoops::belongsTo):
(NaturalLoops):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
- 9:38 PM Changeset in webkit [152828] by
-
- 7 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: Rationalize Node::replacement
https://bugs.webkit.org/show_bug.cgi?id=118774
Reviewed by Oliver Hunt.
- Clearing of replacements is now done in Graph::clearReplacements().
- New nodes now have replacement set to 0.
- Node::replacement is now part of a 'misc' union. I'll be putting at least one other field into that union as part of LICM work (see https://bugs.webkit.org/show_bug.cgi?id=118749).
- dfg/DFGCPSRethreadingPhase.cpp:
(JSC::DFG::CPSRethreadingPhase::run):
(JSC::DFG::CPSRethreadingPhase::freeUnnecessaryNodes):
(JSC::DFG::CPSRethreadingPhase::canonicalizeGetLocalFor):
- dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::run):
(JSC::DFG::CSEPhase::setReplacement):
(JSC::DFG::CSEPhase::performBlockCSE):
- dfg/DFGGraph.cpp:
(DFG):
(JSC::DFG::Graph::clearReplacements):
- dfg/DFGGraph.h:
(JSC::DFG::Graph::performSubstitutionForEdge):
(Graph):
- dfg/DFGNode.h:
(JSC::DFG::Node::Node):
- dfg/DFGSSAConversionPhase.cpp:
(JSC::DFG::SSAConversionPhase::run):
- 7:13 PM Changeset in webkit [152827] by
-
- 4 edits in trunk/Source/WebCore
Introduce toSVGInlineFlowBox() and use it
https://bugs.webkit.org/show_bug.cgi?id=118794
Reviewed by Andreas Kling.
As a step to change static_cast with toSVGXXX, static_cast<SVGInlineFlowBox*> can
be changed with toSVGInlineFlowBox().
Blink merge from https://src.chromium.org/viewvc/blink?view=rev&revision=154385
No new tests, no behavior change.
- rendering/svg/SVGInlineFlowBox.cpp:
(WebCore::SVGInlineFlowBox::paintSelectionBackground):
- rendering/svg/SVGInlineFlowBox.h:
(WebCore::toSVGInlineFlowBox):
- rendering/svg/SVGRootInlineBox.cpp:
(WebCore::SVGRootInlineBox::paint):
(WebCore::SVGRootInlineBox::layoutCharactersInTextBoxes):
(WebCore::SVGRootInlineBox::layoutChildBoxes):
- 7:12 PM Changeset in webkit [152826] by
-
- 4 edits in trunk/Source/WebCore
Use toSVGMarkerElement() instead of static_cast<>
https://bugs.webkit.org/show_bug.cgi?id=118800
Reviewed by Andreas Kling.
Though there is toSVGMarkerElement(), some files still use static_cast<SVGMarkerElement*>.
To remove all static_cast<> use, we need to change argument from SVGElement to Node.
No new tests, no behavior changes.
- rendering/svg/RenderSVGResourceMarker.cpp:
(WebCore::RenderSVGResourceMarker::referencePoint):
(WebCore::RenderSVGResourceMarker::angle):
(WebCore::RenderSVGResourceMarker::markerTransformation):
(WebCore::RenderSVGResourceMarker::viewportTransform):
(WebCore::RenderSVGResourceMarker::calcViewport):
- rendering/svg/RenderSVGResourceMarker.h:
(WebCore::RenderSVGResourceMarker::markerUnits):
- svg/SVGMarkerElement.h:
(WebCore::toSVGMarkerElement):
- 6:02 PM Changeset in webkit [152825] by
-
- 3 edits2 adds in trunk
Dereference null pointer crash in Length::decrementCalculatedRef()
https://bugs.webkit.org/show_bug.cgi?id=118686
Patch by Jacky Jiang <zhajiang@blackberry.com> on 2013-07-17
Reviewed by Simon Fraser.
Source/WebCore:
Length(Calculated) won't insert any CalculationValue to CalculationValueHandleMap;
therefore, we dereference null CalculationValue pointer when the temporary
Length object goes out of the scope.
Length(Calculated) is not allowed as it doesn't make sense that we construct
a Calculated Length object with uninitialized calc expression.
The code just wants to blend with zero. To fix the bug, we can just blend
with Length(0, Fixed) here as we currently can blend different type units
and zero has the same behavior regardless of unit.
Test: transitions/transition-transform-translate-calculated-length-crash.html
- platform/graphics/transforms/TranslateTransformOperation.cpp:
(WebCore::TranslateTransformOperation::blend):
LayoutTests:
- transitions/transition-transform-translate-calculated-length-crash-expected.txt: Added.
- transitions/transition-transform-translate-calculated-length-crash.html: Added.
- 5:43 PM Changeset in webkit [152824] by
-
- 18 edits in trunk
Update blocked/missing plug-in UI
https://bugs.webkit.org/show_bug.cgi?id=118347
<rdar://problem/14209318>
Reviewed by Sam Weinig.
- WebCore.exp.in:
Export RenderEmbeddedObject::setPluginUnavailabilityReasonWithDescription.
- rendering/RenderEmbeddedObject.cpp:
(WebCore::replacementTextRoundedRectPressedColor):
(WebCore::replacementTextRoundedRectColor):
(WebCore::replacementTextColor):
Change colors to new design and add some more constants.
(WebCore::shouldUnavailablePluginMessageBeButton): Added.
(WebCore::RenderEmbeddedObject::setPluginUnavailabilityReasonWithDescription): Added.
(WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason):
Call through to the -WithDescription variant.
(WebCore::RenderEmbeddedObject::paintReplaced):
Fill the background, and otherwise match the new design.
(WebCore::addReplacementArrowPath):
Add an arrow to the given path, inside the given rect.
(WebCore::RenderEmbeddedObject::getReplacementTextGeometry):
Add a 1px padding to the bottom of the text.
Add a circle and an arrow into the indicator as per the new design.
(WebCore::RenderEmbeddedObject::isInUnavailablePluginIndicator):
Hit-test the indicator arrow as well; otherwise, the fact that the arrow
is a hole in the path means it won't be hit.
- rendering/RenderEmbeddedObject.h:
- Platform/CoreIPC/HandleMessage.h:
(CoreIPC::callMemberFunction):
Add a 6 argument -> 4 reply message handler.
(It seems that FindPlugin is getting a little out of hand.)
- Shared/APIClientTraits.cpp:
- Shared/APIClientTraits.h:
- UIProcess/API/C/WKPage.h:
- UIProcess/WebLoaderClient.cpp:
(WebKit::WebLoaderClient::pluginLoadPolicy):
- UIProcess/WebLoaderClient.h:
Add an unavailability description out-argument to a new version of
pluginLoadPolicy, so clients can override the text of the unavailable
plugin indicator. Bump the WKPageLoaderClient version and update APIClientTraits.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
Plumb the unavailability description through to the WebProcess via
the FindPlugin message.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createPlugin):
Acquire the unavailability description from the client
(via FindPlugin) and hand it to the RenderEmbeddedObject.
- MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController awakeFromNib]):
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::createWebViewWithOptions):
Match new WKPageLoaderClient entry.
- 5:35 PM Changeset in webkit [152823] by
-
- 2 edits in trunk/Websites/planet.webkit.org
Another attempt to make planet cron job happy
- 5:30 PM Changeset in webkit [152822] by
-
- 2 edits in trunk/LayoutTests
Skip crashing MathML tests while waiting for a fix for
https://bugs.webkit.org/show_bug.cgi?id=118601
Unreviewed.
- platform/mac/TestExpectations:
- 5:23 PM Changeset in webkit [152821] by
-
- 5 edits in trunk/Source/ThirdParty/ANGLE
Made a repeatable process for updating ANGLE that does not include manually editing any files.
https://bugs.webkit.org/show_bug.cgi?id=118815
Reviewed by Dean Jackson.
- src/compiler/glslang.y:
- src/compiler/glslang_lex.cpp:
- src/compiler/glslang_tab.cpp:
- src/compiler/glslang_tab.h: Put YYLTYPE definition in %union instead of prologue and ran Bison.
- 4:54 PM Changeset in webkit [152820] by
-
- 2 edits in tags/Safari-537.51.1/Source/JavaScriptCore
Rollout of r152600. <rdar://problem/14474400>
- 4:53 PM Changeset in webkit [152819] by
-
- 2 edits in branches/safari-537-branch/Source/JavaScriptCore
Rollout of r152600. <rdar://problem/14474400>
- 4:43 PM Changeset in webkit [152818] by
-
- 3 edits in trunk/Source/JavaScriptCore
Unreviewed, fix 32-bit after http://trac.webkit.org/changeset/152813
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewFunctionNoCheck):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- 4:41 PM Changeset in webkit [152817] by
-
- 2 edits in trunk/Source/JavaScriptCore
API tests should test for JSStringCreateWithCFString with empty string
https://bugs.webkit.org/show_bug.cgi?id=118819
Reviewed by Mark Hahnenberg.
- API/tests/testapi.c:
(main): Test!
- 4:37 PM Changeset in webkit [152816] by
-
- 3 edits in trunk/Source/WTF
Add a thread safety assertion when creating an AtomicString from a StringImpl
https://bugs.webkit.org/show_bug.cgi?id=118637
Reviewed by Sam Weinig.
The goal is to prevent this kind of use:
-Someone create a String from a StringImpl.
-At some point, the string becomes atomic.
-Later, when the string only has one ref, its ownership is 'passed' to an other thread
without checking String::isSafeToSendToAnotherThread().
-In the thread B, an AtomicString is created from the String.
->The AtomicString's StringImpl returned is not in the current thread string table.
- wtf/text/AtomicString.cpp:
(WTF::AtomicString::isInAtomicStringTable):
- wtf/text/AtomicString.h:
(WTF::AtomicString::add):
- 4:34 PM Changeset in webkit [152815] by
-
- 2 edits in trunk/Source/WTF
Simplify AtomicString::lower()
https://bugs.webkit.org/show_bug.cgi?id=118719
<rdar://problem/14452883>
Reviewed by Gavin Barraclough.
- wtf/text/AtomicString.cpp:
(WTF::AtomicString::lower): Previously, the code was using a copy constructor for two path
and one regular construction in another path.
Just put the StringImpl where it needs to be instead.
- 4:32 PM Changeset in webkit [152814] by
-
- 44 edits1 delete in trunk
Unreviewed, rolling out r152701, r152703, r152739, r152754,
and r152756.
http://trac.webkit.org/changeset/152701
http://trac.webkit.org/changeset/152703
http://trac.webkit.org/changeset/152739
http://trac.webkit.org/changeset/152754
http://trac.webkit.org/changeset/152756
https://bugs.webkit.org/show_bug.cgi?id=118821
this was a buggy fix and we're going to try something
different (Requested by thorton on #webkit).
Source/WebCore:
- CMakeLists.txt:
- DerivedSources.make:
- DerivedSources.pri:
- GNUmakefile.am:
- WebCore.exp.in:
- WebCore.vcxproj/WebCore.vcxproj:
- WebCore.vcxproj/WebCore.vcxproj.filters:
- WebCore.xcodeproj/project.pbxproj:
- css/CSSDefaultStyleSheets.cpp:
(WebCore::CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement):
- css/unavailablePlugIns.css: Removed.
- dom/EventListener.h:
- html/HTMLAppletElement.cpp:
(WebCore::HTMLAppletElement::updateWidget):
- html/HTMLPlugInElement.cpp:
(WebCore::HTMLPlugInElement::defaultEventHandler):
- html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):
- loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::createJavaAppletWidget):
- page/ChromeClient.h:
(WebCore::ChromeClient::shouldUnavailablePluginMessageBeButton):
- rendering/RenderEmbeddedObject.cpp:
(WebCore::replacementTextRoundedRectPressedColor):
(WebCore::RenderEmbeddedObject::RenderEmbeddedObject):
(WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason):
(WebCore::RenderEmbeddedObject::setUnavailablePluginIndicatorIsPressed):
(WebCore::RenderEmbeddedObject::paint):
(WebCore::RenderEmbeddedObject::paintReplaced):
(WebCore::RenderEmbeddedObject::getReplacementTextGeometry):
(WebCore::RenderEmbeddedObject::replacementTextRect):
(WebCore::RenderEmbeddedObject::isReplacementObscured):
(WebCore::RenderEmbeddedObject::layout):
(WebCore::RenderEmbeddedObject::isInUnavailablePluginIndicator):
(WebCore::shouldUnavailablePluginMessageBeButton):
(WebCore::RenderEmbeddedObject::handleUnavailablePluginIndicatorEvent):
(WebCore::RenderEmbeddedObject::getCursor):
(WebCore::RenderEmbeddedObject::canHaveChildren):
- rendering/RenderEmbeddedObject.h:
- rendering/RenderWidget.h:
Source/WebKit/mac:
- WebCoreSupport/WebChromeClient.h:
- WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::shouldUnavailablePluginMessageBeButton):
Source/WebKit2:
- Platform/CoreIPC/HandleMessage.h:
- Shared/APIClientTraits.cpp:
- Shared/APIClientTraits.h:
- UIProcess/API/C/WKPage.h:
- UIProcess/WebLoaderClient.cpp:
(WebKit::WebLoaderClient::pluginLoadPolicy):
- UIProcess/WebLoaderClient.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- WebProcess/Plugins/PluginProcessConnection.cpp:
(WebKit::PluginProcessConnection::didClose):
- WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::pluginProcessCrashed):
- WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::shouldUnavailablePluginMessageBeButton):
- WebProcess/WebCoreSupport/WebChromeClient.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createPlugin):
(WebKit::WebPage::canPluginHandleResponse):
Tools:
- MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController awakeFromNib]):
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::createWebViewWithOptions):
LayoutTests:
- editing/pasteboard/paste-noplugin-expected.txt:
- http/tests/security/contentSecurityPolicy/object-src-url-blocked-expected.txt:
- platform/mac/accessibility/plugin-expected.txt:
- 4:27 PM Changeset in webkit [152813] by
-
- 12 edits12 adds in trunk
DFG assumes that NewFunction will never pass its input through
https://bugs.webkit.org/show_bug.cgi?id=118798
Source/JavaScriptCore:
Reviewed by Sam Weinig.
Previously the DFG was assuming that NewFunction always returns a function. That's not
the case. It may return whatever was passed to it, if it wasn't passed SpecEmpty.
This fact needed to be wired through the compiler.
- dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::executeEffects):
- dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::makeTop):
- dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
- dfg/DFGOperations.cpp:
- dfg/DFGOperations.h:
- dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
- dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
LayoutTests:
Reviewed by Sam Weinig.
- fast/js/dfg-use-function-as-variable-expected.txt: Added.
- fast/js/dfg-use-function-as-variable-merge-structure-expected.txt: Added.
- fast/js/dfg-use-function-as-variable-merge-structure.html: Added.
- fast/js/dfg-use-function-as-variable-not-constant-expected.txt: Added.
- fast/js/dfg-use-function-as-variable-not-constant.html: Added.
- fast/js/dfg-use-function-as-variable-with-closure-expected.txt: Added.
- fast/js/dfg-use-function-as-variable-with-closure.html: Added.
- fast/js/dfg-use-function-as-variable.html: Added.
- fast/js/jsc-test-list:
- fast/js/script-tests/dfg-use-function-as-variable-merge-structure.js: Added.
(.x):
(run_tests):
- fast/js/script-tests/dfg-use-function-as-variable-not-constant.js: Added.
(run_tests.x):
(run_tests):
- fast/js/script-tests/dfg-use-function-as-variable-with-closure.js: Added.
(run_tests.x):
(run_tests.y):
(run_tests):
- fast/js/script-tests/dfg-use-function-as-variable.js: Added.
(run_tests.x):
(run_tests):
- 4:27 PM Changeset in webkit [152812] by
-
- 2 edits in trunk/Websites/planet.webkit.org
Correct webkit.org blog RSS address.
- 4:06 PM Changeset in webkit [152811] by
-
- 2 edits in branches/safari-537-branch/Source/JavaScriptCore
Merged r152600. <rdar://problem/14474400>
- 4:05 PM Changeset in webkit [152810] by
-
- 2 edits in tags/Safari-537.51.1/Source/JavaScriptCore
Merged r152600. <rdar://problem/14474400>
- 4:04 PM Changeset in webkit [152809] by
-
- 3 edits in trunk/LayoutTests
Unreviewed. Skip more failing WebGL tests on Mac.
- platform/mac-lion/TestExpectations:
- platform/mac/TestExpectations:
- 4:02 PM Changeset in webkit [152808] by
-
- 2 edits in trunk/LayoutTests
fullscreen/full-screen-iframe-with-max-width-height.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=118820
Unreviewed.
Label a flaky test as flaky
- platform/mac/TestExpectations:
- 3:14 PM Changeset in webkit [152807] by
-
- 3 edits in trunk/Source/JavaScriptCore
JSStringCreateWithCFString should not convert the empty string into the NULL string
https://bugs.webkit.org/show_bug.cgi?id=118816
Reviewed by Sam Weinig.
- API/JSStringRef.cpp:
(JSStringCreateWithUTF8CString): Removed an extraneous comment, which
a previous version of the patch made incorrect.
- API/JSStringRefCF.cpp:
(JSStringCreateWithCFString): Don't convert the empty string into the
null string.
- 3:08 PM Changeset in webkit [152806] by
-
- 2 edits in trunk/Source/WebCore
Optimize RenderLayerCompositor's OverlapMap
https://bugs.webkit.org/show_bug.cgi?id=118764
Reviewed by Tim Horton.
Overlap stack items can have RectLists with hundreds of rectangles.
This makes the linear search in OverlapMap::overlapsLayers() very slow.
Optimize by storing the bounding rect of the list of rects, and doing an early
check on that. This reduces time spent in RenderLayer::scrollTo() by 13% in some
content with lots of layers inside an overflow:scroll.
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers):
(WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer):
(WebCore::RenderLayerCompositor::OverlapMap::RectList::append):
(WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects):
- 3:05 PM Changeset in webkit [152805] by
-
- 2 edits in trunk/Source/WebKit2
[Mac] Crashes in CFURLGetBytes under WebProcess::updateActivePages()
https://bugs.webkit.org/show_bug.cgi?id=118814
<rdar://problem/14173389>
Reviewed by Brady Eidson.
Speculative fix. It's unclear how we end up with an invalid URL when committing
a load.
- WebProcess/mac/WebProcessMac.mm: (WebKit::WebProcess::updateActivePages): Added a null check.
- 2:48 PM Changeset in webkit [152804] by
-
- 5 edits in tags/Safari-537.51.1/Source
Versioning
- 2:22 PM Changeset in webkit [152803] by
-
- 2 edits in trunk/LayoutTests
Unreviewed gardening after r152800.
https://bugs.webkit.org/show_bug.cgi?id=118810.
CSS_SHAPES not yet supported on AppleWin port.
- platform/win/TestExpectations:
- 2:16 PM Changeset in webkit [152802] by
-
- 2 edits in trunk/LayoutTests
Unreviewed gardening.
Skip some tests on AppleWin port that requires AVFoundation, since it does not support it yet.
- platform/win/TestExpectations:
- 1:42 PM Changeset in webkit [152801] by
-
- 2 edits1 add in trunk/LayoutTests
Unreviewed. Rebaseline tests for AppleWin port after r152789.
- platform/win/editing/pasteboard/paste-noplugin-expected.txt: Added.
- platform/win/platform/win/plugins/draws-gradient-expected.txt:
- 1:31 PM Changeset in webkit [152800] by
-
- 9 edits5 copies202 moves6 adds in trunk/LayoutTests
[CSS Shapes][CSS Exclusions] Cleanup tests to reflect split between CSS Shapes and CSS Exclusions
https://bugs.webkit.org/show_bug.cgi?id=117164
Reviewed by Alexandru Chiculita.
Moving shapes tests from the fast/exclusions directory to the new fast/shapes directory.
In addition, some parsing tests which included both exclusions and shapes properties
have been split in order for each piece of functionality to sit within its own directory.
- fast/exclusions/parsing/script-tests/parsing-test-utils.js:
- fast/shapes/css-shapes-disabled-expected.txt: Added.
- fast/shapes/css-shapes-disabled.html: Added.
- fast/shapes/css-shapes-enabled-expected.txt: Added.
- fast/shapes/css-shapes-enabled.html: Added.
- fast/shapes/parsing/parsing-shape-inside-expected.txt: Added.
- fast/shapes/parsing/parsing-shape-inside.html: Added.
- fast/shapes/parsing/parsing-shape-lengths-expected.txt: Added.
- fast/shapes/parsing/parsing-shape-lengths.html: Added.
- fast/shapes/parsing/parsing-shape-margin-expected.txt: Added.
- fast/shapes/parsing/parsing-shape-margin.html: Added.
- fast/shapes/parsing/parsing-shape-outside-expected.txt: Added.
- fast/shapes/parsing/parsing-shape-outside.html: Added.
- fast/shapes/parsing/parsing-shape-padding-expected.txt: Added.
- fast/shapes/parsing/parsing-shape-padding.html: Added.
- fast/shapes/parsing/script-tests/parsing-shape-inside.js: Added.
- fast/shapes/parsing/script-tests/parsing-shape-lengths.js: Added.
- fast/shapes/parsing/script-tests/parsing-shape-margin.js: Added.
- fast/shapes/parsing/script-tests/parsing-shape-outside.js: Added.
- fast/shapes/parsing/script-tests/parsing-shape-padding.js: Added.
- fast/shapes/parsing/script-tests/parsing-test-utils.js: Added.
- fast/shapes/resources/multi-segment-polygon.js: Added.
- fast/shapes/resources/rounded-rectangle.js: Added.
- fast/shapes/resources/simple-polygon.js: Added.
- fast/shapes/resources/simple-rectangle.js: Added.
- fast/shapes/resources/subpixel-utils.js: Added.
- fast/shapes/shape-inside/shape-inside-animation-expected.txt: Added.
- fast/shapes/shape-inside/shape-inside-animation.html: Added.
- fast/shapes/shape-inside/shape-inside-bottom-edge-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-bottom-edge.html: Added.
- fast/shapes/shape-inside/shape-inside-box-sizing-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-box-sizing.html: Added.
- fast/shapes/shape-inside/shape-inside-circle-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-circle-padding-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-circle-padding.html: Added.
- fast/shapes/shape-inside/shape-inside-circle.html: Added.
- fast/shapes/shape-inside/shape-inside-coincident-vertices-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-coincident-vertices.html: Added.
- fast/shapes/shape-inside/shape-inside-collinear-vertices-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-collinear-vertices.html: Added.
- fast/shapes/shape-inside/shape-inside-counterclockwise-polygon-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-counterclockwise-polygon.html: Added.
- fast/shapes/shape-inside/shape-inside-dynamic-nested-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-dynamic-nested.html: Added.
- fast/shapes/shape-inside/shape-inside-dynamic-shape-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-dynamic-shape.html: Added.
- fast/shapes/shape-inside/shape-inside-dynamic-text-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-dynamic-text.html: Added.
- fast/shapes/shape-inside/shape-inside-ellipse-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-ellipse-padding-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-ellipse-padding.html: Added.
- fast/shapes/shape-inside/shape-inside-ellipse.html: Added.
- fast/shapes/shape-inside/shape-inside-empty-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-empty-segments-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-empty-segments.html: Added.
- fast/shapes/shape-inside/shape-inside-empty.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-001-horizontal-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-001-horizontal.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-001-vertical-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-001-vertical.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-002-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-002.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-003-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-003.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-004-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-004.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-reflex-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-first-fit-reflex.html: Added.
- fast/shapes/shape-inside/shape-inside-floats-simple-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-floats-simple.html: Added.
- fast/shapes/shape-inside/shape-inside-inline-elements-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-inline-elements.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-blocks-dynamic-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-blocks-dynamic.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-blocks-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-blocks-vertical-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-blocks-vertical.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-blocks.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-segments-001-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-segments-001.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-segments-002-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-segments-002.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-segments-003-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-segments-003.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-segments-004-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-multiple-segments-004.html: Added.
- fast/shapes/shape-inside/shape-inside-on-nested-container-with-unresolved-height-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-on-nested-container-with-unresolved-height.html: Added.
- fast/shapes/shape-inside/shape-inside-outside-shape-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-outside-shape.html: Added.
- fast/shapes/shape-inside/shape-inside-overflow-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-overflow-fixed-dimensions-block-content-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-overflow-fixed-dimensions-block-content.html: Added.
- fast/shapes/shape-inside/shape-inside-overflow-fixed-dimensions-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-overflow-fixed-dimensions.html: Added.
- fast/shapes/shape-inside/shape-inside-overflow.html: Added.
- fast/shapes/shape-inside/shape-inside-partial-fill-001-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-partial-fill-001.html: Added.
- fast/shapes/shape-inside/shape-inside-partial-fill-002-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-partial-fill-002.html: Added.
- fast/shapes/shape-inside/shape-inside-percentage-auto-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-percentage-auto.html: Added.
- fast/shapes/shape-inside/shape-inside-percentage-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-percentage.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-layout-expected.txt: Added.
- fast/shapes/shape-inside/shape-inside-polygon-layout.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-padding-001-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-padding-001.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-padding-002-expected.txt: Added.
- fast/shapes/shape-inside/shape-inside-polygon-padding-002.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-padding-003-expected.txt: Added.
- fast/shapes/shape-inside/shape-inside-polygon-padding-003.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-rectangle-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-rectangle.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-zoom-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-polygon-zoom.html: Added.
- fast/shapes/shape-inside/shape-inside-rectangle-padding-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rectangle-padding.html: Added.
- fast/shapes/shape-inside/shape-inside-rectilinear-polygon-001-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rectilinear-polygon-001.html: Added.
- fast/shapes/shape-inside/shape-inside-rectilinear-polygon-002-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rectilinear-polygon-002.html: Added.
- fast/shapes/shape-inside/shape-inside-rectilinear-polygon-003-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rectilinear-polygon-003.html: Added.
- fast/shapes/shape-inside/shape-inside-rectilinear-polygon-004-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rectilinear-polygon-004.html: Added.
- fast/shapes/shape-inside/shape-inside-recursive-layout-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-recursive-layout.html: Added.
- fast/shapes/shape-inside/shape-inside-regular-polygon16-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-regular-polygon16.html: Added.
- fast/shapes/shape-inside/shape-inside-regular-polygon8-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-regular-polygon8.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-001-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-001.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-002-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-002.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-003-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-003.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-004-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-004.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-fit-001-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-fit-001.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-fit-002-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-fit-002.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-fit-003-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-fit-003.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-large-radius-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-large-radius.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-padding-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-rounded-rectangle-padding.html: Added.
- fast/shapes/shape-inside/shape-inside-shape-logical-top-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-shape-logical-top.html: Added.
- fast/shapes/shape-inside/shape-inside-sibling-block-dimension-change-needs-relayout-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-sibling-block-dimension-change-needs-relayout.html: Added.
- fast/shapes/shape-inside/shape-inside-simple-polygon-001-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-simple-polygon-001.html: Added.
- fast/shapes/shape-inside/shape-inside-simple-polygon-002-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-simple-polygon-002.html: Added.
- fast/shapes/shape-inside/shape-inside-simple-polygon-003-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-simple-polygon-003.html: Added.
- fast/shapes/shape-inside/shape-inside-simple-polygon-004-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-simple-polygon-004.html: Added.
- fast/shapes/shape-inside/shape-inside-subsequent-blocks-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-subsequent-blocks.html: Added.
- fast/shapes/shape-inside/shape-inside-text-align-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-text-align.html: Added.
- fast/shapes/shape-inside/shape-inside-text-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-text.html: Added.
- fast/shapes/shape-inside/shape-inside-vertical-text-expected.html: Added.
- fast/shapes/shape-inside/shape-inside-vertical-text.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-diamond-margin-polygon-expected.txt: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-diamond-margin-polygon.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-bottom-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-bottom.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-left-expected.txt: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-left.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-right-expected.txt: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-right.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-left-margin-polygon-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-left-margin-polygon.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-right-margin-polygon-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-right-margin-polygon.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-rounded-rectangle-large-radius-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-rounded-rectangle-large-radius.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-circle-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-circle.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-ellipse-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-ellipse.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-inset-rectangle-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-inset-rectangle-percentage-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-inset-rectangle-percentage.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-inset-rectangle.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-polygon-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-polygon.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rectangle-horizontal-multiple-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rectangle-horizontal-multiple.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rectangle-percentage-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rectangle-percentage.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-inset-rectangle-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-inset-rectangle.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-001-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-001.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-002-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-002.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-003-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-simple-rounded-rectangle-003.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-stacked-expected.html: Added.
- fast/shapes/shape-outside-floats/shape-outside-floats-stacked.html: Added.
- 12:53 PM Changeset in webkit [152799] by
-
- 5 edits3 copies in branches/safari-537-branch
Merged r152742. <rdar://problem/14202134>
- 12:52 PM Changeset in webkit [152798] by
-
- 5 edits3 copies in tags/Safari-537.51.1
Merged r152742. <rdar://problem/14202134>
- 12:49 PM Changeset in webkit [152797] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r152740. <rdar://problem/14300350>
- 12:48 PM Changeset in webkit [152796] by
-
- 2 edits in tags/Safari-537.51.1/Source/WebKit2
Merged r152740. <rdar://problem/14300350>
- 12:31 PM Changeset in webkit [152795] by
-
- 8 edits in trunk/Source/WebKit2
Unreviewed, rolling out r152786 and r152789.
http://trac.webkit.org/changeset/152786
http://trac.webkit.org/changeset/152789
https://bugs.webkit.org/show_bug.cgi?id=118807
overly platform specific and dirty API (and Sam says no)
(Requested by thorton on #webkit).
- WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
- WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
- WebProcess/WebPage/PageOverlay.cpp:
- WebProcess/WebPage/PageOverlay.h:
- WebProcess/WebPage/WebPage.cpp:
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
- 12:24 PM Changeset in webkit [152794] by
-
- 4 edits in trunk/Source/WebCore
[CSS Shapes] Port refactoring of shape-outside code from Blink
https://bugs.webkit.org/show_bug.cgi?id=118757
Patch by Bem Jones-Bey <Bem Jones-Bey> on 2013-07-17
Reviewed by Dean Jackson.
Refactor the left and right offset methods to reduce the number of
arguments by splitting the methods into smaller methods. This
refactoring was requested as part of porting support for stacked
floats with shape-outside to Blink.
Also add a variable when calling computeSegmentsForLine to make it
more readable and easier to follow the coordinate system change.
No new tests, no behavior change.
- rendering/RenderBlock.cpp:
(WebCore::RenderBlock::computeLogicalLocationForFloat): Update to use
the refactored IgnoringShapeOutside methods.
(WebCore::RenderBlock::logicalLeftFloatOffsetForLine): New method to
compute the offset contributed by left floats.
(WebCore::RenderBlock::adjustLogicalLeftOffsetForLine): New method to
compute misc adjustments to the left offset.
(WebCore::RenderBlock::logicalRightFloatOffsetForLine): New method to
compute the offset contributed by right floats.
(WebCore::RenderBlock::adjustLogicalRightOffsetForLine): New method to
compute misc adjustments to the right offset.
- rendering/RenderBlock.h:
(WebCore::RenderBlock::logicalRightOffsetForLine): Implement original
method in terms of the float offset computation method and the
offset adjustment method. This method takes into account the
shape-outside on any floats when computing the offset.
(WebCore::RenderBlock::logicalLeftOffsetForLine): Ditto.
(WebCore::RenderBlock::logicalRightOffsetForLineIgnoringShapeOutside):
Compute the right offset as if there was no shape-outside on any
of the floats.
(WebCore::RenderBlock::logicalLeftOffsetForLineIgnoringShapeOutside):
Compute the left offset as if there was no shape-outside on any
of the floats.
- rendering/RenderBlockLineLayout.cpp:
(WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded): Update
to use a variable to make the calls to computeSegmentsForLine more
explicit about the coordinate system conversion.
- 11:46 AM Changeset in webkit [152793] by
-
- 7 edits2 adds in trunk
Wrong linebox height, when block element parent has vertical-align property defined.
https://bugs.webkit.org/show_bug.cgi?id=118245
Patch by Zalan Bujtas <Alan Bujtas> on 2013-07-17
Reviewed by David Hyatt.
Do not push the current element to the next, when it is still considered empty, even with
some object(s) in front. Behave as if it was actually empty.
Inline elements like <span></span> generate such lines.
Source/WebCore:
Test: fast/css/empty-span-with-parent-div-and-vertical-align.html
- rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlock::LineBreaker::nextSegmentBreak):
LayoutTests:
- fast/css/empty-span-with-parent-div-and-vertical-align-expected.html: Added.
- fast/css/empty-span-with-parent-div-and-vertical-align.html: Added.
- platform/mac/fast/lists/inlineBoxWrapperNullCheck-expected.png: Rebased.
- platform/mac/fast/lists/inlineBoxWrapperNullCheck-expected.txt: Rebased.
- platform/mac/tables/mozilla/marvin/backgr_index-expected.png: Rebased.
- platform/mac/tables/mozilla/marvin/backgr_index-expected.txt: Rebased.
- 11:35 AM Changeset in webkit [152792] by
-
- 1 copy in tags/Safari-537.51.1
New Tag.
- 11:07 AM Changeset in webkit [152791] by
-
- 2 edits in trunk/Tools
Unreviewed, rolling out r151535.
http://trac.webkit.org/changeset/151535
https://bugs.webkit.org/show_bug.cgi?id=118804
Re-disable WinEWS tests (Requested by rfong on #webkit).
- Scripts/webkitpy/common/config/ews.json:
- 10:59 AM Changeset in webkit [152790] by
-
- 2 edits in trunk/LayoutTests
Unreviewed. Skip failing WebGL tests.
- platform/mac/TestExpectations:
- 10:38 AM Changeset in webkit [152789] by
-
- 2 edits in trunk/Source/WebKit2
AX: VoiceOver not working with data detection page overlays
https://bugs.webkit.org/show_bug.cgi?id=118680
Reviewed by Anders Carlsson.
Bump the API version after r152786.
- WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
- 10:21 AM Changeset in webkit [152788] by
-
- 11 edits in trunk
CSS selector list splitting should be by component, not by selector.
<http://webkit.org/b/118761>
<rdar://problem/14421609>
Reviewed by Antti Koivisto.
Source/WebCore:
Test (amended): fast/css/rule-selector-overflow.html
- css/CSSSelectorList.h:
- css/CSSSelectorList.cpp:
(WebCore::CSSSelectorList::CSSSelectorList):
(WebCore::CSSSelectorList::componentCount):
- css/CSSStyleRule.cpp:
(WebCore::CSSStyleRule::setSelectorText):
Renamed CSSSelectorList::length() to componentCount() and made it public.
- css/RuleSet.h:
maximumSelectorCount => maximumSelectorComponentCount
- css/StyleRule.cpp:
(WebCore::StyleRule::splitIntoMultipleRulesWithMaximumSelectorComponentCount):
Make the splits after accumulating 'maximumSelectorComponentCount' components.
- css/StyleRule.h:
- css/StyleSheetContents.cpp:
(WebCore::StyleSheetContents::parserAppendRule):
splitIntoMultipleRulesWithMaximumSelectorCount => splitIntoMultipleRulesWithMaximumSelectorComponentCount
LayoutTests:
Added more cases to the already existing selector list splitting test.
- fast/css/rule-selector-overflow-expected.txt:
- fast/css/rule-selector-overflow.html:
- 10:10 AM Changeset in webkit [152787] by
-
- 3 edits in trunk/Source/WebKit2
YouTube webcam capture (Flash Plug-in) in Safari can't see built-in camera
https://bugs.webkit.org/show_bug.cgi?id=118787
<rdar://problem/14418799>
Patch by Simon Cooper <scooper@apple.com> on 2013-07-17
Reviewed by Alexey Proskuryakov.
Add support for built-in cameras, including the original iSight.
- Resources/PlugInSandboxProfiles/com.apple.WebKit.plugin-common.sb:
- Resources/PlugInSandboxProfiles/com.macromedia.Flash Player.plugin.sb:
- 9:44 AM Changeset in webkit [152786] by
-
- 8 edits in trunk/Source/WebKit2
AX: VoiceOver not working with data detection page overlays
https://bugs.webkit.org/show_bug.cgi?id=118680
Reviewed by Tim Horton.
Expose API methods so that a client implementing data detectors is able to respond
to the needs of accessibility clients like VoiceOver.
- WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
(PageOverlayClientImpl::supportsDataDetection):
(PageOverlayClientImpl::dataDetectorExistsAtPoint):
(PageOverlayClientImpl::dataDetectorCopyTypeAtPoint):
(PageOverlayClientImpl::showDataDetectorMenuAtPoint):
- WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:
- WebProcess/WebPage/PageOverlay.cpp:
(WebKit::PageOverlay::supportsDataDetection):
(WebKit::PageOverlay::dataDetectorExistsAtPoint):
(WebKit::PageOverlay::dataDetectorCopyTypeAtPoint):
(WebKit::PageOverlay::dataDetectorOpenMenuAtPoint):
- WebProcess/WebPage/PageOverlay.h:
(WebKit::PageOverlay::Client::supportsDataDetection):
(WebKit::PageOverlay::Client::dataDetectorExistsAtPoint):
(WebKit::PageOverlay::Client::dataDetectorCopyTypeAtPoint):
(WebKit::PageOverlay::Client::showDataDetectorMenuAtPoint):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::pageOverlayOpenDataDetectorMenuAtPoint):
(WebKit::WebPage::pageOverlayDataDetectorCopyTypeAtPoint):
(WebKit::WebPage::pageOverlayDataDetectorExistsAtPoint):
(WebKit::WebPage::pageOverlaySupportsDataDetection):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:
(-[WKAccessibilityWebPageObject accessibilityParameterizedAttributeNames]):
(-[WKAccessibilityWebPageObject _convertScreenPointToWindow:]):
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):
- 9:40 AM Changeset in webkit [152785] by
-
- 5 edits in trunk
[Mac] REGRESSION(r152685): svg/custom/xlink-prefix-in-attributes.html failed unexpectedly
https://bugs.webkit.org/show_bug.cgi?id=118701
Reviewed by Ryosuke Niwa.
Source/WebCore:
Use the computed attribute prefix, otherwise href being in xlink namespace but not having any prefix
will cause outputting the xlink namespace in appendNamespace.
Patch fixes svg/custom/xlink-prefix-in-attributes.html.
- editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::appendAttribute):
LayoutTests:
- platform/mac/TestExpectations:
- platform/qt/TestExpectations:
- 9:26 AM Changeset in webkit [152784] by
-
- 8 edits in trunk/Source/JavaScriptCore
Naming convention on createInvalidParamError is incorrect.
https://bugs.webkit.org/show_bug.cgi?id=118756
Patch by Chris Curtis <chris_curtis@apple.com> on 2013-07-17
Reviewed by Geoffrey Garen.
Changed the naming of createInvalidParamError to createInvalidParameterError.
This corrects the naming convention for the function listed in the WebKit code styling.
- interpreter/Interpreter.cpp:
(JSC::loadVarargs):
- jit/JITStubs.cpp:
(JSC::DEFINE_STUB_FUNCTION):
- llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
- runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::opIn):
- runtime/ExceptionHelpers.cpp:
(JSC::createInvalidParameterError):
- runtime/ExceptionHelpers.h:
- runtime/JSObject.cpp:
(JSC::JSObject::hasInstance):
- 9:15 AM Changeset in webkit [152783] by
-
- 3 edits2 adds in trunk
Regression: columnheader/rowheader roles not exposed correctly
https://bugs.webkit.org/show_bug.cgi?id=113628
Reviewed by Tim Horton.
Source/WebCore:
When we determine the row and column headers we look at the ARIA role being returned, but
since TableCell overrides the determineAccessibilityRole method, the ARIA role is never set.
Test: platform/mac/accessibility/aria-columnrowheaders.html
- accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::determineAccessibilityRole):
LayoutTests:
- platform/mac/accessibility/aria-columnrowheaders-expected.txt: Added.
- platform/mac/accessibility/aria-columnrowheaders.html: Added.
- 8:34 AM Changeset in webkit [152782] by
-
- 4 edits in trunk
[GTK] Make DRT obbey testRunner's addURLToRedirect
https://bugs.webkit.org/show_bug.cgi?id=118239
Patch by Simon Pena <simon.pena@samsung.com> on 2013-07-17
Reviewed by Gustavo Noronha Silva.
Tools:
Support testRunner's addURLToRedirect in GTK's DRT, so it redirects
to the proper URI when indicated.
- DumpRenderTree/gtk/DumpRenderTree.cpp:
(willSendRequestCallback):
LayoutTests:
Unskip http/tests/loading/cross-origin-XHR-willLoadRequest.html now that DRT obbeys
testRunner's addURLToRedirect.
- platform/gtk/TestExpectations:
- 8:23 AM WebKitGTK/WebKit2Roadmap edited by
- Brian to implement authentication dialog API (diff)
- 6:54 AM Changeset in webkit [152781] by
-
- 2 edits2 adds in trunk/LayoutTests
[Qt] Unreviewd gardening. Rebase and skip failing tests.
Patch by Gabor Abraham <abrhm@inf.u-szeged.hu> on 2013-07-17
- platform/qt-5.0-wk2/TestExpectations:
- platform/qt-5.0-wk2/fast/replaced/border-radius-clip-expected.png: Added.
- platform/qt-5.0-wk2/fast/replaced/border-radius-clip-expected.txt: Added.
- 3:27 AM Changeset in webkit [152780] by
-
- 23 edits1 add in trunk/Source/WebCore
Get rid of SVGPoint special case from the bindings generator
https://bugs.webkit.org/show_bug.cgi?id=118783
Reviewed by Kentaro Hara.
Get rid of SVGPoint special case from the bindings generator by adding a
new SVGPoint.h header that contains a typedef to FloatPoint.
Also use SVGPoint type in the implementation API for consistency with
the IDL.
No new tests, no behavior change.
- bindings/scripts/CodeGenerator.pm:
(SkipIncludeHeader):
- bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjMutablePoint):
(WebCore::jsTestObjImmutablePoint):
(WebCore::setJSTestObjMutablePoint):
(WebCore::setJSTestObjImmutablePoint):
(WebCore::jsTestObjPrototypeFunctionMutablePointFunction):
(WebCore::jsTestObjPrototypeFunctionImmutablePointFunction):
- bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::jsTestTypedefsPrototypeFunctionImmutablePointFunction):
- bindings/scripts/test/ObjC/DOMTestObj.mm:
(-[DOMTestObj mutablePoint]):
(-[DOMTestObj immutablePoint]):
(-[DOMTestObj mutablePointFunction]):
(-[DOMTestObj immutablePointFunction]):
- bindings/scripts/test/ObjC/DOMTestTypedefs.mm:
(-[DOMTestTypedefs immutablePointFunction]):
- rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::buildLocalToBorderBoxTransform):
- rendering/svg/SVGTextQuery.cpp:
(WebCore::SVGTextQuery::startPositionOfCharacter):
(WebCore::SVGTextQuery::endPositionOfCharacter):
(WebCore::SVGTextQuery::characterNumberAtPosition):
- rendering/svg/SVGTextQuery.h:
- svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::getPointAtLength):
- svg/SVGPathElement.h:
- svg/SVGPathTraversalStateBuilder.cpp:
(WebCore::SVGPathTraversalStateBuilder::currentPoint):
- svg/SVGPathTraversalStateBuilder.h:
- svg/SVGPathUtilities.cpp:
(WebCore::getPointAtLengthOfSVGPathByteStream):
- svg/SVGPathUtilities.h:
- svg/SVGPoint.h: Added.
- svg/SVGPointList.cpp:
(WebCore::SVGPointList::valueAsString):
- svg/SVGPointList.h:
- svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::createSVGPoint):
- svg/SVGSVGElement.h:
- svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::getStartPositionOfChar):
(WebCore::SVGTextContentElement::getEndPositionOfChar):
(WebCore::SVGTextContentElement::getCharNumAtPosition):
- svg/SVGTextContentElement.h:
- svg/SVGZoomEvent.cpp:
(WebCore::SVGZoomEvent::previousTranslate):
(WebCore::SVGZoomEvent::newTranslate):
- svg/SVGZoomEvent.h:
- 3:11 AM Changeset in webkit [152779] by
-
- 2 edits in trunk/Tools
Add a new find-resolved-bugs command to webkit-patch.
https://bugs.webkit.org/show_bug.cgi?id=118060
Patch by Gabor Abraham <abrhm@inf.u-szeged.hu> on 2013-07-17
Reviewed by Csaba Osztrogonác.
- Scripts/webkitpy/tool/commands/queries.py:
(PrintBaselines._platform_for_path):
(FindResolvedBugs):
(FindResolvedBugs.execute):
- 2:39 AM Changeset in webkit [152778] by
-
- 9 edits4 adds in trunk/Source/WebCore
[GStreamer] webkitwebsrc: use SubResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=73743
Reviewed by Philippe Normand.
- GNUmakefile.list.am: Add new files to compilation.
- PlatformEfl.cmake: Ditto.
- PlatformGTK.cmake: Ditto.
- loader/SubresourceLoader.h: Add getOrCreateReadBuffer() when
using SOUP.
- loader/cache/CachedRawResource.h:
- loader/cache/CachedRawResourceClient.h:
(WebCore::CachedRawResourceClient::getOrCreateReadBuffer): Added
to allow the client to allocate the read buffer.
- loader/cache/CachedResource.h:
(WebCore::CachedResource::getOrCreateReadBuffer):
- loader/soup/CachedRawResourceSoup.cpp: Added.
(WebCore::CachedRawResource::getOrCreateReadBuffer): Iterate the
clients until one returns a valid read buffer or return NULL to
fallback to the default read buffer.
- loader/soup/SubresourceLoaderSoup.cpp: Added.
(WebCore::SubresourceLoader::getOrCreateReadBuffer): Call
CachedResource::getOrCreateReadBuffer().
- platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(StreamingClient): Make this a CachedRawResourceClient.
(_WebKitWebSrcPrivate): Remove frame and resourceHandle and add a
cached resource handle.
(webKitWebSrcDispose): Clear the player pointer.
(webKitWebSrcStop): Remove the client from the cached resource.
(webKitWebSrcStart): Use CachedResourceLoader to schedule a
CachedRawResource load for the media without buffering the data.
(webKitWebSrcNeedDataMainCb): Call CachedResource::setDefersLoading.
(webKitWebSrcEnoughDataMainCb): Ditto.
(webKitWebSrcSetMediaPlayer): Simply update the player pointer.
(StreamingClient::responseReceived): Update to the
CachedRawResourceClient API.
(StreamingClient::dataReceived): Ditto.
(StreamingClient::getOrCreateReadBuffer): Ditto.
(StreamingClient::notifyFinished): Ditto.
- 2:16 AM Changeset in webkit [152777] by
-
- 1 edit30 adds54 deletes in trunk/LayoutTests
Replace MathML pixel tests by reftests.
https://bugs.webkit.org/show_bug.cgi?id=118599
Patch by Frédéric Wang <fred.wang@free.fr> on 2013-07-17
Reviewed by Chris Fleizach.
- attributes.xhtml is replaced by attributes*.html
- underover.xhtml, under.xhtml, sub.xhtml, sup.xhtml, over.xhtml and subsup.xhtml are replaced by scripts*.html and bug*.html.
- tokenElements.xhtml is replaced by replaced tokenElements-mathvariant.html
- mathml/presentation/attributes-background-color-expected.html: Added.
- mathml/presentation/attributes-background-color.html: Added.
- mathml/presentation/attributes-display-expected.html: Added.
- mathml/presentation/attributes-display.html: Added.
- mathml/presentation/attributes-mathsize-expected.html: Added.
- mathml/presentation/attributes-mathsize.html: Added.
- mathml/presentation/attributes-mathvariant-expected.html: Added.
- mathml/presentation/attributes-mathvariant.html: Added.
- mathml/presentation/attributes-style-expected-mismatch.html: Added.
- mathml/presentation/attributes-style.html: Added.
- mathml/presentation/attributes.xhtml: Removed.
- mathml/presentation/bug95015-expected.html: Added.
- mathml/presentation/bug95015.html: Added.
- mathml/presentation/bug95404-expected.html: Added.
- mathml/presentation/bug95404.html: Added.
- mathml/presentation/bug97990-expected.html: Added.
- mathml/presentation/bug97990.html: Added.
- mathml/presentation/over.xhtml: Removed.
- mathml/presentation/scripts-font-size-expected-mismatch.html: Added.
- mathml/presentation/scripts-font-size.html: Added.
- mathml/presentation/scripts-height-expected.html: Added.
- mathml/presentation/scripts-height.html: Added.
- mathml/presentation/scripts-mrow-expected.html: Added.
- mathml/presentation/scripts-mrow.html: Added.
- mathml/presentation/scripts-subsup-expected.html: Added.
- mathml/presentation/scripts-subsup.html: Added.
- mathml/presentation/scripts-underover-expected.html: Added.
- mathml/presentation/scripts-underover.html: Added.
- mathml/presentation/scripts-width-expected.html: Added.
- mathml/presentation/scripts-width.html: Added.
- mathml/presentation/sub.xhtml: Removed.
- mathml/presentation/subsup.xhtml: Removed.
- mathml/presentation/sup.xhtml: Removed.
- mathml/presentation/tokenElements-mathvariant-expected.html: Added.
- mathml/presentation/tokenElements-mathvariant.html: Added.
- mathml/presentation/tokenElements.xhtml: Removed.
- mathml/presentation/under.xhtml: Removed.
- mathml/presentation/underover.xhtml: Removed.
- 1:47 AM Changeset in webkit [152776] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2CookieManagerTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118721
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:
(compareHostNames):
(onCookiesChanged):
(EWK2CookieManagerTest::getAcceptPolicy):
(EWK2CookieManagerTest::getHostnamesWithCookies):
(EWK2CookieManagerTest::freeHostNames):
(EWK2CookieManagerTest::countHostnamesWithCookies):
(TEST_F):
- 1:40 AM Changeset in webkit [152775] by
-
- 2 edits in trunk/Source/WebCore
Remove unused member variable m_domURL from WorkerGlobalScope
https://bugs.webkit.org/show_bug.cgi?id=118784
Reviewed by Christophe Dumez.
WorkerContext::webkitURL() was removed in r107082, and this was the
only place where the member variable |m_domURL| in WorkerContext was
mutated. This variable is no longer needed and so it should be removed.
No behavior change.
- workers/WorkerGlobalScope.h:
- 1:37 AM Changeset in webkit [152774] by
-
- 13 edits in trunk
[CMake] Undefined references should be detected at build time
https://bugs.webkit.org/show_bug.cgi?id=110236
Patch by Balazs Kelemen <kbalazs@webkit.org> on 2013-07-16
Reviewed by Christophe Dumez.
.:
Pass the --no-undefined argument to the linker on platforms where it is available.
- Source/cmake/OptionsCommon.cmake:
Source/WebKit:
Add library dependencies that were not defined explicitly before.
- CMakeLists.txt:
- PlatformEfl.cmake:
Source/WebKit2:
Add library dependencies that were not defined explicitly before.
- CMakeLists.txt:
- PlatformEfl.cmake:
Tools:
Add library dependencies that were not defined explicitly before.
- DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
- TestWebKitAPI/CMakeLists.txt:
- WebKitTestRunner/CMakeLists.txt:
- 12:27 AM Changeset in webkit [152773] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2WindowFeaturesTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118780
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_window_features.cpp:
(EWK2WindowFeaturesTest::createDefaultWindow):
(EWK2WindowFeaturesTest::createWindow):
(TEST_F):
- 12:26 AM Changeset in webkit [152772] by
-
- 2 edits in trunk/LayoutTests
[CSS Shapes] Remove setCSSShapesEnabled(true) from shape-inside-on-first-region-inline-content-expected.html since it's no longer using shapes
https://bugs.webkit.org/show_bug.cgi?id=117952
Reviewed by Alexandru Chiculita.
- fast/regions/shape-inside/shape-inside-on-first-region-inline-content-expected.html:
- 12:25 AM Changeset in webkit [152771] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2ViewTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118779
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_view.cpp:
(EWK2ViewTest::onLoadFinishedForRedirection):
(EWK2ViewTest::serverCallbackNavigation):
(EWK2ViewTest::onFormAboutToBeSubmitted):
(EWK2ViewTest::fullScreenCallback):
(EWK2ViewTest::fullScreenExitCallback):
(EWK2ViewTest::checkAlert):
(EWK2ViewTest::checkConfirm):
(EWK2ViewTest::checkPrompt):
(EWK2ViewTest::onTextFound):
(EWK2ViewTest::onVibrate):
(EWK2ViewTest::onCancelVibration):
(EWK2ViewTest::loadVibrationHTMLString):
(EWK2ViewTest::onContentsSizeChangedPortrait):
(EWK2ViewTest::onContentsSizeChangedLandscape):
(EWK2ViewTest::PageContentsAsMHTMLCallback):
(EWK2ViewTest::PageContentsAsStringCallback):
(TEST_F):
- 12:23 AM Changeset in webkit [152770] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2StorageManagerTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118777
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_storage_manager.cpp:
(EWK2StorageManagerTest::OriginData::OriginData):
(EWK2StorageManagerTest::getStorageOriginsCallback):
(EWK2StorageManagerTest::timerCallback):
(EWK2StorageManagerTest::checkOrigin):
(TEST_F):
- 12:22 AM Changeset in webkit [152769] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2PopupMenuTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118775
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_popup_menu.cpp:
(EWK2PopupMenuTest::checkBasicPopupMenuItem):
(EWK2PopupMenuTest::selectItemAfterDelayed):
(EWK2PopupMenuTest::showPopupMenu):
(TEST_F):
- 12:20 AM Changeset in webkit [152768] by
-
- 3 edits2 adds in trunk
ASSERTION FAILED: layoutState->m_renderer == this in WebCore::RenderBlock::offsetFromLogicalTopOfFirstPage
https://bugs.webkit.org/show_bug.cgi?id=118587
Patch by Mihai Maerean <Mihai Maerean> on 2013-07-17
Reviewed by David Hyatt.
Source/WebCore:
The fix consists in not calling containingBlockLogicalHeightForPositioned for flow threads (in
RenderBox::availableLogicalHeightUsing) as it gets to handle the RenderView as it would have been flowed into
the flow thread.
Test: fast/regions/crash-div-outside-body-vertical-rl.html
- rendering/RenderBox.cpp:
(WebCore::RenderBox::availableLogicalHeightUsing):
LayoutTests:
- fast/regions/crash-div-outside-body-vertical-rl-expected.html: Added.
- fast/regions/crash-div-outside-body-vertical-rl.html: Added.
- 12:19 AM Changeset in webkit [152767] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2FileChooserRequestTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118773
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_file_chooser_request.cpp:
(EWK2FileChooserRequestTest::onFileChooserRequest):
(EWK2FileChooserRequestTest::compareStrings):
(EWK2FileChooserRequestTest::freeStringList):
(TEST_F):
- 12:18 AM Changeset in webkit [152766] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2FaviconDatabaseTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118772
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_favicon_database.cpp:
(EWK2FaviconDatabaseTest::serverCallback):
(EWK2FaviconDatabaseTest::requestFaviconData):
(TEST_F):
- 12:16 AM Changeset in webkit [152765] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2EinaSharedStringTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118771
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_eina_shared_string.cpp:
(EWK2EinaSharedStringTest::checkString):
(TEST_F):
- 12:15 AM Changeset in webkit [152764] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2DownloadJobTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118769
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_download_job.cpp:
(EWK2DownloadJobTest::fileExists):
(EWK2DownloadJobTest::serverCallback):
(EWK2DownloadJobTest::on_download_requested):
(EWK2DownloadJobTest::on_download_cancelled):
(EWK2DownloadJobTest::on_download_failed):
(EWK2DownloadJobTest::on_download_finished):
(TEST_F):
- 12:12 AM Changeset in webkit [152763] by
-
- 26 edits in trunk/Source
Use toHTMLMediaElement
https://bugs.webkit.org/show_bug.cgi?id=118727
Reviewed by Ryosuke Niwa.
To avoid direct use of static_cast, this patch uses toHTMLMediaElement for code cleanup.
Source/WebCore:
- bindings/js/JSHTMLMediaElementCustom.cpp:
(WebCore::JSHTMLMediaElement::setController):
- html/HTMLMediaElement.h:
(WebCore::toHTMLMediaElement):
- html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::insertedInto):
(WebCore::HTMLSourceElement::removedFrom):
- html/HTMLTrackElement.cpp:
(WebCore::HTMLTrackElement::removedFrom):
(WebCore::HTMLTrackElement::mediaElement):
- html/shadow/MediaControlElementTypes.cpp:
(WebCore::toParentMediaElement):
- loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::loadMediaPlayerProxyPlugin):
- page/FrameView.cpp:
(WebCore::FrameView::updateWidget):
- platform/efl/RenderThemeEfl.cpp:
(WebCore::RenderThemeEfl::paintMediaFullscreenButton):
(WebCore::RenderThemeEfl::paintMediaMuteButton):
(WebCore::RenderThemeEfl::paintMediaToggleClosedCaptionsButton):
- platform/graphics/wince/MediaPlayerProxy.cpp:
(WebCore::WebMediaPlayerProxy::initEngine):
(WebCore::WebMediaPlayerProxy::element):
- platform/gtk/RenderThemeGtk.cpp:
(WebCore::getMediaElementFromRenderObject):
- rendering/HitTestResult.cpp:
(WebCore::HitTestResult::mediaElement):
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration):
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForVideo):
- rendering/RenderMedia.cpp:
(WebCore::RenderMedia::mediaElement):
- rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintMediaSliderTrack):
- rendering/RenderThemeWinCE.cpp:
(WebCore::mediaElementParent):
- testing/Internals.cpp:
(WebCore::Internals::simulateAudioInterruption):
Source/WebKit/blackberry:
- Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::webContext):
(BlackBerry::WebKit::WebPage::notifyFullScreenVideoExited):
(BlackBerry::WebKit::WebPagePrivate::enterFullscreenForNode):
(BlackBerry::WebKit::WebPagePrivate::exitFullscreenForNode):
Source/WebKit/gtk:
- WebCoreSupport/ChromeClientGtk.cpp:
(WebKit::ChromeClient::enterFullscreenForNode):
(WebKit::ChromeClient::exitFullscreenForNode):
(WebKit::ChromeClient::enterFullScreenForElement):
(WebKit::ChromeClient::exitFullScreenForElement):
Source/WebKit/mac:
- WebView/WebView.mm:
(-[WebView _enterFullscreenForNode:WebCore::]):
Source/WebKit/win:
- WebView.cpp:
(WebView::enterFullscreenForNode):
- 12:11 AM Changeset in webkit [152762] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2AuthRequestTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118766
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_auth_request.cpp:
(EWK2AuthRequestTest::serverCallback):
(EWK2AuthRequestTest::onAuthenticationRequest):
(EWK2AuthRequestTest::onLoadFinished):
(TEST_F):
- 12:09 AM Changeset in webkit [152761] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2ContextMenuTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118767
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_context_menu.cpp:
(EWK2ContextMenuTest::checkBasicContextMenuItem):
(EWK2ContextMenuTest::customItemSelected):
(EWK2ContextMenuTest::showContextMenu):
(EWK2ContextMenuTest::showContextMenuForRemoveAndAppend):
(EWK2ContextMenuTest::showContextMenuForSubmenu):
(EWK2ContextMenuTest::hideContextMenu):
(TEST_F):
- 12:06 AM Changeset in webkit [152760] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2ContextTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118763
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_context.cpp:
(EWK2ContextTest::schemeRequestCallback):
(TEST_F):
- 12:05 AM Changeset in webkit [152759] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2DatabaseManagerTest should be defined by inheriting from EWK2UnitTestBase
https://bugs.webkit.org/show_bug.cgi?id=118726
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_database_manager.cpp:
(EWK2DatabaseManagerTest::OriginData::OriginData):
(EWK2DatabaseManagerTest::databaseOriginsCallback):
(EWK2DatabaseManagerTest::timerCallback):
(TEST_F):
- 12:03 AM Changeset in webkit [152758] by
-
- 2 edits in trunk/Source/WebKit2
[EFL][WK2] EWK2ColorPickerTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118762
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-17
Reviewed by Christophe Dumez.
It should be defined as relevant test class specific to each test file for more readability.
It could be helpful to remove unnecessary static methods.
- UIProcess/API/efl/tests/test_ewk2_color_picker.cpp:
(EWK2ColorPickerTest::onColorPickerDone):
(EWK2ColorPickerTest::setColorPickerColor):
(EWK2ColorPickerTest::showColorPicker):
(EWK2ColorPickerTest::hideColorPicker):
(EWK2ColorPickerTest::hideColorPickerByRemovingElement):
(TEST_F):
Jul 16, 2013:
- 11:43 PM Changeset in webkit [152757] by
-
- 4 edits in trunk/Source/WebCore
Remove Platform(EFL) guard from Widget::frameRectsChanged
https://bugs.webkit.org/show_bug.cgi?id=118782
Reviewed by Christophe Dumez.
Since r58487, Widget::frameRectsChanged was moved to cpp and guarded.
But we can move back to header because WebKit/Efl refactored related code in r145710.
No new tests, refactoring.
- platform/Widget.cpp: Removed platform guard and move frameRectsChangd() back to header.
- platform/Widget.h:
(WebCore::Widget::frameRectsChanged):
- platform/efl/WidgetEfl.cpp:
- 11:04 PM Changeset in webkit [152756] by
-
- 2 edits in trunk/Source/WebKit2
setPluginUnavailabilityReason can destroy renderObject before obscurity check
https://bugs.webkit.org/show_bug.cgi?id=118770
<rdar://problem/14462331>
Patch by Gordon Sheridan <gordon_sheridan@apple.com> on 2013-07-16
Reviewed by Tim Horton.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createPlugin):
Moved obscurity check to before renderObject is potentially destroyed.
- 10:34 PM Changeset in webkit [152755] by
-
- 43 edits1 move3 adds1 delete in trunk/Source
Source/ThirdParty/ANGLE: Update ANGLE from r1987 to r2426 while keeping these changes:
Keeping #if defined(_MSC_VER) around #pragma warning(disable: 4718) in DependencyGraph.cpp.
Keeping include khrplatform.h instead of KHR/khrplatform.h in ShaderLang.h.
Added static_casts in Intermediate.cpp to fix compiling on Mac.
Changed enum bit fields to just enums for GCC in Types.h to fix compiling for GTK.
Ran Bison on Mac after removing the unsupported %code tag (See diff uploaded to bug for details).
Added YYLTYPE definition to glslang_tab.h which would have been put there by the unsupported %code tag.
https://bugs.webkit.org/show_bug.cgi?id=118550
Reviewed by Dean Jackson.
- ANGLE.plist: Updated revision of ANGLE to 2426.
- ANGLE.xcodeproj/project.pbxproj:
- GNUmakefile.am:
- Target.pri:
Renamed DetectRecursion to DetectCallDepth and added builtin_symbol_table.
- include/GLSLANG/ShaderLang.h:
- src/common/version.h:
- src/compiler/BaseTypes.h:
(getQualifierString):
- src/compiler/Common.h:
- src/compiler/Compiler.cpp:
(TCompiler::TCompiler):
(TCompiler::Init):
(TCompiler::compile):
(TCompiler::detectCallDepth):
(TCompiler::enforceTimingRestrictions):
(TCompiler::limitExpressionComplexity):
- src/compiler/ConstantUnion.h:
(ConstantUnion::ConstantUnion):
- src/compiler/DetectCallDepth.cpp: Added.
(DetectCallDepth::FunctionNode::FunctionNode):
(DetectCallDepth::FunctionNode::getName):
(DetectCallDepth::FunctionNode::addCallee):
(DetectCallDepth::FunctionNode::detectCallDepth):
(DetectCallDepth::FunctionNode::reset):
(DetectCallDepth::DetectCallDepth):
(DetectCallDepth::~DetectCallDepth):
(DetectCallDepth::visitAggregate):
(DetectCallDepth::checkExceedsMaxDepth):
(DetectCallDepth::resetFunctionNodes):
(DetectCallDepth::detectCallDepthForFunction):
(DetectCallDepth::detectCallDepth):
(DetectCallDepth::findFunctionByName):
- src/compiler/DetectCallDepth.h: Added.
(DetectCallDepth::getInfoSink):
- src/compiler/DetectRecursion.cpp: Removed.
- src/compiler/DetectRecursion.h: Removed.
- src/compiler/Diagnostics.cpp:
(TDiagnostics::writeInfo):
- src/compiler/ForLoopUnroll.cpp:
(ForLoopUnroll::evaluateIntConstant):
- src/compiler/InfoSink.cpp:
(TInfoSinkBase::prefix):
(TInfoSinkBase::location):
(TInfoSinkBase::message):
- src/compiler/InfoSink.h:
- src/compiler/Initialize.cpp:
(TBuiltIns::initialize):
(IdentifyBuiltIns):
(InitExtensionBehavior):
- src/compiler/Intermediate.cpp: Updated and added static_casts to fix build errors on Mac.
(TIntermediate::addSymbol):
(TIntermediate::addBinaryMath):
(TIntermediate::addAssign):
(TIntermediate::addIndex):
(TIntermediate::addUnaryMath):
(TIntermediate::setAggregateOperator):
(TIntermediate::addConversion):
(TIntermediate::growAggregate):
(TIntermediate::makeAggregate):
(TIntermediate::addSelection):
(TIntermediate::addComma):
(TIntermediate::addConstantUnion):
(TIntermediate::addSwizzle):
(TIntermediate::addLoop):
(TIntermediate::addBranch):
(TIntermUnary::promote):
(TIntermBinary::promote):
(CompareStruct):
(CompareStructure):
(TIntermConstantUnion::fold):
(TIntermediate::promoteConstantUnion):
- src/compiler/OutputGLSL.cpp:
(TOutputGLSL::visitSymbol):
- src/compiler/OutputGLSL.h:
- src/compiler/OutputGLSLBase.cpp:
(TOutputGLSLBase::writeVariableType):
(TOutputGLSLBase::writeConstantUnion):
(TOutputGLSLBase::visitBinary):
(TOutputGLSLBase::visitAggregate):
(TOutputGLSLBase::getTypeName):
(TOutputGLSLBase::hashFunctionName):
(TOutputGLSLBase::structDeclared):
(TOutputGLSLBase::declareStruct):
- src/compiler/OutputGLSLBase.h:
- src/compiler/OutputHLSL.cpp:
(sh::OutputHLSL::OutputHLSL):
(sh::OutputHLSL::header):
(sh::OutputHLSL::visitSymbol):
(sh::OutputHLSL::visitBinary):
(sh::OutputHLSL::visitAggregate):
(sh::OutputHLSL::visitSelection):
(sh::OutputHLSL::visitLoop):
(sh::OutputHLSL::handleExcessiveLoop):
(sh::OutputHLSL::typeString):
(sh::OutputHLSL::initializer):
(sh::OutputHLSL::addConstructor):
(sh::OutputHLSL::writeConstantUnion):
(sh::OutputHLSL::decorateField):
- src/compiler/OutputHLSL.h:
- src/compiler/ParseHelper.cpp:
(TParseContext::parseVectorFields):
(TParseContext::parseMatrixFields):
(TParseContext::error):
(TParseContext::warning):
(TParseContext::assignError):
(TParseContext::unaryOpError):
(TParseContext::binaryOpError):
(TParseContext::precisionErrorCheck):
(TParseContext::lValueErrorCheck):
(TParseContext::globalErrorCheck):
(TParseContext::reservedErrorCheck):
(TParseContext::constructorErrorCheck):
(TParseContext::voidErrorCheck):
(TParseContext::boolErrorCheck):
(TParseContext::samplerErrorCheck):
(TParseContext::structQualifierErrorCheck):
(TParseContext::parameterSamplerErrorCheck):
(TParseContext::containsSampler):
(TParseContext::arraySizeErrorCheck):
(TParseContext::arrayQualifierErrorCheck):
(TParseContext::arrayTypeErrorCheck):
(TParseContext::arrayErrorCheck):
(TParseContext::nonInitConstErrorCheck):
(TParseContext::nonInitErrorCheck):
(TParseContext::paramErrorCheck):
(TParseContext::extensionErrorCheck):
(TParseContext::findFunction):
(TParseContext::isVariableBuiltIn):
(TParseContext::executeInitializer):
(TParseContext::addConstructor):
(TParseContext::constructBuiltIn):
(TParseContext::constructStruct):
(TParseContext::addConstVectorNode):
(TParseContext::addConstMatrixNode):
(TParseContext::addConstArrayNode):
(TParseContext::addConstStruct):
(TParseContext::enterStructDeclaration):
(TParseContext::structNestingErrorCheck):
- src/compiler/ParseHelper.h:
(TParseContext::TParseContext):
(TParseContext::pragma):
- src/compiler/PoolAlloc.cpp:
(TPoolAllocator::allocate):
- src/compiler/ShHandle.h:
- src/compiler/ShaderLang.cpp:
(ShInitBuiltInResources):
- src/compiler/SymbolTable.cpp:
(TType::TType):
(TType::buildMangledName):
(TType::getObjectSize):
(TStructure::containsArrays):
(TStructure::buildMangledName):
(TStructure::calculateObjectSize):
(TStructure::calculateDeepestNesting):
(TSymbolTableLevel::relateToExtension):
- src/compiler/SymbolTable.h:
(TSymbol::relateToExtension):
(TSymbol::getExtension):
(TVariable::TVariable):
(TVariable::setQualifier):
(TVariable::shareConstPointer):
- src/compiler/Types.h: Updated and changed enum bit fields to enums to fix compiling with GCC.
(TField::TField):
(TField::type):
(TField::name):
(NewPoolTFieldList):
(TStructure::TStructure):
(TStructure::name):
(TStructure::fields):
(TStructure::mangledName):
(TStructure::objectSize):
(TStructure::deepestNesting):
(TType::TType):
(TType::clearArrayness):
(TType::getStruct):
(TType::setStruct):
(TType::getMangledName):
(TType::getDeepestStructNesting):
(TType::isStructureContainingArrays):
(TPublicType::setBasic):
- src/compiler/VariableInfo.cpp:
(getUserDefinedVariableInfo):
- src/compiler/builtin_symbol_table.cpp: Added.
(builtin1):
(builtin2):
(builtin3):
(InsertBuiltInFunctionsCommon):
(InsertBuiltInFunctionsVertex):
- src/compiler/builtin_symbol_table.h: Added.
- src/compiler/glslang.l:
- src/compiler/glslang.y:
- src/compiler/glslang_lex.cpp:
(yy_get_previous_state):
(yy_try_NUL_trans):
(yyget_lloc):
(yyset_lloc):
(string_input):
(check_type):
(reserved_word):
(glslang_scan):
- src/compiler/glslang_tab.cpp:
(yysyntax_error):
(yyerror):
(glslang_parse):
- src/compiler/glslang_tab.h: Readded YYLTYPE definition after Bison removed it.
- src/compiler/intermOut.cpp:
(TOutputTraverser::visitUnary):
(TOutputTraverser::visitAggregate):
(TOutputTraverser::visitConstantUnion):
- src/compiler/intermediate.h:
(TIntermNode::TIntermNode):
(TIntermNode::~TIntermNode):
(TIntermNode::getLine):
(TIntermNode::setLine):
(TIntermNode::getAsLoopNode):
(TIntermConstantUnion::getIConst):
(TIntermConstantUnion::getFConst):
(TIntermConstantUnion::getBConst):
(TIntermAggregate::TIntermAggregate):
(TIntermTraverser::TIntermTraverser):
(TIntermTraverser::getMaxDepth):
(TIntermTraverser::incrementDepth):
- src/compiler/localintermediate.h:
- src/compiler/parseConst.cpp:
(TConstTraverser::visitSymbol):
(TConstTraverser::visitBinary):
(TConstTraverser::visitUnary):
(TConstTraverser::visitAggregate):
(TConstTraverser::visitSelection):
(TConstTraverser::visitConstantUnion):
(TConstTraverser::visitLoop):
(TConstTraverser::visitBranch):
(TIntermediate::parseConstTree):
- src/compiler/preprocessor/ExpressionParser.cpp:
- src/compiler/timing/RestrictVertexShaderTiming.cpp:
(RestrictVertexShaderTiming::visitSymbol):
Updated ANGLE to r2426 and ran Bison.
Source/WebCore: Update ANGLE to r2426.
https://bugs.webkit.org/show_bug.cgi?id=118550
Reviewed by Dean Jackson.
- CMakeLists.txt: Renamed DetectRecursion to DetectCallDepth and added builtin_symbol_table.
- 7:04 PM Changeset in webkit [152754] by
-
- 3 edits in trunk/Source/WebCore
Many crashes loading Java applets after r152701
https://bugs.webkit.org/show_bug.cgi?id=118760
<rdar://problem/14462836>
Reviewed by Dean Jackson.
- html/HTMLAppletElement.cpp:
(WebCore::HTMLAppletElement::updateWidget):
Re-acquire the renderer after calling createJavaAppletWidget,
because it can cause reattach, leaving our renderer pointer stale.
- loader/SubframeLoader.cpp:
(WebCore::SubframeLoader::createJavaAppletWidget):
Null-check renderer, as element->renderEmbeddedObject() can very clearly
return null in some cases.
- 6:09 PM Changeset in webkit [152753] by
-
- 38 edits1 delete in tags/Safari-537.51
Rollout of r152701. <rdar://problem/14209318>
- 6:07 PM Changeset in webkit [152752] by
-
- 4 edits in tags/Safari-537.51/LayoutTests
Rollout of r152703. <rdar://problem/14209318>
- 5:50 PM Changeset in webkit [152751] by
-
- 2 edits in trunk/Websites/bugs.webkit.org
AX: Add a 'choose product' link for the new-ax-bug alias.
https://bugs.webkit.org/show_bug.cgi?id=118697
Patch by James Craig <james@cookiecrook.com> on 2013-07-16
Reviewed by Chris Fleizach.
- template/en/custom/global/choose-product.html.tmpl: Added new link for accessibility bugs.
- 5:33 PM Changeset in webkit [152750] by
-
- 2 edits in trunk/Source/WebCore
Missing break in WebGLRenderingContext::validateCompressedTexFuncData()
https://bugs.webkit.org/show_bug.cgi?id=118742
Reviewed by Ryosuke Niwa.
- html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::validateCompressedTexFuncData):
- 5:32 PM Changeset in webkit [152749] by
-
- 2 edits1 add in trunk/Source/WebInspectorUI
Web Inspector: InspectorFrontendHost is undefined
https://bugs.webkit.org/show_bug.cgi?id=118715
Patch by Seokju Kwon <Seokju Kwon> on 2013-07-16
Reviewed by Timothy Hatcher.
Add InspectorFrontendHostStub.js to New Inspector because of the InspectorFrontendHost initialization.
- UserInterface/InspectorFrontendHostStub.js: Added.
(.WebInspector.InspectorFrontendHostStub):
(.WebInspector.InspectorFrontendHostStub.prototype.platform):
(.WebInspector.InspectorFrontendHostStub.prototype.port):
(.WebInspector.InspectorFrontendHostStub.prototype.bringToFront):
(.WebInspector.InspectorFrontendHostStub.prototype.closeWindow):
(.WebInspector.InspectorFrontendHostStub.prototype.requestSetDockSide):
(.WebInspector.InspectorFrontendHostStub.prototype.setAttachedWindowHeight):
(.WebInspector.InspectorFrontendHostStub.prototype.setAttachedWindowWidth):
(.WebInspector.InspectorFrontendHostStub.prototype.setToolbarHeight):
(.WebInspector.InspectorFrontendHostStub.prototype.moveWindowBy):
(.WebInspector.InspectorFrontendHostStub.prototype.loaded):
(.WebInspector.InspectorFrontendHostStub.prototype.localizedStringsURL):
(.WebInspector.InspectorFrontendHostStub.prototype.inspectedURLChanged):
(.WebInspector.InspectorFrontendHostStub.prototype.copyText):
(.WebInspector.InspectorFrontendHostStub.prototype.openInNewTab):
(.WebInspector.InspectorFrontendHostStub.prototype.canSave):
(.WebInspector.InspectorFrontendHostStub.prototype.save):
(.WebInspector.InspectorFrontendHostStub.prototype.append):
(.WebInspector.InspectorFrontendHostStub.prototype.close.cleanup):
(.WebInspector.InspectorFrontendHostStub.prototype.close):
(.WebInspector.InspectorFrontendHostStub.prototype.sendMessageToBackend):
(.WebInspector.InspectorFrontendHostStub.prototype.loadResourceSynchronously):
- UserInterface/Main.html:
- 5:12 PM Changeset in webkit [152748] by
-
- 3 edits in trunk/Tools
check-webkit-style: "using namespace foo;" should be flagged as an error only in headers
https://bugs.webkit.org/show_bug.cgi?id=118755
Reviewed by Ryosuke Niwa.
Fix r152719 to check "using namespace foo;" only in headers.
- Scripts/webkitpy/style/checkers/cpp.py:
(check_using_namespace):
(check_style):
- Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_using_namespace):
- 4:24 PM Changeset in webkit [152747] by
-
- 2 edits in trunk/Source/JavaScriptCore
Typo in DFGInsertionSet.h header guard: "DFGInsectionSet_h" -> "DFGInsertionSet_h"
https://bugs.webkit.org/show_bug.cgi?id=118753
Reviewed by Geoffrey Garen.
- dfg/DFGInsertionSet.h:
"DFGInsectionSet_h" -> "DFGInsertionSet_h"
- 3:57 PM Changeset in webkit [152746] by
-
- 2 edits in trunk/LayoutTests
Added passing WebGL tests.
https://bugs.webkit.org/show_bug.cgi?id=118696
Reviewed by Dean Jackson.
- platform/mac/TestExpectations: Replaced webgl directory with list of failing webgl tests.
- 3:50 PM Changeset in webkit [152745] by
-
- 7 edits in branches/dfgFourthTier/Source
fourthTier: NaturalLoops should be able to quickly answer questions like "what loops own this basic block"
https://bugs.webkit.org/show_bug.cgi?id=118750
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
- dfg/DFGBasicBlock.h:
(BasicBlock):
- dfg/DFGNaturalLoops.cpp:
(JSC::DFG::NaturalLoops::compute):
(JSC::DFG::NaturalLoops::loopsOf):
- dfg/DFGNaturalLoops.h:
(DFG):
(JSC::DFG::NaturalLoop::NaturalLoop):
(NaturalLoop):
(JSC::DFG::NaturalLoop::index):
(JSC::DFG::NaturalLoop::isOuterMostLoop):
(JSC::DFG::NaturalLoop::addBlock):
(JSC::DFG::NaturalLoops::headerOf):
(JSC::DFG::NaturalLoops::innerMostLoopOf):
(NaturalLoops):
(JSC::DFG::NaturalLoops::innerMostOuterLoop):
- dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
Source/WTF:
Reviewed by Mark Hahnenberg.
Add a utility function for inserting an element into a vector that has bounded size,
and where the insertion causes things to drop off the end.
- wtf/StdLibExtras.h:
(WTF):
(WTF::insertIntoBoundedVector):
- 3:08 PM Changeset in webkit [152744] by
-
- 3 edits in branches/dfgFourthTier/Source/JavaScriptCore
fourthTier: don't GC when shutting down the VM
https://bugs.webkit.org/show_bug.cgi?id=118751
Reviewed by Mark Hahnenberg.
- heap/Heap.h:
(Heap):
- runtime/VM.cpp:
(JSC::VM::~VM):
- 3:03 PM Changeset in webkit [152743] by
-
- 2 edits in trunk/Source/WebCore
Atomicize HTMLAnchorElement.hash before passing it to JS.
<http://webkit.org/b/118748>
<rdar://problem/14459780>
Reviewed by Sam Weinig.
Instead of generating a unique string from '#' + the URL hash every time HTMLAnchorElement.hash
is queried, turn it into an AtomicString. This prevents massive memory usage in scripts that
fetch .hash a lot.
Reduces memory consumption by 4.65 MB when viewing the full HTML5 spec at <http://whatwg.org/c>
- html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::hash):
- 2:41 PM Changeset in webkit [152742] by
-
- 5 edits3 adds in trunk
MakeRope fixup shouldn't lead to an Identity without kids
https://bugs.webkit.org/show_bug.cgi?id=118745
Source/JavaScriptCore:
Reviewed by Mark Hahnenberg.
Make the empty string pruning part of fixupMakeRope() stop if it's on the last child.
Make Node::convertToIdentity release-assert that it has exactly one kid.
- dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupMakeRope):
- dfg/DFGNode.h:
(JSC::DFG::Node::convertToIdentity):
LayoutTests:
Reviewed by Mark Hahnenberg.
- fast/js/dfg-make-rope-all-empty-strings.html: Added.
- fast/js/dfg-make-rope-all-empty-strings-expected.txt: Added.
- fast/js/jsc-test-list:
- fast/js/script-tests/dfg-make-rope-all-empty-strings.js: Added.
(foo):
(bar):
- 2:34 PM Changeset in webkit [152741] by
-
- 7 edits in trunk/Source/WebCore
Make WebVTTParser return cue data instead of cue DOM objects
https://bugs.webkit.org/show_bug.cgi?id=118687
Patch by Brendan Long <b.long@cablelabs.com> on 2013-07-16
Reviewed by Eric Carlson.
No new tests because this doesn't change functionality.
- html/track/InbandTextTrack.cpp:
Make TextTrackCueMap handle WebVTTCues instead of just generic cues.
m_dataToCueMap and m_cueToDataMap were renamed m_genericDataToCueMap
and m_genericCueToDataMap. The cue maps were turned into pointers so we
only allocate the ones we need.
(WebCore::TextTrackCueMap::TextTrackCueMap): Initialize maps to 0.
(WebCore::TextTrackCueMap::~TextTrackCueMap): Delete allocated maps.
(WebCore::TextTrackCueMap::add): Changed to allocate cue maps as needed, and added WebVTT version.
(WebCore::TextTrackCueMap::find): Checked to check if cue maps are allocated, and added WebVTT version.
(WebCore::TextTrackCueMap::findGenericData): Changed to accept TextTrackCue instead of TextTrackCueGeneric.
(WebCore::TextTrackCueMap::findWebVTTData): Same as findGenericData, except for WebVTTCueData.
(WebCore::TextTrackCueMap::remove): Accept TextTrackCue instead of TextTrackCueGeneric, and look in both maps.
(WebCore::InbandTextTrack::addWebVTTCue): Added, based on addGenericCue.
(WebCore::InbandTextTrack::removeWebVTTCue): Added, almost identical to removeGenericCue.
(WebCore::InbandTextTrack::removeCue): m_cueMap.remove() takes a TextTrackCue now so it can remove both types of cue.
(WebCore::InbandTextTrack::willRemoveTextTrackPrivate): Use ASSERT_UNUSED instead of UNUSED_PARAM + ASSERT.
- html/track/InbandTextTrack.h: Add new functions above, change maps to pointers and add maps for holding WebVTT cues.
- html/track/WebVTTParser.cpp:
(WebCore::WebVTTParser::getNewCues): Return WebVTTCueData instead of TextTrackCue.
(WebCore::WebVTTParser::createNewCue): Create WebVTTCueData instead of TextTrackCue.
- html/track/WebVTTParser.h: Add WebVTTCueData class, based on GenericCueData.
The following functions are just constructors, destructors, getters, or setters.
(WebCore::WebVTTCueData::create):
(WebCore::WebVTTCueData::~WebVTTCueData):
(WebCore::WebVTTCueData::startTime):
(WebCore::WebVTTCueData::setStartTime):
(WebCore::WebVTTCueData::endTime):
(WebCore::WebVTTCueData::setEndTime):
(WebCore::WebVTTCueData::id):
(WebCore::WebVTTCueData::setId):
(WebCore::WebVTTCueData::content):
(WebCore::WebVTTCueData::setContent):
(WebCore::WebVTTCueData::settings):
(WebCore::WebVTTCueData::setSettings):
(WebCore::WebVTTCueData::WebVTTCueData):
- loader/TextTrackLoader.cpp:
(WebCore::TextTrackLoader::getNewCues): Convert WebVTTCueData to TextTrackCue when we get them.
- platform/graphics/InbandTextTrackPrivateClient.h: Add addWebVTTCue and removeWebVTTCue functions to the interface.
- 2:14 PM Changeset in webkit [152740] by
-
- 2 edits in trunk/Source/WebKit2
REGRESSION (r150291): Chinese predictive input pop-up disappears on twitter.com
https://bugs.webkit.org/show_bug.cgi?id=118739
<rdar://problem/14300350>
Reviewed by Daniel Bates.
EditorState tracking on UI side is very fragile. This is a targeted fix just for
this specific scenario.
The issue was that we had a stale m_temporarilyClosedComposition flag, which was
making UI process believe that a composition was closed from WebProcess side,
and notify input method about that. It shouldn't have been a problem, because there
is no composition at this point indeed, but this extra call is a problem for
predictive input, which works in a somewhat unconventional way (<rdar://problem/14458297>).
- UIProcess/mac/WebPageProxyMac.mm: (WebKit::WebPageProxy::insertText): Reset m_temporarilyClosedComposition flag when getting new EditorState in response to performing this action. There is certainly no composition after insertText, and all interested parties are on the same page already.
- 2:02 PM Changeset in webkit [152739] by
-
- 2 edits in trunk/Source/WebCore
Use the correct cursor value for the unavailable plugin indicator
https://bugs.webkit.org/show_bug.cgi?id=118747
<rdar://problem/14456498>
Reviewed by Dean Jackson.
CSS says "pointer" is the hand cursor, not "hand".
- css/unavailablePlugIns.css:
(object::-webkit-unavailable-plugin-content > div):
(object::-webkit-unavailable-plugin-content > div > span):
- 1:37 PM Changeset in webkit [152738] by
-
- 1 edit4 adds in branches/dfgFourthTier/Tools
fourthTier: We should have a reduced FTL LLVM pipeline tool in the repository
https://bugs.webkit.org/show_bug.cgi?id=118647
Rubber stamped by Geoffrey Garen and Mark Hahnenberg.
Add a tool that takes in an LLVM bitcode file and JITs it in exactly the same
way that the FTL would.
Also add a tool that combines multiple LLVM modules generated by FTL into a
single module.
- ReducedFTL: Added.
- ReducedFTL/ReducedFTL.c: Added.
(usage):
(currentTime):
(MemorySection):
(mmAllocateCodeSection):
(mmAllocateDataSection):
(mmApplyPermissions):
(mmDestroy):
(symbolLookupCallback):
(main):
- ReducedFTL/build.sh: Added.
- ReducedFTL/combineModules.rb: Added.
- 1:35 PM Changeset in webkit [152737] by
-
- 2 edits in trunk/Source/JavaScriptCore
Remove reference to JSValueStructSupport.h from JSExport.h
https://bugs.webkit.org/show_bug.cgi?id=118746
Reviewed by Filip Pizlo.
- API/JSExport.h: No such header exists, so it doesn't make sense to reference it.
- 1:32 PM Changeset in webkit [152736] by
-
- 1 edit2 adds in trunk/LayoutTests
Unreviewed rebaseline test added in r152612 for Apple Windows port.
- platform/win/editing/caret: Added.
- platform/win/editing/caret/caret-color-expected.txt: Added.
- 12:38 PM Changeset in webkit [152735] by
-
- 3 edits in trunk/LayoutTests
Unreviewed rebaselines, AppleWin port.
- platform/win/fast/js/global-constructors-attributes-dedicated-worker-expected.txt:
- platform/win/fast/js/global-constructors-attributes-shared-worker-expected.txt:
- 11:51 AM Changeset in webkit [152734] by
-
- 3 edits in trunk/LayoutTests
Unreviewed. Adjust test and update results for AppleWin port after r151868.
- platform/win/accessibility/multiple-select-element-role-expected.txt:
- platform/win/accessibility/multiple-select-element-role.html:
- 11:44 AM Changeset in webkit [152733] by
-
- 7 edits in trunk/Source
Source/WebCore: Protect against the LayerFlushController being deleted inside its flushLayers() callback
https://bugs.webkit.org/show_bug.cgi?id=118741
Reviewed by Tim Horton.
It's possible (especially on iOS) for the LayerFlushController to be destroyed
inside its callback, via -[WebView _close]. Protect against this by making
it refcounted, and holding a ref across the callback.
Due to the odd relationship in which LayerFlushController owns its LayerFlushScheduler
by value, we achieve this by allowing subclasses of LayerFlushScheduler
to override runLoopObserverCallback(). WebViewLayerFlushScheduler uses the
override to protect the owner of the LayerFlushScheduler, which is the
LayerFlushController, when the callback is firing.
- WebCore.exp.in:
- platform/graphics/ca/LayerFlushScheduler.h: Make runLoopObserverCallback() and the dtor virtual.
Source/WebKit/mac: Protect against the LayerFlushController being deleted inside its flushLayers() callback
https://bugs.webkit.org/show_bug.cgi?id=118741
<rdar://problem/14402651>
Reviewed by Tim Horton.
It's possible (especially on iOS) for the LayerFlushController to be destroyed
inside its callback, via -[WebView _close]. Protect against this by making
it refcounted, and holding a ref across the callback.
Due to the odd relationship in which LayerFlushController owns its LayerFlushScheduler
by value, we achieve this by allowing subclasses of LayerFlushScheduler
to override runLoopObserverCallback(). WebViewLayerFlushScheduler uses the
override to protect the owner of the LayerFlushScheduler, which is the
LayerFlushController, when the callback is firing.
- WebView/WebView.mm:
(-[WebView _close]):
- WebView/WebViewData.h:
(WebViewLayerFlushScheduler::~WebViewLayerFlushScheduler):
(LayerFlushController::create):
- WebView/WebViewData.mm:
(LayerFlushController::invalidate):
(WebViewLayerFlushScheduler::WebViewLayerFlushScheduler):
- 11:38 AM Changeset in webkit [152732] by
-
- 1 edit2 adds in trunk/LayoutTests
Unreviewed rebaselines, AppleWin port.
- platform/win/fast/js/global-constructors-attributes-dedicated-worker-expected.txt: Added.
- platform/win/fast/js/global-constructors-attributes-shared-worker-expected.txt: Added.
- 11:16 AM Changeset in webkit [152731] by
-
- 2 edits in trunk/LayoutTests
Unreviewed gardening. -webkit-user-select: all not supported on AppleWin port.
https://bugs.webkit.org/show_bug.cgi?id=118740
- platform/win/TestExpectations:
- 11:04 AM Changeset in webkit [152730] by
-
- 5 edits in trunk/Source
Fix some NSDictionary misuse pointed out by the clang static analyzer
https://bugs.webkit.org/show_bug.cgi?id=118736
Reviewed by Anders Carlsson.
Source/WebKit/mac:
- Plugins/Hosted/NetscapePluginHostManager.mm:
(WebKit::NetscapePluginHostManager::spawnPluginHost):
Explicitly cast the CFStringRef to an NSString *.
- WebCoreSupport/WebEditorClient.mm:
(WebEditorClient::documentFragmentFromAttributedString):
Do not put a key with a nil value pair into the NSDictionary.
Source/WebKit2:
- WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
(WebKit::WebEditorClient::documentFragmentFromAttributedString):
Do not put a key with a nil value pair into the NSDictionary.
- 9:57 AM WebKitGTK/2.0.x edited by
- (diff)
- 9:54 AM WebKitGTK/2.0.x edited by
- (diff)
- 9:51 AM Changeset in webkit [152729] by
-
- 4 edits in tags/Safari-537.51/LayoutTests
Merged r152703. <rdar://problem/14209318>
- 9:51 AM Changeset in webkit [152728] by
-
- 38 edits1 copy in tags/Safari-537.51
Merged r152701. <rdar://problem/14209318>
- 9:48 AM Changeset in webkit [152727] by
-
- 4 edits in branches/safari-537-branch/LayoutTests
Merged r152703. <rdar://problem/14209318>
- 9:47 AM Changeset in webkit [152726] by
-
- 38 edits1 copy in branches/safari-537-branch
Merged r152701. <rdar://problem/14209318>
- 9:24 AM Changeset in webkit [152725] by
-
- 9 edits in trunk
Get rid of multiple inheritance support from the bindings generators
https://bugs.webkit.org/show_bug.cgi?id=118353
Reviewed by Kentaro Hara.
Source/WebCore:
Remove multiple inheritance support from the bindings generators (except
the ObjC one which still needs it for now). Multiple inheritance is no
longer supported in Web IDL and it makes the scripts more complex than
they needs to be.
Multiple inheritance support is no longer needed now that our SVG
interfaces have been updated to use the simpler SVG2 inheritance model
and use Web IDL 'implements' statements.
Note that the IDL parser still support multiple inheritance for now in
order not to break the ObjC bindings generator.
No new tests, no behavior change.
- bindings/scripts/CodeGenerator.pm:
- bindings/scripts/CodeGeneratorCPP.pm:
(GetParentImplClassName):
(GetParent):
(GenerateImplementation):
- bindings/scripts/CodeGeneratorGObject.pm:
(GetParentClassName):
(GetParentImplClassName):
(GetParentGObjType):
- bindings/scripts/CodeGeneratorJS.pm:
(GetParentClassName):
(GenerateHeader):
(GenerateImplementation):
(GenerateConstructorDefinition):
- bindings/scripts/CodeGeneratorObjC.pm:
(AddMethodsConstantsAndAttributesFromParentInterfaces):
(GenerateImplementation):
- bindings/scripts/IDLParser.pm:
(parseInterface):
(parseException):
(parseInheritance):
Tools:
Update CodeGeneratorTestRunner.pm to use domInterface->parent instead of
deprecated domInterface->parents.
- WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
(_parentInterface):
- 9:24 AM Changeset in webkit [152724] by
-
- 2 edits in tags/Safari-537.51/Source/WebKit2
Merged r152698. <rdar://problem/14255963>
- 9:22 AM Changeset in webkit [152723] by
-
- 2 edits in branches/safari-537-branch/Source/WebKit2
Merged r152698. <rdar://problem/14255963>
- 9:08 AM Changeset in webkit [152722] by
-
- 2 edits in trunk/LayoutTests
[GTK] Unreviewed gardening. Update test expectations after r152701
https://bugs.webkit.org/show_bug.cgi?id=118731
Unreviewed GTK gardening.
Patch by Simon Pena <simon.pena@samsung.com> on 2013-07-16
- platform/gtk/TestExpectations: Skip failing tests after r152701.
- 8:12 AM Changeset in webkit [152721] by
-
- 3 edits4 adds in trunk
HTMLMediaElement should not add cues for disabled text tracks
https://bugs.webkit.org/show_bug.cgi?id=118682
Source/WebCore:
Reviewed by Ryosuke Niwa.
Merge https://src.chromium.org/viewvc/blink?view=rev&revision=153810
Tests: media/track/track-disabled-addcue.html
media/track/track-disabled.html
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::textTrackAddCues): Do nothing if the track is disabled.
(WebCore::HTMLMediaElement::textTrackAddCue): Ditto.
LayoutTests:
Merge https://src.chromium.org/viewvc/blink?view=rev&revision=153810
Reviewed by Ryosuke Niwa.
- media/track/track-disabled-addcue-expected.txt: Added.
- media/track/track-disabled-addcue.html: Added.
- media/track/track-disabled-expected.txt: Added.
- media/track/track-disabled.html: Added.
- 6:51 AM Changeset in webkit [152720] by
-
- 2 edits in trunk/Source/WebKit2
[Qt] Replace Nokia with Qt Project in service name.
https://bugs.webkit.org/show_bug.cgi?id=118729
Reviewed by Simon Hausmann.
- UIProcess/Launcher/qt/ProcessLauncherQt.cpp:
(WebKit::ProcessLauncher::launchProcess):
- 6:05 AM Changeset in webkit [152719] by
-
- 3 edits in trunk/Tools
check-webkit-style: "using namespace foo;" should be flagged as an error in headers
https://bugs.webkit.org/show_bug.cgi?id=57241
Patch by Brian Holt <brian.holt@samsung.com> on 2013-07-16
Reviewed by Ryosuke Niwa.
Added check for "using namespace foo" and unit test.
- Scripts/webkitpy/style/checkers/cpp.py:
(check_using_namespace):
(check_style):
(CppChecker):
- Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_using_namespace):
- 6:03 AM Changeset in webkit [152718] by
-
- 4 edits in trunk
[GTK] fast/events/platform-wheelevent-with-delta-zero-crash.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=110222
Patch by Anton Obzhirov <Anton Obzhirov> on 2013-07-16
Reviewed by Gustavo Noronha Silva.
Tools:
Added handling of zero mouse scroll deltas in EventSender.
- DumpRenderTree/gtk/EventSender.cpp:
(mouseScrollByCallback):
LayoutTests:
- platform/gtk/TestExpectations:
- 5:58 AM Changeset in webkit [152717] by
-
- 2 edits in trunk/Tools
webkitpy: replace urllib with urllib2 for downloading additional modules
https://bugs.webkit.org/show_bug.cgi?id=118671
Patch by Brian Holt <brian.holt@samsung.com> on 2013-07-16
Reviewed by Ryosuke Niwa.
Urllib2 is available whereever urllib is, but has better proxy support.
- Scripts/webkitpy/common/system/autoinstall.py:
(AutoInstaller._download_to_stream):
- 5:55 AM Changeset in webkit [152716] by
-
- 6 edits4 moves in trunk
[ATK] Adds support for aria-haspopup property.
https://bugs.webkit.org/show_bug.cgi?id=117834
Source/WebCore:
Patch by Krzysztof Czech <k.czech@ymail.com> on 2013-07-16
Reviewed by Christophe Dumez.
Adds support for aria-haspopup property.
Tests: accessibility/element-haspopup.html
accessibility/popup-button-title.html
- accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetAttributes):
Tools:
Patch by Krzysztof Czech <k.czech@samsung.com> on 2013-07-16
Reviewed by Christophe Dumez.
Adds implementation for testing aria-haspopup property.
- DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
(getAttributeSetValueForId):
(AccessibilityUIElement::stringAttributeValue):
(AccessibilityUIElement::hasPopup):
- WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::getAttributeSetValueForId):
(WTR::AccessibilityUIElement::stringAttributeValue):
(WTR::AccessibilityUIElement::hasPopup):
LayoutTests:
Patch by Krzysztof Czech <k.czech@ymail.com> on 2013-07-16
Reviewed by Christophe Dumez.
Moving accessibility tests related to aria-haspopup property.
- accessibility/element-haspopup-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/element-haspopup-expected.txt.
- accessibility/element-haspopup.html: Renamed from LayoutTests/platform/mac/accessibility/element-haspopup.html.
- accessibility/popup-button-title-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/popup-button-title-expected.txt.
- accessibility/popup-button-title.html: Renamed from LayoutTests/platform/mac/accessibility/popup-button-title.html.
- 5:22 AM Changeset in webkit [152715] by
-
- 6 edits in trunk
[Qt] Replace Nokia references.
https://bugs.webkit.org/show_bug.cgi?id=118728
Reviewed by Simon Hausmann.
Source/WebKit/qt:
- Api/qwebkitplatformplugin.h:
- examples/platformplugin/qwebkitplatformplugin.h:
Tools:
- MiniBrowser/qt/MiniBrowserApplication.cpp:
(MiniBrowserApplication::MiniBrowserApplication):
- QtTestBrowser/qttestbrowser.cpp:
(LauncherApplication::LauncherApplication):
- 4:57 AM Changeset in webkit [152714] by
-
- 3 edits7 adds in trunk/LayoutTests
[Qt]Unreviewed gardening. New baseline and skip failing tests.
Patch by Gabor Abraham <abrhm@inf.u-szeged.hu> on 2013-07-16
- platform/qt-5.0-wk1/TestExpectations:
- platform/qt-5.0-wk1/http/tests/security/contentSecurityPolicy/object-src-none-allowed-expected.txt: Added.
- platform/qt/TestExpectations:
- platform/qt/editing/caret/caret-color-expected.png: Added.
- platform/qt/editing/caret/caret-color-expected.txt: Added.
- platform/qt/http/tests/security/contentSecurityPolicy/object-src-none-blocked-expected.txt: Added.
- 4:10 AM Changeset in webkit [152713] by
-
- 2 edits in trunk/Source/WebKit2
EWK2BackForwardListTest should be defined by inheriting from EWK2UnitTestBase.
https://bugs.webkit.org/show_bug.cgi?id=118717
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-16
Reviewed by Christophe Dumez.
- UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp:
(EWK2BackForwardListTest::checkItem):
(EWK2BackForwardListTest::urlFromTitle):
(EWK2BackForwardListTest::freeEinaList):
(TEST_F):
- 3:47 AM Changeset in webkit [152712] by
-
- 2 edits in trunk
[GTK] Remove compile warnings about GTK+ API deprecated after 3.6
https://bugs.webkit.org/show_bug.cgi?id=118237
Reviewed by Philippe Normand.
We depend on GTK+3.6 so we are not interested in compile warnings
about deprecated API after 3.6
- Source/autotools/SetupAutoconfHeader.m4: Define
GDK_VERSION_MIN_REQUIRED in config.h.
- 3:16 AM Changeset in webkit [152711] by
-
- 4 edits in trunk/Source/WebCore
[texmap][GStreamer] upload onto the texture only the buffer to be painted
https://bugs.webkit.org/show_bug.cgi?id=118471
Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2013-07-16
Reviewed by Philippe Normand.
Right now all the buffers are uploaded onto the texture. With this
logic pose situations where buffers that will not be painted are
uploaded.
This patch uploads only the buffers that are going to be shown.
With this approach, the buffers may arrive before a GraphicsLayer is
set, so we should be more cautious with GraphicsLayerTextureMapper's
client.
No new tests, covered by existing tests.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::updateTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::paint):
(WebCore::MediaPlayerPrivateGStreamerBase::paintToTextureMapper):
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
- platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
(WebCore::GraphicsLayerTextureMapper::~GraphicsLayerTextureMapper):
(WebCore::GraphicsLayerTextureMapper::setContentsToMedia):
- 2:50 AM Changeset in webkit [152710] by
-
- 2 edits in trunk/Source/WebCore
[GStreamer] verify and log the received caps in the video sink
https://bugs.webkit.org/show_bug.cgi?id=118559
Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2013-07-16
Reviewed by Philippe Normand.
Verify the correctness of the received caps in the video sink, and
also log them for debugging purposes.
No new tests, no behavior change.
- platform/graphics/gstreamer/VideoSinkGStreamer.cpp:
(webkitVideoSinkSetCaps):
- 2:20 AM Changeset in webkit [152709] by
-
- 9 edits in trunk/Source
Use toHTMLSelectElement and dismiss isHTMLSelectElement
https://bugs.webkit.org/show_bug.cgi?id=118714
Reviewed by Ryosuke Niwa.
To avoid direct use of static_cast, this patch introduces toHTMLIFrameElement for code cleanup.
Additionally, this patch removes isHTMLSelectElement because not all element subclasses can be checked by a combination of tag names.
Source/WebCore:
- html/HTMLSelectElement.h:
(WebCore::toHTMLSelectElement):
- testing/Internals.cpp:
(WebCore::Internals::isSelectPopupVisible):
Source/WebKit/blackberry:
- WebKitSupport/InputHandler.cpp:
(BlackBerry::WebKit::InputHandler::didNodeOpenPopup):
(BlackBerry::WebKit::InputHandler::setPopupListIndex):
(BlackBerry::WebKit::InputHandler::setPopupListIndexes):
Source/WebKit/win:
- DOMHTMLClasses.cpp:
(DOMHTMLSelectElement::options):
(DOMHTMLSelectElement::activateItemAtIndex):
Source/WebKit2:
- WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
(WebKit::PDFPluginChoiceAnnotation::commit):
- 12:35 AM Changeset in webkit [152708] by
-
- 2 edits in trunk/Source/WebKit2
Replace mouseClick with more meaningful method in test_ewk2_text_checker.cpp
https://bugs.webkit.org/show_bug.cgi?id=118699
Patch by Dong-Gwan Kim <donggwan.kim@samsung.com> on 2013-07-16
Reviewed by Christophe Dumez.
Many mouseClick methods are used in test_ewk2_text_checker.cpp.
But it is difficult to understand what they mean.
So i would like to replace those with more meaningful method for readability.
- UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:
(EWK2TextCheckerTest::clickSelectAllWordsWithSpellcheckButton):
(EWK2TextCheckerTest::clickSelectAllWordsWithoutSpellcheckButton):
(EWK2TextCheckerTest::clickSelectSubWordWithSpellcheckButton):
(EWK2TextCheckerTest::showContextMenuWithFirstLineText):
(EWK2TextCheckerTest::showContextMenuWithSecondLineText):
(EWK2TextCheckerTest::selectFirstWordInFirstLineText):
(EWK2TextCheckerTest::selectFirstWordInSecondLineText):
(TEST_F):