| 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..afac886c730e12fb6b26fe0b9746144987ecc933 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) {
|
| @@ -61,11 +62,8 @@ void Assembler::emitp(void* x, RelocInfo::Mode rmode) {
|
| }
|
|
|
|
|
| -void Assembler::emitq(uint64_t x, RelocInfo::Mode rmode) {
|
| +void Assembler::emitq(uint64_t x) {
|
| Memory::uint64_at(pc_) = x;
|
| - if (!RelocInfo::IsNone(rmode)) {
|
| - RecordRelocInfo(rmode, x);
|
| - }
|
| pc_ += sizeof(uint64_t);
|
| }
|
|
|
| @@ -79,7 +77,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 +391,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);
|
|
|