Index: src/assembler.cc |
diff --git a/src/assembler.cc b/src/assembler.cc |
index 214a72d63f4b8b9523eb356532952ce0e52cadb4..61793ff1886272aba897c1a96d61f1f17e75dc77 100644 |
--- a/src/assembler.cc |
+++ b/src/assembler.cc |
@@ -514,7 +514,8 @@ void RelocInfoWriter::Write(const RelocInfo* rinfo) { |
if (RelocInfo::IsComment(rmode)) { |
WriteData(rinfo->data()); |
} else if (RelocInfo::IsConstPool(rmode) || |
- RelocInfo::IsVeneerPool(rmode)) { |
+ RelocInfo::IsVeneerPool(rmode) || |
+ RelocInfo::IsDeoptId(rmode)) { |
WriteIntData(static_cast<int>(rinfo->data())); |
} |
} |
@@ -705,7 +706,8 @@ void RelocIterator::next() { |
Advance(kIntSize); |
} |
} else if (RelocInfo::IsConstPool(rmode) || |
- RelocInfo::IsVeneerPool(rmode)) { |
+ RelocInfo::IsVeneerPool(rmode) || |
+ RelocInfo::IsDeoptId(rmode)) { |
if (SetMode(rmode)) { |
AdvanceReadInt(); |
return; |
@@ -828,6 +830,8 @@ const char* RelocInfo::RelocModeName(RelocInfo::Mode rmode) { |
return "encoded internal reference"; |
case DEOPT_REASON: |
return "deopt reason"; |
+ case DEOPT_ID: |
+ return "deopt inlining id"; |
case CONST_POOL: |
return "constant pool"; |
case VENEER_POOL: |
@@ -935,6 +939,7 @@ void RelocInfo::Verify(Isolate* isolate) { |
case STATEMENT_POSITION: |
case EXTERNAL_REFERENCE: |
case DEOPT_REASON: |
+ case DEOPT_ID: |
case CONST_POOL: |
case VENEER_POOL: |
case DEBUG_BREAK_SLOT_AT_POSITION: |
@@ -2052,12 +2057,13 @@ int ConstantPoolBuilder::Emit(Assembler* assm) { |
// Platform specific but identical code for all the platforms. |
- |
-void Assembler::RecordDeoptReason(const int reason, int raw_position) { |
+void Assembler::RecordDeoptReason(const int reason, int raw_position, |
+ int inlining_id) { |
if (FLAG_trace_deopt || isolate()->cpu_profiler()->is_profiling()) { |
EnsureSpace ensure_space(this); |
RecordRelocInfo(RelocInfo::POSITION, raw_position); |
RecordRelocInfo(RelocInfo::DEOPT_REASON, reason); |
+ RecordRelocInfo(RelocInfo::DEOPT_ID, inlining_id); |
} |
} |