blob: 99e24c72c848a58216146256266bfeaa7344bda7 [file] [log] [blame]
Ben Murdochda12d292016-06-02 14:46:10 +01001// 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/compiler.h"
10#include "src/zone.h"
11
12namespace v8 {
13namespace internal {
14
15class CompilationPhase BASE_EMBEDDED {
16 public:
17 CompilationPhase(const char* name, CompilationInfo* info);
18 ~CompilationPhase();
19
20 protected:
21 bool ShouldProduceTraceOutput() const;
22
23 const char* name() const { return name_; }
24 CompilationInfo* info() const { return info_; }
25 Isolate* isolate() const { return info()->isolate(); }
26 Zone* zone() { return &zone_; }
27
28 private:
29 const char* name_;
30 CompilationInfo* info_;
31 Zone zone_;
32 size_t info_zone_start_allocation_size_;
33 base::ElapsedTimer timer_;
34
35 DISALLOW_COPY_AND_ASSIGN(CompilationPhase);
36};
37
38} // namespace internal
39} // namespace v8
40
41#endif // V8_CRANKSHAFT_COMPILATION_PHASE_H_