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 1400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1411 | 1411 |
1412 | 1412 |
1413 void Logger::TickEvent(TickSample* sample, bool overflow) { | 1413 void Logger::TickEvent(TickSample* sample, bool overflow) { |
1414 if (!log_->IsEnabled() || !FLAG_prof_cpp) return; | 1414 if (!log_->IsEnabled() || !FLAG_prof_cpp) return; |
1415 Log::MessageBuilder msg(log_); | 1415 Log::MessageBuilder msg(log_); |
1416 msg.Append("%s,", kLogEventsNames[TICK_EVENT]); | 1416 msg.Append("%s,", kLogEventsNames[TICK_EVENT]); |
1417 msg.AppendAddress(sample->pc); | 1417 msg.AppendAddress(sample->pc); |
1418 msg.Append(",%ld", static_cast<int>(timer_.Elapsed().InMicroseconds())); | 1418 msg.Append(",%ld", static_cast<int>(timer_.Elapsed().InMicroseconds())); |
1419 if (sample->has_external_callback) { | 1419 if (sample->has_external_callback) { |
1420 msg.Append(",1,"); | 1420 msg.Append(",1,"); |
1421 #if USES_FUNCTION_DESCRIPTORS | 1421 msg.AppendAddress(sample->external_callback_entry); |
1422 msg.AppendAddress(*FUNCTION_ENTRYPOINT_ADDRESS(sample->external_callback)); | |
1423 #else | |
1424 msg.AppendAddress(sample->external_callback); | |
1425 #endif | |
1426 } else { | 1422 } else { |
1427 msg.Append(",0,"); | 1423 msg.Append(",0,"); |
1428 msg.AppendAddress(sample->tos); | 1424 msg.AppendAddress(sample->tos); |
1429 } | 1425 } |
1430 msg.Append(",%d", static_cast<int>(sample->state)); | 1426 msg.Append(",%d", static_cast<int>(sample->state)); |
1431 if (overflow) { | 1427 if (overflow) { |
1432 msg.Append(",overflow"); | 1428 msg.Append(",overflow"); |
1433 } | 1429 } |
1434 for (unsigned i = 0; i < sample->frames_count; ++i) { | 1430 for (unsigned i = 0; i < sample->frames_count; ++i) { |
1435 msg.Append(','); | 1431 msg.Append(','); |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1628 isolate_->heap()->empty_string(), line_num, column_num)); | 1624 isolate_->heap()->empty_string(), line_num, column_num)); |
1629 } | 1625 } |
1630 } else if (shared->IsApiFunction()) { | 1626 } else if (shared->IsApiFunction()) { |
1631 // API function. | 1627 // API function. |
1632 FunctionTemplateInfo* fun_data = shared->get_api_func_data(); | 1628 FunctionTemplateInfo* fun_data = shared->get_api_func_data(); |
1633 Object* raw_call_data = fun_data->call_code(); | 1629 Object* raw_call_data = fun_data->call_code(); |
1634 if (!raw_call_data->IsUndefined()) { | 1630 if (!raw_call_data->IsUndefined()) { |
1635 CallHandlerInfo* call_data = CallHandlerInfo::cast(raw_call_data); | 1631 CallHandlerInfo* call_data = CallHandlerInfo::cast(raw_call_data); |
1636 Object* callback_obj = call_data->callback(); | 1632 Object* callback_obj = call_data->callback(); |
1637 Address entry_point = v8::ToCData<Address>(callback_obj); | 1633 Address entry_point = v8::ToCData<Address>(callback_obj); |
| 1634 #if USES_FUNCTION_DESCRIPTORS |
| 1635 entry_point = *FUNCTION_ENTRYPOINT_ADDRESS(entry_point); |
| 1636 #endif |
1638 PROFILE(isolate_, CallbackEvent(*func_name, entry_point)); | 1637 PROFILE(isolate_, CallbackEvent(*func_name, entry_point)); |
1639 } | 1638 } |
1640 } else { | 1639 } else { |
1641 PROFILE(isolate_, | 1640 PROFILE(isolate_, |
1642 CodeCreateEvent( | 1641 CodeCreateEvent( |
1643 Logger::LAZY_COMPILE_TAG, *code, *shared, NULL, *func_name)); | 1642 Logger::LAZY_COMPILE_TAG, *code, *shared, NULL, *func_name)); |
1644 } | 1643 } |
1645 } | 1644 } |
1646 | 1645 |
1647 | 1646 |
(...skipping 23 matching lines...) Expand all Loading... |
1671 "Logger::LogAccessorCallbacks"); | 1670 "Logger::LogAccessorCallbacks"); |
1672 HeapIterator iterator(heap); | 1671 HeapIterator iterator(heap); |
1673 DisallowHeapAllocation no_gc; | 1672 DisallowHeapAllocation no_gc; |
1674 for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) { | 1673 for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) { |
1675 if (!obj->IsAccessorInfo()) continue; | 1674 if (!obj->IsAccessorInfo()) continue; |
1676 AccessorInfo* ai = AccessorInfo::cast(obj); | 1675 AccessorInfo* ai = AccessorInfo::cast(obj); |
1677 if (!ai->name()->IsName()) continue; | 1676 if (!ai->name()->IsName()) continue; |
1678 Address getter_entry = v8::ToCData<Address>(ai->getter()); | 1677 Address getter_entry = v8::ToCData<Address>(ai->getter()); |
1679 Name* name = Name::cast(ai->name()); | 1678 Name* name = Name::cast(ai->name()); |
1680 if (getter_entry != 0) { | 1679 if (getter_entry != 0) { |
| 1680 #if USES_FUNCTION_DESCRIPTORS |
| 1681 getter_entry = *FUNCTION_ENTRYPOINT_ADDRESS(getter_entry); |
| 1682 #endif |
1681 PROFILE(isolate_, GetterCallbackEvent(name, getter_entry)); | 1683 PROFILE(isolate_, GetterCallbackEvent(name, getter_entry)); |
1682 } | 1684 } |
1683 Address setter_entry = v8::ToCData<Address>(ai->setter()); | 1685 Address setter_entry = v8::ToCData<Address>(ai->setter()); |
1684 if (setter_entry != 0) { | 1686 if (setter_entry != 0) { |
| 1687 #if USES_FUNCTION_DESCRIPTORS |
| 1688 setter_entry = *FUNCTION_ENTRYPOINT_ADDRESS(setter_entry); |
| 1689 #endif |
1685 PROFILE(isolate_, SetterCallbackEvent(name, setter_entry)); | 1690 PROFILE(isolate_, SetterCallbackEvent(name, setter_entry)); |
1686 } | 1691 } |
1687 } | 1692 } |
1688 } | 1693 } |
1689 | 1694 |
1690 | 1695 |
1691 static void AddIsolateIdIfNeeded(std::ostream& os, // NOLINT | 1696 static void AddIsolateIdIfNeeded(std::ostream& os, // NOLINT |
1692 Isolate* isolate) { | 1697 Isolate* isolate) { |
1693 if (FLAG_logfile_per_isolate) os << "isolate-" << isolate << "-"; | 1698 if (FLAG_logfile_per_isolate) os << "isolate-" << isolate << "-"; |
1694 } | 1699 } |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1836 removeCodeEventListener(jit_logger_); | 1841 removeCodeEventListener(jit_logger_); |
1837 delete jit_logger_; | 1842 delete jit_logger_; |
1838 jit_logger_ = NULL; | 1843 jit_logger_ = NULL; |
1839 } | 1844 } |
1840 | 1845 |
1841 return log_->Close(); | 1846 return log_->Close(); |
1842 } | 1847 } |
1843 | 1848 |
1844 } // namespace internal | 1849 } // namespace internal |
1845 } // namespace v8 | 1850 } // namespace v8 |
OLD | NEW |