diff options
Diffstat (limited to 'deps/v8/src/compiler/schedule.h')
-rw-r--r-- | deps/v8/src/compiler/schedule.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/deps/v8/src/compiler/schedule.h b/deps/v8/src/compiler/schedule.h index d940e541db..37ce76299e 100644 --- a/deps/v8/src/compiler/schedule.h +++ b/deps/v8/src/compiler/schedule.h @@ -26,7 +26,7 @@ typedef ZoneVector<Node*> NodeVector; // A basic block contains an ordered list of nodes and ends with a control // node. Note that if a basic block has phis, then all phis must appear as the // first nodes in the block. -class BasicBlock FINAL : public ZoneObject { +class BasicBlock final : public ZoneObject { public: // Possible control nodes that can end a block. enum Control { @@ -37,6 +37,7 @@ class BasicBlock FINAL : public ZoneObject { kBranch, // Branch if true to first successor, otherwise second. kSwitch, // Table dispatch to one of the successor blocks. kDeoptimize, // Return a value from this method. + kTailCall, // Tail call another method from this method. kReturn, // Return a value from this method. kThrow // Throw an exception. }; @@ -176,7 +177,7 @@ std::ostream& operator<<(std::ostream&, const BasicBlock::Id&); // and ordering them within basic blocks. Prior to computing a schedule, // a graph has no notion of control flow ordering other than that induced // by the graph's dependencies. A schedule is required to generate code. -class Schedule FINAL : public ZoneObject { +class Schedule final : public ZoneObject { public: explicit Schedule(Zone* zone, size_t node_count_hint = 0); @@ -220,6 +221,9 @@ class Schedule FINAL : public ZoneObject { // BasicBlock building: add a deoptimize at the end of {block}. void AddDeoptimize(BasicBlock* block, Node* input); + // BasicBlock building: add a tailcall at the end of {block}. + void AddTailCall(BasicBlock* block, Node* input); + // BasicBlock building: add a return at the end of {block}. void AddReturn(BasicBlock* block, Node* input); |