Index: src/arm/macro-assembler-arm.cc |
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc |
index 6a095d3ccd223e49985609d4b629cbce4654f3cb..c800ffc2fa39691c62421ff968aa5c5fd3a62c27 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 |