OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/profiler/profile-generator.h" | 5 #include "src/profiler/profile-generator.h" |
6 | 6 |
7 #include "src/base/adapters.h" | 7 #include "src/base/adapters.h" |
8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
10 #include "src/global-handles.h" | 10 #include "src/global-handles.h" |
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 | 757 |
758 CodeEntry* ProfileGenerator::FindEntry(void* address) { | 758 CodeEntry* ProfileGenerator::FindEntry(void* address) { |
759 CodeEntry* entry = code_map_.FindEntry(reinterpret_cast<Address>(address)); | 759 CodeEntry* entry = code_map_.FindEntry(reinterpret_cast<Address>(address)); |
760 if (!entry) { | 760 if (!entry) { |
761 RuntimeCallStats* rcs = isolate_->counters()->runtime_call_stats(); | 761 RuntimeCallStats* rcs = isolate_->counters()->runtime_call_stats(); |
762 void* start = reinterpret_cast<void*>(rcs); | 762 void* start = reinterpret_cast<void*>(rcs); |
763 void* end = reinterpret_cast<void*>(rcs + 1); | 763 void* end = reinterpret_cast<void*>(rcs + 1); |
764 if (start <= address && address < end) { | 764 if (start <= address && address < end) { |
765 RuntimeCallCounter* counter = | 765 RuntimeCallCounter* counter = |
766 reinterpret_cast<RuntimeCallCounter*>(address); | 766 reinterpret_cast<RuntimeCallCounter*>(address); |
| 767 CHECK(counter->name); |
767 entry = new CodeEntry(CodeEventListener::FUNCTION_TAG, counter->name, | 768 entry = new CodeEntry(CodeEventListener::FUNCTION_TAG, counter->name, |
768 CodeEntry::kEmptyNamePrefix, "native V8Runtime"); | 769 CodeEntry::kEmptyNamePrefix, "native V8Runtime"); |
769 code_map_.AddCode(reinterpret_cast<Address>(address), entry, 1); | 770 code_map_.AddCode(reinterpret_cast<Address>(address), entry, 1); |
770 } | 771 } |
771 } | 772 } |
772 return entry; | 773 return entry; |
773 } | 774 } |
774 | 775 |
775 CodeEntry* ProfileGenerator::EntryForVMState(StateTag tag) { | 776 CodeEntry* ProfileGenerator::EntryForVMState(StateTag tag) { |
776 switch (tag) { | 777 switch (tag) { |
777 case GC: | 778 case GC: |
778 return CodeEntry::gc_entry(); | 779 return CodeEntry::gc_entry(); |
779 case JS: | 780 case JS: |
780 case COMPILER: | 781 case COMPILER: |
781 // DOM events handlers are reported as OTHER / EXTERNAL entries. | 782 // DOM events handlers are reported as OTHER / EXTERNAL entries. |
782 // To avoid confusing people, let's put all these entries into | 783 // To avoid confusing people, let's put all these entries into |
783 // one bucket. | 784 // one bucket. |
784 case OTHER: | 785 case OTHER: |
785 case EXTERNAL: | 786 case EXTERNAL: |
786 return CodeEntry::program_entry(); | 787 return CodeEntry::program_entry(); |
787 case IDLE: | 788 case IDLE: |
788 return CodeEntry::idle_entry(); | 789 return CodeEntry::idle_entry(); |
789 default: return NULL; | 790 default: return NULL; |
790 } | 791 } |
791 } | 792 } |
792 | 793 |
793 } // namespace internal | 794 } // namespace internal |
794 } // namespace v8 | 795 } // namespace v8 |
OLD | NEW |