Index: runtime/vm/flow_graph_compiler.cc |
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc |
index 894d0f9047c3d2f44ec07336788ce1ed2218111a..0286145f41f1e9ccf859cd4f3a93b92ac2ea353a 100644 |
--- a/runtime/vm/flow_graph_compiler.cc |
+++ b/runtime/vm/flow_graph_compiler.cc |
@@ -559,6 +559,7 @@ void FlowGraphCompiler::AddDeoptIndexAtCall(intptr_t deopt_id, |
CompilerDeoptInfo* info = |
new CompilerDeoptInfo(deopt_id, |
ICData::kDeoptAtCall, |
+ 0, // No flags. |
pending_deoptimization_env_); |
info->set_pc_offset(assembler()->CodeSize()); |
deopt_infos_.Add(info); |
@@ -735,7 +736,8 @@ Environment* FlowGraphCompiler::SlowPathEnvironmentFor( |
Label* FlowGraphCompiler::AddDeoptStub(intptr_t deopt_id, |
- ICData::DeoptReasonId reason) { |
+ ICData::DeoptReasonId reason, |
+ uint32_t flags) { |
if (intrinsic_mode()) { |
return &intrinsic_slow_path_label_; |
} |
@@ -744,6 +746,7 @@ Label* FlowGraphCompiler::AddDeoptStub(intptr_t deopt_id, |
CompilerDeoptInfoWithStub* stub = |
new CompilerDeoptInfoWithStub(deopt_id, |
reason, |
+ flags, |
pending_deoptimization_env_); |
deopt_infos_.Add(stub); |
return stub->entry_label(); |
@@ -787,12 +790,14 @@ void FlowGraphCompiler::FinalizeDeoptInfo(const Code& code) { |
Array::Handle(Array::New(deopt_info_table_size, Heap::kOld)); |
Smi& offset = Smi::Handle(); |
DeoptInfo& info = DeoptInfo::Handle(); |
- Smi& reason = Smi::Handle(); |
+ Smi& reason_and_flags = Smi::Handle(); |
for (intptr_t i = 0; i < deopt_infos_.length(); i++) { |
offset = Smi::New(deopt_infos_[i]->pc_offset()); |
info = deopt_infos_[i]->CreateDeoptInfo(this, &builder, array); |
- reason = Smi::New(deopt_infos_[i]->reason()); |
- DeoptTable::SetEntry(array, i, offset, info, reason); |
+ reason_and_flags = DeoptTable::EncodeReasonAndFlags( |
+ deopt_infos_[i]->reason(), |
+ deopt_infos_[i]->flags()); |
+ DeoptTable::SetEntry(array, i, offset, info, reason_and_flags); |
} |
code.set_deopt_info_array(array); |
const Array& object_array = |