aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/raw-machine-assembler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/raw-machine-assembler.cc')
-rw-r--r--deps/v8/src/compiler/raw-machine-assembler.cc40
1 files changed, 30 insertions, 10 deletions
diff --git a/deps/v8/src/compiler/raw-machine-assembler.cc b/deps/v8/src/compiler/raw-machine-assembler.cc
index 0e101770c3..a2cf562115 100644
--- a/deps/v8/src/compiler/raw-machine-assembler.cc
+++ b/deps/v8/src/compiler/raw-machine-assembler.cc
@@ -167,8 +167,7 @@ void RawMachineAssembler::PopAndReturn(Node* pop, Node* v1, Node* v2,
void RawMachineAssembler::DebugBreak() { AddNode(machine()->DebugBreak()); }
void RawMachineAssembler::Unreachable() {
- Node* values[] = {UndefinedConstant()}; // Unused.
- Node* ret = MakeNode(common()->Throw(), 1, values);
+ Node* ret = MakeNode(common()->Throw(), 0, nullptr);
schedule()->AddThrow(CurrentBlock(), ret);
current_block_ = nullptr;
}
@@ -279,7 +278,17 @@ Node* RawMachineAssembler::CallCFunction8(
Linkage::GetSimplifiedCDescriptor(zone(), builder.Build());
return AddNode(common()->Call(descriptor), arraysize(args), args);
}
+BasicBlock* RawMachineAssembler::Use(RawMachineLabel* label) {
+ label->used_ = true;
+ return EnsureBlock(label);
+}
+BasicBlock* RawMachineAssembler::EnsureBlock(RawMachineLabel* label) {
+ if (label->block_ == nullptr) {
+ label->block_ = schedule()->NewBasicBlock();
+ }
+ return label->block_;
+}
void RawMachineAssembler::Bind(RawMachineLabel* label) {
DCHECK(current_block_ == nullptr);
@@ -289,18 +298,29 @@ void RawMachineAssembler::Bind(RawMachineLabel* label) {
current_block_->set_deferred(label->deferred_);
}
-
-BasicBlock* RawMachineAssembler::Use(RawMachineLabel* label) {
- label->used_ = true;
- return EnsureBlock(label);
+#if DEBUG
+void RawMachineAssembler::Bind(RawMachineLabel* label,
+ AssemblerDebugInfo info) {
+ if (current_block_ != nullptr) {
+ std::stringstream str;
+ str << "Binding label without closing previous block:"
+ << "\n# label: " << info
+ << "\n# previous block: " << *current_block_;
+ FATAL(str.str().c_str());
+ }
+ Bind(label);
+ current_block_->set_debug_info(info);
}
-
-BasicBlock* RawMachineAssembler::EnsureBlock(RawMachineLabel* label) {
- if (label->block_ == nullptr) label->block_ = schedule()->NewBasicBlock();
- return label->block_;
+void RawMachineAssembler::PrintCurrentBlock(std::ostream& os) {
+ os << CurrentBlock();
}
+void RawMachineAssembler::SetInitialDebugInformation(
+ AssemblerDebugInfo debug_info) {
+ CurrentBlock()->set_debug_info(debug_info);
+}
+#endif // DEBUG
BasicBlock* RawMachineAssembler::CurrentBlock() {
DCHECK(current_block_);