Skip to content

Commit 314133b

Browse files
committed
[WTF] Remove UUID version of ObjectIdentifier
https://bugs.webkit.org/show_bug.cgi?id=322324 rdar://185566036 Reviewed by Ben Nham. I introduced this version of ObjectIdentifier two years ago, when I was more naïve and less pragmatic. Remove this unnecessary and unused version by effectively reverting 279402@main. This greatly re-simplifies the code and also makes crash log stack symbols and compilation errors a lot easier to read. Test: Source/JavaScriptCore/assembler/testmasm.cpp * Source/JavaScriptCore/assembler/testmasm.cpp: * Source/JavaScriptCore/wasm/debugger/WasmExecutionHandler.cpp: (JSC::Wasm::findVM): (JSC::Wasm::WTF_REQUIRES_LOCK): (JSC::Wasm::ExecutionHandler::callStackStringFor): * Source/JavaScriptCore/wasm/debugger/tests/ExecutionHandlerTest.cpp: (ExecutionHandlerTest::switchTarget): * Source/JavaScriptCore/yarr/YarrJIT.cpp: * Source/WTF/wtf/CrossThreadCopier.h: * Source/WTF/wtf/Forward.h: * Source/WTF/wtf/ObjectIdentifier.cpp: (WTF::ObjectIdentifierMainThreadAccessTraits::generateIdentifierInternal): (WTF::printInternal): (WTF::ObjectIdentifierThreadSafeAccessTraits::generateIdentifierInternal): (WTF::ObjectIdentifierMainThreadAccessTraits<uint64_t>::generateIdentifierInternal): Deleted. (WTF::ObjectIdentifierThreadSafeAccessTraits<uint64_t>::generateIdentifierInternal): Deleted. (WTF::ObjectIdentifierMainThreadAccessTraits<UUID>::generateIdentifierInternal): Deleted. (WTF::ObjectIdentifierThreadSafeAccessTraits<UUID>::generateIdentifierInternal): Deleted. * Source/WTF/wtf/ObjectIdentifier.h: (WTF::ObjectIdentifierGenericBase::toUInt64 const): (WTF::ObjectIdentifierGenericBase::isValidIdentifier): (WTF::ObjectIdentifierGenericBase::ObjectIdentifierGenericBase): (WTF::ObjectIdentifierGenericBase::hashTableDeletedValue): (WTF::ObjectIdentifierGeneric::ObjectIdentifierGeneric): (WTF::ObjectIdentifierGeneric::isHashTableEmptyValue const): (WTF::add): (WTF::operator==): (WTF::operator<=>): (WTF::ObjectIdentifierGenericBase<uint64_t>::isHashTableDeletedValue const): Deleted. (WTF::ObjectIdentifierGenericBase<uint64_t>::toUInt64 const): Deleted. (WTF::ObjectIdentifierGenericBase<uint64_t>::toRawValue const): Deleted. (WTF::ObjectIdentifierGenericBase<uint64_t>::loggingString const): Deleted. (WTF::ObjectIdentifierGenericBase<uint64_t>::isValidIdentifier): Deleted. (WTF::ObjectIdentifierGenericBase<uint64_t>::ObjectIdentifierGenericBase): Deleted. (WTF::ObjectIdentifierGenericBase<uint64_t>::hashTableDeletedValue): Deleted. (WTF::ObjectIdentifierGenericBase<UUID>::isHashTableDeletedValue const): Deleted. (WTF::ObjectIdentifierGenericBase<UUID>::toRawValue const): Deleted. (WTF::ObjectIdentifierGenericBase<UUID>::loggingString const): Deleted. (WTF::ObjectIdentifierGenericBase<UUID>::isValidIdentifier): Deleted. (WTF::ObjectIdentifierGenericBase<UUID>::ObjectIdentifierGenericBase): Deleted. (WTF::ObjectIdentifierGenericBase<UUID>::hashTableDeletedValue): Deleted. (WTF::ObjectIdentifierGenericBaseStringTypeAdapter<uint64_t>::length const): Deleted. (WTF::ObjectIdentifierGenericBaseStringTypeAdapter<uint64_t>::is8Bit const): Deleted. (WTF::ObjectIdentifierGenericBaseStringTypeAdapter<uint64_t>::writeTo const): Deleted. (WTF::ObjectIdentifierGenericBaseStringTypeAdapter<uint64_t>::ObjectIdentifierGenericBaseStringTypeAdapter): Deleted. * Source/WTF/wtf/text/TextStream.cpp: (WTF::operator<<): * Source/WTF/wtf/text/TextStream.h: * Source/WebCore/Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::renameIndex): (WebCore::IDBTransaction::deleteIndex): * Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp: (WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore): (WebCore::IDBServer::MemoryIDBBackingStore::addIndex): * Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: (WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexInfoTableForIDUpdate): (WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexRecordsTableForIDUpdate): (WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::deleteObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::renameObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::clearObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetExistingPrimaryKeyForIndexKey): (WebCore::IDBServer::SQLiteIDBBackingStore::overwriteRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::checkIndexConstraintsForPut): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexKey): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::deleteIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::renameIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::keyExistsInObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::deleteRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::deleteRange): (WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::addRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::deleteFileSystemHandleRecordsForObjectStore): (WebCore::IDBServer::SQLiteIDBBackingStore::getRecord): (WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey): (WebCore::IDBServer::SQLiteIDBBackingStore::getCount): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetKeyGeneratorValue): (WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedSetKeyGeneratorValue): (WebCore::IDBServer::SQLiteIDBBackingStore::revertGeneratedKeyNumber): (WebCore::IDBServer::SQLiteIDBBackingStore::addIndex): * Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp: (WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord): (WebCore::IDBServer::SQLiteIDBCursor::boundIDValue const): * Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::createIndexAsyncAfterQuotaCheck): * Source/WebCore/Modules/indexeddb/shared/IDBCursorInfo.cpp: (WebCore::IDBCursorInfo::loggingString const): * Source/WebCore/dom/ViewTransition.cpp: (WebCore::effectiveViewTransitionName): * Source/WebCore/inspector/InspectorIdentifierRegistry.h: (Inspector::IdentifierRegistry::protocolFrameId): * Source/WebCore/loader/NavigationIdentifier.h: * Source/WebCore/page/FrameIdentifier.cpp: (WebCore::operator<<): * Source/WebCore/page/RemoteFrame.cpp: (WebCore::RemoteFrame::hostingProcessIdentifier const): * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: * Source/WebCore/testing/Internals.cpp: (WebCore::Internals::identifierForTimeline const): * Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp: (WebKit::escapeIDForJSON): * Source/WebKit/Platform/IPC/Connection.h: (IPC::Connection::sendWithAsyncReply): (IPC::Connection::sendWithPromisedReply): (IPC::Connection::send): (IPC::Connection::sendSync): (IPC::Connection::waitForAndDispatchImmediately): * Source/WebKit/Platform/IPC/Decoder.cpp: * Source/WebKit/Platform/IPC/MessageSender.h: * Source/WebKit/Platform/IPC/MessageSenderInlines.h: (IPC::MessageSender::send): (IPC::MessageSender::sendSync): (IPC::MessageSender::sendWithAsyncReply): * Source/WebKit/Platform/IPC/StreamClientConnection.h: (IPC::StreamClientConnection::send): (IPC::StreamClientConnection::sendWithAsyncReply): (IPC::StreamClientConnection::sendWithAsyncReplyOnDispatcher): (IPC::StreamClientConnection::sendSync): (IPC::StreamClientConnection::waitForAndDispatchImmediately): * Source/WebKit/Platform/IPC/StreamServerConnection.h: (IPC::StreamServerConnection::send): * Source/WebKit/Shared/AuxiliaryProcess.h: (WebKit::AuxiliaryProcess::addMessageReceiver): (WebKit::AuxiliaryProcess::removeMessageReceiver): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::hostingContextID const): * Source/WebKit/Shared/WTFArgumentCoders.serialization.in: * Source/WebKit/Shared/WebFoundTextRange.cpp: (WebKit::WebFoundTextRange::CueData::hash const): (WebKit::operator<<): * Source/WebKit/Shared/unix/AuxiliaryProcessMain.cpp: (WebKit::AuxiliaryProcessMainCommon::parseCommandLine): * Source/WebKit/UIProcess/Automation/BidiScriptAgent.h: * Source/WebKit/UIProcess/AuxiliaryProcessProxy.h: (WebKit::AuxiliaryProcessProxy::sendWithAsyncReply): (WebKit::AuxiliaryProcessProxy::send): (WebKit::AuxiliaryProcessProxy::sendSync): (WebKit::AuxiliaryProcessProxy::addMessageReceiver): (WebKit::AuxiliaryProcessProxy::removeMessageReceiver): * Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp: (WebKit::WebExtensionContext::isPrivilegedMessage const): * Source/WebKit/UIProcess/Extensions/WebExtensionController.h: (WebKit::WebExtensionController::sendToAllProcesses): * Source/WebKit/UIProcess/Model/PortalPresentationManagerProxy.mm: (WebKit::PortalPresentationManagerProxy::invalidateModel): (WebKit::PortalPresentationManagerProxy::ensurePortalPresentation): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimeline.cpp: (WebKit::RemoteAnimationTimeline::toJSONForTesting const): * Source/WebKit/UIProcess/WebFrameProxy.h: * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/WebProcessPool.h: * Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm: (+[WKFoundTextRange foundTextRangeWithWebFoundTextRange:]): * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp: (WebKit::RemoteRenderingBackendProxy::send): (WebKit::RemoteRenderingBackendProxy::sendSync): (WebKit::RemoteRenderingBackendProxy::sendWithAsyncReply): * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm: (WebKit::PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom): * Source/WebKit/WebProcess/WebPage/WebPage.h: Canonical link: https://commits.webkit.org/319650@main
1 parent 7711916 commit 314133b

