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

Side by Side Diff: Source/bindings/core/v8/V8GlobalValueMap.h

Issue 1278983003: Adding allocator annotations to blink classes and structs. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed patch conflict Created 5 years, 4 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8GlobalValueMap_h 5 #ifndef V8GlobalValueMap_h
6 #define V8GlobalValueMap_h 6 #define V8GlobalValueMap_h
7 7
8 #include "wtf/Allocator.h"
8 #include "wtf/HashMap.h" 9 #include "wtf/HashMap.h"
9 #include "wtf/text/StringHash.h" 10 #include "wtf/text/StringHash.h"
10 #include <v8-util.h> 11 #include <v8-util.h>
11 #include <v8.h> 12 #include <v8.h>
12 13
13 namespace blink { 14 namespace blink {
14 15
15 /** 16 /**
16 * A Traits class for v8::GlobalValueMap that uses wtf/HashMap as a 17 * A Traits class for v8::GlobalValueMap that uses wtf/HashMap as a
17 * backing store. 18 * backing store.
18 * 19 *
19 * The parameter is_weak will determine whether the references are 'weak'. 20 * The parameter is_weak will determine whether the references are 'weak'.
20 * If so, entries will be removed from the map as the weak references are 21 * If so, entries will be removed from the map as the weak references are
21 * collected. 22 * collected.
22 */ 23 */
23 template <class KeyType, class ValueType, v8::PersistentContainerCallbackType ty pe> 24 template <class KeyType, class ValueType, v8::PersistentContainerCallbackType ty pe>
24 class V8GlobalValueMapTraits { 25 class V8GlobalValueMapTraits {
26 STATIC_ONLY(V8GlobalValueMapTraits);
25 public: 27 public:
26 // Map traits: 28 // Map traits:
27 typedef HashMap<KeyType, v8::PersistentContainerValue> Impl; 29 typedef HashMap<KeyType, v8::PersistentContainerValue> Impl;
28 typedef typename Impl::iterator Iterator; 30 typedef typename Impl::iterator Iterator;
29 static size_t Size(const Impl* impl) { return impl->size(); } 31 static size_t Size(const Impl* impl) { return impl->size(); }
30 static bool Empty(Impl* impl) { return impl->isEmpty(); } 32 static bool Empty(Impl* impl) { return impl->isEmpty(); }
31 static void Swap(Impl& impl, Impl& other) { impl.swap(other); } 33 static void Swap(Impl& impl, Impl& other) { impl.swap(other); }
32 static Iterator Begin(Impl* impl) { return impl->begin(); } 34 static Iterator Begin(Impl* impl) { return impl->begin(); }
33 static Iterator End(Impl* impl) { return impl->end(); } 35 static Iterator End(Impl* impl) { return impl->end(); }
34 static v8::PersistentContainerValue Value(Iterator& iter) 36 static v8::PersistentContainerValue Value(Iterator& iter)
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 static void Dispose(v8::Isolate* isolate, v8::Global<ValueType> value, KeyTy pe key) { } 88 static void Dispose(v8::Isolate* isolate, v8::Global<ValueType> value, KeyTy pe key) { }
87 static void DisposeWeak(const v8::WeakCallbackInfo<WeakCallbackDataType>& da ta) { } 89 static void DisposeWeak(const v8::WeakCallbackInfo<WeakCallbackDataType>& da ta) { }
88 }; 90 };
89 91
90 /** 92 /**
91 * A map for safely storing persistent V8 values, based on 93 * A map for safely storing persistent V8 values, based on
92 * v8::GlobalValueMap. 94 * v8::GlobalValueMap.
93 */ 95 */
94 template <class KeyType, class ValueType, v8::PersistentContainerCallbackType ty pe> 96 template <class KeyType, class ValueType, v8::PersistentContainerCallbackType ty pe>
95 class V8GlobalValueMap : public v8::GlobalValueMap<KeyType, ValueType, V8GlobalV alueMapTraits<KeyType, ValueType, type>> { 97 class V8GlobalValueMap : public v8::GlobalValueMap<KeyType, ValueType, V8GlobalV alueMapTraits<KeyType, ValueType, type>> {
98 DISALLOW_ALLOCATION();
96 public: 99 public:
97 typedef V8GlobalValueMapTraits<KeyType, ValueType, type> Traits; 100 typedef V8GlobalValueMapTraits<KeyType, ValueType, type> Traits;
98 explicit V8GlobalValueMap(v8::Isolate* isolate) 101 explicit V8GlobalValueMap(v8::Isolate* isolate)
99 : v8::GlobalValueMap<KeyType, ValueType, Traits>(isolate) 102 : v8::GlobalValueMap<KeyType, ValueType, Traits>(isolate)
100 { 103 {
101 } 104 }
102 }; 105 };
103 106
104 } // namespace blink 107 } // namespace blink
105 108
106 #endif // V8GlobalValueMap_h 109 #endif // V8GlobalValueMap_h
OLDNEW
« no previous file with comments | « Source/bindings/core/v8/V8GCForContextDispose.h ('k') | Source/bindings/core/v8/V8HiddenValue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698