Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: Source/core/events/EventTarget.h

Issue 1157933002: Oilpan: introduce eager finalization. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Parameterize Heap::poisonHeap() over ObjectsToPoison Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/Node.h ('k') | Source/platform/heap/GarbageCollected.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
6 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 6 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
7 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> 7 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 // Base class for classes that wish to inherit from RefCountedGarbageCollected ( in non-Oilpan world) and 189 // Base class for classes that wish to inherit from RefCountedGarbageCollected ( in non-Oilpan world) and
190 // EventTargetWithInlineData (in both worlds). For details about how to use this class template, see the comments for 190 // EventTargetWithInlineData (in both worlds). For details about how to use this class template, see the comments for
191 // EventTargetWithInlineData above. 191 // EventTargetWithInlineData above.
192 // 192 //
193 // This class template exists to circumvent Oilpan's "leftmost class rule", wher e the Oilpan classes must come first in 193 // This class template exists to circumvent Oilpan's "leftmost class rule", wher e the Oilpan classes must come first in
194 // the base class list to avoid memory offset adjustment. In non-Oilpan world, R efCountedGarbageCollected<T> must come 194 // the base class list to avoid memory offset adjustment. In non-Oilpan world, R efCountedGarbageCollected<T> must come
195 // first, but in Oilpan world EventTargetWithInlineData needs to come first. Thi s class templates does the required 195 // first, but in Oilpan world EventTargetWithInlineData needs to come first. Thi s class templates does the required
196 // #if-switch here, in order to avoid a lot of "#if ENABLE(OILPAN)"-s sprinkled in the derived classes. 196 // #if-switch here, in order to avoid a lot of "#if ENABLE(OILPAN)"-s sprinkled in the derived classes.
197 #if ENABLE(OILPAN) 197 #if ENABLE(OILPAN)
198 template <typename T> 198 template <typename T>
199 class RefCountedGarbageCollectedEventTargetWithInlineData : public EventTargetWi thInlineData { }; 199 class RefCountedGarbageCollectedEventTargetWithInlineData : public EventTargetWi thInlineData {
200 public:
201 GC_PLUGIN_IGNORE("491488")
202 void* operator new(size_t size)
203 {
204 // If T is eagerly finalized, it needs to be allocated accordingly.
205 // Redefinition of the operator is needed to accomplish that, as otherwi se
206 // it would be allocated using GarbageCollected<EventTarget>'s operator new.
207 // EventTarget is not eagerly finalized.
208 return allocateObject(size, IsEagerlyFinalizedType<T>::value);
209 }
210 };
200 #else 211 #else
201 template <typename T> 212 template <typename T>
202 class RefCountedGarbageCollectedEventTargetWithInlineData : public RefCountedGar bageCollected<T>, public EventTargetWithInlineData { 213 class RefCountedGarbageCollectedEventTargetWithInlineData : public RefCountedGar bageCollected<T>, public EventTargetWithInlineData {
203 public: 214 public:
204 DEFINE_INLINE_VIRTUAL_TRACE() { EventTargetWithInlineData::trace(visitor); } 215 DEFINE_INLINE_VIRTUAL_TRACE() { EventTargetWithInlineData::trace(visitor); }
205 }; 216 };
206 #endif 217 #endif
207 218
208 // FIXME: These macros should be split into separate DEFINE and DECLARE 219 // FIXME: These macros should be split into separate DEFINE and DECLARE
209 // macros to avoid causing so many header includes. 220 // macros to avoid causing so many header includes.
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 #define DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(baseClass) DEFINE_EVENT_ TARGET_REFCOUNTING(baseClass) 306 #define DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(baseClass) DEFINE_EVENT_ TARGET_REFCOUNTING(baseClass)
296 307
297 #endif // ENABLE(OILPAN) 308 #endif // ENABLE(OILPAN)
298 309
299 // Use this macro if your EventTarget subclass is also a subclass of WTF::RefCou nted. 310 // Use this macro if your EventTarget subclass is also a subclass of WTF::RefCou nted.
300 // A ref-counted class that uses a different method of refcounting should use DE FINE_EVENT_TARGET_REFCOUNTING directly. 311 // A ref-counted class that uses a different method of refcounting should use DE FINE_EVENT_TARGET_REFCOUNTING directly.
301 // Both of these macros are meant to be placed just before the "public:" section of the class declaration. 312 // Both of these macros are meant to be placed just before the "public:" section of the class declaration.
302 #define REFCOUNTED_EVENT_TARGET(className) DEFINE_EVENT_TARGET_REFCOUNTING_WILL_ BE_REMOVED(RefCounted<className>) 313 #define REFCOUNTED_EVENT_TARGET(className) DEFINE_EVENT_TARGET_REFCOUNTING_WILL_ BE_REMOVED(RefCounted<className>)
303 314
304 #endif // EventTarget_h 315 #endif // EventTarget_h
OLDNEW
« no previous file with comments | « Source/core/dom/Node.h ('k') | Source/platform/heap/GarbageCollected.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698