62 files changed

Lines changed: 265 additions & 363 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Source/JavaScriptCore/assembler/testmasm.cpp‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include <wtf/Compiler.h>
3838
#include <wtf/DataLog.h>
3939
#include <wtf/Function.h>
40+
#include <wtf/HexNumber.h>
4041
#include <wtf/Lock.h>
4142
#include <wtf/NumberOfCores.h>
4243
#include <wtf/PtrTag.h>

‎Source/JavaScriptCore/wasm/debugger/WasmDebugServerUtilities.cpp‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN
4343
#include "WasmVirtualAddress.h"
4444
#include <cstring>
4545
#include <wtf/DataLog.h>
46+
#include <wtf/HexNumber.h>
4647
#include <wtf/StdLibExtras.h>
4748
#include <wtf/TZoneMallocInlines.h>
4849
#include <wtf/Vector.h>

‎Source/JavaScriptCore/wasm/debugger/WasmExecutionHandler.cpp‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN
5555
#endif
5656
#include <wtf/Assertions.h>
5757
#include <wtf/DataLog.h>
58+
#include <wtf/HexNumber.h>
5859
#include <wtf/TZoneMallocInlines.h>
5960
#include <wtf/text/StringBuilder.h>
6061
#include <wtf/text/WTFString.h>
@@ -345,7 +346,7 @@ static inline VM* findVM(uint64_t vmId)
345346
{
346347
VM* result = nullptr;
347348
VMManager::forEachVM([&](VM& vm) {
348-
if (vm.debugState()->isStopped && vmId == vm.identifier().toRawValue()) {
349+
if (vm.debugState()->isStopped && vmId == vm.identifier().toUInt64()) {
349350
result = &vm;
350351
return IterationStatus::Done;
351352
}
@@ -753,7 +754,7 @@ struct ThreadInfo {
753754

754755
void ExecutionHandler::sendStopReply(AbstractLocker& locker) WTF_REQUIRES_LOCK(m_lock)
755756
{
756-
sendStopReplyForThread(locker, m_debuggee->identifier().toRawValue());
757+
sendStopReplyForThread(locker, m_debuggee->identifier().toUInt64());
757758
}
758759

759760
void ExecutionHandler::sendStopReplyForThread(AbstractLocker& locker, uint64_t vmId) WTF_REQUIRES_LOCK(m_lock)
@@ -780,7 +781,7 @@ void ExecutionHandler::sendStopReplyForThread(AbstractLocker& locker, uint64_t v
780781
auto* state = vm.debugState();
781782
if (!state->isStopped)
782783
return IterationStatus::Continue;
783-
uint64_t tid = vm.identifier().toRawValue();
784+
uint64_t tid = vm.identifier().toUInt64();
784785
allThreads.append({ tid, getStopPC(*state), getThreadName(*state, tid), stopReasonToInfo(*state).reasonSuffix });
785786
if (tid == vmId)
786787
std::swap(allThreads[0], allThreads.last());
@@ -792,7 +793,7 @@ void ExecutionHandler::sendStopReplyForThread(AbstractLocker& locker, uint64_t v
792793
// actually triggered the stop event (breakpoint/step/trap/interrupt/new-module-load).
793794
// Passive threads get signal 0 so LLDB's ShouldSelect() returns false for them, allowing
794795
// the event thread to win thread selection in HandleProcessStateChangedEvent.
795-
bool isPassiveThread = state->stopReason == DebugState::Reason::Interrupted && m_debuggee && vmId != m_debuggee->identifier().toRawValue();
796+
bool isPassiveThread = state->stopReason == DebugState::Reason::Interrupted && m_debuggee && vmId != m_debuggee->identifier().toUInt64();
796797
auto stopInfo = isPassiveThread
797798
? StopReasonInfo { signalStopString(0), "signal"_s }
798799
: stopReasonToInfo(*state);
@@ -938,7 +939,7 @@ String ExecutionHandler::callStackStringFor(uint64_t vmId)
938939

939940
VM* targetVM = m_debuggee;
940941
RELEASE_ASSERT(targetVM);
941-
if (targetVM->identifier().toRawValue() != vmId)
942+
if (targetVM->identifier().toUInt64() != vmId)
942943
targetVM = findVM(vmId);
943944

944945
if (!targetVM) {

‎Source/JavaScriptCore/wasm/debugger/tests/ExecutionHandlerTest.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ static void resume()
134134

135135
static void switchTarget(VM* newDebuggee)
136136
{
137-
executionHandler->switchTarget(newDebuggee->identifier().toRawValue());
137+
executionHandler->switchTarget(newDebuggee->identifier().toUInt64());
138138
validateStop();
139139
CHECK(executionHandler->debuggeeVM() == newDebuggee, "Switch to new debuggee failed");
140140
}

‎Source/JavaScriptCore/yarr/YarrJIT.cpp‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include "YarrMatchingContextHolder.h"
4242
#include <wtf/ASCIICType.h>
4343
#include <wtf/BitVector.h>
44+
#include <wtf/HexNumber.h>
4445
#include <wtf/ListDump.h>
4546
#include <wtf/MathExtras.h>
4647
#include <wtf/TZoneMallocInlines.h>

‎Source/WTF/wtf/CrossThreadCopier.h‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,8 @@ template<> struct CrossThreadCopierBase<false, false, WTF::ASCIILiteral> {
201201
}
202202
};
203203

204-
template<typename T, typename U, typename V> struct CrossThreadCopierBase<false, false, ObjectIdentifierGeneric<T, U, V>> {
205-
using Type = ObjectIdentifierGeneric<T, U, V>;
204+
template<typename T, typename U> struct CrossThreadCopierBase<false, false, ObjectIdentifierGeneric<T, U>> {
205+
using Type = ObjectIdentifierGeneric<T, U>;
206206
static constexpr bool IsNeeded = false;
207207
static Type copy(const Type& source)
208208
{
@@ -253,9 +253,9 @@ template<typename T, typename HashFunctions, typename Traits, typename TableTrai
253253
}
254254
};
255255

256-
template<typename T, typename U, typename V>
257-
struct CrossThreadCopierBase<false, false, HashSet<ObjectIdentifierGeneric<T, U, V>>> {
258-
using Type = HashSet<ObjectIdentifierGeneric<T, U, V>>;
256+
template<typename T, typename U>
257+
struct CrossThreadCopierBase<false, false, HashSet<ObjectIdentifierGeneric<T, U>>> {
258+
using Type = HashSet<ObjectIdentifierGeneric<T, U>>;
259259
static constexpr bool IsNeeded = false;
260260
static Type copy(const Type& identifiers) { return identifiers; }
261261
static Type copy(Type&& identifiers) { return WTF::move(identifiers); }

‎Source/WTF/wtf/Forward.h‎

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ struct FastMalloc;
8383
struct FillWith { };
8484
struct MachSendRightAnnotated;
8585
struct MainThreadAccessTraits;
86-
template<typename> struct ObjectIdentifierMainThreadAccessTraits;
87-
template<typename> struct ObjectIdentifierThreadSafeAccessTraits;
86+
struct ObjectIdentifierMainThreadAccessTraits;
87+
struct ObjectIdentifierThreadSafeAccessTraits;
8888

8989
#if USE(PROTECTED_JIT)
9090
struct SequesteredArenaMalloc;
@@ -138,10 +138,9 @@ template<typename> struct MarkableTraits;
138138
template<typename T, typename Traits = MarkableTraits<T>> class Markable;
139139
template<typename, typename = AnyThreadsAccessTraits> class NeverDestroyed;
140140
template<typename T, typename = DefaultOSObjectRetainTraits<T, ARCEnabled>> class OSObjectPtr;
141-
template<typename, typename, typename> class ObjectIdentifierGeneric;
142-
template<typename T, typename RawValue = uint64_t> using ObjectIdentifier = ObjectIdentifierGeneric<T, ObjectIdentifierMainThreadAccessTraits<RawValue>, RawValue>;
143-
template<typename T, typename RawValue = uint64_t> using AtomicObjectIdentifier = ObjectIdentifierGeneric<T, ObjectIdentifierThreadSafeAccessTraits<RawValue>, RawValue>;
144-
template<typename T> using UUIDObjectIdentifier = AtomicObjectIdentifier<T, UUID>;
141+
template<typename, typename> class ObjectIdentifierGeneric;
142+
template<typename T> using ObjectIdentifier = ObjectIdentifierGeneric<T, ObjectIdentifierMainThreadAccessTraits>;
143+
template<typename T> using AtomicObjectIdentifier = ObjectIdentifierGeneric<T, ObjectIdentifierThreadSafeAccessTraits>;
145144
template<typename> class Observer;
146145
template<typename, ConcurrencyTag = ConcurrencyTag::None> class OptionSet;
147146
template<typename> class Packed;
@@ -325,7 +324,6 @@ using WTF::SuspendableWorkQueue;
325324
using WTF::TextPosition;
326325
using WTF::TextStream;
327326
using WTF::URL;
328-
using WTF::UUIDObjectIdentifier;
329327
using WTF::UncheckedKeyHashMap;
330328
using WTF::UncheckedKeyHashSet;
331329
using WTF::UniqueRef;

‎Source/WTF/wtf/ObjectIdentifier.cpp‎

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,38 +33,22 @@
3333

3434
namespace WTF {
3535

36-
uint64_t ObjectIdentifierMainThreadAccessTraits<uint64_t>::generateIdentifierInternal()
36+
uint64_t ObjectIdentifierMainThreadAccessTraits::generateIdentifierInternal()
3737
{
3838
ASSERT(isMainThread()); // You should use AtomicObjectIdentifier if you're hitting this assertion.
3939
static uint64_t current = 0;
4040
return ++current;
4141
}
4242

43-
void printInternal(PrintStream& out, const ObjectIdentifierGenericBase<uint64_t>& identifier)
43+
void printInternal(PrintStream& out, const ObjectIdentifierGenericBase& identifier)
4444
{
45-
out.print(identifier.toRawValue());
45+
out.print(identifier.toUInt64());
4646
}
4747

48-
uint64_t ObjectIdentifierThreadSafeAccessTraits<uint64_t>::generateIdentifierInternal()
48+
uint64_t ObjectIdentifierThreadSafeAccessTraits::generateIdentifierInternal()
4949
{
5050
static std::atomic<uint64_t> current;
5151
return ++current;
5252
}
5353

54-
UUID ObjectIdentifierMainThreadAccessTraits<UUID>::generateIdentifierInternal()
55-
{
56-
ASSERT(isMainThread()); // You should use AtomicObjectIdentifier if you're hitting this assertion.
57-
return UUID::createVersion4();
58-
}
59-
60-
UUID ObjectIdentifierThreadSafeAccessTraits<UUID>::generateIdentifierInternal()
61-
{
62-
return UUID::createVersion4();
63-
}
64-
65-
void printInternal(PrintStream& out, const ObjectIdentifierGenericBase<UUID>& identifier)
66-
{
67-
out.print(identifier.toRawValue());
68-
}
69-
7054
} // namespace WTF

0 commit comments

Comments
 (0)