aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/schedule.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/schedule.h')
-rw-r--r--deps/v8/src/compiler/schedule.h8
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);