811 lines
22 KiB
XML
811 lines
22 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<diagram program="umlet" version="15.0.0">
|
|
<zoom_level>10</zoom_level>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>80</x>
|
|
<y>370</y>
|
|
<w>340</w>
|
|
<h>190</h>
|
|
</coordinates>
|
|
<panel_attributes>ThreadInfo
|
|
--
|
|
-mName: nsCString
|
|
-mRegisterTime: TimeStamp
|
|
-mThreadId: int
|
|
-mIsMainThread: bool
|
|
--
|
|
NS_INLINE_DECL_THREADSAFE_REFCOUNTING
|
|
+Name()
|
|
+RegisterTime()
|
|
+ThreadId()
|
|
+IsMainThread()
|
|
</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>470</x>
|
|
<y>300</y>
|
|
<w>600</w>
|
|
<h>260</h>
|
|
</coordinates>
|
|
<panel_attributes>RacyRegisteredThread
|
|
--
|
|
-mProfilingStackOwner: NotNull<RefPtr<ProfilingStackOwner>>
|
|
-mThreadId
|
|
-mSleep: Atomic<int> /* AWAKE, SLEEPING_NOT_OBSERVED, SLEEPING_OBSERVED */
|
|
-mIsBeingProfiled: Atomic<bool, Relaxed>
|
|
--
|
|
+SetIsBeingProfiled()
|
|
+IsBeingProfiled()
|
|
+ReinitializeOnResume()
|
|
+CanDuplicateLastSampleDueToSleep()
|
|
+SetSleeping()
|
|
+SetAwake()
|
|
+IsSleeping()
|
|
+ThreadId()
|
|
+ProfilingStack()
|
|
+ProfilingStackOwner()</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>470</x>
|
|
<y>650</y>
|
|
<w>350</w>
|
|
<h>360</h>
|
|
</coordinates>
|
|
<panel_attributes>RegisteredThread
|
|
--
|
|
-mPlatformData: UniquePlatformData
|
|
-mStackTop: const void*
|
|
-mThread: nsCOMPtr<nsIThread>
|
|
-mContext: JSContext*
|
|
-mJSSampling: enum {INACTIVE, ACTIVE_REQUESTED, ACTIVE, INACTIVE_REQUESTED}
|
|
-mmJSFlags: uint32_t
|
|
--
|
|
+RacyRegisteredThread()
|
|
+GetPlatformData()
|
|
+StackTop()
|
|
+GetRunningEventDelay()
|
|
+SizeOfIncludingThis()
|
|
+SetJSContext()
|
|
+ClearJSContext()
|
|
+GetJSContext()
|
|
+Info(): RefPtr<ThreadInfo>
|
|
+GetEventTarget(): nsCOMPtr<nsIEventTarget>
|
|
+ResetMainThread(nsIThread*)
|
|
+StartJSSampling()
|
|
+StopJSSampling()
|
|
+PollJSSampling()
|
|
</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>750</x>
|
|
<y>550</y>
|
|
<w>180</w>
|
|
<h>120</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<<-
|
|
mRacyRegisteredThread</panel_attributes>
|
|
<additional_attributes>10.0;100.0;10.0;10.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>290</x>
|
|
<y>550</y>
|
|
<w>230</w>
|
|
<h>120</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mThreadInfo: RefPtr<></panel_attributes>
|
|
<additional_attributes>210.0;100.0;10.0;10.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>70</x>
|
|
<y>660</y>
|
|
<w>340</w>
|
|
<h>190</h>
|
|
</coordinates>
|
|
<panel_attributes>PageInformation
|
|
--
|
|
-mBrowsingContextID: uint64_t
|
|
-mInnerWindowID: uint64_t
|
|
-mUrl: nsCString
|
|
-mEmbedderInnerWindowID: uint64_t
|
|
--
|
|
NS_INLINE_DECL_THREADSAFE_REFCOUNTING
|
|
+SizeOfIncludingThis(MallocSizeOf)
|
|
+Equals(PageInformation*)
|
|
+StreamJSON(SpliceableJSONWriter&)
|
|
+InnerWindowID()
|
|
+BrowsingContextID()
|
|
+Url()
|
|
+EmbedderInnerWindowID()
|
|
+BufferPositionWhenUnregistered(): Maybe<uint64_t>
|
|
+NotifyUnregistered(aBufferPosition: uint64_t)</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>760</x>
|
|
<y>1890</y>
|
|
<w>570</w>
|
|
<h>120</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfilerBacktrace
|
|
--
|
|
-mName: UniqueFreePtr<char>
|
|
-mThreadId: int
|
|
-mProfileChunkedBuffer: UniquePtr<ProfileChunkedBuffer>
|
|
-mProfileBuffer: UniquePtr<ProfileBuffer>
|
|
--
|
|
+StreamJSON(SpliceableJSONWriter&, aProcessStartTime: TimeStamp, UniqueStacks&)
|
|
</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>20</x>
|
|
<y>2140</y>
|
|
<w>620</w>
|
|
<h>580</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfileChunkedBuffer
|
|
--
|
|
-mMutex: BaseProfilerMaybeMutex
|
|
-mChunkManager: ProfileBufferChunkManager*
|
|
-mOwnedChunkManager: UniquePtr<ProfileBufferChunkManager>
|
|
-mCurrentChunk: UniquePtr<ProfileBufferChunk>
|
|
-mNextChunks: UniquePtr<ProfileBufferChunk>
|
|
-mRequestedChunkHolder: RefPtr<RequestedChunkRefCountedHolder>
|
|
-mNextChunkRangeStart: ProfileBufferIndex
|
|
-mRangeStart: Atomic<ProfileBufferIndex, ReleaseAcquire>
|
|
-mRangeEnd: ProfileBufferIndex
|
|
-mPushedBlockCount: uint64_t
|
|
-mClearedBlockCount: Atomic<uint64_t, ReleaseAcquire>
|
|
--
|
|
+Byte = ProfileBufferChunk::Byte
|
|
+Length = ProfileBufferChunk::Length
|
|
+IsThreadSafe()
|
|
+IsInSession()
|
|
+ResetChunkManager()
|
|
+SetChunkManager()
|
|
+Clear()
|
|
+BufferLength(): Maybe<size_t>
|
|
+SizeOfExcludingThis(MallocSizeOf)
|
|
+SizeOfIncludingThis(MallocSizeOf)
|
|
+GetState()
|
|
+IsThreadSafeAndLockedOnCurrentThread(): bool
|
|
+LockAndRun(Callback&&)
|
|
+ReserveAndPut(CallbackEntryBytes&&, Callback<auto(Maybe<ProfileBufferEntryWriter>&)>&&)
|
|
+Put(aEntryBytes: Length, Callback<auto(Maybe<ProfileBufferEntryWriter>&)>&&)
|
|
+PutFrom(const void*, Length)
|
|
+PutObjects(const Ts&...)
|
|
+PutObject(const T&)
|
|
+GetAllChunks()
|
|
+Read(Callback<void(Reader&)>&&): bool
|
|
+ReadEach(Callback<void(ProfileBufferEntryReader& [, ProfileBufferBlockIndex])>&&)
|
|
+ReadAt(ProfileBufferBlockIndex, Callback<void(Maybe<ProfileBufferEntryReader>&&)>&&)
|
|
+AppendContents</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>810</x>
|
|
<y>2100</y>
|
|
<w>500</w>
|
|
<h>620</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfileBufferChunk
|
|
--
|
|
+Header: {
|
|
mOffsetFirstBlock; mOffsetPastLastBlock; mDoneTimeStamp;
|
|
mBufferBytes; mBlockCount; mRangeStart; mProcessId;
|
|
}
|
|
-InternalHeader: { mHeader: Header; mNext: UniquePtr<ProfileBufferChunk>; }
|
|
--
|
|
-mInternalHeader: InternalHeader
|
|
-mBuffer: Byte /* First byte */
|
|
--
|
|
+Byte = uint8_t
|
|
+Length = uint32_t
|
|
+SpanOfBytes = Span<Byte>
|
|
/+Create(aMinBufferBytes: Length): UniquePtr<ProfileBufferChunk>/
|
|
+ReserveInitialBlockAsTail(Length): SpanOfBytes
|
|
+ReserveBlock(Length): { SpanOfBytes, ProfileBufferBlockIndex }
|
|
+MarkDone()
|
|
+MarkRecycled()
|
|
+ChunkHeader()
|
|
+BufferBytes()
|
|
+ChunkBytes()
|
|
+SizeOfExcludingThis(MallocSizeOf)
|
|
+SizeOfIncludingThis(MallocSizeOf)
|
|
+RemainingBytes(): Length
|
|
+OffsetFirstBlock(): Length
|
|
+OffsetPastLastBlock(): Length
|
|
+BlockCount(): Length
|
|
+ProcessId(): int
|
|
+SetProcessId(int)
|
|
+RangeStart(): ProfileBufferIndex
|
|
+SetRangeStart(ProfileBufferIndex)
|
|
+BufferSpan(): Span<const Byte>
|
|
+ByteAt(aOffset: Length)
|
|
+GetNext(): maybe-const ProfileBufferChunk*
|
|
+ReleaseNext(): UniquePtr<ProfileBufferChunk>
|
|
+InsertNext(UniquePtr<ProfileBufferChunk>&&)
|
|
+Last(): const ProfileBufferChunk*
|
|
+SetLast(UniquePtr<ProfileBufferChunk>&&)
|
|
/+Join(UniquePtr<ProfileBufferChunk>&&, UniquePtr<ProfileBufferChunk>&&)/
|
|
</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>120</x>
|
|
<y>2850</y>
|
|
<w>570</w>
|
|
<h>350</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfileBufferEntryReader
|
|
--
|
|
-mCurrentSpan: SpanOfConstBytes
|
|
-mNextSpanOrEmpty: SpanOfConstBytes
|
|
-mCurrentBlockIndex: ProfileBufferBlockIndex
|
|
-mNextBlockIndex: ProfileBufferBlockIndex
|
|
--
|
|
+RemainingBytes(): Length
|
|
+SetRemainingBytes(Length)
|
|
+CurrentBlockIndex(): ProfileBufferBlockIndex
|
|
+NextBlockIndex(): ProfileBufferBlockIndex
|
|
+EmptyIteratorAtOffset(Length): ProfileBufferEntryReader
|
|
+operator*(): const Byte&
|
|
+operator++(): ProfileBufferEntryReader&
|
|
+operator+=(Length): ProfileBufferEntryReader&
|
|
+operator==(const ProfileBufferEntryReader&)
|
|
+operator!=(const ProfileBufferEntryReader&)
|
|
+ReadULEB128<T>(): T
|
|
+ReadBytes(void*, Length)
|
|
+ReadIntoObject(T&)
|
|
+ReadIntoObjects(Ts&...)
|
|
+ReadObject<T>(): T</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>740</x>
|
|
<y>2850</y>
|
|
<w>570</w>
|
|
<h>300</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfileBufferEntryWriter
|
|
--
|
|
-mCurrentSpan: SpanOfBytes
|
|
-mNextSpanOrEmpty: SpanOfBytes
|
|
-mCurrentBlockIndex: ProfileBufferBlockIndex
|
|
-mNextBlockIndex: ProfileBufferBlockIndex
|
|
--
|
|
+RemainingBytes(): Length
|
|
+CurrentBlockIndex(): ProfileBufferBlockIndex
|
|
+NextBlockIndex(): ProfileBufferBlockIndex
|
|
+operator*(): Byte&
|
|
+operator++(): ProfileBufferEntryReader&
|
|
+operator+=(Length): ProfileBufferEntryReader&
|
|
/+ULEB128Size(T): unsigned/
|
|
+WriteULEB128(T)
|
|
/+SumBytes(const Ts&...): Length/
|
|
+WriteFromReader(ProfileBufferEntryReader&, Length)
|
|
+WriteObject(const T&)
|
|
+WriteObjects(const T&)</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>120</x>
|
|
<y>3270</y>
|
|
<w>570</w>
|
|
<h>80</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfileBufferEntryReader::Deserializer<T>
|
|
/to be specialized for all types read from ProfileBufferEntryReader/
|
|
--
|
|
/+ReadInto(ProfileBufferEntryReader&, T&)/
|
|
/+Read<T>(ProfileBufferEntryReader&): T/</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>740</x>
|
|
<y>3270</y>
|
|
<w>570</w>
|
|
<h>80</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfileBufferEntryWriter::Serializer<T>
|
|
/to be specialized for all types written into ProfileBufferEntryWriter/
|
|
--
|
|
/+Bytes(const T&): Length/
|
|
/+Write(ProfileBufferEntryWriter&, const T&)/</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>330</x>
|
|
<y>2710</y>
|
|
<w>110</w>
|
|
<h>160</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<creates>></panel_attributes>
|
|
<additional_attributes>10.0;10.0;60.0;140.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>430</x>
|
|
<y>2710</y>
|
|
<w>360</w>
|
|
<h>160</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<creates>></panel_attributes>
|
|
<additional_attributes>10.0;10.0;340.0;140.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>660</x>
|
|
<y>2710</y>
|
|
<w>260</w>
|
|
<h>160</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<points into>></panel_attributes>
|
|
<additional_attributes>10.0;140.0;240.0;10.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>870</x>
|
|
<y>2710</y>
|
|
<w>140</w>
|
|
<h>160</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<points into>></panel_attributes>
|
|
<additional_attributes>10.0;140.0;80.0;10.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>630</x>
|
|
<y>2170</y>
|
|
<w>200</w>
|
|
<h>40</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mCurrentChunk</panel_attributes>
|
|
<additional_attributes>10.0;20.0;180.0;20.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>630</x>
|
|
<y>2230</y>
|
|
<w>200</w>
|
|
<h>40</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mNextChunks</panel_attributes>
|
|
<additional_attributes>10.0;20.0;180.0;20.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>1100</x>
|
|
<y>2030</y>
|
|
<w>170</w>
|
|
<h>90</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mInternalHeader.mNext</panel_attributes>
|
|
<additional_attributes>10.0;70.0;10.0;20.0;150.0;20.0;150.0;70.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>490</x>
|
|
<y>3190</y>
|
|
<w>70</w>
|
|
<h>100</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<uses>></panel_attributes>
|
|
<additional_attributes>10.0;10.0;10.0;80.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>580</x>
|
|
<y>3190</y>
|
|
<w>230</w>
|
|
<h>100</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<uses>></panel_attributes>
|
|
<additional_attributes>10.0;10.0;210.0;80.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>50</x>
|
|
<y>1620</y>
|
|
<w>570</w>
|
|
<h>410</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfileBuffer
|
|
--
|
|
-mFirstSamplingTimeNs: double
|
|
-mLastSamplingTimeNs: double
|
|
-mIntervalNs, etc.: ProfilerStats
|
|
--
|
|
+IsThreadSafe(): bool
|
|
+AddEntry(const ProfileBufferEntry&): uint64_t
|
|
+AddThreadIdEntry(int): uint64_t
|
|
+PutObjects(Kind, const Ts&...): ProfileBufferBlockIndex
|
|
+CollectCodeLocation(...)
|
|
+AddJITInfoForRange(...)
|
|
+StreamSamplesToJSON(SpliceableJSONWriter&, aThreadId: int, aSinceTime: double, UniqueStacks&)
|
|
+StreamMarkersToJSON(SpliceableJSONWriter&, ...)
|
|
+StreamPausedRangesToJSON(SpliceableJSONWriter&, aSinceTime: double)
|
|
+StreamProfilerOverheadToJSON(SpliceableJSONWriter&, ...)
|
|
+StreamCountersToJSON(SpliceableJSONWriter&, ...)
|
|
+DuplicateLsstSample
|
|
+DiscardSamplesBeforeTime(aTime: double)
|
|
+GetEntry(aPosition: uint64_t): ProfileBufferEntry
|
|
+SizeOfExcludingThis(MallocSizeOf)
|
|
+SizeOfIncludingThis(MallocSizeOf)
|
|
+CollectOverheadStats(...)
|
|
+GetProfilerBufferInfo(): ProfilerBufferInfo
|
|
+BufferRangeStart(): uint64_t
|
|
+BufferRangeEnd(): uint64_t</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>690</x>
|
|
<y>1620</y>
|
|
<w>230</w>
|
|
<h>60</h>
|
|
</coordinates>
|
|
<panel_attributes>ProfileBufferEntry
|
|
--
|
|
+mKind: Kind
|
|
+mStorage: uint8_t[kNumChars=8]</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>930</x>
|
|
<y>1620</y>
|
|
<w>440</w>
|
|
<h>130</h>
|
|
</coordinates>
|
|
<panel_attributes>UniqueJSONStrings
|
|
--
|
|
-mStringTableWriter: SpliceableChunkedJSONWriter
|
|
-mStringHashToIndexMap: HashMap<HashNumber, uint32_t>
|
|
--
|
|
+SpliceStringTableElements(SpliceableJSONWriter&)
|
|
+WriteProperty(JSONWriter&, aName: const char*, aStr: const char*)
|
|
+WriteElement(JSONWriter&, aStr: const char*)
|
|
+GetOrAddIndex(const char*): uint32_t</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>680</x>
|
|
<y>1760</y>
|
|
<w>470</w>
|
|
<h>110</h>
|
|
</coordinates>
|
|
<panel_attributes>UniqueStack
|
|
--
|
|
-mFrameTableWriter: SpliceableChunkedJSONWriter
|
|
-mFrameToIndexMap: HashMap<FrameKey, uint32_t, FrameKeyHasher>
|
|
-mStackTableWriter: SpliceableChunkedJSONWriter
|
|
-mStackToIndexMap: HashMap<StackKey, uint32_t, StackKeyHasher>
|
|
-mJITInfoRanges: Vector<JITFrameInfoForBufferRange></panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>320</x>
|
|
<y>2020</y>
|
|
<w>230</w>
|
|
<h>140</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mEntries: ProfileChunkedBuffer&</panel_attributes>
|
|
<additional_attributes>10.0;10.0;10.0;120.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>610</x>
|
|
<y>1640</y>
|
|
<w>100</w>
|
|
<h>40</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<uses>></panel_attributes>
|
|
<additional_attributes>10.0;20.0;80.0;20.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>610</x>
|
|
<y>1710</y>
|
|
<w>340</w>
|
|
<h>40</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<uses>></panel_attributes>
|
|
<additional_attributes>10.0;20.0;320.0;20.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>610</x>
|
|
<y>1800</y>
|
|
<w>90</w>
|
|
<h>40</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=.>
|
|
<<uses>></panel_attributes>
|
|
<additional_attributes>10.0;20.0;70.0;20.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>610</x>
|
|
<y>1900</y>
|
|
<w>170</w>
|
|
<h>40</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mProfileBuffer</panel_attributes>
|
|
<additional_attributes>150.0;20.0;10.0;20.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>590</x>
|
|
<y>1940</y>
|
|
<w>250</w>
|
|
<h>220</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mProfileChunkedBuffer</panel_attributes>
|
|
<additional_attributes>170.0;10.0;10.0;200.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>20</x>
|
|
<y>1030</y>
|
|
<w>490</w>
|
|
<h>550</h>
|
|
</coordinates>
|
|
<panel_attributes>CorePS
|
|
--
|
|
/-sInstance: CorePS*/
|
|
-mMainThreadId: int
|
|
-mProcessStartTime: TimeStamp
|
|
-mCoreBuffer: ProfileChunkedBuffer
|
|
-mRegisteredThreads: Vector<UniquePtr<RegisteredThread>>
|
|
-mRegisteredPages: Vector<RefPtr<PageInformation>>
|
|
-mCounters: Vector<BaseProfilerCount*>
|
|
-mLul: UniquePtr<lul::LUL> /* linux only */
|
|
-mProcessName: nsAutoCString
|
|
-mJsFrames: JsFrameBuffer
|
|
--
|
|
+Create
|
|
+Destroy
|
|
+Exists(): bool
|
|
+AddSizeOf(...)
|
|
+MainThreadId()
|
|
+ProcessStartTime()
|
|
+CoreBuffer()
|
|
+RegisteredThreads(PSLockRef)
|
|
+JsFrames(PSLockRef)
|
|
/+AppendRegisteredThread(PSLockRef, UniquePtr<RegisteredThread>)/
|
|
/+RemoveRegisteredThread(PSLockRef, RegisteredThread*)/
|
|
+RegisteredPages(PSLockRef)
|
|
/+AppendRegisteredPage(PSLockRef, RefPtr<PageInformation>)/
|
|
/+RemoveRegisteredPage(PSLockRef, aRegisteredInnerWindowID: uint64_t)/
|
|
/+ClearRegisteredPages(PSLockRef)/
|
|
+Counters(PSLockRef)
|
|
+AppendCounter
|
|
+RemoveCounter
|
|
+Lul(PSLockRef)
|
|
+SetLul(PSLockRef, UniquePtr<lul::LUL>)
|
|
+ProcessName(PSLockRef)
|
|
+SetProcessName(PSLockRef, const nsACString&)
|
|
</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>20</x>
|
|
<y>1570</y>
|
|
<w>110</w>
|
|
<h>590</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<<-
|
|
mCoreBuffer</panel_attributes>
|
|
<additional_attributes>10.0;10.0;10.0;570.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>160</x>
|
|
<y>840</y>
|
|
<w>150</w>
|
|
<h>210</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mRegisteredPages</panel_attributes>
|
|
<additional_attributes>10.0;190.0;10.0;10.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>250</x>
|
|
<y>840</y>
|
|
<w>240</w>
|
|
<h>210</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mRegisteredThreads</panel_attributes>
|
|
<additional_attributes>10.0;190.0;220.0;10.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>920</x>
|
|
<y>860</y>
|
|
<w>340</w>
|
|
<h>190</h>
|
|
</coordinates>
|
|
<panel_attributes>SamplerThread
|
|
--
|
|
-mSampler: Sampler
|
|
-mActivityGeneration: uint32_t
|
|
-mIntervalMicroseconds: int
|
|
-mThread /* OS-specific */
|
|
-mPostSamplingCallbackList: UniquePtr<PostSamplingCallbackListItem>
|
|
--
|
|
+Run()
|
|
+Stop(PSLockRef)
|
|
+AppendPostSamplingCallback(PSLockRef, PostSamplingCallback&&)</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>1060</x>
|
|
<y>600</y>
|
|
<w>340</w>
|
|
<h>190</h>
|
|
</coordinates>
|
|
<panel_attributes>Sampler
|
|
--
|
|
-mOldSigprofHandler: sigaction
|
|
-mMyPid: int
|
|
-mSamplerTid: int
|
|
+sSigHandlerCoordinator
|
|
--
|
|
+Disable(PSLockRef)
|
|
+SuspendAndSampleAndResumeThread(PSLockRef, const RegisteredThread&, aNow: TimeStamp, const Func&)
|
|
</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>1190</x>
|
|
<y>780</y>
|
|
<w>90</w>
|
|
<h>100</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<<-
|
|
mSampler</panel_attributes>
|
|
<additional_attributes>10.0;80.0;10.0;10.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>UMLClass</id>
|
|
<coordinates>
|
|
<x>610</x>
|
|
<y>1130</y>
|
|
<w>470</w>
|
|
<h>400</h>
|
|
</coordinates>
|
|
<panel_attributes>ActivePS
|
|
--
|
|
/-sInstance: ActivePS*/
|
|
-mGeneration: const uint32_t
|
|
/-sNextGeneration: uint32_t/
|
|
-mCapacity: const PowerOfTwo
|
|
-mDuration: const Maybe<double>
|
|
-mInterval: const double /* milliseconds */
|
|
-mFeatures: const uint32_t
|
|
-mFilters: Vector<std::string>
|
|
-mActiveBrowsingContextID: uint64_t
|
|
-mProfileBufferChunkManager: ProfileBufferChunkManagerWithLocalLimit
|
|
-mProfileBuffer: ProfileBuffer
|
|
-mLiveProfiledThreads: Vector<LiveProfiledThreadData>
|
|
-mDeadProfiledThreads: Vector<UniquePtr<ProfiledThreadData>>
|
|
-mDeadProfiledPages: Vector<RefPtr<PageInformation>>
|
|
-mSamplerThread: SamplerThread* const
|
|
-mInterposeObserver: RefPtr<ProfilerIOInterposeObserver>
|
|
-mPaused: bool
|
|
-mWasPaused: bool /* linux */
|
|
-mBaseProfileThreads: UniquePtr<char[]>
|
|
-mGeckoIndexWhenBaseProfileAdded: ProfileBufferBlockIndex
|
|
-mExitProfiles: Vector<ExitProfile>
|
|
--
|
|
+</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
<element>
|
|
<id>Relation</id>
|
|
<coordinates>
|
|
<x>970</x>
|
|
<y>1040</y>
|
|
<w>140</w>
|
|
<h>110</h>
|
|
</coordinates>
|
|
<panel_attributes>lt=<<<<-
|
|
mSamplerThread</panel_attributes>
|
|
<additional_attributes>10.0;90.0;10.0;10.0</additional_attributes>
|
|
</element>
|
|
<element>
|
|
<id>UMLNote</id>
|
|
<coordinates>
|
|
<x>500</x>
|
|
<y>160</y>
|
|
<w>510</w>
|
|
<h>100</h>
|
|
</coordinates>
|
|
<panel_attributes>bg=red
|
|
This document pre-dates the generated image profilerclasses-20220913.png!
|
|
Unfortunately, the changes to make the image were lost.
|
|
|
|
This previous version may still be useful to start reconstructing the image,
|
|
if there is a need to update it.</panel_attributes>
|
|
<additional_attributes/>
|
|
</element>
|
|
</diagram>
|