16ded16be15dd865a9b21ea304d5273c8be299c87Steve Block// Copyright 2010 the V8 project authors. All rights reserved. 2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file. 46ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 56ded16be15dd865a9b21ea304d5273c8be299c87Steve Block#ifndef V8_CPU_PROFILER_INL_H_ 66ded16be15dd865a9b21ea304d5273c8be299c87Steve Block#define V8_CPU_PROFILER_INL_H_ 76ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/cpu-profiler.h" 96ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 103fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch#include <new> 11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/circular-queue-inl.h" 12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/profile-generator-inl.h" 13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/unbound-queue-inl.h" 146ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 156ded16be15dd865a9b21ea304d5273c8be299c87Steve Blocknamespace v8 { 166ded16be15dd865a9b21ea304d5273c8be299c87Steve Blocknamespace internal { 176ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 186ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockvoid CodeCreateEventRecord::UpdateCodeMap(CodeMap* code_map) { 196ded16be15dd865a9b21ea304d5273c8be299c87Steve Block code_map->AddCode(start, entry, size); 2044f0eee88ff00398ff7f715fab053374d808c90dSteve Block if (shared != NULL) { 2144f0eee88ff00398ff7f715fab053374d808c90dSteve Block entry->set_shared_id(code_map->GetSharedId(shared)); 22e0cee9b3ed82e2391fd85d118aeaa4ea361c687dBen Murdoch } 236ded16be15dd865a9b21ea304d5273c8be299c87Steve Block} 246ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 256ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 266ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockvoid CodeMoveEventRecord::UpdateCodeMap(CodeMap* code_map) { 276ded16be15dd865a9b21ea304d5273c8be299c87Steve Block code_map->MoveCode(from, to); 286ded16be15dd865a9b21ea304d5273c8be299c87Steve Block} 296ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 306ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvoid CodeDisableOptEventRecord::UpdateCodeMap(CodeMap* code_map) { 32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch CodeEntry* entry = code_map->FindEntry(start); 33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if (entry != NULL) { 34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch entry->set_bailout_reason(bailout_reason); 35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch } 36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 3944f0eee88ff00398ff7f715fab053374d808c90dSteve Blockvoid SharedFunctionInfoMoveEventRecord::UpdateCodeMap(CodeMap* code_map) { 40e0cee9b3ed82e2391fd85d118aeaa4ea361c687dBen Murdoch code_map->MoveCode(from, to); 416ded16be15dd865a9b21ea304d5273c8be299c87Steve Block} 426ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 436ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 44b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvoid ReportBuiltinEventRecord::UpdateCodeMap(CodeMap* code_map) { 45b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch CodeEntry* entry = code_map->FindEntry(start); 46b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if (!entry) { 47b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch // Code objects for builtins should already have been added to the map but 48b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch // some of them have been filtered out by CpuProfiler. 49b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return; 50b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch } 51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch entry->SetBuiltinId(builtin_id); 52b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 53b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 54b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 55b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochTickSample* CpuProfiler::StartTickSample() { 56b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if (is_profiling_) return processor_->StartTickSample(); 57b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return NULL; 58b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 59b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 60b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 61b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvoid CpuProfiler::FinishTickSample() { 62b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch processor_->FinishTickSample(); 63b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 64b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 65b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 66b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochTickSample* ProfilerEventsProcessor::StartTickSample() { 67b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch void* address = ticks_buffer_.StartEnqueue(); 68b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if (address == NULL) return NULL; 696ded16be15dd865a9b21ea304d5273c8be299c87Steve Block TickSampleEventRecord* evt = 70b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch new(address) TickSampleEventRecord(last_code_event_id_); 716ded16be15dd865a9b21ea304d5273c8be299c87Steve Block return &evt->sample; 726ded16be15dd865a9b21ea304d5273c8be299c87Steve Block} 736ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 746ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 75b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvoid ProfilerEventsProcessor::FinishTickSample() { 76b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch ticks_buffer_.FinishEnqueue(); 776ded16be15dd865a9b21ea304d5273c8be299c87Steve Block} 786ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 796ded16be15dd865a9b21ea304d5273c8be299c87Steve Block} } // namespace v8::internal 806ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 816ded16be15dd865a9b21ea304d5273c8be299c87Steve Block#endif // V8_CPU_PROFILER_INL_H_ 82