New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 684604 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Investigate StringView performance with StringImpl::empty backing

Project Member Reported by csharrison@chromium.org, Jan 24 2017

Issue description

In profiles I have seen a number of samples accessing StringImpl::empty, often in StringView code.

StringViews which back a char* will reach into StringImpl::empty{16bit}, and this is looking like a performance bottleneck in some cases.

We should benchmark StringView vs StringPiece on these workloads and see the extent of the problem. If it is a big deal, we could refactor StringView to not need this requirement (use a union maybe?).

Likely, this is because the statically allocated empty impl is fetched from main memory, which is orders of magnitude slower than L1/L2 cache.
 
I ran a quick test of this, using the following code called from a wtf_unittest:

NOINLINE void initializePerfTest() {
  int kStrings = 100000000;
  int sum = 0;
  for (int i = 0; i < kStrings; ++i) {
    sum += StringView("testing123", 10) == StringView("testing123", 10) ? 1 : 0;
  }
  CHECK_EQ(kStrings, sum);
}

Here is a profile:
https://cr.kungfoo.net/profiles/string_view_construction.svg

According to the profile, StringView construction, takes ~59% of the time, with 26% in StringImpl::empty(). Only 38% of the time is actually in operator==, which calls into memcmp (which strangely gets hoisted to the operator== in the profile instead of equalStringView).

This is on official linux build (including LTO) on my z620.

esprehn: does this seem strange to you? Could it be explained by a static function call? Makes me wonder what this would look like (with a hypothetical StringView constructor):

StringImpl* impl = StringImpl::empty();
for (...) {
  StringView(impl, "testing123", 10) == ...
}


Cc: jyasskin@chromium.org krasin@chromium.org
I guess LTO is inlining the equalStringView call?

I wouldn't expect any cache misses in your micro-benchmark, possibly you're seeing the function call overhead of calling empty() repeatedly.

I think we should probably make StringImpl::empty() and empty16Bit() into global variables like emptyAtom instead of function calls. I assume that'd be cheaper?
Yea I think that makes sense, I can try it. I think it is explained by the function call overhead.
Owner: csharrison@chromium.org
Status: Assigned (was: Untriaged)
Making "empty" and "empty16Bit" static members rather than static methods makes the benchmark spend ~31% of the time in StringView constructor rather than 59%. I can clean up the patch and send for review.
Project Member

Comment 6 by bugdroid1@chromium.org, Feb 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2c3e23286499227cda716bdadd43f8f4ef319cc6

commit 2c3e23286499227cda716bdadd43f8f4ef319cc6
Author: csharrison <csharrison@chromium.org>
Date: Wed Feb 01 16:15:24 2017

Replace StringImpl::empty{16Bit}() with a static member

These static method calls have been showing up in profiles, especially
for StringView("string literal") construction. This patch eliminates
that overhead.

BUG= 684604 

