1// Copyright 2016 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_CRANKSHAFT_COMPILATION_PHASE_H_
6#define V8_CRANKSHAFT_COMPILATION_PHASE_H_
7
8#include "src/allocation.h"
9#include "src/base/platform/elapsed-timer.h"
10#include "src/compilation-info.h"
11#include "src/zone/zone.h"
12
13namespace v8 {
14namespace internal {
15
16class CompilationPhase BASE_EMBEDDED {
17 public:
18  CompilationPhase(const char* name, CompilationInfo* info);
19  ~CompilationPhase();
20
21 protected:
22  bool ShouldProduceTraceOutput() const;
23
24  const char* name() const { return name_; }
25  CompilationInfo* info() const { return info_; }
26  Isolate* isolate() const { return info()->isolate(); }
27  Zone* zone() { return &zone_; }
28
29 private:
30  const char* name_;
31  CompilationInfo* info_;
32  Zone zone_;
33  size_t info_zone_start_allocation_size_;
34  base::ElapsedTimer timer_;
35
36  DISALLOW_COPY_AND_ASSIGN(CompilationPhase);
37};
38
39}  // namespace internal
40}  // namespace v8
41
42#endif  // V8_CRANKSHAFT_COMPILATION_PHASE_H_
43