1 // Copyright 2010 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_CPU_PROFILER_INL_H_ 6 #define V8_CPU_PROFILER_INL_H_ 7 8 #include "src/cpu-profiler.h" 9 10 #include <new> 11 #include "src/circular-queue-inl.h" 12 #include "src/profile-generator-inl.h" 13 #include "src/unbound-queue-inl.h" 14 15 namespace v8 { 16 namespace internal { 17 UpdateCodeMap(CodeMap * code_map)18void CodeCreateEventRecord::UpdateCodeMap(CodeMap* code_map) { 19 code_map->AddCode(start, entry, size); 20 if (shared != NULL) { 21 entry->set_shared_id(code_map->GetSharedId(shared)); 22 } 23 } 24 25 UpdateCodeMap(CodeMap * code_map)26void CodeMoveEventRecord::UpdateCodeMap(CodeMap* code_map) { 27 code_map->MoveCode(from, to); 28 } 29 30 UpdateCodeMap(CodeMap * code_map)31void CodeDisableOptEventRecord::UpdateCodeMap(CodeMap* code_map) { 32 CodeEntry* entry = code_map->FindEntry(start); 33 if (entry != NULL) { 34 entry->set_bailout_reason(bailout_reason); 35 } 36 } 37 38 UpdateCodeMap(CodeMap * code_map)39void SharedFunctionInfoMoveEventRecord::UpdateCodeMap(CodeMap* code_map) { 40 code_map->MoveCode(from, to); 41 } 42 43 UpdateCodeMap(CodeMap * code_map)44void ReportBuiltinEventRecord::UpdateCodeMap(CodeMap* code_map) { 45 CodeEntry* entry = code_map->FindEntry(start); 46 if (!entry) { 47 // Code objects for builtins should already have been added to the map but 48 // some of them have been filtered out by CpuProfiler. 49 return; 50 } 51 entry->SetBuiltinId(builtin_id); 52 } 53 54 StartTickSample()55TickSample* CpuProfiler::StartTickSample() { 56 if (is_profiling_) return processor_->StartTickSample(); 57 return NULL; 58 } 59 60 FinishTickSample()61void CpuProfiler::FinishTickSample() { 62 processor_->FinishTickSample(); 63 } 64 65 StartTickSample()66TickSample* ProfilerEventsProcessor::StartTickSample() { 67 void* address = ticks_buffer_.StartEnqueue(); 68 if (address == NULL) return NULL; 69 TickSampleEventRecord* evt = 70 new(address) TickSampleEventRecord(last_code_event_id_); 71 return &evt->sample; 72 } 73 74 FinishTickSample()75void ProfilerEventsProcessor::FinishTickSample() { 76 ticks_buffer_.FinishEnqueue(); 77 } 78 79 } } // namespace v8::internal 80 81 #endif // V8_CPU_PROFILER_INL_H_ 82