Review-Url: https://codereview.chromium.org/2655853003
Cr-Commit-Position: refs/heads/master@{#447526}

[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/core/layout/LayoutCounter.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/core/layout/LayoutMenuList.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/core/layout/LayoutWordBreak.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/platform/weborigin/KURL.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/ThreadingPthreads.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/ThreadingWin.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/AtomicStringTable.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/StringImpl.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/StringImpl.h
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/StringMac.mm
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/StringStatics.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/StringView.h
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/WTFString.cpp
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/WTFString.h
[modify] https://crrev.com/2c3e23286499227cda716bdadd43f8f4ef319cc6/third_party/WebKit/Source/wtf/text/WTFStringTest.cpp

Project Member

Comment 7 by bugdroid1@chromium.org, Feb 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/166d82710cf7ee3212dd839e46547a3ce83e35aa

commit 166d82710cf7ee3212dd839e46547a3ce83e35aa
Author: csharrison <csharrison@chromium.org>
Date: Thu Feb 02 06:05:06 2017

Replace WTF::emptyString{16Bit}() with a static global

This is an extension of [1] which applies this approach to StringImpl.
In that patch, a simple micro-benchmark testing:
  StringView("<some literal>") == StringView("<some literal>")
in a tight loop is improved by 30% with this approach, as StringViews
of literals are backed with empty StringImpls.

To fix callers I ran:
git grep -l "emptyString()" | xargs sed -i 's/emptyString()/emptyString/g'

with 16 bit variants in third_party/WebKit/Source.

Also note: The trick to make static strings without static constructors
technically uses undefined behavior and breaks strict aliasing, see
DEFINE_GLOBAL for details.

[1] https://codereview.chromium.org/2655853003/

BUG= 684604 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2668903003
Cr-Commit-Position: refs/heads/master@{#447703}

[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/bindings/core/v8/V8StringResource.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/bindings/core/v8/custom/V8XMLHttpRequestCustom.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializer.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/build/scripts/make_css_property_names.py
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/css/CSSFontFaceSrcValue.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/css/CSSSyntaxDescriptor.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/css/FontFace.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/css/StylePropertySerializer.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/css/parser/CSSParserContext.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/css/parser/CSSParserContext.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/css/resolver/StyleBuilderCustom.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/AttrTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/CharacterData.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/CharacterData.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/DOMURLUtilsReadOnly.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/Document.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/Document.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/Element.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/ExecutionContext.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/IconURL.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/PseudoElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/SelectorQuery.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/SelectorQueryTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/dom/Text.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/editing/InputMethodController.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/editing/Position.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/editing/iterators/TextIteratorTextState.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/editing/markers/DocumentMarker.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/editing/serializers/Serialization.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/events/ApplicationCacheErrorEvent.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/events/EventListener.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/events/InputEvent.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/frame/Deprecation.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/frame/LocalFrame.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/frame/NavigatorID.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/frame/SubresourceIntegrity.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/HTMLFormControlElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/HTMLInputElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/HTMLMarqueeElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/HTMLMediaElementTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/TextControlElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/BaseTemporalInputType.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/ChooserOnlyTemporalInputTypeView.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/DateInputType.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/DateTimeFieldsState.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/DateTimeLocalInputType.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/FormController.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/InputType.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/MonthInputType.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/MultipleFieldsTemporalInputTypeView.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/NumberInputType.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/TimeInputType.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/forms/WeekInputType.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/parser/TextResourceDecoder.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/parser/XSSAuditor.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/shadow/DateTimeEditElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/shadow/DateTimeNumericFieldElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/shadow/DateTimeSymbolicFieldElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/track/vtt/VTTCue.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/track/vtt/VTTParser.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/track/vtt/VTTRegion.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/html/track/vtt/VTTScannerTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/inspector/InspectorStyleSheet.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/layout/LayoutMenuList.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/layout/LayoutQuote.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/layout/ng/ng_layout_inline_items_builder.cc
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/loader/FormSubmission.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/loader/FrameLoader.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/page/CreateWindow.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/page/PagePopupController.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/style/QuotesData.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/svg/SVGAnimationElement.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/svg/SVGEnumeration.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/svg/SVGPathParserTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/svg/SVGTransform.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/testing/DictionaryTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/testing/NullExecutionContext.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/workers/WorkerOrWorkletGlobalScope.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/core/xml/XSLStyleSheet.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/app_banner/AppBannerController.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/credentialmanager/FederatedCredential.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/fetch/Response.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/filesystem/EntryBase.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/imagecapture/PhotoCapabilities.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/payments/PaymentAppManager.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerScriptCachedMetadataHandler.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/shapedetection/DetectedBarcode.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/shapedetection/DetectedText.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/webdatabase/Database.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/webgl/GLStringQuery.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/webmidi/MIDIPort.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/webshare/NavigatorShare.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/websockets/DocumentWebSocketChannel.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/modules/websockets/WebSocketHandleImpl.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/SharedBufferChunkReader.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/fonts/OrientationIteratorTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/fonts/ScriptRunIteratorTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/fonts/SmallCapsIteratorTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/fonts/SymbolsIteratorTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/fonts/shaping/RunSegmenterTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/loader/fetch/MemoryCache.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/mojo/KURLStructTraits.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/network/HTTPParsersTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/text/LocaleICU.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/text/LocaleWin.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/weborigin/KURL.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/weborigin/KnownPorts.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/platform/weborigin/SecurityOrigin.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/web/tests/KeyboardTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/StringBuilder.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/StringBuilderTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/StringStatics.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/StringView.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/StringViewTest.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/TextCodecLatin1.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/WTFString.cpp
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/WTFString.h
[modify] https://crrev.com/166d82710cf7ee3212dd839e46547a3ce83e35aa/third_party/WebKit/Source/wtf/text/WTFStringTest.cpp

Status: Fixed (was: Assigned)

Sign in to add a comment