NewTabPage.LoadTime UMA metric is slower with win-clang than win-pgo |
||||
Issue descriptionUMA data from the dev channel experiments show NewTabPage.LoadTime being higher with win-clang than win-pgo. The metric measure time from navigation start to when the NTP tiles are finished loading, which means it includes the time for render start-up. The current theory is that it's not so much the NTP itself that's slower with Clang, but start-up of the first render process.
,
May 31 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/85233645d272d0d71cc23bb73d40ad4a1d4d7d39 commit 85233645d272d0d71cc23bb73d40ad4a1d4d7d39 Author: hans <hans@chromium.org> Date: Wed May 31 21:52:50 2017 Add UMA metric of time to start the first renderer process BUG= 728324 TBR=fdoray Review-Url: https://codereview.chromium.org/2911743002 Cr-Commit-Position: refs/heads/master@{#476049} [modify] https://crrev.com/85233645d272d0d71cc23bb73d40ad4a1d4d7d39/chrome/browser/metrics/first_web_contents_profiler.cc [modify] https://crrev.com/85233645d272d0d71cc23bb73d40ad4a1d4d7d39/chrome/browser/metrics/startup_metrics_browsertest.cc [modify] https://crrev.com/85233645d272d0d71cc23bb73d40ad4a1d4d7d39/components/startup_metric_utils/browser/startup_metric_utils.cc [modify] https://crrev.com/85233645d272d0d71cc23bb73d40ad4a1d4d7d39/components/startup_metric_utils/browser/startup_metric_utils.h [modify] https://crrev.com/85233645d272d0d71cc23bb73d40ad4a1d4d7d39/tools/metrics/histograms/histograms.xml
,
Jun 9 2017
Got a patch out for using order files: https://chromium-review.googlesource.com/c/529684/ The order files were generated with the "cygprofile" -finstrument-functions flag with the horrible patch here: https://codereview.chromium.org/2924093003
,
Jun 9 2017
I ran the startup.cold.blank_page telemetry benchmark locally on 32-bit builds with and without order file. These numbers probably don't mean much, but the order file build (left) seems a little faster on some benchmarks, and on the ones where it's slower, that seems to be due to an outlier moving the average.
,
Jun 12 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac commit fc1e2979b25c3534bcc0e9a41a4cf37b458589ac Author: Hans Wennborg <hans@chromium.org> Date: Mon Jun 12 20:45:09 2017 Win/Clang: Use order files for linking {chrome,chrome_child}.dll Bug: 728324 Change-Id: Id007d43ea6468ce3ed8601c4e848861c224ef578 Reviewed-on: https://chromium-review.googlesource.com/529684 Commit-Queue: Hans Wennborg <hans@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/master@{#478747} [modify] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/.gitignore [modify] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/DEPS [modify] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/chrome/BUILD.gn [add] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/chrome/build/OWNERS [add] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/chrome/build/README [add] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/chrome/build/chrome.x64.orderfile.sha1 [add] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/chrome/build/chrome.x86.orderfile.sha1 [add] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/chrome/build/chrome_child.x64.orderfile.sha1 [add] https://crrev.com/fc1e2979b25c3534bcc0e9a41a4cf37b458589ac/chrome/build/chrome_child.x86.orderfile.sha1
,
Jun 20 2017
New order files landed last night: https://codereview.chromium.org/2943423002 Not sure why it didn't update the bug.
,
Jun 20 2017
Using the same instrumentation as for the order files (https://codereview.chromium.org/2924093003) we can get a list of functions called during start-up sorted by frequency (attached). (The list is not perfect becuase the instrumentation will affect inlining decisions, but it should still be a good guide.) By adding printfs to LLVM we can see all the inlining decisions, in particular the ones done during an LTO build, i.e. functions that are not available for inlining during regular builds (attached). diff --git a/lib/Transforms/Utils/InlineFunction.cpp b/lib/Transforms/Utils/InlineFunction.cpp index 2a18c14..50bc610 100644 --- a/lib/Transforms/Utils/InlineFunction.cpp +++ b/lib/Transforms/Utils/InlineFunction.cpp @@ -2109,6 +2109,15 @@ bool llvm::InlineFunction(CallSite CS, InlineFunctionInfo &IFI, else TheCall->replaceAllUsesWith(R->getReturnValue()); } + + StringRef CallerName = TheCall->getParent()->getParent()->getName(); + if (CallerName.front() == 1) CallerName = CallerName.drop_front(); + + StringRef CalleeName = CalledFunc->getName(); + if (CalleeName.front() == 1) CalleeName = CalleeName.drop_front(); + + llvm::errs() << "INLINE CALLER " << CallerName << " CALLEE " << CalleeName << "\n"; + // Since we are now done with the Call/Invoke, we can delete it. TheCall->eraseFromParent(); Taking the intersection of those two, we get a list of functions hit during start-up that would be inlined at least once in an LTO build. Below are the first 100 lines from that file. The idea is that it might be beneficial to define some of these inline to enable inlining in builds that don't yet use LTO. ?GetUnexpectedTokenMessage@?$ParserBase@VParser@internal@v8@@@internal@v8@@IEAAXW4Value@Token@23@PEAW4Template@MessageTemplate@23@PEAULocation@Scanner@23@PEAPEBDW46723@@Z 431344 LTO free 277882 LTO ?ScanTemplateContinuation@Scanner@internal@v8@@QEAA?AW4Value@Token@23@XZ 205153 LTO ??0VariableProxy@internal@v8@@AEAA@PEBVAstRawString@12@W4VariableKind@12@H@Z 151841 LTO ?ZapRange@HandleScope@internal@v8@@CAXPEAPEAVObject@23@0@Z 147654 LTO ?NewUnresolved@Scope@internal@v8@@QEAAPEAVVariableProxy@23@PEAVAstNodeFactory@23@PEBVAstRawString@23@HW4VariableKind@23@@Z 140454 LTO ?Unlock@LockImpl@internal@base@@QEAAXXZ 123089 LTO ?Release@RefCountedThreadSafeBase@subtle@base@@IEBA_NXZ 99526 LTO ?AddRef@RefCountedThreadSafeBase@subtle@base@@IEBAXXZ 97363 LTO ?Lock@LockImpl@internal@base@@QEAAXXZ 89006 LTO ??0ScopedLockAcquireActivity@debug@base@@AEAA@PEBXPEBVLockImpl@internal@2@@Z 86375 LTO ?ScavengeObjectSlow@Scavenger@internal@v8@@SAXPEAPEAVHeapObject@23@PEAV423@@Z 80931 LTO ?GetKind@FeedbackVector@internal@v8@@QEBA?AW4FeedbackSlotKind@23@VFeedbackSlot@23@@Z 77635 LTO ?GetTLSValue@PlatformThreadLocalStorage@internal@base@@SAPEAXK@Z 76780 LTO ?SaturatedAdd@time_internal@base@@YA_JVTimeDelta@2@_J@Z 66284 LTO ??0?$CallbackBase@$00@internal@base@@QEAA@$$QEAV012@@Z 60376 LTO ?set_range@BucketRanges@base@@QEAAX_KH@Z 59638 LTO ??0Variable@internal@v8@@QEAA@PEAVScope@12@PEBVAstRawString@12@W4VariableMode@12@W4VariableKind@12@W4InitializationFlag@12@W4MaybeAssignedFlag@12@@Z 57994 LTO ?GetUnexpectedTokenMessage@?$ParserBase@VPreParser@internal@v8@@@internal@v8@@IEAAXW4Value@Token@23@PEAW4Template@MessageTemplate@23@PEAULocation@Scanner@23@PEAPEBDW46723@@Z 52622 LTO ?CopyRaw@SnapshotByteSource@internal@v8@@QEAAXPEAEH@Z 45411 LTO ?Now@TimeTicks@base@@SA?AV12@XZ 38981 LTO ?AllocateFixedArray@Heap@internal@v8@@AEAA?AVAllocationResult@23@HW4PretenureFlag@23@@Z 37636 LTO ??0CSSParserToken@blink@@QEAA@W4CSSParserTokenType@1@W4BlockType@01@@Z 35721 LTO ?GetVisitorId@StaticVisitorBase@internal@v8@@SA?AW4VisitorId@23@PEAVMap@23@@Z 32558 LTO ?GetVisitorId@StaticVisitorBase@internal@v8@@SA?AW4VisitorId@23@HH_N@Z 32502 LTO ?Lock@Mutex@base@v8@@QEAAXXZ 31735 LTO ?SizeOfOperand@Bytecodes@interpreter@internal@v8@@SA?AW4OperandSize@234@W4OperandType@234@W4OperandScale@234@@Z 30137 LTO ?GetAccessors@LookupIterator@internal@v8@@QEBA?AV?$Handle@VObject@internal@v8@@@23@XZ 29636 LTO ?IterateBody@HeapObject@internal@v8@@QEAAXW4InstanceType@23@HPEAVObjectVisitor@23@@Z 29391 LTO ?InterpreterEntryTrampoline@Builtins@internal@v8@@QEAA?AV?$Handle@VCode@internal@v8@@@23@XZ 29036 LTO ??0Assignment@internal@v8@@AEAA@W4Value@Token@12@PEAVExpression@12@1H@Z 28905 LTO ??0StackFrameIterator@internal@v8@@QEAA@PEAVIsolate@12@@Z 26934 LTO ??0StackFrameIteratorBase@internal@v8@@IEAA@PEAVIsolate@12@_N@Z 26904 LTO ??0CSSParserToken@blink@@QEAA@W4CSSParserTokenType@1@VStringView@WTF@@W4BlockType@01@@Z 23192 LTO ?InMilliseconds@TimeDelta@base@@QEBA_JXZ 23118 LTO ?kind@FunctionLiteral@internal@v8@@QEBA?AW4FunctionKind@23@XZ 22518 LTO ??0Location@tracked_objects@@QEAA@AEBV01@@Z 22204 LTO ?global_object@Context@internal@v8@@QEAAPEAVJSGlobalObject@23@XZ 20720 LTO ?GetElementsAccessor@JSObject@internal@v8@@QEAAPEAVElementsAccessor@23@XZ 19608 LTO ??0?$CallbackBase@$0A@@internal@base@@IEAA@PEAVBindStateBase@12@@Z 19419 LTO ?Delimiter@CSSParserToken@blink@@QEBA_WXZ 19275 LTO ?IterateBody@HeapObject@internal@v8@@QEAAXPEAVObjectVisitor@23@@Z 18727 LTO ??0SkString@@QEAA@XZ 18565 LTO ?IsInheritedProperty@CSSPropertyMetadata@blink@@SA_NW4CSSPropertyID@2@@Z 18177 LTO ?IsActive@Locker@v8@@SA_NXZ 17982 LTO ??0SkString@@QEAA@$$QEAV0@@Z 17250 LTO ??0PendingTask@base@@QEAA@$$QEAU01@@Z 16260 LTO ?scope@ParseInfo@internal@v8@@QEBAPEAVDeclarationScope@23@XZ 15901 LTO ?RootIsImmortalImmovable@Heap@internal@v8@@SA_NH@Z 15872 LTO ?Now@TrackedTime@tracked_objects@@SA?AV12@XZ 15628 LTO ?sk_free@@YAXPEAX@Z 15265 LTO ?GetStaticVisitorIdForMap@Heap@internal@v8@@SAHPEAVMap@23@@Z 15131 LTO ?GetIsolate@Context@v8@@QEAAPEAVIsolate@2@XZ 14863 LTO ?CreatingInitialEmptyDocument@FrameLoaderStateMachine@blink@@QEBA_NXZ 14750 LTO ?NumericValue@CSSParserToken@blink@@QEBANXZ 14539 LTO ??GTrackedTime@tracked_objects@@QEBA?AVDuration@1@AEBV01@@Z 14353 LTO ??0Zone@internal@v8@@QEAA@PEAVAccountingAllocator@12@PEBD@Z 14141 LTO ?FromParameterIndex@Register@interpreter@internal@v8@@SA?AV1234@HH@Z 14023 LTO ?Empty@ScopeInfo@internal@v8@@SAPEAV123@PEAVIsolate@23@@Z 13584 LTO ?ConfigurePremonomorphic@FeedbackNexus@internal@v8@@QEAAXXZ 13428 LTO ?is_current_context@Register@interpreter@internal@v8@@QEBA_NXZ 12517 LTO ?NewNoClosuresCell@Factory@internal@v8@@QEAA?AV?$Handle@VCell@internal@v8@@@23@V?$Handle@VObject@internal@v8@@@23@@Z 12407 LTO ?AssignFeedbackSlots@Assignment@internal@v8@@QEAAXPEAVFeedbackVectorSpec@23@W4LanguageMode@23@PEAVFeedbackSlotCache@23@@Z 12237 LTO ?HasOneRef@RefCountedThreadSafeBase@subtle@base@@QEBA_NXZ 11188 LTO ?CurrentId@PlatformThread@base@@SAKXZ 11184 LTO ?ExpiredCount@ConsoleMessageStorage@blink@@QEBAHXZ 10598 LTO ??0FuncNameInferrer@internal@v8@@QEAA@PEAVAstValueFactory@12@PEAVZone@12@@Z 10488 LTO ?DeclareAndInitializeVariables@PatternRewriter@Parser@internal@v8@@SAXPEAV234@PEAVBlock@34@PEBUDeclarationDescriptor@?$ParserBase@VParser@internal@v8@@@34@PEBUDeclaration@DeclarationParsingResult@734@PEAV?$ZoneList@PEBVAstRawString@internal@v8@@@34@PEA_N@Z 10377 LTO ?DataField@Descriptor@internal@v8@@SA?AV123@V?$Handle@VName@internal@v8@@@23@HW4PropertyAttributes@23@W4PropertyConstness@23@VRepresentation@23@V?$Handle@VObject@internal@v8@@@23@@Z 10236 LTO ?IncreaseSumAndCount@HistogramSamples@base@@IEAAX_JH@Z 9852 LTO ??0Operand@internal@v8@@QEAA@URegister@12@H@Z 9828 LTO ?shorthandForProperty@blink@@YAAEBVStylePropertyShorthand@1@W4CSSPropertyID@1@@Z 9444 LTO ?start_position@FunctionLiteral@internal@v8@@QEBAHXZ 9359 LTO ?Add@TemplateList@internal@v8@@SA?AV?$Handle@VTemplateList@internal@v8@@@23@PEAVIsolate@23@V423@V?$Handle@VObject@internal@v8@@@23@@Z 9003 LTO ??0CSSParserToken@blink@@QEAA@W4CSSParserTokenType@1@NW4NumericValueType@1@W4NumericSign@1@@Z 8703 LTO ?Get@CSSPropertyDescriptor@blink@@SAAEBU12@W4CSSPropertyID@2@@Z 8606 LTO ?Contains@LargeObjectSpace@internal@v8@@QEAA_NPEAVHeapObject@23@@Z 8527 LTO ?isShorthandProperty@blink@@YA_NW4CSSPropertyID@1@@Z 8446 LTO ??0CSSParserSelector@blink@@QEAA@XZ 8429 LTO ?IsCancelled@?$CallbackBase@$0A@@internal@base@@QEBA_NXZ 8247 LTO ?Parameter@BytecodeArrayBuilder@interpreter@internal@v8@@QEBA?AVRegister@234@H@Z 8236 LTO ?global_proxy@Context@internal@v8@@QEAAPEAVJSObject@23@XZ 8115 LTO ?AssignFeedbackSlots@Call@internal@v8@@QEAAXPEAVFeedbackVectorSpec@23@W4LanguageMode@23@PEAVFeedbackSlotCache@23@@Z 7950 LTO ?language_mode@FunctionLiteral@internal@v8@@QEBA?AW4LanguageMode@23@XZ 7395 LTO ?end_position@FunctionLiteral@internal@v8@@QEBAHXZ 7369 LTO ?NewConsString@AstValueFactory@internal@v8@@QEAAPEAVAstConsString@23@XZ 7327 LTO ??0HandleScope@v8@@QEAA@PEAVIsolate@1@@Z 7263 LTO ?PaintingExtent@PaintLayer@blink@@QEAA?AVLayoutRect@2@PEBV12@AEBVLayoutSize@2@I@Z 7259 LTO ?Current@BeginFrameTracker@cc@@QEBAAEBUBeginFrameArgs@2@XZ 7231 LTO ?CachedImage@CSSImageSetValue@blink@@QEBAPEAVStyleImage@2@M@Z 7038 LTO ?DefineOwnPropertyIgnoreAttributes@JSObject@internal@v8@@SA?AV?$MaybeHandle@VObject@internal@v8@@@23@PEAVLookupIterator@23@V?$Handle@VObject@internal@v8@@@23@W4PropertyAttributes@23@W4AccessorInfoHandling@123@@Z 7019 LTO ??0Location@tracked_objects@@QEAA@PEBD0HPEBX@Z 6980 LTO ?DiscardReservedEntry@ConstantArrayBuilder@interpreter@internal@v8@@QEAAXW4OperandSize@234@@Z 6627 LTO ??0CSSParserToken@blink@@QEAA@W4CSSParserTokenType@1@_W@Z 6557 LTO ?ArchiveState@Bootstrapper@internal@v8@@QEAAPEADPEAD@Z 6551 LTO ?AllocateDeferredConstantPoolEntry@BytecodeArrayBuilder@interpreter@internal@v8@@QEAA_KXZ 6166 LTO ?InsertDeferred@ConstantArrayBuilder@interpreter@internal@v8@@QEAA_KXZ 6161 LTO ??BElementId@cc@@QEBA_NXZ 6103 LTO ?findInstanceInPrototypeChain@V8Window@blink@@SA?AV?$Local@VObject@v8@@@v8@@V?$Local@VValue@v8@@@4@PEAVIsolate@4@@Z 6008 LTO ?Client@FrameLoader@blink@@QEBAPEAVLocalFrameClient@2@XZ 5837 LTO
,
Jun 20 2017
For people who can't read ms abi mangled symbols, here's the same thing piped through demumble: protected: void __cdecl v8::internal::ParserBase<class v8::internal::Parser>::GetUnexpectedTokenMessage(enum v8::internal::Token::Value,enum v8::internal::MessageTemplate::Template * __ptr64,struct v8::internal::Scanner::Location * __ptr64,char const * __ptr64 * __ptr64,enum v8::internal::MessageTemplate::Template) __ptr64 431344 LTO free 277882 LTO public: enum v8::internal::Token::Value __cdecl v8::internal::Scanner::ScanTemplateContinuation(void) __ptr64 205153 LTO private: __cdecl v8::internal::VariableProxy::VariableProxy(class v8::internal::AstRawString const * __ptr64,enum v8::internal::VariableKind,int) __ptr64 151841 LTO private: static void __cdecl v8::internal::HandleScope::ZapRange(class v8::internal::Object * __ptr64 * __ptr64,class v8::internal::Object * __ptr64 * __ptr64) 147654 LTO public: class v8::internal::VariableProxy * __ptr64 __cdecl v8::internal::Scope::NewUnresolved(class v8::internal::AstNodeFactory * __ptr64,class v8::internal::AstRawString const * __ptr64,int,enum v8::internal::VariableKind) __ptr64 140454 LTO public: void __cdecl base::internal::LockImpl::Unlock(void) __ptr64 123089 LTO protected: bool __cdecl base::subtle::RefCountedThreadSafeBase::Release(void)const __ptr64 99526 LTO protected: void __cdecl base::subtle::RefCountedThreadSafeBase::AddRef(void)const __ptr64 97363 LTO public: void __cdecl base::internal::LockImpl::Lock(void) __ptr64 89006 LTO private: __cdecl base::debug::ScopedLockAcquireActivity::ScopedLockAcquireActivity(void const * __ptr64,class base::internal::LockImpl const * __ptr64) __ptr64 86375 LTO public: static void __cdecl v8::internal::Scavenger::ScavengeObjectSlow(class v8::internal::HeapObject * __ptr64 * __ptr64,class v8::internal::HeapObject * __ptr64) 80931 LTO public: enum v8::internal::FeedbackSlotKind __cdecl v8::internal::FeedbackVector::GetKind(class v8::internal::FeedbackSlot)const __ptr64 77635 LTO public: static void * __ptr64 __cdecl base::internal::PlatformThreadLocalStorage::GetTLSValue(unsigned long) 76780 LTO __int64 __cdecl base::time_internal::SaturatedAdd(class base::TimeDelta,__int64) 66284 LTO ??0?$CallbackBase@$00@internal@base@@QEAA@$$QEAV012@@Z 60376 LTO public: void __cdecl base::BucketRanges::set_range(unsigned __int64,int) __ptr64 59638 LTO public: __cdecl v8::internal::Variable::Variable(class v8::internal::Scope * __ptr64,class v8::internal::AstRawString const * __ptr64,enum v8::internal::VariableMode,enum v8::internal::VariableKind,enum v8::internal::InitializationFlag,enum v8::internal::MaybeAssignedFlag) __ptr64 57994 LTO protected: void __cdecl v8::internal::ParserBase<class v8::internal::PreParser>::GetUnexpectedTokenMessage(enum v8::internal::Token::Value,enum v8::internal::MessageTemplate::Template * __ptr64,struct v8::internal::Scanner::Location * __ptr64,char const * __ptr64 * __ptr64,enum v8::internal::MessageTemplate::Template) __ptr64 52622 LTO public: void __cdecl v8::internal::SnapshotByteSource::CopyRaw(unsigned char * __ptr64,int) __ptr64 45411 LTO public: static class base::TimeTicks __cdecl base::TimeTicks::Now(void) 38981 LTO private: class v8::internal::AllocationResult __cdecl v8::internal::Heap::AllocateFixedArray(int,enum v8::internal::PretenureFlag) __ptr64 37636 LTO public: __cdecl blink::CSSParserToken::CSSParserToken(enum blink::CSSParserTokenType,enum blink::CSSParserToken::BlockType) __ptr64 35721 LTO public: static enum v8::internal::VisitorId __cdecl v8::internal::StaticVisitorBase::GetVisitorId(class v8::internal::Map * __ptr64) 32558 LTO public: static enum v8::internal::VisitorId __cdecl v8::internal::StaticVisitorBase::GetVisitorId(int,int,bool) 32502 LTO public: void __cdecl v8::base::Mutex::Lock(void) __ptr64 31735 LTO public: static enum v8::internal::interpreter::OperandSize __cdecl v8::internal::interpreter::Bytecodes::SizeOfOperand(enum v8::internal::interpreter::OperandType,enum v8::internal::interpreter::OperandScale) 30137 LTO public: class v8::internal::Handle<class v8::internal::Object> __cdecl v8::internal::LookupIterator::GetAccessors(void)const __ptr64 29636 LTO public: void __cdecl v8::internal::HeapObject::IterateBody(enum v8::internal::InstanceType,int,class v8::internal::ObjectVisitor * __ptr64) __ptr64 29391 LTO public: class v8::internal::Handle<class v8::internal::Code> __cdecl v8::internal::Builtins::InterpreterEntryTrampoline(void) __ptr64 29036 LTO private: __cdecl v8::internal::Assignment::Assignment(enum v8::internal::Token::Value,class v8::internal::Expression * __ptr64,class v8::internal::Expression * __ptr64,int) __ptr64 28905 LTO public: __cdecl v8::internal::StackFrameIterator::StackFrameIterator(class v8::internal::Isolate * __ptr64) __ptr64 26934 LTO protected: __cdecl v8::internal::StackFrameIteratorBase::StackFrameIteratorBase(class v8::internal::Isolate * __ptr64,bool) __ptr64 26904 LTO public: __cdecl blink::CSSParserToken::CSSParserToken(enum blink::CSSParserTokenType,class WTF::StringView,enum blink::CSSParserToken::BlockType) __ptr64 23192 LTO public: __int64 __cdecl base::TimeDelta::InMilliseconds(void)const __ptr64 23118 LTO public: enum v8::internal::FunctionKind __cdecl v8::internal::FunctionLiteral::kind(void)const __ptr64 22518 LTO public: __cdecl tracked_objects::Location::Location(class tracked_objects::Location const & __ptr64) __ptr64 22204 LTO public: class v8::internal::JSGlobalObject * __ptr64 __cdecl v8::internal::Context::global_object(void) __ptr64 20720 LTO public: class v8::internal::ElementsAccessor * __ptr64 __cdecl v8::internal::JSObject::GetElementsAccessor(void) __ptr64 19608 LTO protected: __cdecl base::internal::CallbackBase<0>::CallbackBase<0>(class base::internal::BindStateBase * __ptr64) __ptr64 19419 LTO public: wchar_t __cdecl blink::CSSParserToken::Delimiter(void)const __ptr64 19275 LTO public: void __cdecl v8::internal::HeapObject::IterateBody(class v8::internal::ObjectVisitor * __ptr64) __ptr64 18727 LTO public: __cdecl SkString::SkString(void) __ptr64 18565 LTO public: static bool __cdecl blink::CSSPropertyMetadata::IsInheritedProperty(enum blink::CSSPropertyID) 18177 LTO public: static bool __cdecl v8::Locker::IsActive(void) 17982 LTO ??0SkString@@QEAA@$$QEAV0@@Z 17250 LTO ??0PendingTask@base@@QEAA@$$QEAU01@@Z 16260 LTO public: class v8::internal::DeclarationScope * __ptr64 __cdecl v8::internal::ParseInfo::scope(void)const __ptr64 15901 LTO public: static bool __cdecl v8::internal::Heap::RootIsImmortalImmovable(int) 15872 LTO public: static class tracked_objects::TrackedTime __cdecl tracked_objects::TrackedTime::Now(void) 15628 LTO void __cdecl sk_free(void * __ptr64) 15265 LTO public: static int __cdecl v8::internal::Heap::GetStaticVisitorIdForMap(class v8::internal::Map * __ptr64) 15131 LTO public: class v8::Isolate * __ptr64 __cdecl v8::Context::GetIsolate(void) __ptr64 14863 LTO public: bool __cdecl blink::FrameLoaderStateMachine::CreatingInitialEmptyDocument(void)const __ptr64 14750 LTO public: double __cdecl blink::CSSParserToken::NumericValue(void)const __ptr64 14539 LTO public: class tracked_objects::Duration __cdecl tracked_objects::TrackedTime::operator-(class tracked_objects::TrackedTime const & __ptr64)const __ptr64 14353 LTO public: __cdecl v8::internal::Zone::Zone(class v8::internal::AccountingAllocator * __ptr64,char const * __ptr64) __ptr64 14141 LTO public: static class v8::internal::interpreter::Register __cdecl v8::internal::interpreter::Register::FromParameterIndex(int,int) 14023 LTO public: static class v8::internal::ScopeInfo * __ptr64 __cdecl v8::internal::ScopeInfo::Empty(class v8::internal::Isolate * __ptr64) 13584 LTO public: void __cdecl v8::internal::FeedbackNexus::ConfigurePremonomorphic(void) __ptr64 13428 LTO public: bool __cdecl v8::internal::interpreter::Register::is_current_context(void)const __ptr64 12517 LTO public: class v8::internal::Handle<class v8::internal::Cell> __cdecl v8::internal::Factory::NewNoClosuresCell(class v8::internal::Handle<class v8::internal::Object>) __ptr64 12407 LTO public: void __cdecl v8::internal::Assignment::AssignFeedbackSlots(class v8::internal::FeedbackVectorSpec * __ptr64,enum v8::internal::LanguageMode,class v8::internal::FeedbackSlotCache * __ptr64) __ptr64 12237 LTO public: bool __cdecl base::subtle::RefCountedThreadSafeBase::HasOneRef(void)const __ptr64 11188 LTO public: static unsigned long __cdecl base::PlatformThread::CurrentId(void) 11184 LTO public: int __cdecl blink::ConsoleMessageStorage::ExpiredCount(void)const __ptr64 10598 LTO public: __cdecl v8::internal::FuncNameInferrer::FuncNameInferrer(class v8::internal::AstValueFactory * __ptr64,class v8::internal::Zone * __ptr64) __ptr64 10488 LTO public: static void __cdecl v8::internal::Parser::PatternRewriter::DeclareAndInitializeVariables(class v8::internal::Parser * __ptr64,class v8::internal::Block * __ptr64,struct v8::internal::ParserBase<class v8::internal::Parser>::DeclarationDescriptor const * __ptr64,struct v8::internal::ParserBase<class v8::internal::Parser>::DeclarationParsingResult::Declaration const * __ptr64,class v8::internal::ZoneList<class v8::internal::AstRawString const * __ptr64> * __ptr64,bool * __ptr64) 10377 LTO public: static class v8::internal::Descriptor __cdecl v8::internal::Descriptor::DataField(class v8::internal::Handle<class v8::internal::Name>,int,enum v8::internal::PropertyAttributes,enum v8::internal::PropertyConstness,class v8::internal::Representation,class v8::internal::Handle<class v8::internal::Object>) 10236 LTO protected: void __cdecl base::HistogramSamples::IncreaseSumAndCount(__int64,int) __ptr64 9852 LTO public: __cdecl v8::internal::Operand::Operand(struct v8::internal::Register,int) __ptr64 9828 LTO class blink::StylePropertyShorthand const & __ptr64 __cdecl blink::shorthandForProperty(enum blink::CSSPropertyID) 9444 LTO public: int __cdecl v8::internal::FunctionLiteral::start_position(void)const __ptr64 9359 LTO public: static class v8::internal::Handle<class v8::internal::TemplateList> __cdecl v8::internal::TemplateList::Add(class v8::internal::Isolate * __ptr64,class v8::internal::Handle<class v8::internal::TemplateList>,class v8::internal::Handle<class v8::internal::Object>) 9003 LTO public: __cdecl blink::CSSParserToken::CSSParserToken(enum blink::CSSParserTokenType,double,enum blink::NumericValueType,enum blink::NumericSign) __ptr64 8703 LTO public: static struct blink::CSSPropertyDescriptor const & __ptr64 __cdecl blink::CSSPropertyDescriptor::Get(enum blink::CSSPropertyID) 8606 LTO public: bool __cdecl v8::internal::LargeObjectSpace::Contains(class v8::internal::HeapObject * __ptr64) __ptr64 8527 LTO bool __cdecl blink::isShorthandProperty(enum blink::CSSPropertyID) 8446 LTO public: __cdecl blink::CSSParserSelector::CSSParserSelector(void) __ptr64 8429 LTO public: bool __cdecl base::internal::CallbackBase<0>::IsCancelled(void)const __ptr64 8247 LTO public: class v8::internal::interpreter::Register __cdecl v8::internal::interpreter::BytecodeArrayBuilder::Parameter(int)const __ptr64 8236 LTO public: class v8::internal::JSObject * __ptr64 __cdecl v8::internal::Context::global_proxy(void) __ptr64 8115 LTO public: void __cdecl v8::internal::Call::AssignFeedbackSlots(class v8::internal::FeedbackVectorSpec * __ptr64,enum v8::internal::LanguageMode,class v8::internal::FeedbackSlotCache * __ptr64) __ptr64 7950 LTO public: enum v8::internal::LanguageMode __cdecl v8::internal::FunctionLiteral::language_mode(void)const __ptr64 7395 LTO public: int __cdecl v8::internal::FunctionLiteral::end_position(void)const __ptr64 7369 LTO public: class v8::internal::AstConsString * __ptr64 __cdecl v8::internal::AstValueFactory::NewConsString(void) __ptr64 7327 LTO public: __cdecl v8::HandleScope::HandleScope(class v8::Isolate * __ptr64) __ptr64 7263 LTO public: class blink::LayoutRect __cdecl blink::PaintLayer::PaintingExtent(class blink::PaintLayer const * __ptr64,class blink::LayoutSize const & __ptr64,unsigned int) __ptr64 7259 LTO public: struct cc::BeginFrameArgs const & __ptr64 __cdecl cc::BeginFrameTracker::Current(void)const __ptr64 7231 LTO public: class blink::StyleImage * __ptr64 __cdecl blink::CSSImageSetValue::CachedImage(float)const __ptr64 7038 LTO public: static class v8::internal::MaybeHandle<class v8::internal::Object> __cdecl v8::internal::JSObject::DefineOwnPropertyIgnoreAttributes(class v8::internal::LookupIterator * __ptr64,class v8::internal::Handle<class v8::internal::Object>,enum v8::internal::PropertyAttributes,enum v8::internal::JSObject::AccessorInfoHandling) 7019 LTO public: __cdecl tracked_objects::Location::Location(char const * __ptr64,char const * __ptr64,int,void const * __ptr64) __ptr64 6980 LTO public: void __cdecl v8::internal::interpreter::ConstantArrayBuilder::DiscardReservedEntry(enum v8::internal::interpreter::OperandSize) __ptr64 6627 LTO public: __cdecl blink::CSSParserToken::CSSParserToken(enum blink::CSSParserTokenType,wchar_t) __ptr64 6557 LTO public: char * __ptr64 __cdecl v8::internal::Bootstrapper::ArchiveState(char * __ptr64) __ptr64 6551 LTO public: unsigned __int64 __cdecl v8::internal::interpreter::BytecodeArrayBuilder::AllocateDeferredConstantPoolEntry(void) __ptr64 6166 LTO public: unsigned __int64 __cdecl v8::internal::interpreter::ConstantArrayBuilder::InsertDeferred(void) __ptr64 6161 LTO public: __cdecl cc::ElementId::operator bool(void)const __ptr64 6103 LTO public: static class v8::Local<class v8::Object> __cdecl blink::V8Window::findInstanceInPrototypeChain(class v8::Local<class v8::Value>,class v8::Isolate * __ptr64) 6008 LTO public: class blink::LocalFrameClient * __ptr64 __cdecl blink::FrameLoader::Client(void)const __ptr64 5837 LTO
,
Jun 20 2017
First one is defined inline: https://cs.chromium.org/chromium/src/v8/src/parsing/parser-base.h?type=cs&l=1611 2 isn't (https://cs.chromium.org/chromium/src/v8/src/parsing/scanner.cc?type=cs&q=ScanTemplateContinuation&l=1195) 3 isn't: https://cs.chromium.org/chromium/src/v8/src/ast/ast.cc?type=cs&l=196 4 isn't: https://cs.chromium.org/chromium/src/v8/src/handles.cc?type=cs&q=ZapRange&l=98
,
Jun 20 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3029e8547965ce8f4d09019a54d79c1fe1cb3def commit 3029e8547965ce8f4d09019a54d79c1fe1cb3def Author: thakis <thakis@chromium.org> Date: Tue Jun 20 20:49:12 2017 Revert of clang/win: Temporarily slow down renderer startup by 0.1s (patchset #1 id:1 of https://codereview.chromium.org/2944033004/ ) Reason for revert: Dev channel was cut. Original issue's description: > clang/win: Temporarily slow down renderer startup by 0.1s > > We're trying to understand why a certain metric is a bit higher with clang > than with MSVC. We think this might be due to slower renderer startup, but > we're not sure. Slow down renderer startup so we can measure if this is the > reason. > > BUG= 728324 > > Review-Url: https://codereview.chromium.org/2944033004 > Cr-Commit-Position: refs/heads/master@{#480707} > Committed: https://chromium.googlesource.com/chromium/src/+/51a2f1e6d3a9edc207bbc096a827153b1a23d316 TBR=avi@chromium.org,kinuko@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= 728324 Review-Url: https://codereview.chromium.org/2949913002 Cr-Commit-Position: refs/heads/master@{#480953} [modify] https://crrev.com/3029e8547965ce8f4d09019a54d79c1fe1cb3def/content/renderer/renderer_main.cc
,
Jun 20 2017
A patch for some of the V8 ones: https://codereview.chromium.org/2950993002/
,
Jun 21 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/73f022ae44572601cb364871eaba46088c3c2666 commit 73f022ae44572601cb364871eaba46088c3c2666 Author: hans <hans@chromium.org> Date: Wed Jun 21 02:34:17 2017 Make LockImpl::Unlock available for inlining This function is hit frequently and we'd like it to available for inlining even in non-LTO builds (see bug). BUG= 728324 Review-Url: https://codereview.chromium.org/2949953002 Cr-Commit-Position: refs/heads/master@{#481090} [modify] https://crrev.com/73f022ae44572601cb364871eaba46088c3c2666/base/synchronization/lock_impl.h [modify] https://crrev.com/73f022ae44572601cb364871eaba46088c3c2666/base/synchronization/lock_impl_posix.cc [modify] https://crrev.com/73f022ae44572601cb364871eaba46088c3c2666/base/synchronization/lock_impl_win.cc
,
Jun 21 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5e3bdec771619fd558e176dafe393bfe1690078a commit 5e3bdec771619fd558e176dafe393bfe1690078a Author: hans <hans@chromium.org> Date: Wed Jun 21 02:40:35 2017 Make RefCountedThreadSafeBase::AddRef and Release available for inlining These are hit frequently, and would benefit from inlining even in non-LTO builds (see bug). BUG= 728324 Review-Url: https://codereview.chromium.org/2947863003 Cr-Commit-Position: refs/heads/master@{#481091} [modify] https://crrev.com/5e3bdec771619fd558e176dafe393bfe1690078a/base/memory/ref_counted.cc [modify] https://crrev.com/5e3bdec771619fd558e176dafe393bfe1690078a/base/memory/ref_counted.h
,
Jun 21 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7fca9e960b25c90e214c7e900873ae73202d7720 commit 7fca9e960b25c90e214c7e900873ae73202d7720 Author: hans <hans@chromium.org> Date: Wed Jun 21 02:41:10 2017 Inline BucketRanges::set_range This is hit frequently, and would benefit from inlining even in non-LTO builds (see bug). BUG= 728324 Review-Url: https://codereview.chromium.org/2949983002 Cr-Commit-Position: refs/heads/master@{#481092} [modify] https://crrev.com/7fca9e960b25c90e214c7e900873ae73202d7720/base/metrics/bucket_ranges.cc [modify] https://crrev.com/7fca9e960b25c90e214c7e900873ae73202d7720/base/metrics/bucket_ranges.h
,
Jun 21 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/56e130ab164dbd2949c0355a273d97d0c9d0d4a3 commit 56e130ab164dbd2949c0355a273d97d0c9d0d4a3 Author: hans <hans@chromium.org> Date: Wed Jun 21 02:54:09 2017 Inline PlatformThreadLocalStorage::GetTLSValue This is hit frequently, and would benefit from inlining even in non-LTO builds (see bug). BUG= 728324 Review-Url: https://codereview.chromium.org/2948003003 Cr-Commit-Position: refs/heads/master@{#481093} [modify] https://crrev.com/56e130ab164dbd2949c0355a273d97d0c9d0d4a3/base/threading/thread_local_storage.h [modify] https://crrev.com/56e130ab164dbd2949c0355a273d97d0c9d0d4a3/base/threading/thread_local_storage_posix.cc [modify] https://crrev.com/56e130ab164dbd2949c0355a273d97d0c9d0d4a3/base/threading/thread_local_storage_win.cc
,
Jun 21 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a8a293697a89e19a3ac294cf303f18d7e41237d8 commit a8a293697a89e19a3ac294cf303f18d7e41237d8 Author: hans <hans@chromium.org> Date: Wed Jun 21 06:30:44 2017 Inline CSSParserToken::CSSParserToken These functions are hit frequently and we'd like them to be available for inlining even in non-LTO builds (see bug). BUG= 728324 Review-Url: https://codereview.chromium.org/2945173003 Cr-Commit-Position: refs/heads/master@{#481124} [modify] https://crrev.com/a8a293697a89e19a3ac294cf303f18d7e41237d8/third_party/WebKit/Source/core/css/parser/CSSParserToken.cpp [modify] https://crrev.com/a8a293697a89e19a3ac294cf303f18d7e41237d8/third_party/WebKit/Source/core/css/parser/CSSParserToken.h
,
Jun 23 2017
The V8 patch landed: https://codereview.chromium.org/2950993002/
,
Jun 23 2017
I don't have the LTO log from linking chrome.dll, but let's look at the top functions and see if some are ripe for inlining. From chrome_funcs.txt in #7: ?_Myptr@?$_String_val@U?$_Simple_types@D@std@@@std@@QEAAPEADXZ (3409465) ?_Myptr@?$_String_alloc@U?$_String_base_types@DV?$allocator@D@std@@@std@@@std@@QEAAPEADXZ (1940311) ?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_K@Z (1317422) ?is_valid@WeakReference@internal@base@@QEBA_NXZ (1054522) get_heap_handle (954092) ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAX_N_K@Z (864446) ?get@?$WeakPtr@$$CBVAudioOutputAuthorizationHandler@content@@@base@@QEBAPEBVAudioOutputAuthorizationHandler@content@@XZ (711121) ?find@?$char_traits@D@std@@SAPEBDPEBD_KAEBD@Z (592130) ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KPEBD_K1@Z (585295) ?find@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KD_K@Z (584661) malloc (518049) bn_wexpand (517490) ?WinCallNewHandler@allocator@base@@YA_N_K@Z (516372) ?WinHeapMalloc@allocator@base@@YAPEAX_K@Z (515859) free (442141) ?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA_N_K_N@Z (440040) ?WinHeapFree@allocator@base@@YAXPEAX@Z (439240) ??1?$BooleanCapability@VCollateTraits@printer@cloud_devices@@@cloud_devices@@QEAA@XZ (395234) ??C?$WeakPtr@V?$ObserverListBase@VActivationChangeObserver@wm@@@base@@@base@@QEBAPEAV?$ObserverListBase@VActivationChangeObserver@wm@@@1@XZ (316246) ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ (295493) bn_correct_top (290682) ?compare@?$char_traits@D@std@@SAHPEBD0_K@Z (282099) ??B?$WeakPtr@$$CBVAudioOutputAuthorizationHandler@content@@@base@@QEBA_NXZ (275867) ?copy@?$char_traits@D@std@@SAPEADPEADPEBD_K@Z (272855) ?_Traits_compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@SAHQEBD_K01@Z (248759) ?GetProgramCounter@tracked_objects@@YAPEBXXZ (248586) ?push_back@?$CanonOutputT@D@url@@QEAAXD@Z (241238) ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z (233978) ?length@?$char_traits@D@std@@SA_KPEBD@Z (232074) ?Release@RefCountedThreadSafeBase@subtle@base@@IEBA_NXZ (230742) ?IsEmpty@Size@gfx@@QEBA_NXZ (221585) ?IsEmpty@Rect@gfx@@QEBA_NXZ (220416) ?AddRef@RefCountedThreadSafeBase@subtle@base@@IEBAXXZ (215497) ??0?$hb_auto_trace_t@$0A@AEBUCoverage@OT@@@@QEAA@PEAIPEBDPEBX11ZZ (205468) ?_Adopt@_Iterator_base12@std@@QEAAXPEBU_Container_base12@2@@Z (205148) ??1ScopedThreadActivity@GlobalActivityTracker@debug@base@@QEAA@XZ (200445) ??0ScopedThreadActivity@GlobalActivityTracker@debug@base@@QEAA@PEBX0W4Type@Activity@23@AEBTActivityData@23@_N@Z (195863) ??$?RAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV01@@?$less@X@std@@QEBA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z (193762) ?Unlock@LockImpl@internal@base@@QEAAXXZ (188299) ??$saturated_cast@HUSaturationDefaultHandler@base@@M@internal@base@@YAHM@Z (187056) ??$saturated_cast_impl@HUSaturationDefaultHandler@base@@M@internal@base@@YAHMVRangeCheck@01@@Z (186979) ?Lock@LockImpl@internal@base@@QEAAXXZ (186210) ??1?$CallbackBase@$0A@@internal@base@@IEAA@XZ (185256) ??0ScopedLockAcquireActivity@debug@base@@AEAA@PEBXPEBVLockImpl@internal@2@@Z (184882) ?clamped_max_index@?$Iter@$$CBV?$ObserverListBase@VRTTAndThroughputEstimatesObserver@net@@@base@@@?$ObserverListBase@VRTTAndThroughputEstimatesObserver@net@@@base@@AEBA_KXZ (176249) ?_Myptr@?$_String_val@U?$_Simple_types@_W@std@@@std@@QEAAPEA_WXZ (174708) ?GetClampedValue@Rect@gfx@@CAHHH@Z (171895) ?AddWouldOverflow@Rect@gfx@@CA_NHH@Z (171845) ?_Check_offset@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAX_K@Z (171539) ?IsValid@RangeCheck@internal@base@@QEBA_NXZ (169339) ?GetTLSValue@PlatformThreadLocalStorage@internal@base@@SAPEAXK@Z (167654)
,
Jun 25 2017
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87 commit 410a753ba2b0795e9d9b309c3a11ee5af6ab7b87 Author: machenbach <machenbach@chromium.org> Date: Sun Jun 25 20:34:35 2017 Revert of Make some functions that are hit during renderer startup available for inlining (patchset #3 id:40001 of https://codereview.chromium.org/2950993002/ ) Reason for revert: Blocks roll: https://codereview.chromium.org/2954833002/ E.g.: https://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_compile_dbg_ng/builds/449680 https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_compile_dbg_ng/builds/324953 Please include those chromium trybots on reland. Maybe missing symbol export? Original issue's description: > Make some functions that are hit during renderer startup available for inlining > > This is towards closing the perf gap between the MSVC build (which uses link- > time optimization) and Clang (where LTO isn't ready on Windows yet). We did > a study (see bug) to see which non-inlined functions are hit a lot during render > start-up, and which would be inlined during LTO. This should benefit performance > in all builds which currently don't use LTO (Android, Linux, Mac) as well as > the Win/Clang build. > > The binary size of chrome_child.dll increases by 2KB with this. > > BUG= chromium:728324 > > Review-Url: https://codereview.chromium.org/2950993002 > Cr-Commit-Position: refs/heads/master@{#46191} > Committed: https://chromium.googlesource.com/v8/v8/+/d00d52be1fce9c1bf5558c8b26bf984efd09e65b TBR=jochen@chromium.org,mstarzinger@chromium.org,rmcilroy@chromium.org,vogelheim@chromium.org,marja@chromium.org,mlippautz@chromium.org,thakis@chromium.org,hans@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG= chromium:728324 NOTRY=true NOPRESUBMIT=true Review-Url: https://codereview.chromium.org/2955793002 Cr-Commit-Position: refs/heads/master@{#46195} [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/ast/ast.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/ast/ast.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/ast/scopes.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/ast/scopes.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/ast/variables.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/ast/variables.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/heap-inl.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/heap.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/heap.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/objects-visiting-inl.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/objects-visiting.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/objects-visiting.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/scavenger-inl.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/scavenger.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/heap/scavenger.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/interpreter/bytecodes.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/interpreter/bytecodes.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/parsing/scanner.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/parsing/scanner.h [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/snapshot/snapshot-source-sink.cc [modify] https://crrev.com/410a753ba2b0795e9d9b309c3a11ee5af6ab7b87/src/snapshot/snapshot-source-sink.h
,
Jun 26 2017
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/777da354d20286d39048f1421d89fa109e38b9e1 commit 777da354d20286d39048f1421d89fa109e38b9e1 Author: hans <hans@chromium.org> Date: Mon Jun 26 18:17:05 2017 Make some functions that are hit during renderer startup available for inlining This is towards closing the perf gap between the MSVC build (which uses link- time optimization) and Clang (where LTO isn't ready on Windows yet). We did a study (see bug) to see which non-inlined functions are hit a lot during render start-up, and which would be inlined during LTO. This should benefit performance in all builds which currently don't use LTO (Android, Linux, Mac) as well as the Win/Clang build. The binary size of chrome_child.dll increases by 2KB with this. BUG= chromium:728324 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_compile_dbg_ng;master.tryserver.chromium.mac:mac_chromium_compile_dbg_ng Review-Url: https://codereview.chromium.org/2950993002 Cr-Commit-Position: refs/heads/master@{#46229} [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/ast/ast.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/ast/ast.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/ast/scopes.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/ast/scopes.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/ast/variables.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/ast/variables.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/heap-inl.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/heap.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/heap.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/objects-visiting-inl.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/objects-visiting.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/objects-visiting.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/scavenger-inl.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/scavenger.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/heap/scavenger.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/interpreter/bytecodes.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/interpreter/bytecodes.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/parsing/scanner.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/parsing/scanner.h [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/snapshot/snapshot-source-sink.cc [modify] https://crrev.com/777da354d20286d39048f1421d89fa109e38b9e1/src/snapshot/snapshot-source-sink.h
,
Jun 26 2017
The V8 patch was rolled into Chromium here: https://codereview.chromium.org/2957903002/
,
Jun 28 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d2a722f6bd23eaf0f791b19378c639dce6b3c2c0 commit d2a722f6bd23eaf0f791b19378c639dce6b3c2c0 Author: hans <hans@chromium.org> Date: Wed Jun 28 21:12:54 2017 Move base::WeakPtrFactory's ctor and dtor out-of-line They already invoke the out-of-line ctor/dtor for WeakReferenceOwner, so inlining the bit that sets up ptr_ is not a performance improvement and costs binary size. Since WeakPtrFactory is a template, move the members into a non-template base-class with the ctor/dtor out-of-line. This is expected to reduce the binary size by ~4KB on Android and 24KB on x64 Linux. BUG= 728324 Review-Url: https://codereview.chromium.org/2959203002 Cr-Commit-Position: refs/heads/master@{#483139} [modify] https://crrev.com/d2a722f6bd23eaf0f791b19378c639dce6b3c2c0/base/memory/weak_ptr.cc [modify] https://crrev.com/d2a722f6bd23eaf0f791b19378c639dce6b3c2c0/base/memory/weak_ptr.h
,
Jun 29 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/526f714c9ae172c3b16581b7e11eb035fd14274e commit 526f714c9ae172c3b16581b7e11eb035fd14274e Author: hans <hans@chromium.org> Date: Thu Jun 29 18:22:36 2017 Make base::WeakPtr::Get() fast It was previously calling WeakReference::is_valid() which was an out-of-line method. That means code like if (my_weak_ptr) my_weak_ptr->foo(); would do two calls to is_valid(), plus tests and branching. The is_valid() method showed up as one of the most frequently called non-inline functions during browser start-up on Windows (about 1M calls). is_valid() was also inefficient because it had to do a null-pointer check on flag_, as well as checking if the flag was marked valid. This patch removes the null-pointer check by using a sentinel object instead of a nullptr. And instead of storing a bool in the flag, it stores a pointer-sized bitmask 0 or ~0, so it can be AND'ed with the pointer value and conveniently setting EFLAGS so that the code above just becomes a few loads, AND, branch, and call. (The size of Flag is unchanged; it grows into the padding only.) This is expected to reduce the binary size by ~48KB on Android, and increase it by 79KB on x64 Linux -- something that's paid for by the split-out refactorings to WeakPtr and WeakPtrFactory. Exposing the SequenceChecker calls in inline functions caused the MessageLoopTestType*.Nesting test to overflow on Win64 dcheck release builds, which is why this patch also lowers the recursion depth there. BUG= 728324 Review-Url: https://codereview.chromium.org/2963623002 Cr-Commit-Position: refs/heads/master@{#483427} [modify] https://crrev.com/526f714c9ae172c3b16581b7e11eb035fd14274e/base/memory/weak_ptr.cc [modify] https://crrev.com/526f714c9ae172c3b16581b7e11eb035fd14274e/base/memory/weak_ptr.h [modify] https://crrev.com/526f714c9ae172c3b16581b7e11eb035fd14274e/base/message_loop/message_loop_test.cc
,
Jun 29 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cc65b2990c22909896c5b08ad5e6b159a6bef5f5 commit cc65b2990c22909896c5b08ad5e6b159a6bef5f5 Author: hans <hans@chromium.org> Date: Thu Jun 29 20:35:42 2017 Move base::WeakPtr's null ctor out-of-line They already invoke the out-of-line constructor for WeakPtrBase (which needs to set up the WeakReference, so being out of line makes sense). Because of that, doing ptr_ = nullptr inline doesn't any performance but costs size. Since WeakPtr is a template, move the ptr_ member into the non-template WeakPtrBase and initialize it in that class's out-of-line ctor. This is expected to reduce the binary size by ~8KB on Android and 48KB on x64 Linux. BUG= 728324 Review-Url: https://codereview.chromium.org/2961083002 Cr-Commit-Position: refs/heads/master@{#483474} [modify] https://crrev.com/cc65b2990c22909896c5b08ad5e6b159a6bef5f5/base/memory/weak_ptr.cc [modify] https://crrev.com/cc65b2990c22909896c5b08ad5e6b159a6bef5f5/base/memory/weak_ptr.h [modify] https://crrev.com/cc65b2990c22909896c5b08ad5e6b159a6bef5f5/base/memory/weak_ptr_unittest.nc
,
Jun 29 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/24046fd36c1a132243a7ffd279f59734f947d223 commit 24046fd36c1a132243a7ffd279f59734f947d223 Author: hans <hans@chromium.org> Date: Thu Jun 29 22:07:42 2017 Revert of Make base::WeakPtr::Get() fast (patchset #10 id:180001 of https://codereview.chromium.org/2963623002/ ) Reason for revert: This seems to have broken Cronet tests and Linux TSan. See bugs. Original issue's description: > Make base::WeakPtr::Get() fast > > It was previously calling WeakReference::is_valid() which was an out-of-line > method. That means code like > > if (my_weak_ptr) > my_weak_ptr->foo(); > > would do two calls to is_valid(), plus tests and branching. > > The is_valid() method showed up as one of the most frequently called non-inline > functions during browser start-up on Windows (about 1M calls). > > is_valid() was also inefficient because it had to do a null-pointer check on > flag_, as well as checking if the flag was marked valid. > > This patch removes the null-pointer check by using a sentinel object instead of > a nullptr. And instead of storing a bool in the flag, it stores a pointer-sized > bitmask 0 or ~0, so it can be AND'ed with the pointer value and conveniently > setting EFLAGS so that the code above just becomes a few loads, AND, branch, > and call. (The size of Flag is unchanged; it grows into the padding only.) > > This is expected to reduce the binary size by ~48KB on Android, and increase it > by 79KB on x64 Linux -- something that's paid for by the split-out refactorings > to WeakPtr and WeakPtrFactory. > > Exposing the SequenceChecker calls in inline functions caused the > MessageLoopTestType*.Nesting test to overflow on Win64 dcheck release builds, > which is why this patch also lowers the recursion depth there. > > BUG= 728324 > > Review-Url: https://codereview.chromium.org/2963623002 > Cr-Commit-Position: refs/heads/master@{#483427} > Committed: https://chromium.googlesource.com/chromium/src/+/526f714c9ae172c3b16581b7e11eb035fd14274e TBR=thakis@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= 728324 , 738167 , 738183 , 738193 Review-Url: https://codereview.chromium.org/2966633002 Cr-Commit-Position: refs/heads/master@{#483509} [modify] https://crrev.com/24046fd36c1a132243a7ffd279f59734f947d223/base/memory/weak_ptr.cc [modify] https://crrev.com/24046fd36c1a132243a7ffd279f59734f947d223/base/memory/weak_ptr.h [modify] https://crrev.com/24046fd36c1a132243a7ffd279f59734f947d223/base/message_loop/message_loop_test.cc
,
Jun 30 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/79eb7ebaabeb87fd76da56f35de0ab5776806a15 commit 79eb7ebaabeb87fd76da56f35de0ab5776806a15 Author: hans <hans@chromium.org> Date: Fri Jun 30 18:14:48 2017 Outline RefCountedThreadSafeBase::AddRef and Release on non-X86 They were made inline in #481091, which caused a size drop on X86 and size increase on ARM. The code sequence on ARM is larger than on X86, and probably not worth inlining. BUG= 728324 , 736015 Review-Url: https://codereview.chromium.org/2961413003 Cr-Commit-Position: refs/heads/master@{#483759} [modify] https://crrev.com/79eb7ebaabeb87fd76da56f35de0ab5776806a15/base/memory/ref_counted.cc [modify] https://crrev.com/79eb7ebaabeb87fd76da56f35de0ab5776806a15/base/memory/ref_counted.h
,
Jul 17 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3856eab55bb241fb054a878d9922e65e7b5b0931 commit 3856eab55bb241fb054a878d9922e65e7b5b0931 Author: hans <hans@chromium.org> Date: Mon Jul 17 12:03:22 2017 Make base::WeakPtr::Get() fast It was previous calling the out-of-line method WeakReference::is_valid(). That means that code like if (my_weak_ptr) my_weak_ptr->foo(); would do two calls to is_valid(), plus tests and branching. The is_valid() method showed up as one of the most frequently called non-inline functions during browser start-up on Windows (about 1M calls). is_valid() was also inefficient in itself, because it had to do a null-check flag_, as well as checking if the flag was marked valid. This patch removes the null-pointer check by using a sentinel Flag object instead of a nullptr. And instead of storing a bool in the Flag, it stores a pointer-sized bitmask 0 or ~0, so it can be AND'ed with the pointer value and conveniently setting EFLAGS so that the code above just becomes a few loads, AND, branch, and call. (The size of Flag is unchanged; it grows into the padding only.) This is expected to reduce the binary size by ~48KB on Android, and increase it by 79KB on x64 Linux -- something that's paid for by the split-out refactorings to WeakPtr and WeakPtrFactory. Exposing the SequenceChecker calls in inline functions caused the MessageLoopTestType*.Nesting test to overflow on Win64 dcheck release builds, which is why this patch also lowers the recursion depth there. BUG= 728324 , 738183 , 738193 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_cronet_tester Review-Url: https://codereview.chromium.org/2963623002 Cr-Commit-Position: refs/heads/master@{#487048} [modify] https://crrev.com/3856eab55bb241fb054a878d9922e65e7b5b0931/base/memory/weak_ptr.cc [modify] https://crrev.com/3856eab55bb241fb054a878d9922e65e7b5b0931/base/memory/weak_ptr.h [modify] https://crrev.com/3856eab55bb241fb054a878d9922e65e7b5b0931/base/message_loop/message_loop_test.cc
,
Aug 8 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4cfa301cda2ab84a496f3c13a5e3fa2f8de94fca commit 4cfa301cda2ab84a496f3c13a5e3fa2f8de94fca Author: Hans Wennborg <hans@chromium.org> Date: Tue Aug 08 03:33:38 2017 Revert "Make base::WeakPtr::Get() fast" This reverts commit 71f161e3bd95827876f67c656168f936d88a6e3a and 3856eab55bb241fb054a878d9922e65e7b5b0931. Reason for revert: I'm backing out the WeakPtr changes. While the new code was objectively better, it didn't show on any perf bots, regressed size on Linux quite a bit because the new code was smaller and thus inlined more often, and seems to have introduced a new crasher on Android. To summarize: it seems it's not worth it. The WeakPtr revert will be done in two patches. The first part is in https://chromium-review.googlesource.com/c/604087 This second part should be merged to M61. Original change's description: > Make base::WeakPtr::Get() fast > > It was previous calling the out-of-line method WeakReference::is_valid(). > That means that code like > > if (my_weak_ptr) > my_weak_ptr->foo(); > > would do two calls to is_valid(), plus tests and branching. > > The is_valid() method showed up as one of the most frequently called non-inline > functions during browser start-up on Windows (about 1M calls). > > is_valid() was also inefficient in itself, because it had to do a null-check > flag_, as well as checking if the flag was marked valid. > > This patch removes the null-pointer check by using a sentinel Flag object instead of > a nullptr. And instead of storing a bool in the Flag, it stores a pointer-sized > bitmask 0 or ~0, so it can be AND'ed with the pointer value and conveniently > setting EFLAGS so that the code above just becomes a few loads, AND, branch, > and call. (The size of Flag is unchanged; it grows into the padding only.) > > This is expected to reduce the binary size by ~48KB on Android, and increase it > by 79KB on x64 Linux -- something that's paid for by the split-out refactorings > to WeakPtr and WeakPtrFactory. > > Exposing the SequenceChecker calls in inline functions caused the > MessageLoopTestType*.Nesting test to overflow on Win64 dcheck release builds, > which is why this patch also lowers the recursion depth there. > > BUG= 728324 , 738183 , 738193 > CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_cronet_tester > > Review-Url: https://codereview.chromium.org/2963623002 > Cr-Commit-Position: refs/heads/master@{#487048} BUG=748495, 748075 , 744747 Change-Id: Id85da06115ab9453267ade4d6f8efcfd1b26220c Reviewed-on: https://chromium-review.googlesource.com/604088 Commit-Queue: Hans Wennborg <hans@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/master@{#492520} [modify] https://crrev.com/4cfa301cda2ab84a496f3c13a5e3fa2f8de94fca/base/memory/weak_ptr.cc [modify] https://crrev.com/4cfa301cda2ab84a496f3c13a5e3fa2f8de94fca/base/memory/weak_ptr.h
,
Aug 10 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f393cc0504d4da327d541a054c404aa422470c1c commit f393cc0504d4da327d541a054c404aa422470c1c Author: Hans Wennborg <hans@chromium.org> Date: Thu Aug 10 15:45:38 2017 Revert "Make base::WeakPtr::Get() fast" This reverts commit 71f161e3bd95827876f67c656168f936d88a6e3a and 3856eab55bb241fb054a878d9922e65e7b5b0931. Reason for revert: I'm backing out the WeakPtr changes. While the new code was objectively better, it didn't show on any perf bots, regressed size on Linux quite a bit because the new code was smaller and thus inlined more often, and seems to have introduced a new crasher on Android. To summarize: it seems it's not worth it. The WeakPtr revert will be done in two patches. The first part is in https://chromium-review.googlesource.com/c/604087 This second part should be merged to M61. Original change's description: > Make base::WeakPtr::Get() fast > > It was previous calling the out-of-line method WeakReference::is_valid(). > That means that code like > > if (my_weak_ptr) > my_weak_ptr->foo(); > > would do two calls to is_valid(), plus tests and branching. > > The is_valid() method showed up as one of the most frequently called non-inline > functions during browser start-up on Windows (about 1M calls). > > is_valid() was also inefficient in itself, because it had to do a null-check > flag_, as well as checking if the flag was marked valid. > > This patch removes the null-pointer check by using a sentinel Flag object instead of > a nullptr. And instead of storing a bool in the Flag, it stores a pointer-sized > bitmask 0 or ~0, so it can be AND'ed with the pointer value and conveniently > setting EFLAGS so that the code above just becomes a few loads, AND, branch, > and call. (The size of Flag is unchanged; it grows into the padding only.) > > This is expected to reduce the binary size by ~48KB on Android, and increase it > by 79KB on x64 Linux -- something that's paid for by the split-out refactorings > to WeakPtr and WeakPtrFactory. > > Exposing the SequenceChecker calls in inline functions caused the > MessageLoopTestType*.Nesting test to overflow on Win64 dcheck release builds, > which is why this patch also lowers the recursion depth there. > > BUG= 728324 , 738183 , 738193 > CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_cronet_tester > > Review-Url: https://codereview.chromium.org/2963623002 > Cr-Commit-Position: refs/heads/master@{#487048} BUG=748495, 748075 , 744747 TBR=hans@chromium.org (cherry picked from commit 4cfa301cda2ab84a496f3c13a5e3fa2f8de94fca) Change-Id: Id85da06115ab9453267ade4d6f8efcfd1b26220c Reviewed-on: https://chromium-review.googlesource.com/604088 Commit-Queue: Hans Wennborg <hans@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#492520} Reviewed-on: https://chromium-review.googlesource.com/610446 Reviewed-by: Hans Wennborg <hans@chromium.org> Cr-Commit-Position: refs/branch-heads/3163@{#432} Cr-Branched-From: ff259bab28b35d242e10186cd63af7ed404fae0d-refs/heads/master@{#488528} [modify] https://crrev.com/f393cc0504d4da327d541a054c404aa422470c1c/base/memory/weak_ptr.cc [modify] https://crrev.com/f393cc0504d4da327d541a054c404aa422470c1c/base/memory/weak_ptr.h
,
Nov 27 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3f073d71053f12f66f67e94ed8b397ca34652ada commit 3f073d71053f12f66f67e94ed8b397ca34652ada Author: Hans Wennborg <hans@chromium.org> Date: Mon Nov 27 22:33:35 2017 Add build config and docs for generating Windows link order files There are three pieces to this puzzle: 1) Passing the -finstrument-functions-after-inlining flag to all compiler invocations. 2) Implementing the __cyg_profile_func_enter function. 3) Making all .exe and .dll targets link in the library that provides that function. This patch implements those three, losely modeled on how the Android build works, and adds documentation on how to use this to update the order files. Bug: 728324 Change-Id: I778bc8c0c2800244b8f18037197d62223ef92203 Reviewed-on: https://chromium-review.googlesource.com/783830 Commit-Queue: Hans Wennborg <hans@chromium.org> Reviewed-by: Brett Wilson <brettw@chromium.org> Reviewed-by: Reid Kleckner <rnk@chromium.org> Cr-Commit-Position: refs/heads/master@{#519429} [modify] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/build/config/BUILD.gn [modify] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/build/config/BUILDCONFIG.gn [modify] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/build/config/chrome_build.gni [modify] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/build/config/win/BUILD.gn [modify] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/chrome/build/README [add] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/docs/win_order_files.md [add] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/tools/cygprofile_win/BUILD.gn [add] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/tools/cygprofile_win/OWNERS [add] https://crrev.com/3f073d71053f12f66f67e94ed8b397ca34652ada/tools/cygprofile_win/cygprofile.cc
,
Dec 11 2017
There's no more planned work for this.
,
Mar 8 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7ba450fdfff078d0cc9b29bf8ed7cc2c39514d74 commit 7ba450fdfff078d0cc9b29bf8ed7cc2c39514d74 Author: Nico Weber <thakis@chromium.org> Date: Thu Mar 08 19:58:46 2018 win: Use order files with lld as well. Bug: 792131 , 728324 Change-Id: I3b2ebe4a2073b6a03193dac5c497dbd3c53fc06d Reviewed-on: https://chromium-review.googlesource.com/955726 Reviewed-by: Reid Kleckner <rnk@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/master@{#541874} [modify] https://crrev.com/7ba450fdfff078d0cc9b29bf8ed7cc2c39514d74/chrome/BUILD.gn
,
Mar 9 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/33f64ee226c18ccae818398d57827a7407a8326c commit 33f64ee226c18ccae818398d57827a7407a8326c Author: Nico Weber <thakis@chromium.org> Date: Fri Mar 09 04:45:30 2018 Revert "win: Use order files with lld as well." This reverts commit 7ba450fdfff078d0cc9b29bf8ed7cc2c39514d74. Reason for revert: lld-link currently warns if the orderfile references non-existing functions, without implementing the flag to disable that warning. Since our orderfiles are usually somewhat out of date, lld-link currently always warns. Reland once https://llvm.org/PR36657 is fixed and rolled in. Original change's description: > win: Use order files with lld as well. > > Bug: 792131 , 728324 > Change-Id: I3b2ebe4a2073b6a03193dac5c497dbd3c53fc06d > Reviewed-on: https://chromium-review.googlesource.com/955726 > Reviewed-by: Reid Kleckner <rnk@chromium.org> > Commit-Queue: Nico Weber <thakis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#541874} TBR=thakis@chromium.org,rnk@chromium.org Change-Id: Ic9c6b7e94b99559c88a61fb22df253becf6853e9 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 792131 , 728324 Reviewed-on: https://chromium-review.googlesource.com/956035 Reviewed-by: Nico Weber <thakis@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/master@{#542027} [modify] https://crrev.com/33f64ee226c18ccae818398d57827a7407a8326c/chrome/BUILD.gn
,
Mar 20 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/34cd61b76197dcefbd5cf9c40c72d2827e2289fb commit 34cd61b76197dcefbd5cf9c40c72d2827e2289fb Author: Hans Wennborg <hans@chromium.org> Date: Tue Mar 20 10:55:19 2018 Reland "win: Use order files with lld as well." This reverts commit 33f64ee226c18ccae818398d57827a7407a8326c. After the latest Clang roll, lld will not warn about missing symbols from the order file, so enable the use of order files again. Originally reviewed at https://chromium-review.googlesource.com/955726 TBR=thakis@chromium.org,rnk@chromium.org Bug: 792131 , 728324 Change-Id: I6662f40b9b36063eec172728027b82d96a2cd487 Reviewed-on: https://chromium-review.googlesource.com/970421 Reviewed-by: Hans Wennborg <hans@chromium.org> Commit-Queue: Hans Wennborg <hans@chromium.org> Cr-Commit-Position: refs/heads/master@{#544326} [modify] https://crrev.com/34cd61b76197dcefbd5cf9c40c72d2827e2289fb/chrome/BUILD.gn
,
Mar 29 2018
Is there a summary of the effect on metrics now that all the changes have landed?
,
Mar 29 2018
Nothing public. We've been tracking various UMA metrics (including this one) on our internal mailining list, you can see the posts at https://groups.google.com/a/google.com/forum/#!searchin/lexan/%22uma$20numbers$20for%22%7Csort:date https://groups.google.com/a/google.com/forum/#!searchin/lexan/"uma$20numbers$20for"|sort:date/lexan/XmbfWv01-mw/4-D8cQsKDwAJ is the first post with the order file activated. |
||||
►
Sign in to add a comment |
||||
Comment 1 by r...@chromium.org
, May 31 2017