| Index: src/assembler.cc
|
| diff --git a/src/assembler.cc b/src/assembler.cc
|
| index a58f77f74b17f1283d300ff9fe23d525cd838083..a06d9588d84106501e2b44294797c21e11a05897 100644
|
| --- a/src/assembler.cc
|
| +++ b/src/assembler.cc
|
| @@ -313,6 +313,7 @@ void RelocInfoWriter::Write(const RelocInfo* rinfo) {
|
| #ifdef DEBUG
|
| byte* begin_pos = pos_;
|
| #endif
|
| + ASSERT(rinfo->rmode() < RelocInfo::NUMBER_OF_MODES);
|
| ASSERT(rinfo->pc() - last_pc_ >= 0);
|
| ASSERT(RelocInfo::LAST_STANDARD_NONCOMPACT_ENUM - RelocInfo::LAST_COMPACT_ENUM
|
| <= kMaxStandardNonCompactModes);
|
| @@ -570,6 +571,14 @@ void RelocIterator::next() {
|
| }
|
| }
|
| }
|
| + if (code_age_sequence_ != NULL) {
|
| + rinfo_.pc_ = code_age_sequence_;
|
| + code_age_sequence_ = NULL;
|
| + rinfo_.data_ = 0;
|
| + if (SetMode(RelocInfo::CODE_AGE_SEQUENCE)) {
|
| + return;
|
| + }
|
| + }
|
| done_ = true;
|
| }
|
|
|
| @@ -585,6 +594,12 @@ RelocIterator::RelocIterator(Code* code, int mode_mask) {
|
| mode_mask_ = mode_mask;
|
| last_id_ = 0;
|
| last_position_ = 0;
|
| + byte* sequence = code->FindCodeAgeSequence();
|
| + if (sequence != NULL && !Code::IsYoungSequence(sequence)) {
|
| + code_age_sequence_ = sequence;
|
| + } else {
|
| + code_age_sequence_ = NULL;
|
| + }
|
| if (mode_mask_ == 0) pos_ = end_;
|
| next();
|
| }
|
| @@ -600,6 +615,7 @@ RelocIterator::RelocIterator(const CodeDesc& desc, int mode_mask) {
|
| mode_mask_ = mode_mask;
|
| last_id_ = 0;
|
| last_position_ = 0;
|
| + code_age_sequence_ = NULL;
|
| if (mode_mask_ == 0) pos_ = end_;
|
| next();
|
| }
|
| @@ -652,6 +668,8 @@ const char* RelocInfo::RelocModeName(RelocInfo::Mode rmode) {
|
| UNREACHABLE();
|
| #endif
|
| return "debug break slot";
|
| + case RelocInfo::CODE_AGE_SEQUENCE:
|
| + return "code_age_sequence";
|
| case RelocInfo::NUMBER_OF_MODES:
|
| UNREACHABLE();
|
| return "number_of_modes";
|
| @@ -739,6 +757,9 @@ void RelocInfo::Verify() {
|
| case NUMBER_OF_MODES:
|
| UNREACHABLE();
|
| break;
|
| + case CODE_AGE_SEQUENCE:
|
| + ASSERT(Code::IsYoungSequence(pc_) || code_age_stub()->IsCode());
|
| + break;
|
| }
|
| }
|
| #endif // DEBUG
|
| @@ -874,6 +895,13 @@ ExternalReference ExternalReference::get_date_field_function(
|
| }
|
|
|
|
|
| +ExternalReference ExternalReference::get_make_code_young_function(
|
| + Isolate* isolate) {
|
| + return ExternalReference(Redirect(
|
| + isolate, FUNCTION_ADDR(Code::MakeCodeAgeSequenceYoung)));
|
| +}
|
| +
|
| +
|
| ExternalReference ExternalReference::date_cache_stamp(Isolate* isolate) {
|
| return ExternalReference(isolate->date_cache()->stamp_address());
|
| }
|
|
|