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

Unified Diff: src/assembler.cc

Issue 2951473002: Remove enum RelocInfo::CODE_TARGET_WITH_ID. (Closed)
Patch Set: Review update. Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/assembler.h ('k') | src/disassembler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/assembler.cc
diff --git a/src/assembler.cc b/src/assembler.cc
index 0530522de8489a42d45ab20ab558a93733b09bdf..3fda7d84bace54cdb4985e0c3b002b6f253320ac 100644
--- a/src/assembler.cc
+++ b/src/assembler.cc
@@ -280,16 +280,12 @@ unsigned CpuFeatures::dcache_line_size_ = 0;
// 01: code_target: [6-bit pc delta] 01
//
// 10: short_data_record: [6-bit pc delta] 10 followed by
-// [6-bit data delta] [2-bit data type tag]
+// [8-bit data delta]
//
// 11: long_record [6 bit reloc mode] 11
// followed by pc delta
// followed by optional data depending on type.
//
-// 1-bit data type tags, used in short_data_record and data_jump long_record:
-// code_target_with_id: 0
-// deopt_reason: 1
-//
// If a pc delta exceeds 6 bits, it is split into a remainder that fits into
// 6 bits and a part that does not. The latter is encoded as a long record
// with PC_JUMP as pseudo reloc info mode. The former is encoded as part of
@@ -305,8 +301,6 @@ unsigned CpuFeatures::dcache_line_size_ = 0;
const int kTagBits = 2;
const int kTagMask = (1 << kTagBits) - 1;
const int kLongTagBits = 6;
-const int kShortDataTypeTagBits = 1;
-const int kShortDataBits = kBitsPerByte - kShortDataTypeTagBits;
const int kEmbeddedObjectTag = 0;
const int kCodeTargetTag = 1;
@@ -323,9 +317,6 @@ const int kLastChunkTagBits = 1;
const int kLastChunkTagMask = 1;
const int kLastChunkTag = 1;
-const int kCodeWithIdTag = 0;
-const int kDeoptReasonTag = 1;
-
void RelocInfo::update_wasm_memory_reference(
Isolate* isolate, Address old_base, Address new_base,
ICacheFlushMode icache_flush_mode) {
@@ -411,9 +402,8 @@ void RelocInfoWriter::WriteShortTaggedPC(uint32_t pc_delta, int tag) {
*--pos_ = pc_delta << kTagBits | tag;
}
-
-void RelocInfoWriter::WriteShortTaggedData(intptr_t data_delta, int tag) {
- *--pos_ = static_cast<byte>(data_delta << kShortDataTypeTagBits | tag);
+void RelocInfoWriter::WriteShortData(intptr_t data_delta) {
+ *--pos_ = static_cast<byte>(data_delta);
}
@@ -465,24 +455,10 @@ void RelocInfoWriter::Write(const RelocInfo* rinfo) {
} else if (rmode == RelocInfo::CODE_TARGET) {
WriteShortTaggedPC(pc_delta, kCodeTargetTag);
DCHECK(begin_pos - pos_ <= RelocInfo::kMaxCallSize);
- } else if (rmode == RelocInfo::CODE_TARGET_WITH_ID) {
- // Use signed delta-encoding for id.
- DCHECK_EQ(static_cast<int>(rinfo->data()), rinfo->data());
- int id_delta = static_cast<int>(rinfo->data()) - last_id_;
- // Check if delta is small enough to fit in a tagged byte.
- if (is_intn(id_delta, kShortDataBits)) {
- WriteShortTaggedPC(pc_delta, kLocatableTag);
- WriteShortTaggedData(id_delta, kCodeWithIdTag);
- } else {
- // Otherwise, use costly encoding.
- WriteModeAndPC(pc_delta, rmode);
- WriteIntData(id_delta);
- }
- last_id_ = static_cast<int>(rinfo->data());
} else if (rmode == RelocInfo::DEOPT_REASON) {
- DCHECK(rinfo->data() < (1 << kShortDataBits));
+ DCHECK(rinfo->data() < (1 << kBitsPerByte));
WriteShortTaggedPC(pc_delta, kLocatableTag);
- WriteShortTaggedData(rinfo->data(), kDeoptReasonTag);
+ WriteShortData(rinfo->data());
} else {
WriteModeAndPC(pc_delta, rmode);
if (RelocInfo::IsComment(rmode)) {
@@ -523,16 +499,6 @@ inline void RelocIterator::AdvanceReadPC() {
}
-void RelocIterator::AdvanceReadId() {
- int x = 0;
- for (int i = 0; i < kIntSize; i++) {
- x |= static_cast<int>(*--pos_) << i * kBitsPerByte;
- }
- last_id_ += x;
- rinfo_.data_ = last_id_;
-}
-
-
void RelocIterator::AdvanceReadInt() {
int x = 0;
for (int i = 0; i < kIntSize; i++) {
@@ -566,23 +532,9 @@ void RelocIterator::AdvanceReadLongPCJump() {
rinfo_.pc_ += pc_jump << kSmallPCDeltaBits;
}
-
-inline int RelocIterator::GetShortDataTypeTag() {
- return *pos_ & ((1 << kShortDataTypeTagBits) - 1);
-}
-
-
-inline void RelocIterator::ReadShortTaggedId() {
- int8_t signed_b = *pos_;
- // Signed right shift is arithmetic shift. Tested in test-utils.cc.
- last_id_ += signed_b >> kShortDataTypeTagBits;
- rinfo_.data_ = last_id_;
-}
-
-
-inline void RelocIterator::ReadShortTaggedData() {
+inline void RelocIterator::ReadShortData() {
uint8_t unsigned_b = *pos_;
- rinfo_.data_ = unsigned_b >> kShortDataTypeTagBits;
+ rinfo_.data_ = unsigned_b;
}
@@ -604,18 +556,9 @@ void RelocIterator::next() {
} else if (tag == kLocatableTag) {
ReadShortTaggedPC();
Advance();
- int data_type_tag = GetShortDataTypeTag();
- if (data_type_tag == kCodeWithIdTag) {
- if (SetMode(RelocInfo::CODE_TARGET_WITH_ID)) {
- ReadShortTaggedId();
- return;
- }
- } else {
- DCHECK(data_type_tag == kDeoptReasonTag);
- if (SetMode(RelocInfo::DEOPT_REASON)) {
- ReadShortTaggedData();
- return;
- }
+ if (SetMode(RelocInfo::DEOPT_REASON)) {
+ ReadShortData();
+ return;
}
} else {
DCHECK(tag == kDefaultTag);
@@ -624,13 +567,7 @@ void RelocIterator::next() {
AdvanceReadLongPCJump();
} else {
AdvanceReadPC();
- if (rmode == RelocInfo::CODE_TARGET_WITH_ID) {
- if (SetMode(rmode)) {
- AdvanceReadId();
- return;
- }
- Advance(kIntSize);
- } else if (RelocInfo::IsComment(rmode)) {
+ if (RelocInfo::IsComment(rmode)) {
if (SetMode(rmode)) {
AdvanceReadData();
return;
@@ -673,7 +610,6 @@ RelocIterator::RelocIterator(Code* code, int mode_mask) {
end_ = code->relocation_start();
done_ = false;
mode_mask_ = mode_mask;
- last_id_ = 0;
byte* sequence = code->FindCodeAgeSequence();
// We get the isolate from the map, because at serialization time
// the code pointer has been cloned and isn't really in heap space.
@@ -695,7 +631,6 @@ RelocIterator::RelocIterator(const CodeDesc& desc, int mode_mask) {
end_ = pos_ - desc.reloc_size;
done_ = false;
mode_mask_ = mode_mask;
- last_id_ = 0;
code_age_sequence_ = NULL;
if (mode_mask_ == 0) pos_ = end_;
next();
@@ -735,8 +670,6 @@ const char* RelocInfo::RelocModeName(RelocInfo::Mode rmode) {
return "embedded object";
case CODE_TARGET:
return "code target";
- case CODE_TARGET_WITH_ID:
- return "code target with id";
case CELL:
return "property cell";
case RUNTIME_ENTRY:
@@ -810,9 +743,6 @@ void RelocInfo::Print(Isolate* isolate, std::ostream& os) { // NOLINT
Code* code = Code::GetCodeFromTargetAddress(target_address());
os << " (" << Code::Kind2String(code->kind()) << ") ("
<< static_cast<const void*>(target_address()) << ")";
- if (rmode_ == CODE_TARGET_WITH_ID) {
- os << " (id=" << static_cast<int>(data_) << ")";
- }
} else if (IsRuntimeEntry(rmode_) &&
isolate->deoptimizer_data() != NULL) {
// Depotimization bailouts are stored as runtime entries.
@@ -839,7 +769,6 @@ void RelocInfo::Verify(Isolate* isolate) {
case CELL:
Object::VerifyPointer(target_cell());
break;
- case CODE_TARGET_WITH_ID:
case CODE_TARGET: {
// convert inline target address to code object
Address addr = target_address();
« no previous file with comments | « src/assembler.h ('k') | src/disassembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698