Index: src/arm/assembler-arm.cc |
diff --git a/src/arm/assembler-arm.cc b/src/arm/assembler-arm.cc |
index fd8e8b5d54ca444e3d81d23a62a0cc823c8394dd..0a48996d2e38764ac63d0732d2ed55e8d5f36939 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; |
} |
@@ -2694,6 +2695,7 @@ void Assembler::dd(uint32_t data) { |
void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) { |
+ |
Vitaly Repeshko
2011/04/15 01:24:43
nit: Remove blank line.
|
RelocInfo rinfo(pc_, rmode, data); // we do not try to reuse pool constants |
if (rmode >= RelocInfo::JS_RETURN && rmode <= RelocInfo::DEBUG_BREAK_SLOT) { |
// Adjust code for new modes. |
@@ -2722,7 +2724,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_); |
Vitaly Repeshko
2011/04/15 01:24:43
Not using data looks like a hack. There must be a
William Hesse
2011/04/15 11:51:27
We discussed it here, and there is no better way.
|
+ ast_id_for_reloc_info_ = kNoASTId; |
+ reloc_info_writer.Write(&reloc_info_with_ast_id); |
+ } else { |
+ reloc_info_writer.Write(&rinfo); |
+ } |
} |
} |