OLD | NEW |
1 /* | 1 /* |
2 This file is provided under a dual BSD/GPLv2 license. When using or | 2 This file is provided under a dual BSD/GPLv2 license. When using or |
3 redistributing this file, you may do so under either license. | 3 redistributing this file, you may do so under either license. |
4 | 4 |
5 GPL LICENSE SUMMARY | 5 GPL LICENSE SUMMARY |
6 | 6 |
7 Copyright(c) 2005-2012 Intel Corporation. All rights reserved. | 7 Copyright(c) 2005-2012 Intel Corporation. All rights reserved. |
8 | 8 |
9 This program is free software; you can redistribute it and/or modify | 9 This program is free software; you can redistribute it and/or modify |
10 it under the terms of version 2 of the GNU General Public License as | 10 it under the terms of version 2 of the GNU General Public License as |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 48 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
49 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 49 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
50 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 50 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
51 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 51 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
52 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 52 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
53 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 53 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
54 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 54 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
55 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 55 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
56 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 56 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
57 */ | 57 */ |
| 58 |
| 59 #include <stdlib.h> |
58 #include <string.h> | 60 #include <string.h> |
59 | 61 |
60 #ifdef WIN32 | |
61 #include <hash_map> | |
62 using namespace std; | |
63 #else | |
64 // To avoid GCC 4.4 compilation warning about hash_map being deprecated. | |
65 #define OLD_DEPRECATED __DEPRECATED | |
66 #undef __DEPRECATED | |
67 #if defined (ANDROID) | |
68 #include <hash_map> | |
69 using namespace std; | |
70 #else | |
71 #include <ext/hash_map> | |
72 using namespace __gnu_cxx; | |
73 #endif | |
74 #define __DEPRECATED OLD_DEPRECATED | |
75 #endif | |
76 | |
77 #include <list> | 62 #include <list> |
| 63 #include <unordered_map> |
78 | 64 |
79 #include "v8-vtune.h" | 65 #include "v8-vtune.h" |
80 #include "vtune-jit.h" | 66 #include "vtune-jit.h" |
81 | 67 |
82 namespace vTune { | 68 namespace vTune { |
83 namespace internal { | 69 namespace internal { |
84 | 70 |
85 | 71 |
86 // This class is used to record the JITted code position info for JIT | 72 // This class is used to record the JITted code position info for JIT |
87 // code profiling. | 73 // code profiling. |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 }; | 105 }; |
120 | 106 |
121 struct HashForCodeObject { | 107 struct HashForCodeObject { |
122 uint32_t operator () (void* code) const { | 108 uint32_t operator () (void* code) const { |
123 static const uintptr_t kGoldenRatio = 2654435761u; | 109 static const uintptr_t kGoldenRatio = 2654435761u; |
124 uintptr_t hash = reinterpret_cast<uintptr_t>(code); | 110 uintptr_t hash = reinterpret_cast<uintptr_t>(code); |
125 return static_cast<uint32_t>(hash * kGoldenRatio); | 111 return static_cast<uint32_t>(hash * kGoldenRatio); |
126 } | 112 } |
127 }; | 113 }; |
128 | 114 |
129 #ifdef WIN32 | 115 typedef std::unordered_map<void*, void*, HashForCodeObject, SameCodeObjects> |
130 typedef hash_map<void*, void*> JitInfoMap; | 116 JitInfoMap; |
131 #else | |
132 typedef hash_map<void*, void*, HashForCodeObject, SameCodeObjects> JitInfoMap; | |
133 #endif | |
134 | 117 |
135 static JitInfoMap* GetEntries() { | 118 static JitInfoMap* GetEntries() { |
136 static JitInfoMap* entries; | 119 static JitInfoMap* entries; |
137 if (entries == NULL) { | 120 if (entries == NULL) { |
138 entries = new JitInfoMap(); | 121 entries = new JitInfoMap(); |
139 } | 122 } |
140 return entries; | 123 return entries; |
141 } | 124 } |
142 | 125 |
143 static bool IsLineInfoTagged(void* ptr) { | 126 static bool IsLineInfoTagged(void* ptr) { |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 | 255 |
273 } // namespace internal | 256 } // namespace internal |
274 | 257 |
275 v8::JitCodeEventHandler GetVtuneCodeEventHandler() { | 258 v8::JitCodeEventHandler GetVtuneCodeEventHandler() { |
276 v8::V8::SetFlagsFromString("--nocompact_code_space", | 259 v8::V8::SetFlagsFromString("--nocompact_code_space", |
277 (int)strlen("--nocompact_code_space")); | 260 (int)strlen("--nocompact_code_space")); |
278 return vTune::internal::VTUNEJITInterface::event_handler; | 261 return vTune::internal::VTUNEJITInterface::event_handler; |
279 } | 262 } |
280 | 263 |
281 } // namespace vTune | 264 } // namespace vTune |
OLD | NEW |