| 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);
|
|
|