Index: Source/core/events/EventTarget.h |
diff --git a/Source/core/events/EventTarget.h b/Source/core/events/EventTarget.h |
index 1b33c2c444d5a8d52f2c334b82b2f1a5210c7f85..8af426ddb8137784491b45e684d2cc49232344b3 100644 |
--- a/Source/core/events/EventTarget.h |
+++ b/Source/core/events/EventTarget.h |
@@ -196,7 +196,18 @@ private: |
// #if-switch here, in order to avoid a lot of "#if ENABLE(OILPAN)"-s sprinkled in the derived classes. |
#if ENABLE(OILPAN) |
template <typename T> |
-class RefCountedGarbageCollectedEventTargetWithInlineData : public EventTargetWithInlineData { }; |
+class RefCountedGarbageCollectedEventTargetWithInlineData : public EventTargetWithInlineData { |
+public: |
+ GC_PLUGIN_IGNORE("491488") |
+ void* operator new(size_t size) |
+ { |
+ // If T is eagerly finalized, it needs to be allocated accordingly. |
+ // Redefinition of the operator is needed to accomplish that, as otherwise |
+ // it would be allocated using GarbageCollected<EventTarget>'s operator new. |
+ // EventTarget is not eagerly finalized. |
+ return allocateObject(size, IsEagerlyFinalizedType<T>::value); |
+ } |
+}; |
#else |
template <typename T> |
class RefCountedGarbageCollectedEventTargetWithInlineData : public RefCountedGarbageCollected<T>, public EventTargetWithInlineData { |