| 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 |