| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project 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 "src/log.h" | 5 #include "src/log.h" |
| 6 | 6 |
| 7 #include <cstdarg> | 7 #include <cstdarg> |
| 8 #include <sstream> | 8 #include <sstream> |
| 9 | 9 |
| 10 #include "src/bailout-reason.h" | 10 #include "src/bailout-reason.h" |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 void* StartCodePosInfoEvent(); | 494 void* StartCodePosInfoEvent(); |
| 495 void EndCodePosInfoEvent(Code* code, void* jit_handler_data); | 495 void EndCodePosInfoEvent(Code* code, void* jit_handler_data); |
| 496 | 496 |
| 497 private: | 497 private: |
| 498 virtual void LogRecordedBuffer(Code* code, | 498 virtual void LogRecordedBuffer(Code* code, |
| 499 SharedFunctionInfo* shared, | 499 SharedFunctionInfo* shared, |
| 500 const char* name, | 500 const char* name, |
| 501 int length); | 501 int length); |
| 502 | 502 |
| 503 JitCodeEventHandler code_event_handler_; | 503 JitCodeEventHandler code_event_handler_; |
| 504 base::Mutex logger_mutex_; |
| 504 }; | 505 }; |
| 505 | 506 |
| 506 | 507 |
| 507 JitLogger::JitLogger(JitCodeEventHandler code_event_handler) | 508 JitLogger::JitLogger(JitCodeEventHandler code_event_handler) |
| 508 : code_event_handler_(code_event_handler) { | 509 : code_event_handler_(code_event_handler) { |
| 509 } | 510 } |
| 510 | 511 |
| 511 | 512 |
| 512 void JitLogger::LogRecordedBuffer(Code* code, | 513 void JitLogger::LogRecordedBuffer(Code* code, |
| 513 SharedFunctionInfo* shared, | 514 SharedFunctionInfo* shared, |
| 514 const char* name, | 515 const char* name, |
| 515 int length) { | 516 int length) { |
| 516 JitCodeEvent event; | 517 JitCodeEvent event; |
| 517 memset(&event, 0, sizeof(event)); | 518 memset(&event, 0, sizeof(event)); |
| 518 event.type = JitCodeEvent::CODE_ADDED; | 519 event.type = JitCodeEvent::CODE_ADDED; |
| 519 event.code_start = code->instruction_start(); | 520 event.code_start = code->instruction_start(); |
| 520 event.code_len = code->instruction_size(); | 521 event.code_len = code->instruction_size(); |
| 521 Handle<SharedFunctionInfo> shared_function_handle; | 522 Handle<SharedFunctionInfo> shared_function_handle; |
| 522 if (shared && shared->script()->IsScript()) { | 523 if (shared && shared->script()->IsScript()) { |
| 523 shared_function_handle = Handle<SharedFunctionInfo>(shared); | 524 shared_function_handle = Handle<SharedFunctionInfo>(shared); |
| 524 } | 525 } |
| 525 event.script = ToApiHandle<v8::UnboundScript>(shared_function_handle); | 526 event.script = ToApiHandle<v8::UnboundScript>(shared_function_handle); |
| 526 event.name.str = name; | 527 event.name.str = name; |
| 527 event.name.len = length; | 528 event.name.len = length; |
| 528 code_event_handler_(&event); | 529 code_event_handler_(&event); |
| 529 } | 530 } |
| 530 | 531 |
| 531 | 532 |
| 532 void JitLogger::CodeMoveEvent(Address from, Address to) { | 533 void JitLogger::CodeMoveEvent(Address from, Address to) { |
| 534 base::LockGuard<base::Mutex> guard(&logger_mutex_); |
| 533 Code* from_code = Code::cast(HeapObject::FromAddress(from)); | 535 Code* from_code = Code::cast(HeapObject::FromAddress(from)); |
| 534 | 536 |
| 535 JitCodeEvent event; | 537 JitCodeEvent event; |
| 536 event.type = JitCodeEvent::CODE_MOVED; | 538 event.type = JitCodeEvent::CODE_MOVED; |
| 537 event.code_start = from_code->instruction_start(); | 539 event.code_start = from_code->instruction_start(); |
| 538 event.code_len = from_code->instruction_size(); | 540 event.code_len = from_code->instruction_size(); |
| 539 | 541 |
| 540 // Calculate the header size. | 542 // Calculate the header size. |
| 541 const size_t header_size = | 543 const size_t header_size = |
| 542 from_code->instruction_start() - reinterpret_cast<byte*>(from_code); | 544 from_code->instruction_start() - reinterpret_cast<byte*>(from_code); |
| (...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1905 removeCodeEventListener(jit_logger_); | 1907 removeCodeEventListener(jit_logger_); |
| 1906 delete jit_logger_; | 1908 delete jit_logger_; |
| 1907 jit_logger_ = NULL; | 1909 jit_logger_ = NULL; |
| 1908 } | 1910 } |
| 1909 | 1911 |
| 1910 return log_->Close(); | 1912 return log_->Close(); |
| 1911 } | 1913 } |
| 1912 | 1914 |
| 1913 } // namespace internal | 1915 } // namespace internal |
| 1914 } // namespace v8 | 1916 } // namespace v8 |
| OLD | NEW |