| Index: Source/platform/heap/GCInfo.h
|
| diff --git a/Source/platform/heap/GCInfo.h b/Source/platform/heap/GCInfo.h
|
| index 3ff9cc60c0b2d4765e0f752eb793cfe237383eb6..01339238aef976baa4d587638f32d237b25eea7f 100644
|
| --- a/Source/platform/heap/GCInfo.h
|
| +++ b/Source/platform/heap/GCInfo.h
|
| @@ -111,15 +111,16 @@ extern PLATFORM_EXPORT GCInfo const** s_gcInfoTable;
|
| // reachable. There is a GCInfo struct for each class that directly
|
| // inherits from GarbageCollected or GarbageCollectedFinalized.
|
| struct GCInfo {
|
| + using GetClassNameCallback = const String& (*)();
|
| +
|
| bool hasFinalizer() const { return m_nonTrivialFinalizer; }
|
| bool hasVTable() const { return m_hasVTable; }
|
| - const String& className() const { return m_className; }
|
| + const String& className() const { return m_classNameGetter(); }
|
| TraceCallback m_trace;
|
| FinalizationCallback m_finalize;
|
| bool m_nonTrivialFinalizer;
|
| bool m_hasVTable;
|
| - // |m_className| is held as a reference to prevent dtor being called at exit.
|
| - const String& m_className;
|
| + GetClassNameCallback m_classNameGetter;
|
| };
|
|
|
| #if ENABLE(ASSERT)
|
| @@ -171,7 +172,7 @@ struct GCInfoAtBase {
|
| FinalizerTrait<T>::finalize,
|
| FinalizerTrait<T>::nonTrivialFinalizer,
|
| WTF::IsPolymorphic<T>::value,
|
| - TypenameStringTrait<T>::get()
|
| + TypenameStringTrait<T>::get
|
| };
|
| RETURN_GCINFO_INDEX();
|
| }
|
|
|