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/compiler.h" 10 #include "src/zone.h" 11 12 namespace v8 { 13 namespace internal { 14 15 class 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_ 42