Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 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 1282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1293 { | 1293 { |
| 1294 ASSERT(!m_keepAlive || m_keepAlive.get() == self); | 1294 ASSERT(!m_keepAlive || m_keepAlive.get() == self); |
| 1295 m_keepAlive = self; | 1295 m_keepAlive = self; |
| 1296 } | 1296 } |
| 1297 | 1297 |
| 1298 GC_PLUGIN_IGNORE("420515") | 1298 GC_PLUGIN_IGNORE("420515") |
| 1299 Persistent<Self> m_keepAlive; | 1299 Persistent<Self> m_keepAlive; |
| 1300 }; | 1300 }; |
| 1301 | 1301 |
| 1302 template<typename T> | 1302 template<typename T> |
| 1303 class AllowCrossThreadWeakPersistent { | 1303 class CrossThreadWeakPersistentThisPointer { |
| 1304 STACK_ALLOCATED(); | 1304 STACK_ALLOCATED(); |
| 1305 public: | 1305 public: |
| 1306 explicit AllowCrossThreadWeakPersistent(T* value) : m_value(value) { } | 1306 explicit CrossThreadWeakPersistentThisPointer(T* value) : m_value(value) { } |
| 1307 CrossThreadWeakPersistent<T> value() const { return m_value; } | 1307 CrossThreadWeakPersistent<T> value() const { return m_value; } |
| 1308 private: | 1308 private: |
| 1309 CrossThreadWeakPersistent<T> m_value; | 1309 CrossThreadWeakPersistent<T> m_value; |
| 1310 }; | 1310 }; |
| 1311 | 1311 |
| 1312 // LEAK_SANITIZER_DISABLED_SCOPE: all allocations made in the current scope | 1312 // LEAK_SANITIZER_DISABLED_SCOPE: all allocations made in the current scope |
| 1313 // will be exempted from LSan consideration. | 1313 // will be exempted from LSan consideration. |
| 1314 // | 1314 // |
| 1315 // TODO(sof): move this to wtf/LeakAnnotations.h (LeakSanitizer.h?) once | 1315 // TODO(sof): move this to wtf/LeakAnnotations.h (LeakSanitizer.h?) once |
| 1316 // wtf/ can freely call upon Oilpan functionality. | 1316 // wtf/ can freely call upon Oilpan functionality. |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1562 struct ParamStorageTraits<T*> : public PointerParamStorageTraits<T*, blink::IsGa rbageCollectedType<T>::value> { | 1562 struct ParamStorageTraits<T*> : public PointerParamStorageTraits<T*, blink::IsGa rbageCollectedType<T>::value> { |
| 1563 static_assert(sizeof(T), "T must be fully defined"); | 1563 static_assert(sizeof(T), "T must be fully defined"); |
| 1564 }; | 1564 }; |
| 1565 | 1565 |
| 1566 template<typename T> | 1566 template<typename T> |
| 1567 struct ParamStorageTraits<RawPtr<T>> : public PointerParamStorageTraits<T*, blin k::IsGarbageCollectedType<T>::value> { | 1567 struct ParamStorageTraits<RawPtr<T>> : public PointerParamStorageTraits<T*, blin k::IsGarbageCollectedType<T>::value> { |
| 1568 static_assert(sizeof(T), "T must be fully defined"); | 1568 static_assert(sizeof(T), "T must be fully defined"); |
| 1569 }; | 1569 }; |
| 1570 | 1570 |
| 1571 template<typename T> | 1571 template<typename T> |
| 1572 struct ParamStorageTraits<blink::AllowCrossThreadWeakPersistent<T>> { | 1572 struct ParamStorageTraits<blink::CrossThreadWeakPersistentThisPointer<T>> { |
|
haraken
2016/01/12 00:04:57
CrossThreadWeakPersistentThisPointer => WeakPersis
sof
2016/01/12 07:23:40
That name promises a little bit more than I want i
| |
| 1573 static_assert(sizeof(T), "T must be fully defined"); | 1573 static_assert(sizeof(T), "T must be fully defined"); |
| 1574 using StorageType = blink::CrossThreadWeakPersistent<T>; | 1574 using StorageType = blink::CrossThreadWeakPersistent<T>; |
| 1575 | 1575 |
| 1576 static StorageType wrap(const blink::AllowCrossThreadWeakPersistent<T>& valu e) { return value.value(); } | 1576 static StorageType wrap(const blink::CrossThreadWeakPersistentThisPointer<T> & value) { return value.value(); } |
| 1577 | 1577 |
| 1578 // Currently assume that the call sites of this unwrap() account for cleared weak references also. | 1578 // WTF::FunctionWrapper<> handles WeakPtr<>, so recast this weak persistent |
| 1579 // TODO(sof): extend WTF::FunctionWrapper call overloading to also handle (C rossThread)WeakPersistent. | 1579 // into it. |
| 1580 static T* unwrap(const StorageType& value) { return value.get(); } | 1580 static WeakPtr<T> unwrap(const StorageType& value) { return WeakPtr<T>(WeakR eference<T>::create(value.get())); } |
| 1581 }; | 1581 }; |
| 1582 | 1582 |
| 1583 template<typename T> | 1583 template<typename T> |
| 1584 PassRefPtr<T> adoptRef(blink::RefCountedGarbageCollected<T>*) = delete; | 1584 PassRefPtr<T> adoptRef(blink::RefCountedGarbageCollected<T>*) = delete; |
| 1585 | 1585 |
| 1586 } // namespace WTF | 1586 } // namespace WTF |
| 1587 | 1587 |
| 1588 #endif | 1588 #endif |
| OLD | NEW |