Index: src/x64/assembler-x64-inl.h |
diff --git a/src/x64/assembler-x64-inl.h b/src/x64/assembler-x64-inl.h |
index 07d07033e9546b1b6a6b5086c6817532a8598d10..4887899b506137eb674b57e987a1734148164392 100644 |
--- a/src/x64/assembler-x64-inl.h |
+++ b/src/x64/assembler-x64-inl.h |
@@ -43,6 +43,7 @@ namespace internal { |
static const byte kCallOpcode = 0xE8; |
+static const int kNoCodeAgeSequenceLength = 6; |
void Assembler::emitl(uint32_t x) { |
@@ -79,7 +80,8 @@ void Assembler::emitw(uint16_t x) { |
void Assembler::emit_code_target(Handle<Code> target, |
RelocInfo::Mode rmode, |
TypeFeedbackId ast_id) { |
- ASSERT(RelocInfo::IsCodeTarget(rmode)); |
+ ASSERT(RelocInfo::IsCodeTarget(rmode) || |
+ rmode == RelocInfo::CODE_AGE_SEQUENCE); |
if (rmode == RelocInfo::CODE_TARGET && !ast_id.IsNone()) { |
RecordRelocInfo(RelocInfo::CODE_TARGET_WITH_ID, ast_id.ToInt()); |
} else { |
@@ -392,6 +394,13 @@ bool RelocInfo::IsPatchedDebugBreakSlotSequence() { |
} |
+Handle<Object> RelocInfo::code_age_stub_handle(Assembler* origin) { |
+ ASSERT(rmode_ == RelocInfo::CODE_AGE_SEQUENCE); |
+ ASSERT(*pc_ == kCallOpcode); |
+ return origin->code_target_object_handle_at(pc_ + 1); |
+} |
+ |
+ |
Code* RelocInfo::code_age_stub() { |
ASSERT(rmode_ == RelocInfo::CODE_AGE_SEQUENCE); |
ASSERT(*pc_ == kCallOpcode); |