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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 GetFunctionNameFromMixedName(event->name.str, | 186 GetFunctionNameFromMixedName(event->name.str, |
187 static_cast<int>(event->name.len)); | 187 static_cast<int>(event->name.len)); |
188 iJIT_Method_Load jmethod; | 188 iJIT_Method_Load jmethod; |
189 memset(&jmethod, 0, sizeof jmethod); | 189 memset(&jmethod, 0, sizeof jmethod); |
190 jmethod.method_id = iJIT_GetNewMethodID(); | 190 jmethod.method_id = iJIT_GetNewMethodID(); |
191 jmethod.method_load_address = event->code_start; | 191 jmethod.method_load_address = event->code_start; |
192 jmethod.method_size = static_cast<unsigned int>(event->code_len); | 192 jmethod.method_size = static_cast<unsigned int>(event->code_len); |
193 jmethod.method_name = temp_method_name; | 193 jmethod.method_name = temp_method_name; |
194 | 194 |
195 Handle<Script> script = event->script; | 195 Handle<Script> script = event->script; |
196 | 196 » » |
197 if (*script != NULL) { | 197 if (*script != NULL) { |
198 // Get the source file name and set it to jmethod.source_file_name | 198 // Get the source file name and set it to jmethod.source_file_name |
199 if ((*script->GetScriptName())->IsString()) { | 199 if ((*script->GetScriptName())->IsString()) { |
200 Handle<String> script_name = script->GetScriptName()->ToString(); | 200 Handle<String> script_name = script->GetScriptName()->ToString(); |
201 temp_file_name = new char[script_name->Utf8Length() + 1]; | 201 temp_file_name = new char[script_name->Utf8Length() + 1]; |
202 script_name->WriteUtf8(temp_file_name); | 202 script_name->WriteUtf8(temp_file_name); |
203 jmethod.source_file_name = temp_file_name; | 203 jmethod.source_file_name = temp_file_name; |
204 } | 204 } |
205 | 205 |
206 JitInfoMap::iterator entry = | 206 JitInfoMap::iterator entry = |
(...skipping 14 matching lines...) Expand all Loading... |
221 for (Iter = vtunelineinfo->begin(); | 221 for (Iter = vtunelineinfo->begin(); |
222 Iter != vtunelineinfo->end(); | 222 Iter != vtunelineinfo->end(); |
223 Iter++) { | 223 Iter++) { |
224 jmethod.line_number_table[index].Offset = | 224 jmethod.line_number_table[index].Offset = |
225 static_cast<unsigned int>(Iter->pc_); | 225 static_cast<unsigned int>(Iter->pc_); |
226 jmethod.line_number_table[index++].LineNumber = | 226 jmethod.line_number_table[index++].LineNumber = |
227 script->GetLineNumber(Iter->pos_)+1; | 227 script->GetLineNumber(Iter->pos_)+1; |
228 } | 228 } |
229 GetEntries()->erase(event->code_start); | 229 GetEntries()->erase(event->code_start); |
230 } | 230 } |
231 } | 231 } |
232 | 232 |
233 iJIT_NotifyEvent(iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED, | 233 iJIT_NotifyEvent(iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED, |
234 reinterpret_cast<void*>(&jmethod)); | 234 reinterpret_cast<void*>(&jmethod)); |
235 if (temp_method_name) | 235 if (temp_method_name) |
236 delete []temp_method_name; | 236 delete []temp_method_name; |
237 if (temp_file_name) | 237 if (temp_file_name) |
238 delete []temp_file_name; | 238 delete []temp_file_name; |
239 break; | 239 break; |
240 } | 240 } |
241 // TODO(chunyang.dai@intel.com): code_move will be supported. | 241 // TODO(chunyang.dai@intel.com): code_move will be supported. |
(...skipping 12 matching lines...) Expand all Loading... |
254 break; | 254 break; |
255 } | 255 } |
256 case v8::JitCodeEvent::CODE_START_LINE_INFO_RECORDING: { | 256 case v8::JitCodeEvent::CODE_START_LINE_INFO_RECORDING: { |
257 v8::JitCodeEvent* temp_event = const_cast<v8::JitCodeEvent*>(event); | 257 v8::JitCodeEvent* temp_event = const_cast<v8::JitCodeEvent*>(event); |
258 temp_event->user_data = new JITCodeLineInfo(); | 258 temp_event->user_data = new JITCodeLineInfo(); |
259 break; | 259 break; |
260 } | 260 } |
261 case v8::JitCodeEvent::CODE_END_LINE_INFO_RECORDING: { | 261 case v8::JitCodeEvent::CODE_END_LINE_INFO_RECORDING: { |
262 GetEntries()->insert(std::pair <void*, void*>(event->code_start, event->
user_data)); | 262 GetEntries()->insert(std::pair <void*, void*>(event->code_start, event->
user_data)); |
263 break; | 263 break; |
264 } | 264 } |
265 default: | 265 default: |
266 break; | 266 break; |
267 } | 267 } |
268 } | 268 } |
269 return; | 269 return; |
270 } | 270 } |
271 | 271 |
272 } // namespace internal | 272 } // namespace internal |
273 | 273 |
274 void InitializeVtuneForV8() { | 274 void InitializeVtuneForV8() { |
275 if (v8::V8::Initialize()) { | 275 if (v8::V8::Initialize()) { |
276 v8::V8::SetFlagsFromString("--nocompact_code_space", | 276 v8::V8::SetFlagsFromString("--nocompact_code_space", |
277 (int)strlen("--nocompact_code_space")); | 277 (int)strlen("--nocompact_code_space")); |
278 v8::V8::SetJitCodeEventHandler(v8::kJitCodeEventDefault, | 278 v8::V8::SetJitCodeEventHandler(v8::kJitCodeEventDefault, |
279 vTune::internal::VTUNEJITInterface::event_handler); | 279 vTune::internal::VTUNEJITInterface::event_handler); |
280 } | 280 } |
281 } | 281 } |
282 | 282 |
283 } // namespace vTune | 283 } // namespace vTune |
OLD | NEW |