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(); |
} |