5 #ifndef V8_COMPILER_NODE_ORIGIN_TABLE_H_ 6 #define V8_COMPILER_NODE_ORIGIN_TABLE_H_ 10 #include "src/base/compiler-specific.h" 11 #include "src/compiler/node-aux-data.h" 12 #include "src/globals.h" 13 #include "src/source-position.h" 21 typedef enum { kWasmBytecode, kGraphNode } OriginKind;
22 NodeOrigin(
const char* phase_name,
const char* reducer_name,
24 : phase_name_(phase_name),
25 reducer_name_(reducer_name),
26 origin_kind_(kGraphNode),
27 created_from_(created_from) {}
29 NodeOrigin(
const char* phase_name,
const char* reducer_name,
30 OriginKind origin_kind, uint64_t created_from)
31 : phase_name_(phase_name),
32 reducer_name_(reducer_name),
33 origin_kind_(origin_kind),
34 created_from_(created_from) {}
39 bool IsKnown() {
return created_from_ >= 0; }
40 int64_t created_from()
const {
return created_from_; }
41 const char* reducer_name()
const {
return reducer_name_; }
42 const char* phase_name()
const {
return phase_name_; }
44 OriginKind origin_kind()
const {
return origin_kind_; }
47 return reducer_name_ == o.reducer_name_ && created_from_ == o.created_from_;
50 void PrintJson(std::ostream& out)
const;
56 created_from_(std::numeric_limits<int64_t>::min()) {}
57 const char* phase_name_;
58 const char* reducer_name_;
59 OriginKind origin_kind_;
68 :
public NON_EXPORTED_BASE(ZoneObject) {
73 : origins_(origins), prev_origin_(NodeOrigin::Unknown()) {
75 prev_origin_ = origins->current_origin_;
76 origins->current_origin_ =
77 NodeOrigin(origins->current_phase_name_, reducer_name, node->id());
82 if (origins_) origins_->current_origin_ = prev_origin_;
88 DISALLOW_COPY_AND_ASSIGN(
Scope);
95 if (origins !=
nullptr) {
96 prev_phase_name_ = origins->current_phase_name_;
97 origins->current_phase_name_ =
98 phase_name ==
nullptr ?
"unnamed" : phase_name;
103 if (origins_) origins_->current_phase_name_ = prev_phase_name_;
108 const char* prev_phase_name_;
115 void RemoveDecorator();
120 void SetCurrentPosition(
const NodeOrigin& no) { current_origin_ = no; }
122 void PrintJson(std::ostream& os)
const;
128 Decorator* decorator_;
131 const char* current_phase_name_;
141 #endif // V8_COMPILER_NODE_ORIGIN_TABLE_H_