diff options
Diffstat (limited to 'deps/v8/src/compiler/raw-machine-assembler.cc')
-rw-r--r-- | deps/v8/src/compiler/raw-machine-assembler.cc | 40 |
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_); |