Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Side by Side Diff: src/assembler.cc

Issue 1008823002: Encode RelocInfo extra tag to fit changed RelocInfo kind enum. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 WriteExtraTaggedPC(pc_delta, kPCJumpExtraTag); 504 WriteExtraTaggedPC(pc_delta, kPCJumpExtraTag);
505 WriteExtraTaggedData(rinfo->data(), kCommentTag); 505 WriteExtraTaggedData(rinfo->data(), kCommentTag);
506 DCHECK(begin_pos - pos_ >= RelocInfo::kMinRelocCommentSize); 506 DCHECK(begin_pos - pos_ >= RelocInfo::kMinRelocCommentSize);
507 } else if (RelocInfo::IsConstPool(rmode) || RelocInfo::IsVeneerPool(rmode)) { 507 } else if (RelocInfo::IsConstPool(rmode) || RelocInfo::IsVeneerPool(rmode)) {
508 WriteExtraTaggedPC(pc_delta, kPCJumpExtraTag); 508 WriteExtraTaggedPC(pc_delta, kPCJumpExtraTag);
509 WriteExtraTaggedPoolData(static_cast<int>(rinfo->data()), 509 WriteExtraTaggedPoolData(static_cast<int>(rinfo->data()),
510 RelocInfo::IsConstPool(rmode) ? kConstPoolTag 510 RelocInfo::IsConstPool(rmode) ? kConstPoolTag
511 : kVeneerPoolTag); 511 : kVeneerPoolTag);
512 } else { 512 } else {
513 DCHECK(rmode > RelocInfo::LAST_COMPACT_ENUM); 513 DCHECK(rmode > RelocInfo::LAST_COMPACT_ENUM);
514 int saved_mode = rmode - RelocInfo::LAST_COMPACT_ENUM; 514 int saved_mode = rmode - RelocInfo::LAST_COMPACT_ENUM - 1;
515 // For all other modes we simply use the mode as the extra tag. 515 // For all other modes we simply use the mode as the extra tag.
516 // None of these modes need a data component. 516 // None of these modes need a data component.
517 DCHECK(saved_mode < kPoolExtraTag); 517 DCHECK(saved_mode < kPoolExtraTag);
518 WriteExtraTaggedPC(pc_delta, saved_mode); 518 WriteExtraTaggedPC(pc_delta, saved_mode);
519 } 519 }
520 last_pc_ = rinfo->pc(); 520 last_pc_ = rinfo->pc();
521 last_mode_ = rmode; 521 last_mode_ = rmode;
522 #ifdef DEBUG 522 #ifdef DEBUG
523 DCHECK(begin_pos - pos_ <= kMaxSize); 523 DCHECK(begin_pos - pos_ <= kMaxSize);
524 #endif 524 #endif
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 DCHECK(pool_type == kConstPoolTag || pool_type == kVeneerPoolTag); 714 DCHECK(pool_type == kConstPoolTag || pool_type == kVeneerPoolTag);
715 RelocInfo::Mode rmode = (pool_type == kConstPoolTag) ? 715 RelocInfo::Mode rmode = (pool_type == kConstPoolTag) ?
716 RelocInfo::CONST_POOL : RelocInfo::VENEER_POOL; 716 RelocInfo::CONST_POOL : RelocInfo::VENEER_POOL;
717 if (SetMode(rmode)) { 717 if (SetMode(rmode)) {
718 AdvanceReadPoolData(); 718 AdvanceReadPoolData();
719 return; 719 return;
720 } 720 }
721 Advance(kIntSize); 721 Advance(kIntSize);
722 } else { 722 } else {
723 AdvanceReadPC(); 723 AdvanceReadPC();
724 int rmode = extra_tag + RelocInfo::LAST_COMPACT_ENUM; 724 int rmode = extra_tag + RelocInfo::LAST_COMPACT_ENUM + 1;
725 if (SetMode(static_cast<RelocInfo::Mode>(rmode))) return; 725 if (SetMode(static_cast<RelocInfo::Mode>(rmode))) return;
726 } 726 }
727 } 727 }
728 } 728 }
729 if (code_age_sequence_ != NULL) { 729 if (code_age_sequence_ != NULL) {
730 byte* old_code_age_sequence = code_age_sequence_; 730 byte* old_code_age_sequence = code_age_sequence_;
731 code_age_sequence_ = NULL; 731 code_age_sequence_ = NULL;
732 if (SetMode(RelocInfo::CODE_AGE_SEQUENCE)) { 732 if (SetMode(RelocInfo::CODE_AGE_SEQUENCE)) {
733 rinfo_.data_ = 0; 733 rinfo_.data_ = 0;
734 rinfo_.pc_ = old_code_age_sequence; 734 rinfo_.pc_ = old_code_age_sequence;
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after
1674 RecordRelocInfo(RelocInfo::JS_RETURN); 1674 RecordRelocInfo(RelocInfo::JS_RETURN);
1675 } 1675 }
1676 1676
1677 1677
1678 void Assembler::RecordDebugBreakSlot() { 1678 void Assembler::RecordDebugBreakSlot() {
1679 positions_recorder()->WriteRecordedPositions(); 1679 positions_recorder()->WriteRecordedPositions();
1680 EnsureSpace ensure_space(this); 1680 EnsureSpace ensure_space(this);
1681 RecordRelocInfo(RelocInfo::DEBUG_BREAK_SLOT); 1681 RecordRelocInfo(RelocInfo::DEBUG_BREAK_SLOT);
1682 } 1682 }
1683 } } // namespace v8::internal 1683 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698