Home | History | Annotate | Download | only in src
      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 
     18 void 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 
     26 void CodeMoveEventRecord::UpdateCodeMap(CodeMap* code_map) {
     27   code_map->MoveCode(from, to);
     28 }
     29 
     30 
     31 void 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 
     39 void SharedFunctionInfoMoveEventRecord::UpdateCodeMap(CodeMap* code_map) {
     40   code_map->MoveCode(from, to);
     41 }
     42 
     43 
     44 void 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 
     55 TickSample* CpuProfiler::StartTickSample() {
     56   if (is_profiling_) return processor_->StartTickSample();
     57   return NULL;
     58 }
     59 
     60 
     61 void CpuProfiler::FinishTickSample() {
     62   processor_->FinishTickSample();
     63 }
     64 
     65 
     66 TickSample* 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 
     75 void ProfilerEventsProcessor::FinishTickSample() {
     76   ticks_buffer_.FinishEnqueue();
     77 }
     78 
     79 } }  // namespace v8::internal
     80 
     81 #endif  // V8_CPU_PROFILER_INL_H_
     82