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