Chromium Code Reviews| Index: src/assembler.cc |
| diff --git a/src/assembler.cc b/src/assembler.cc |
| index d03593f36fef993589c470f2601f3f8f44c13512..43d3fd2bf47fe7792ad311d0c43d14f3ca3a5f29 100644 |
| --- a/src/assembler.cc |
| +++ b/src/assembler.cc |
| @@ -248,97 +248,49 @@ int Label::pos() const { |
| // 10: short_data_record: [6-bit pc delta] 10 followed by |
| // [6-bit data delta] [2-bit data type tag] |
| // |
| -// 11: long_record [2-bit high tag][4 bit middle_tag] 11 |
| -// followed by variable data depending on type. |
| +// 11: long_record [6 bit reloc mode] 11 |
| +// followed by pc delta |
| +// followed by optional data depending on type. |
| // |
| // 2-bit data type tags, used in short_data_record and data_jump long_record: |
| // code_target_with_id: 00 |
| // position: 01 |
| // statement_position: 10 |
| -// comment: 11 (not used in short_data_record) |
| -// deopt_reason: 11 (not used in long_data_record) |
| -// |
| -// Long record format: |
| -// 4-bit middle_tag: |
| -// 0000 - 1100 : Short record for RelocInfo::Mode middle_tag + 2 |
| -// (The middle_tag encodes rmode - RelocInfo::LAST_COMPACT_ENUM, |
| -// and is between 0000 and 1100) |
| -// The format is: |
| -// 00 [4 bit middle_tag] 11 followed by |
| -// 00 [6 bit pc delta] |
| -// |
| -// 1101: constant or veneer pool. Used only on ARM and ARM64 for now. |
| -// The format is: [2-bit sub-type] 1101 11 |
| -// signed int (size of the pool). |
| -// The 2-bit sub-types are: |
| -// 00: constant pool |
| -// 01: veneer pool |
| -// 1110: long_data_record |
| -// The format is: [2-bit data_type_tag] 1110 11 |
| -// signed intptr_t, lowest byte written first |
| -// (except data_type code_target_with_id, which |
| -// is followed by a signed int, not intptr_t.) |
| -// |
| -// 1111: long_pc_jump |
| -// The format is: |
| -// pc-jump: 00 1111 11, |
| -// 00 [6 bits pc delta] |
| -// or |
| -// pc-jump (variable length): |
|
Michael Starzinger
2015/07/10 11:22:37
Should we preserve the description of the variable
|
| -// 01 1111 11, |
| -// [7 bits data] 0 |
| -// ... |
| -// [7 bits data] 1 |
| -// (Bits 6..31 of pc delta, with leading zeroes |
| -// dropped, and last non-zero chunk tagged with 1.) |
| +// deopt_reason: 11 |
| const int kTagBits = 2; |
| const int kTagMask = (1 << kTagBits) - 1; |
| -const int kExtraTagBits = 4; |
| -const int kLocatableTypeTagBits = 2; |
| -const int kSmallDataBits = kBitsPerByte - kLocatableTypeTagBits; |
| +const int kLongTagBits = 6; |
| +const int kShortDataTypeTagBits = 2; |
| +const int kShortDataBits = kBitsPerByte - kShortDataTypeTagBits; |
| const int kEmbeddedObjectTag = 0; |
| const int kCodeTargetTag = 1; |
| const int kLocatableTag = 2; |
| const int kDefaultTag = 3; |
| -const int kPCJumpExtraTag = (1 << kExtraTagBits) - 1; |
| - |
| const int kSmallPCDeltaBits = kBitsPerByte - kTagBits; |
| const int kSmallPCDeltaMask = (1 << kSmallPCDeltaBits) - 1; |
| const int RelocInfo::kMaxSmallPCDelta = kSmallPCDeltaMask; |
| -const int kVariableLengthPCJumpTopTag = 1; |
| const int kChunkBits = 7; |
| const int kChunkMask = (1 << kChunkBits) - 1; |
| const int kLastChunkTagBits = 1; |
| const int kLastChunkTagMask = 1; |
| const int kLastChunkTag = 1; |
| - |
| -const int kDataJumpExtraTag = kPCJumpExtraTag - 1; |
| - |
| const int kCodeWithIdTag = 0; |
| const int kNonstatementPositionTag = 1; |
| const int kStatementPositionTag = 2; |
| -const int kCommentTag = 3; |
| - |
| -// Reuse the same value for deopt reason tag in short record format. |
| -// It is possible because we use kCommentTag only for the long record format. |
| const int kDeoptReasonTag = 3; |
| -const int kPoolExtraTag = kPCJumpExtraTag - 2; |
| -const int kConstPoolTag = 0; |
| -const int kVeneerPoolTag = 1; |
| - |
| -uint32_t RelocInfoWriter::WriteVariableLengthPCJump(uint32_t pc_delta) { |
| +uint32_t RelocInfoWriter::WriteLongPCJump(uint32_t pc_delta) { |
| // Return if the pc_delta can fit in kSmallPCDeltaBits bits. |
| // Otherwise write a variable length PC jump for the bits that do |
| // not fit in the kSmallPCDeltaBits bits. |
| if (is_uintn(pc_delta, kSmallPCDeltaBits)) return pc_delta; |
| - WriteExtraTag(kPCJumpExtraTag, kVariableLengthPCJumpTopTag); |
| + WriteMode(RelocInfo::PC_JUMP); |
| uint32_t pc_jump = pc_delta >> kSmallPCDeltaBits; |
| DCHECK(pc_jump > 0); |
| // Write kChunkBits size chunks of the pc_jump. |
| @@ -353,34 +305,33 @@ uint32_t RelocInfoWriter::WriteVariableLengthPCJump(uint32_t pc_delta) { |
| } |
| -void RelocInfoWriter::WriteTaggedPC(uint32_t pc_delta, int tag) { |
| - // Write a byte of tagged pc-delta, possibly preceded by var. length pc-jump. |
| - pc_delta = WriteVariableLengthPCJump(pc_delta); |
| +void RelocInfoWriter::WriteShortTaggedPC(uint32_t pc_delta, int tag) { |
| + // Write a byte of tagged pc-delta, possibly preceded by an explicit pc-jump. |
| + pc_delta = WriteLongPCJump(pc_delta); |
| *--pos_ = pc_delta << kTagBits | tag; |
| } |
| -void RelocInfoWriter::WriteTaggedData(intptr_t data_delta, int tag) { |
| - *--pos_ = static_cast<byte>(data_delta << kLocatableTypeTagBits | tag); |
| +void RelocInfoWriter::WriteShortTaggedData(intptr_t data_delta, int tag) { |
| + *--pos_ = static_cast<byte>(data_delta << kShortDataTypeTagBits | tag); |
| } |
| -void RelocInfoWriter::WriteExtraTag(int extra_tag, int top_tag) { |
| - *--pos_ = static_cast<int>(top_tag << (kTagBits + kExtraTagBits) | |
| - extra_tag << kTagBits | |
| - kDefaultTag); |
| +void RelocInfoWriter::WriteMode(RelocInfo::Mode rmode) { |
| + STATIC_ASSERT(RelocInfo::NUMBER_OF_MODES <= (1 << kLongTagBits)); |
| + *--pos_ = static_cast<int>((rmode << kTagBits) | kDefaultTag); |
| } |
| -void RelocInfoWriter::WriteExtraTaggedPC(uint32_t pc_delta, int extra_tag) { |
| +void RelocInfoWriter::WriteModeAndPC(uint32_t pc_delta, RelocInfo::Mode rmode) { |
| // Write two-byte tagged pc-delta, possibly preceded by var. length pc-jump. |
| - pc_delta = WriteVariableLengthPCJump(pc_delta); |
| - WriteExtraTag(extra_tag, 0); |
| + pc_delta = WriteLongPCJump(pc_delta); |
| + WriteMode(rmode); |
| *--pos_ = pc_delta; |
| } |
| -void RelocInfoWriter::WriteInt(int number) { |
| +void RelocInfoWriter::WriteIntData(int number) { |
| for (int i = 0; i < kIntSize; i++) { |
| *--pos_ = static_cast<byte>(number); |
| // Signed right shift is arithmetic shift. Tested in test-utils.cc. |
| @@ -389,23 +340,7 @@ void RelocInfoWriter::WriteInt(int number) { |
| } |
| -void RelocInfoWriter::WriteDebugBreakSlotData(int data) { WriteInt(data); } |
| - |
| - |
| -void RelocInfoWriter::WriteExtraTaggedIntData(int data_delta, int top_tag) { |
| - WriteExtraTag(kDataJumpExtraTag, top_tag); |
| - WriteInt(data_delta); |
| -} |
| - |
| - |
| -void RelocInfoWriter::WriteExtraTaggedPoolData(int data, int pool_type) { |
| - WriteExtraTag(kPoolExtraTag, pool_type); |
| - WriteInt(data); |
| -} |
| - |
| - |
| -void RelocInfoWriter::WriteExtraTaggedData(intptr_t data_delta, int top_tag) { |
| - WriteExtraTag(kDataJumpExtraTag, top_tag); |
| +void RelocInfoWriter::WriteData(intptr_t data_delta) { |
| for (int i = 0; i < kIntptrSize; i++) { |
| *--pos_ = static_cast<byte>(data_delta); |
| // Signed right shift is arithmetic shift. Tested in test-utils.cc. |
| @@ -419,13 +354,13 @@ void RelocInfoWriter::WritePosition(int pc_delta, int pos_delta, |
| int pos_type_tag = (rmode == RelocInfo::POSITION) ? kNonstatementPositionTag |
| : kStatementPositionTag; |
| // Check if delta is small enough to fit in a tagged byte. |
| - if (is_intn(pos_delta, kSmallDataBits)) { |
| - WriteTaggedPC(pc_delta, kLocatableTag); |
| - WriteTaggedData(pos_delta, pos_type_tag); |
| + if (is_intn(pos_delta, kShortDataBits)) { |
| + WriteShortTaggedPC(pc_delta, kLocatableTag); |
| + WriteShortTaggedData(pos_delta, pos_type_tag); |
| } else { |
| // Otherwise, use costly encoding. |
| - WriteExtraTaggedPC(pc_delta, kPCJumpExtraTag); |
| - WriteExtraTaggedIntData(pos_delta, pos_type_tag); |
| + WriteModeAndPC(pc_delta, rmode); |
| + WriteIntData(pos_delta); |
| } |
| } |
| @@ -456,28 +391,28 @@ void RelocInfoWriter::Write(const RelocInfo* rinfo) { |
| // The two most common modes are given small tags, and usually fit in a byte. |
| if (rmode == RelocInfo::EMBEDDED_OBJECT) { |
| - WriteTaggedPC(pc_delta, kEmbeddedObjectTag); |
| + WriteShortTaggedPC(pc_delta, kEmbeddedObjectTag); |
| } else if (rmode == RelocInfo::CODE_TARGET) { |
| - WriteTaggedPC(pc_delta, kCodeTargetTag); |
| + 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, kSmallDataBits)) { |
| - WriteTaggedPC(pc_delta, kLocatableTag); |
| - WriteTaggedData(id_delta, kCodeWithIdTag); |
| + if (is_intn(id_delta, kShortDataBits)) { |
| + WriteShortTaggedPC(pc_delta, kLocatableTag); |
| + WriteShortTaggedData(id_delta, kCodeWithIdTag); |
| } else { |
| // Otherwise, use costly encoding. |
| - WriteExtraTaggedPC(pc_delta, kPCJumpExtraTag); |
| - WriteExtraTaggedIntData(id_delta, kCodeWithIdTag); |
| + WriteModeAndPC(pc_delta, rmode); |
| + WriteIntData(id_delta); |
| } |
| last_id_ = static_cast<int>(rinfo->data()); |
| } else if (rmode == RelocInfo::DEOPT_REASON) { |
| - DCHECK(rinfo->data() < (1 << kSmallDataBits)); |
| - WriteTaggedPC(pc_delta, kLocatableTag); |
| - WriteTaggedData(rinfo->data(), kDeoptReasonTag); |
| + DCHECK(rinfo->data() < (1 << kShortDataBits)); |
| + WriteShortTaggedPC(pc_delta, kLocatableTag); |
| + WriteShortTaggedData(rinfo->data(), kDeoptReasonTag); |
| } else if (RelocInfo::IsPosition(rmode)) { |
| // Use signed delta-encoding for position. |
| DCHECK_EQ(static_cast<int>(rinfo->data()), rinfo->data()); |
| @@ -496,29 +431,14 @@ void RelocInfoWriter::Write(const RelocInfo* rinfo) { |
| next_position_candidate_flushed_ = false; |
| } |
| last_position_ = static_cast<int>(rinfo->data()); |
| - } else if (RelocInfo::IsComment(rmode)) { |
| - // Comments are normally not generated, so we use the costly encoding. |
| - WriteExtraTaggedPC(pc_delta, kPCJumpExtraTag); |
| - WriteExtraTaggedData(rinfo->data(), kCommentTag); |
| - DCHECK(begin_pos - pos_ >= RelocInfo::kMinRelocCommentSize); |
| - } else if (RelocInfo::IsConstPool(rmode) || RelocInfo::IsVeneerPool(rmode)) { |
| - WriteExtraTaggedPC(pc_delta, kPCJumpExtraTag); |
| - WriteExtraTaggedPoolData( |
| - static_cast<int>(rinfo->data()), |
| - RelocInfo::IsConstPool(rmode) ? kConstPoolTag : kVeneerPoolTag); |
| } else { |
| - DCHECK(rmode > RelocInfo::LAST_COMPACT_ENUM); |
| - DCHECK(rmode <= RelocInfo::LAST_STANDARD_NONCOMPACT_ENUM); |
| - STATIC_ASSERT(RelocInfo::LAST_STANDARD_NONCOMPACT_ENUM - |
| - RelocInfo::LAST_COMPACT_ENUM <= |
| - kPoolExtraTag); |
| - int saved_mode = rmode - RelocInfo::LAST_COMPACT_ENUM - 1; |
| - // For all other modes we simply use the mode as the extra tag. |
| - // None of these modes need a data component. |
| - DCHECK(0 <= saved_mode && saved_mode < kPoolExtraTag); |
| - WriteExtraTaggedPC(pc_delta, saved_mode); |
| - if (RelocInfo::IsDebugBreakSlot(rmode)) { |
| - WriteDebugBreakSlotData(static_cast<int>(rinfo->data())); |
| + WriteModeAndPC(pc_delta, rmode); |
| + if (RelocInfo::IsComment(rmode)) { |
| + WriteData(rinfo->data()); |
| + } else if (RelocInfo::IsConstPool(rmode) || |
| + RelocInfo::IsVeneerPool(rmode) || |
| + RelocInfo::IsDebugBreakSlot(rmode)) { |
| + WriteIntData(static_cast<int>(rinfo->data())); |
| } |
| } |
| last_pc_ = rinfo->pc(); |
| @@ -534,17 +454,13 @@ inline int RelocIterator::AdvanceGetTag() { |
| } |
| -inline int RelocIterator::GetExtraTag() { |
| - return (*pos_ >> kTagBits) & ((1 << kExtraTagBits) - 1); |
| +inline RelocInfo::Mode RelocIterator::GetMode() { |
| + return static_cast<RelocInfo::Mode>((*pos_ >> kTagBits) & |
| + ((1 << kLongTagBits) - 1)); |
| } |
| -inline int RelocIterator::GetTopTag() { |
| - return *pos_ >> (kTagBits + kExtraTagBits); |
| -} |
| - |
| - |
| -inline void RelocIterator::ReadTaggedPC() { |
| +inline void RelocIterator::ReadShortTaggedPC() { |
| rinfo_.pc_ += *pos_ >> kTagBits; |
| } |
| @@ -573,12 +489,6 @@ void RelocIterator::AdvanceReadInt() { |
| } |
| -void RelocIterator::AdvanceReadPoolData() { AdvanceReadInt(); } |
| - |
| - |
| -void RelocIterator::AdvanceReadDebugBreakSlotData() { AdvanceReadInt(); } |
| - |
| - |
| void RelocIterator::AdvanceReadPosition() { |
| int x = 0; |
| for (int i = 0; i < kIntSize; i++) { |
| @@ -598,7 +508,7 @@ void RelocIterator::AdvanceReadData() { |
| } |
| -void RelocIterator::AdvanceReadVariableLengthPCJump() { |
| +void RelocIterator::AdvanceReadLongPCJump() { |
| // Read the 32-kSmallPCDeltaBits most significant bits of the |
| // pc jump in kChunkBits bit chunks and shift them into place. |
| // Stop when the last chunk is encountered. |
| @@ -614,28 +524,28 @@ void RelocIterator::AdvanceReadVariableLengthPCJump() { |
| } |
| -inline int RelocIterator::GetLocatableTypeTag() { |
| - return *pos_ & ((1 << kLocatableTypeTagBits) - 1); |
| +inline int RelocIterator::GetShortDataTypeTag() { |
| + return *pos_ & ((1 << kShortDataTypeTagBits) - 1); |
| } |
| -inline void RelocIterator::ReadTaggedId() { |
| +inline void RelocIterator::ReadShortTaggedId() { |
| int8_t signed_b = *pos_; |
| // Signed right shift is arithmetic shift. Tested in test-utils.cc. |
| - last_id_ += signed_b >> kLocatableTypeTagBits; |
| + last_id_ += signed_b >> kShortDataTypeTagBits; |
| rinfo_.data_ = last_id_; |
| } |
| -inline void RelocIterator::ReadTaggedPosition() { |
| +inline void RelocIterator::ReadShortTaggedPosition() { |
| int8_t signed_b = *pos_; |
| // Signed right shift is arithmetic shift. Tested in test-utils.cc. |
| - last_position_ += signed_b >> kLocatableTypeTagBits; |
| + last_position_ += signed_b >> kShortDataTypeTagBits; |
| rinfo_.data_ = last_position_; |
| } |
| -inline void RelocIterator::ReadTaggedData() { |
| +inline void RelocIterator::ReadShortTaggedData() { |
| uint8_t unsigned_b = *pos_; |
| rinfo_.data_ = unsigned_b >> kTagBits; |
| } |
| @@ -660,86 +570,70 @@ void RelocIterator::next() { |
| while (pos_ > end_) { |
| int tag = AdvanceGetTag(); |
| if (tag == kEmbeddedObjectTag) { |
| - ReadTaggedPC(); |
| + ReadShortTaggedPC(); |
| if (SetMode(RelocInfo::EMBEDDED_OBJECT)) return; |
| } else if (tag == kCodeTargetTag) { |
| - ReadTaggedPC(); |
| + ReadShortTaggedPC(); |
| if (SetMode(RelocInfo::CODE_TARGET)) return; |
| } else if (tag == kLocatableTag) { |
| - ReadTaggedPC(); |
| + ReadShortTaggedPC(); |
| Advance(); |
| - int locatable_tag = GetLocatableTypeTag(); |
| - if (locatable_tag == kCodeWithIdTag) { |
| + int data_type_tag = GetShortDataTypeTag(); |
| + if (data_type_tag == kCodeWithIdTag) { |
| if (SetMode(RelocInfo::CODE_TARGET_WITH_ID)) { |
| - ReadTaggedId(); |
| + ReadShortTaggedId(); |
| return; |
| } |
| - } else if (locatable_tag == kDeoptReasonTag) { |
| - ReadTaggedData(); |
| + } else if (data_type_tag == kDeoptReasonTag) { |
| + ReadShortTaggedData(); |
| if (SetMode(RelocInfo::DEOPT_REASON)) return; |
| } else { |
| - DCHECK(locatable_tag == kNonstatementPositionTag || |
| - locatable_tag == kStatementPositionTag); |
| + DCHECK(data_type_tag == kNonstatementPositionTag || |
| + data_type_tag == kStatementPositionTag); |
| if (mode_mask_ & RelocInfo::kPositionMask) { |
| - ReadTaggedPosition(); |
| - if (SetMode(GetPositionModeFromTag(locatable_tag))) return; |
| + // Always update the position if we are interested in either |
| + // statement positions or non-statement positions. |
| + ReadShortTaggedPosition(); |
| + if (SetMode(GetPositionModeFromTag(data_type_tag))) return; |
| } |
| } |
| } else { |
| DCHECK(tag == kDefaultTag); |
| - int extra_tag = GetExtraTag(); |
| - if (extra_tag == kPCJumpExtraTag) { |
| - if (GetTopTag() == kVariableLengthPCJumpTopTag) { |
| - AdvanceReadVariableLengthPCJump(); |
| - } else { |
| - AdvanceReadPC(); |
| - } |
| - } else if (extra_tag == kDataJumpExtraTag) { |
| - int locatable_tag = GetTopTag(); |
| - if (locatable_tag == kCodeWithIdTag) { |
| - if (SetMode(RelocInfo::CODE_TARGET_WITH_ID)) { |
| + RelocInfo::Mode rmode = GetMode(); |
| + if (rmode == RelocInfo::PC_JUMP) { |
| + AdvanceReadLongPCJump(); |
| + } else { |
| + AdvanceReadPC(); |
| + if (rmode == RelocInfo::CODE_TARGET_WITH_ID) { |
| + if (SetMode(rmode)) { |
| AdvanceReadId(); |
| return; |
| } |
| Advance(kIntSize); |
| - } else if (locatable_tag != kCommentTag) { |
| - DCHECK(locatable_tag == kNonstatementPositionTag || |
| - locatable_tag == kStatementPositionTag); |
| + } else if (RelocInfo::IsComment(rmode)) { |
| + if (SetMode(rmode)) { |
| + AdvanceReadData(); |
| + return; |
| + } |
| + Advance(kIntptrSize); |
| + } else if (RelocInfo::IsPosition(rmode)) { |
| if (mode_mask_ & RelocInfo::kPositionMask) { |
| + // Always update the position if we are interested in either |
| + // statement positions or non-statement positions. |
| AdvanceReadPosition(); |
| - if (SetMode(GetPositionModeFromTag(locatable_tag))) return; |
| + if (SetMode(rmode)) return; |
| } else { |
| Advance(kIntSize); |
| } |
| - } else { |
| - DCHECK(locatable_tag == kCommentTag); |
| - if (SetMode(RelocInfo::COMMENT)) { |
| - AdvanceReadData(); |
| - return; |
| - } |
| - Advance(kIntptrSize); |
| - } |
| - } else if (extra_tag == kPoolExtraTag) { |
| - int pool_type = GetTopTag(); |
| - DCHECK(pool_type == kConstPoolTag || pool_type == kVeneerPoolTag); |
| - RelocInfo::Mode rmode = (pool_type == kConstPoolTag) ? |
| - RelocInfo::CONST_POOL : RelocInfo::VENEER_POOL; |
| - if (SetMode(rmode)) { |
| - AdvanceReadPoolData(); |
| - return; |
| - } |
| - Advance(kIntSize); |
| - } else { |
| - AdvanceReadPC(); |
| - RelocInfo::Mode rmode = static_cast<RelocInfo::Mode>( |
| - extra_tag + RelocInfo::LAST_COMPACT_ENUM + 1); |
| - if (RelocInfo::IsDebugBreakSlot(rmode)) { |
| + } else if (RelocInfo::IsConstPool(rmode) || |
| + RelocInfo::IsVeneerPool(rmode) || |
| + RelocInfo::IsDebugBreakSlot(rmode)) { |
| if (SetMode(rmode)) { |
| - AdvanceReadDebugBreakSlotData(); |
| + AdvanceReadData(); |
| return; |
| } |
| Advance(kIntSize); |
| - } else if (SetMode(rmode)) { |
| + } else if (SetMode(static_cast<RelocInfo::Mode>(rmode))) { |
| return; |
| } |
| } |
| @@ -821,49 +715,50 @@ bool RelocInfo::RequiresRelocation(const CodeDesc& desc) { |
| #ifdef ENABLE_DISASSEMBLER |
| const char* RelocInfo::RelocModeName(RelocInfo::Mode rmode) { |
| switch (rmode) { |
| - case RelocInfo::NONE32: |
| + case NONE32: |
| return "no reloc 32"; |
| - case RelocInfo::NONE64: |
| + case NONE64: |
| return "no reloc 64"; |
| - case RelocInfo::EMBEDDED_OBJECT: |
| + case EMBEDDED_OBJECT: |
| return "embedded object"; |
| - case RelocInfo::CONSTRUCT_CALL: |
| + case CONSTRUCT_CALL: |
| return "code target (js construct call)"; |
| - case RelocInfo::DEBUG_BREAK: |
| + case DEBUG_BREAK: |
| return "debug break"; |
| - case RelocInfo::CODE_TARGET: |
| + case CODE_TARGET: |
| return "code target"; |
| - case RelocInfo::CODE_TARGET_WITH_ID: |
| + case CODE_TARGET_WITH_ID: |
| return "code target with id"; |
| - case RelocInfo::CELL: |
| + case CELL: |
| return "property cell"; |
| - case RelocInfo::RUNTIME_ENTRY: |
| + case RUNTIME_ENTRY: |
| return "runtime entry"; |
| - case RelocInfo::JS_RETURN: |
| + case JS_RETURN: |
| return "js return"; |
| - case RelocInfo::COMMENT: |
| + case COMMENT: |
| return "comment"; |
| - case RelocInfo::POSITION: |
| + case POSITION: |
| return "position"; |
| - case RelocInfo::STATEMENT_POSITION: |
| + case STATEMENT_POSITION: |
| return "statement position"; |
| - case RelocInfo::EXTERNAL_REFERENCE: |
| + case EXTERNAL_REFERENCE: |
| return "external reference"; |
| - case RelocInfo::INTERNAL_REFERENCE: |
| + case INTERNAL_REFERENCE: |
| return "internal reference"; |
| - case RelocInfo::INTERNAL_REFERENCE_ENCODED: |
| + case INTERNAL_REFERENCE_ENCODED: |
| return "encoded internal reference"; |
| - case RelocInfo::DEOPT_REASON: |
| + case DEOPT_REASON: |
| return "deopt reason"; |
| - case RelocInfo::CONST_POOL: |
| + case CONST_POOL: |
| return "constant pool"; |
| - case RelocInfo::VENEER_POOL: |
| + case VENEER_POOL: |
| return "veneer pool"; |
| - case RelocInfo::DEBUG_BREAK_SLOT: |
| + case DEBUG_BREAK_SLOT: |
| return "debug break slot"; |
| - case RelocInfo::CODE_AGE_SEQUENCE: |
| + case CODE_AGE_SEQUENCE: |
| return "code_age_sequence"; |
| - case RelocInfo::NUMBER_OF_MODES: |
| + case NUMBER_OF_MODES: |
| + case PC_JUMP: |
|
Michael Starzinger
2015/07/10 11:22:37
Should this really be inreachable?
|
| UNREACHABLE(); |
| return "number_of_modes"; |
| } |
| @@ -966,6 +861,7 @@ void RelocInfo::Verify(Isolate* isolate) { |
| case NONE64: |
| break; |
| case NUMBER_OF_MODES: |
| + case PC_JUMP: |
|
Michael Starzinger
2015/07/10 11:22:37
Likewise.
|
| UNREACHABLE(); |
| break; |
| case CODE_AGE_SEQUENCE: |