Index: src/arm/assembler-arm.cc |
diff --git a/src/arm/assembler-arm.cc b/src/arm/assembler-arm.cc |
index fd8e8b5d54ca444e3d81d23a62a0cc823c8394dd..fa97a3b3217ce506ccd8a070a831e82a47d606ae 100644 |
--- a/src/arm/assembler-arm.cc |
+++ b/src/arm/assembler-arm.cc |
@@ -315,6 +315,7 @@ Assembler::Assembler(Isolate* arg_isolate, void* buffer, int buffer_size) |
no_const_pool_before_ = 0; |
last_const_pool_end_ = 0; |
last_bound_pos_ = 0; |
+ ast_id_for_reloc_info_ = kNoASTId; |
} |
@@ -2722,7 +2723,14 @@ void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) { |
} |
} |
ASSERT(buffer_space() >= kMaxRelocSize); // too late to grow buffer here |
- reloc_info_writer.Write(&rinfo); |
+ if (rmode == RelocInfo::CODE_TARGET_WITH_ID) { |
+ ASSERT(ast_id_for_reloc_info_ != kNoASTId); |
+ RelocInfo reloc_info_with_ast_id(pc_, rmode, ast_id_for_reloc_info_); |
+ ast_id_for_reloc_info_ = kNoASTId; |
+ reloc_info_writer.Write(&reloc_info_with_ast_id); |
+ } else { |
+ reloc_info_writer.Write(&rinfo); |
+ } |
} |
} |