| Index: src/arm/assembler-arm-inl.h
|
| diff --git a/src/arm/assembler-arm-inl.h b/src/arm/assembler-arm-inl.h
|
| index 6268c332c889e7ac854a9eeaca0a4d3733b10847..223777c98519db2f3718552eac05a4481c0c76d3 100644
|
| --- a/src/arm/assembler-arm-inl.h
|
| +++ b/src/arm/assembler-arm-inl.h
|
| @@ -166,6 +166,24 @@ void RelocInfo::set_target_cell(JSGlobalPropertyCell* cell,
|
| }
|
|
|
|
|
| +static const int kNoCodeAgeSequenceLength = 3;
|
| +
|
| +Code* RelocInfo::code_age_stub() {
|
| + ASSERT(rmode_ == RelocInfo::CODE_AGE_SEQUENCE);
|
| + return Code::GetCodeFromTargetAddress(
|
| + Memory::Address_at(pc_ + Assembler::kInstrSize *
|
| + (kNoCodeAgeSequenceLength - 1)));
|
| +}
|
| +
|
| +
|
| +void RelocInfo::set_code_age_stub(Code* stub) {
|
| + ASSERT(rmode_ == RelocInfo::CODE_AGE_SEQUENCE);
|
| + Memory::Address_at(pc_ + Assembler::kInstrSize *
|
| + (kNoCodeAgeSequenceLength - 1)) =
|
| + stub->instruction_start();
|
| +}
|
| +
|
| +
|
| Address RelocInfo::call_address() {
|
| // The 2 instructions offset assumes patched debug break slot or return
|
| // sequence.
|
| @@ -239,6 +257,8 @@ void RelocInfo::Visit(ObjectVisitor* visitor) {
|
| visitor->VisitGlobalPropertyCell(this);
|
| } else if (mode == RelocInfo::EXTERNAL_REFERENCE) {
|
| visitor->VisitExternalReference(this);
|
| + } else if (RelocInfo::IsCodeAgeSequence(mode)) {
|
| + visitor->VisitCodeAgeSequence(this);
|
| #ifdef ENABLE_DEBUGGER_SUPPORT
|
| // TODO(isolates): Get a cached isolate below.
|
| } else if (((RelocInfo::IsJSReturn(mode) &&
|
| @@ -265,6 +285,8 @@ void RelocInfo::Visit(Heap* heap) {
|
| StaticVisitor::VisitGlobalPropertyCell(heap, this);
|
| } else if (mode == RelocInfo::EXTERNAL_REFERENCE) {
|
| StaticVisitor::VisitExternalReference(this);
|
| + } else if (RelocInfo::IsCodeAgeSequence(mode)) {
|
| + StaticVisitor::VisitCodeAgeSequence(heap, this);
|
| #ifdef ENABLE_DEBUGGER_SUPPORT
|
| } else if (heap->isolate()->debug()->has_break_points() &&
|
| ((RelocInfo::IsJSReturn(mode) &&
|
|
|