void CodeDeoptEventRecord::UpdateCodeMap(CodeMap* code_map) {
CodeEntry* entry = code_map->FindEntry(start);
- if (entry != NULL) entry->set_deopt_info(deopt_reason, position);
+ if (entry != NULL) entry->set_deopt_info(deopt_reason, position, pc_offset);
}
rec->start = code->address();
rec->deopt_reason = Deoptimizer::GetDeoptReason(info.deopt_reason);
rec->position = info.position;
+ rec->pc_offset = pc - code->instruction_start();
processor_->Enqueue(evt_rec);
processor_->AddDeoptStack(isolate_, pc, fp_to_sp_delta);
}
}
const char* bailout_reason() const { return bailout_reason_; }
- void set_deopt_info(const char* deopt_reason, SourcePosition position) {
+ void set_deopt_info(const char* deopt_reason, SourcePosition position,
+ size_t pc_offset) {
DCHECK(deopt_position_.IsUnknown());
deopt_reason_ = deopt_reason;
deopt_position_ = position;
+ pc_offset_ = pc_offset;
}
const char* deopt_reason() const { return deopt_reason_; }
SourcePosition deopt_position() const { return deopt_position_; }
const char* bailout_reason_;
const char* deopt_reason_;
SourcePosition deopt_position_;
+ size_t pc_offset_;
JITLineInfoTable* line_info_;
Address instruction_start_;