Index: src/arm/macro-assembler-arm.cc |
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc |
index 20dd0b4320dda538a3434df81d857a87686eb053..f71a887a180f1ff5acbe8a8a1a729fa86449504d 100644 |
--- a/src/arm/macro-assembler-arm.cc |
+++ b/src/arm/macro-assembler-arm.cc |
@@ -148,8 +148,9 @@ int MacroAssembler::CallSize( |
} |
-void MacroAssembler::Call( |
- intptr_t target, RelocInfo::Mode rmode, Condition cond) { |
+void MacroAssembler::Call(intptr_t target, |
+ RelocInfo::Mode rmode, |
+ Condition cond) { |
// Block constant pool for the call instruction sequence. |
BlockConstPoolScope block_const_pool(this); |
#ifdef DEBUG |
@@ -214,8 +215,31 @@ int MacroAssembler::CallSize( |
} |
-void MacroAssembler::Call( |
- Handle<Code> code, RelocInfo::Mode rmode, Condition cond) { |
+void MacroAssembler::CallWithAstId(Handle<Code> code, |
+ RelocInfo::Mode rmode, |
+ unsigned ast_id, |
+ Condition cond) { |
+#ifdef DEBUG |
+ int pre_position = pc_offset(); |
+#endif |
+ |
+ ASSERT(rmode == RelocInfo::CODE_TARGET_WITH_ID); |
+ ASSERT(ast_id != kNoASTId); |
+ ASSERT(ast_id_for_reloc_info_ == kNoASTId); |
+ ast_id_for_reloc_info_ = ast_id; |
+ // 'code' is always generated ARM code, never THUMB code |
+ Call(reinterpret_cast<intptr_t>(code.location()), rmode, cond); |
+ |
+#ifdef DEBUG |
+ int post_position = pc_offset(); |
+ CHECK_EQ(pre_position + CallSize(code, rmode, cond), post_position); |
+#endif |
+} |
+ |
+ |
+void MacroAssembler::Call(Handle<Code> code, |
+ RelocInfo::Mode rmode, |
+ Condition cond) { |
#ifdef DEBUG |
int pre_position = pc_offset(); |
#endif |