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

Side by Side Diff: third_party/WebKit/Source/platform/heap/Heap.h

Issue 2773013002: Oilpan: isHeapObjectAlive should not return true for cross thread objects (Closed)
Patch Set: fix Created 3 years, 8 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
« no previous file with comments | « no previous file | no next file » | 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 // collection has been strongified, there is no way that it can contain 241 // collection has been strongified, there is no way that it can contain
242 // non-live entries, so no entries will be removed. Since you can't set 242 // non-live entries, so no entries will be removed. Since you can't set
243 // the mark bit on a null pointer, that means that null pointers are 243 // the mark bit on a null pointer, that means that null pointers are
244 // always 'alive'. 244 // always 'alive'.
245 if (!object) 245 if (!object)
246 return true; 246 return true;
247 // TODO(keishi): some tests create CrossThreadPersistent on non attached 247 // TODO(keishi): some tests create CrossThreadPersistent on non attached
248 // threads. 248 // threads.
249 if (!ThreadState::current()) 249 if (!ThreadState::current())
250 return true; 250 return true;
251 if (&ThreadState::current()->heap() != 251 DCHECK(&ThreadState::current()->heap() ==
sof 2017/03/28 19:50:09 How does this work for CrossThreadWeakPersistent<>
sof 2017/03/28 20:02:07 The shouldTracePersistentNode() same-heap check sh
252 &pageFromObject(object)->arena()->getThreadState()->heap()) 252 &pageFromObject(object)->arena()->getThreadState()->heap());
253 return true;
254 return ObjectAliveTrait<T>::isHeapObjectAlive(object); 253 return ObjectAliveTrait<T>::isHeapObjectAlive(object);
255 } 254 }
256 template <typename T> 255 template <typename T>
257 static inline bool isHeapObjectAlive(const Member<T>& member) { 256 static inline bool isHeapObjectAlive(const Member<T>& member) {
258 return isHeapObjectAlive(member.get()); 257 return isHeapObjectAlive(member.get());
259 } 258 }
260 template <typename T> 259 template <typename T>
261 static inline bool isHeapObjectAlive(const WeakMember<T>& member) { 260 static inline bool isHeapObjectAlive(const WeakMember<T>& member) {
262 return isHeapObjectAlive(member.get()); 261 return isHeapObjectAlive(member.get());
263 } 262 }
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 T** cell = reinterpret_cast<T**>(object); 660 T** cell = reinterpret_cast<T**>(object);
662 if (*cell && !ObjectAliveTrait<T>::isHeapObjectAlive(*cell)) 661 if (*cell && !ObjectAliveTrait<T>::isHeapObjectAlive(*cell))
663 *cell = nullptr; 662 *cell = nullptr;
664 } 663 }
665 664
666 } // namespace blink 665 } // namespace blink
667 666
668 #include "platform/heap/VisitorImpl.h" 667 #include "platform/heap/VisitorImpl.h"
669 668
670 #endif // Heap_h 669 #endif // Heap_h
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698