| Index: src/compiler/scheduler.cc
|
| diff --git a/src/compiler/scheduler.cc b/src/compiler/scheduler.cc
|
| index 9a4c7af6eade6523c345fff23684c0f204168fb5..a0ab947eab6f7fdf2db7aec95473f05e3daa9445 100644
|
| --- a/src/compiler/scheduler.cc
|
| +++ b/src/compiler/scheduler.cc
|
| @@ -345,6 +345,10 @@ class CFGBuilder : public ZoneObject {
|
| scheduler_->UpdatePlacement(node, Scheduler::kFixed);
|
| ConnectSwitch(node);
|
| break;
|
| + case IrOpcode::kDeoptimize:
|
| + scheduler_->UpdatePlacement(node, Scheduler::kFixed);
|
| + ConnectDeoptimize(node);
|
| + break;
|
| case IrOpcode::kReturn:
|
| scheduler_->UpdatePlacement(node, Scheduler::kFixed);
|
| ConnectReturn(node);
|
| @@ -494,6 +498,13 @@ class CFGBuilder : public ZoneObject {
|
| schedule_->AddReturn(return_block, ret);
|
| }
|
|
|
| + void ConnectDeoptimize(Node* deopt) {
|
| + Node* deoptimize_control = NodeProperties::GetControlInput(deopt);
|
| + BasicBlock* deoptimize_block = FindPredecessorBlock(deoptimize_control);
|
| + TraceConnect(deopt, deoptimize_block, NULL);
|
| + schedule_->AddDeoptimize(deoptimize_block, deopt);
|
| + }
|
| +
|
| void ConnectThrow(Node* thr) {
|
| Node* throw_control = NodeProperties::GetControlInput(thr);
|
| BasicBlock* throw_block = FindPredecessorBlock(throw_control);
|
|
|