Index: src/compiler/raw-machine-assembler.h |
diff --git a/src/compiler/raw-machine-assembler.h b/src/compiler/raw-machine-assembler.h |
index d48c24d616f16e9a9b984d9e1eafe05d992b6305..9b9a836d58adb4c2b228e439b993319d8175ebc1 100644 |
--- a/src/compiler/raw-machine-assembler.h |
+++ b/src/compiler/raw-machine-assembler.h |
@@ -19,8 +19,10 @@ namespace internal { |
namespace compiler { |
class BasicBlock; |
+class RawMachineLabel; |
class Schedule; |
+ |
// The RawMachineAssembler produces a low-level IR graph. All nodes are wired |
// into a graph and also placed into a schedule immediately, hence subsequent |
// code generation can happen without the need for scheduling. |
@@ -34,19 +36,6 @@ class Schedule; |
// non-schedulable due to missing control and effect dependencies. |
class RawMachineAssembler { |
public: |
- class Label { |
- public: |
- Label() : block_(NULL), used_(false), bound_(false) {} |
- ~Label() { DCHECK(bound_ || !used_); } |
- |
- private: |
- BasicBlock* block_; |
- bool used_; |
- bool bound_; |
- friend class RawMachineAssembler; |
- DISALLOW_COPY_AND_ASSIGN(Label); |
- }; |
- |
RawMachineAssembler(Isolate* isolate, Graph* graph, |
CallDescriptor* call_descriptor, |
MachineType word = kMachPtr, |
@@ -584,14 +573,15 @@ class RawMachineAssembler { |
// the current basic block or create new basic blocks for labels. |
// Control flow. |
- void Goto(Label* label); |
- void Branch(Node* condition, Label* true_val, Label* false_val); |
- void Switch(Node* index, Label* default_label, int32_t* case_values, |
- Label** case_labels, size_t case_count); |
+ void Goto(RawMachineLabel* label); |
+ void Branch(Node* condition, RawMachineLabel* true_val, |
+ RawMachineLabel* false_val); |
+ void Switch(Node* index, RawMachineLabel* default_label, int32_t* case_values, |
+ RawMachineLabel** case_labels, size_t case_count); |
void Return(Node* value); |
void Return(Node* v1, Node* v2); |
void Return(Node* v1, Node* v2, Node* v3); |
- void Bind(Label* label); |
+ void Bind(RawMachineLabel* label); |
void Deoptimize(Node* state); |
// Variables. |
@@ -624,8 +614,8 @@ class RawMachineAssembler { |
private: |
Node* MakeNode(const Operator* op, int input_count, Node** inputs); |
- BasicBlock* Use(Label* label); |
- BasicBlock* EnsureBlock(Label* label); |
+ BasicBlock* Use(RawMachineLabel* label); |
+ BasicBlock* EnsureBlock(RawMachineLabel* label); |
BasicBlock* CurrentBlock(); |
Schedule* schedule() { return schedule_; } |
@@ -646,6 +636,20 @@ class RawMachineAssembler { |
DISALLOW_COPY_AND_ASSIGN(RawMachineAssembler); |
}; |
+ |
+class RawMachineLabel final { |
+ public: |
+ RawMachineLabel(); |
+ ~RawMachineLabel(); |
+ |
+ private: |
+ BasicBlock* block_; |
+ bool used_; |
+ bool bound_; |
+ friend class RawMachineAssembler; |
+ DISALLOW_COPY_AND_ASSIGN(RawMachineLabel); |
+}; |
+ |
} // namespace compiler |
} // namespace internal |
} // namespace v8 |