OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #include "content/renderer/pepper/v8_var_converter.h" | 5 #include "content/renderer/pepper/v8_var_converter.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <stack> | 8 #include <stack> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 StackEntry(T v) : val(v), sentinel(false) {} | 40 StackEntry(T v) : val(v), sentinel(false) {} |
41 T val; | 41 T val; |
42 // Used to track parent nodes on the stack while traversing the graph. | 42 // Used to track parent nodes on the stack while traversing the graph. |
43 bool sentinel; | 43 bool sentinel; |
44 }; | 44 }; |
45 | 45 |
46 struct HashedHandle { | 46 struct HashedHandle { |
47 HashedHandle(v8::Handle<v8::Object> h) : handle(h) {} | 47 HashedHandle(v8::Handle<v8::Object> h) : handle(h) {} |
48 size_t hash() const { return handle->GetIdentityHash(); } | 48 size_t hash() const { return handle->GetIdentityHash(); } |
49 bool operator==(const HashedHandle& h) const { return handle == h.handle; } | 49 bool operator==(const HashedHandle& h) const { return handle == h.handle; } |
50 bool operator<(const HashedHandle& h) const { return hash() < h.hash(); } | |
51 v8::Handle<v8::Object> handle; | 50 v8::Handle<v8::Object> handle; |
52 }; | 51 }; |
53 | 52 |
54 } // namespace | 53 } // namespace |
55 | 54 |
56 namespace BASE_HASH_NAMESPACE { | 55 namespace BASE_HASH_NAMESPACE { |
57 #if defined(COMPILER_GCC) | |
58 template <> | 56 template <> |
59 struct hash<HashedHandle> { | 57 struct hash<HashedHandle> { |
60 size_t operator()(const HashedHandle& handle) const { return handle.hash(); } | 58 size_t operator()(const HashedHandle& handle) const { return handle.hash(); } |
61 }; | 59 }; |
62 #elif defined(COMPILER_MSVC) | |
63 inline size_t hash_value(const HashedHandle& handle) { return handle.hash(); } | |
64 #endif | |
65 } // namespace BASE_HASH_NAMESPACE | 60 } // namespace BASE_HASH_NAMESPACE |
66 | 61 |
67 namespace content { | 62 namespace content { |
68 | 63 |
69 namespace { | 64 namespace { |
70 | 65 |
71 // Maps PP_Var IDs to the V8 value handle they correspond to. | 66 // Maps PP_Var IDs to the V8 value handle they correspond to. |
72 typedef base::hash_map<int64_t, v8::Handle<v8::Value> > VarHandleMap; | 67 typedef base::hash_map<int64_t, v8::Handle<v8::Value> > VarHandleMap; |
73 typedef base::hash_set<int64_t> ParentVarSet; | 68 typedef base::hash_set<int64_t> ParentVarSet; |
74 | 69 |
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 std::string(*name_utf8, name_utf8.length()), child_var); | 595 std::string(*name_utf8, name_utf8.length()), child_var); |
601 DCHECK(success); | 596 DCHECK(success); |
602 } | 597 } |
603 } | 598 } |
604 } | 599 } |
605 *result_var = root; | 600 *result_var = root; |
606 return true; | 601 return true; |
607 } | 602 } |
608 | 603 |
609 } // namespace content | 604 } // namespace content |
OLD | NEW |