Commit 3f998527 authored by Stephen Roettger's avatar Stephen Roettger Committed by V8 LUCI CQ

Remove unused RelocInfo::Mode::RUNTIME_ENTRY

Change-Id: Ic1950646f880e5b752d2018fa2ad2715e3ad3292
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3904233
Commit-Queue: Stephen Röttger <sroettger@google.com>
Reviewed-by: 's avatarJakob Linke <jgruber@chromium.org>
Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#83328}
parent ce572f95
......@@ -66,8 +66,7 @@ void RelocInfo::apply(intptr_t delta) {
}
Address RelocInfo::target_address() {
DCHECK(IsCodeTargetMode(rmode_) || IsRuntimeEntry(rmode_) ||
IsWasmCall(rmode_));
DCHECK(IsCodeTargetMode(rmode_) || IsWasmCall(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
}
......@@ -153,19 +152,6 @@ Address RelocInfo::target_internal_reference_address() {
Builtin RelocInfo::target_builtin_at(Assembler* origin) { UNREACHABLE(); }
Address RelocInfo::target_runtime_entry(Assembler* origin) {
DCHECK(IsRuntimeEntry(rmode_));
return target_address();
}
void RelocInfo::set_target_runtime_entry(Address target,
WriteBarrierMode write_barrier_mode,
ICacheFlushMode icache_flush_mode) {
DCHECK(IsRuntimeEntry(rmode_));
if (target_address() != target)
set_target_address(target, write_barrier_mode, icache_flush_mode);
}
Address RelocInfo::target_off_heap_target() {
DCHECK(IsOffHeapTarget(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
......@@ -173,8 +159,8 @@ Address RelocInfo::target_off_heap_target() {
void RelocInfo::WipeOut() {
DCHECK(IsFullEmbeddedObject(rmode_) || IsCodeTarget(rmode_) ||
IsRuntimeEntry(rmode_) || IsExternalReference(rmode_) ||
IsInternalReference(rmode_) || IsOffHeapTarget(rmode_));
IsExternalReference(rmode_) || IsInternalReference(rmode_) ||
IsOffHeapTarget(rmode_));
if (IsInternalReference(rmode_)) {
Memory<Address>(pc_) = kNullAddress;
} else {
......
......@@ -537,16 +537,6 @@ Builtin Assembler::target_builtin_at(Address pc) {
return static_cast<Builtin>(builtin_id);
}
Address Assembler::runtime_entry_at(Address pc) {
Instruction* instr = reinterpret_cast<Instruction*>(pc);
if (instr->IsLdrLiteralX()) {
return Assembler::target_address_at(pc, 0 /* unused */);
} else {
DCHECK(instr->IsBranchAndLink() || instr->IsUnconditionalBranch());
return instr->ImmPCOffset() + options().code_range_base;
}
}
int Assembler::deserialization_special_target_size(Address location) {
Instruction* instr = reinterpret_cast<Instruction*>(location);
if (instr->IsBranchAndLink() || instr->IsUnconditionalBranch()) {
......@@ -630,7 +620,7 @@ int RelocInfo::target_address_size() {
Address RelocInfo::target_address() {
DCHECK(IsCodeTarget(rmode_) || IsNearBuiltinEntry(rmode_) ||
IsRuntimeEntry(rmode_) || IsWasmCall(rmode_));
IsWasmCall(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
}
......@@ -744,20 +734,6 @@ Builtin RelocInfo::target_builtin_at(Assembler* origin) {
return Assembler::target_builtin_at(pc_);
}
Address RelocInfo::target_runtime_entry(Assembler* origin) {
DCHECK(IsRuntimeEntry(rmode_));
return target_address();
}
void RelocInfo::set_target_runtime_entry(Address target,
WriteBarrierMode write_barrier_mode,
ICacheFlushMode icache_flush_mode) {
DCHECK(IsRuntimeEntry(rmode_));
if (target_address() != target) {
set_target_address(target, write_barrier_mode, icache_flush_mode);
}
}
Address RelocInfo::target_off_heap_target() {
DCHECK(IsOffHeapTarget(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
......@@ -765,8 +741,8 @@ Address RelocInfo::target_off_heap_target() {
void RelocInfo::WipeOut() {
DCHECK(IsEmbeddedObjectMode(rmode_) || IsCodeTarget(rmode_) ||
IsRuntimeEntry(rmode_) || IsExternalReference(rmode_) ||
IsInternalReference(rmode_) || IsOffHeapTarget(rmode_));
IsExternalReference(rmode_) || IsInternalReference(rmode_) ||
IsOffHeapTarget(rmode_));
if (IsInternalReference(rmode_)) {
WriteUnalignedValue<Address>(pc_, kNullAddress);
} else if (IsCompressedEmbeddedObject(rmode_)) {
......
......@@ -188,7 +188,6 @@ CPURegList CPURegList::GetCallerSavedV(int size) {
const int RelocInfo::kApplyMask =
RelocInfo::ModeMask(RelocInfo::CODE_TARGET) |
RelocInfo::ModeMask(RelocInfo::NEAR_BUILTIN_ENTRY) |
RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE);
bool RelocInfo::IsCodedSpecially() {
......
......@@ -273,14 +273,6 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// code is moved into the code space.
static inline Builtin target_builtin_at(Address pc);
// Returns the target address for a runtime function for the call encoded
// at 'pc'.
// Runtime entries can be temporarily encoded as the offset between the
// runtime function entrypoint and the code range base (stored in the
// code_range_base field), in order to be encodable as we generate the code,
// before it is moved into the code space.
inline Address runtime_entry_at(Address pc);
// This sets the branch destination. 'location' here can be either the pc of
// an immediate branch or the address of an entry in the constant pool.
// This is for calls and branches within generated code.
......
......@@ -53,10 +53,8 @@ bool CpuFeatures::SupportsOptimizer() { return true; }
void RelocInfo::apply(intptr_t delta) {
DCHECK_EQ(kApplyMask, (RelocInfo::ModeMask(RelocInfo::CODE_TARGET) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET) |
RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY)));
if (IsRuntimeEntry(rmode_) || IsCodeTarget(rmode_) ||
IsOffHeapTarget(rmode_)) {
RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET)));
if (IsCodeTarget(rmode_) || IsOffHeapTarget(rmode_)) {
base::WriteUnalignedValue(pc_,
base::ReadUnalignedValue<int32_t>(pc_) - delta);
} else if (IsInternalReference(rmode_)) {
......@@ -67,7 +65,7 @@ void RelocInfo::apply(intptr_t delta) {
}
Address RelocInfo::target_address() {
DCHECK(IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_) || IsWasmCall(rmode_));
DCHECK(IsCodeTarget(rmode_) || IsWasmCall(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
}
......@@ -132,20 +130,6 @@ Address RelocInfo::target_internal_reference_address() {
Builtin RelocInfo::target_builtin_at(Assembler* origin) { UNREACHABLE(); }
Address RelocInfo::target_runtime_entry(Assembler* origin) {
DCHECK(IsRuntimeEntry(rmode_));
return ReadUnalignedValue<Address>(pc_);
}
void RelocInfo::set_target_runtime_entry(Address target,
WriteBarrierMode write_barrier_mode,
ICacheFlushMode icache_flush_mode) {
DCHECK(IsRuntimeEntry(rmode_));
if (target_address() != target) {
set_target_address(target, write_barrier_mode, icache_flush_mode);
}
}
Address RelocInfo::target_off_heap_target() {
DCHECK(IsOffHeapTarget(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
......@@ -155,8 +139,7 @@ void RelocInfo::WipeOut() {
if (IsFullEmbeddedObject(rmode_) || IsExternalReference(rmode_) ||
IsInternalReference(rmode_)) {
WriteUnalignedValue(pc_, kNullAddress);
} else if (IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_) ||
IsOffHeapTarget(rmode_)) {
} else if (IsCodeTarget(rmode_) || IsOffHeapTarget(rmode_)) {
// Effectively write zero into the relocation.
Assembler::set_target_address_at(pc_, constant_pool_,
pc_ + sizeof(int32_t));
......
......@@ -204,8 +204,7 @@ void Displacement::init(Label* L, Type type) {
const int RelocInfo::kApplyMask =
RelocInfo::ModeMask(RelocInfo::CODE_TARGET) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET) |
RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY);
RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET);
bool RelocInfo::IsCodedSpecially() {
// The deserializer needs to know whether a pointer is specially coded. Being
......@@ -1625,11 +1624,7 @@ void Assembler::call(Address entry, RelocInfo::Mode rmode) {
EnsureSpace ensure_space(this);
DCHECK(!RelocInfo::IsCodeTarget(rmode));
EMIT(0xE8);
if (RelocInfo::IsRuntimeEntry(rmode)) {
emit(entry, rmode);
} else {
emit(entry - (reinterpret_cast<Address>(pc_) + sizeof(int32_t)), rmode);
}
emit(entry - (reinterpret_cast<Address>(pc_) + sizeof(int32_t)), rmode);
}
void Assembler::wasm_call(Address entry, RelocInfo::Mode rmode) {
......@@ -1702,7 +1697,7 @@ void Assembler::jmp(Address entry, RelocInfo::Mode rmode) {
EnsureSpace ensure_space(this);
DCHECK(!RelocInfo::IsCodeTarget(rmode));
EMIT(0xE9);
if (RelocInfo::IsRuntimeEntry(rmode) || RelocInfo::IsWasmCall(rmode)) {
if (RelocInfo::IsWasmCall(rmode)) {
emit(entry, rmode);
} else {
emit(entry - (reinterpret_cast<Address>(pc_) + sizeof(int32_t)), rmode);
......@@ -1772,11 +1767,7 @@ void Assembler::j(Condition cc, byte* entry, RelocInfo::Mode rmode) {
// 0000 1111 1000 tttn #32-bit disp.
EMIT(0x0F);
EMIT(0x80 | cc);
if (RelocInfo::IsRuntimeEntry(rmode)) {
emit(reinterpret_cast<uint32_t>(entry), rmode);
} else {
emit(entry - (pc_ + sizeof(int32_t)), rmode);
}
emit(entry - (pc_ + sizeof(int32_t)), rmode);
}
void Assembler::j(Condition cc, Handle<Code> code, RelocInfo::Mode rmode) {
......
......@@ -345,7 +345,7 @@ void RelocInfo::set_target_address(Address target,
WriteBarrierMode write_barrier_mode,
ICacheFlushMode icache_flush_mode) {
DCHECK(IsCodeTargetMode(rmode_) || IsNearBuiltinEntry(rmode_) ||
IsRuntimeEntry(rmode_) || IsWasmCall(rmode_));
IsWasmCall(rmode_));
Assembler::set_target_address_at(pc_, constant_pool_, target,
icache_flush_mode);
if (!host().is_null() && IsCodeTargetMode(rmode_) &&
......@@ -369,13 +369,13 @@ bool RelocInfo::HasTargetAddressAddress() const {
static constexpr int kTargetAddressAddressModeMask =
ModeMask(CODE_TARGET) | ModeMask(FULL_EMBEDDED_OBJECT) |
ModeMask(COMPRESSED_EMBEDDED_OBJECT) | ModeMask(EXTERNAL_REFERENCE) |
ModeMask(OFF_HEAP_TARGET) | ModeMask(RUNTIME_ENTRY) |
ModeMask(WASM_CALL) | ModeMask(WASM_STUB_CALL);
ModeMask(OFF_HEAP_TARGET) | ModeMask(WASM_CALL) |
ModeMask(WASM_STUB_CALL);
#else
static constexpr int kTargetAddressAddressModeMask =
ModeMask(CODE_TARGET) | ModeMask(RELATIVE_CODE_TARGET) |
ModeMask(FULL_EMBEDDED_OBJECT) | ModeMask(EXTERNAL_REFERENCE) |
ModeMask(OFF_HEAP_TARGET) | ModeMask(RUNTIME_ENTRY) | ModeMask(WASM_CALL);
ModeMask(OFF_HEAP_TARGET) | ModeMask(WASM_CALL);
#endif
return (ModeMask(rmode_) & kTargetAddressAddressModeMask) != 0;
}
......@@ -405,8 +405,6 @@ const char* RelocInfo::RelocModeName(RelocInfo::Mode rmode) {
return "code target";
case RELATIVE_CODE_TARGET:
return "relative code target";
case RUNTIME_ENTRY:
return "runtime entry";
case EXTERNAL_REFERENCE:
return "external reference";
case INTERNAL_REFERENCE:
......@@ -473,13 +471,6 @@ void RelocInfo::Print(Isolate* isolate, std::ostream& os) {
os << " " << Builtins::name(code.builtin_id());
}
os << ") (" << reinterpret_cast<const void*>(target_address()) << ")";
} else if (IsRuntimeEntry(rmode_)) {
// Deoptimization bailouts are stored as runtime entries.
DeoptimizeKind type;
if (Deoptimizer::IsDeoptimizationEntry(isolate, target_address(), &type)) {
os << " (" << Deoptimizer::MessageFor(type)
<< " deoptimization bailout)";
}
} else if (IsConstPool(rmode_)) {
os << " (size " << static_cast<int>(data_) << ")";
}
......@@ -535,7 +526,6 @@ void RelocInfo::Verify(Isolate* isolate) {
OffHeapInstructionStream::TryLookupCode(isolate, addr)));
break;
}
case RUNTIME_ENTRY:
case EXTERNAL_REFERENCE:
case DEOPT_SCRIPT_OFFSET:
case DEOPT_INLINING_ID:
......
......@@ -65,9 +65,6 @@ class RelocInfo {
WASM_CALL, // FIRST_SHAREABLE_RELOC_MODE
WASM_STUB_CALL,
// TODO(ishell): This reloc info shouldn't be used anymore. Remove it.
RUNTIME_ENTRY,
EXTERNAL_REFERENCE, // The address of an external C++ function.
INTERNAL_REFERENCE, // An address inside the same function.
......@@ -160,9 +157,6 @@ class RelocInfo {
return base::IsInRange(mode, FIRST_EMBEDDED_OBJECT_RELOC_MODE,
LAST_EMBEDDED_OBJECT_RELOC_MODE);
}
static constexpr bool IsRuntimeEntry(Mode mode) {
return mode == RUNTIME_ENTRY;
}
static constexpr bool IsWasmCall(Mode mode) { return mode == WASM_CALL; }
static constexpr bool IsWasmReference(Mode mode) { return mode == WASM_CALL; }
static constexpr bool IsWasmStubCall(Mode mode) {
......@@ -265,7 +259,7 @@ class RelocInfo {
ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED);
// this relocation applies to;
// can only be called if IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)
// can only be called if IsCodeTarget(rmode_)
V8_INLINE Address target_address();
// Cage base value is used for decompressing compressed embedded references.
V8_INLINE HeapObject target_object(PtrComprCageBase cage_base);
......@@ -279,11 +273,6 @@ class RelocInfo {
// Decodes builtin ID encoded as a PC-relative offset. This encoding is used
// during code generation of call/jump with NEAR_BUILTIN_ENTRY.
V8_INLINE Builtin target_builtin_at(Assembler* origin);
V8_INLINE Address target_runtime_entry(Assembler* origin);
V8_INLINE void set_target_runtime_entry(
Address target,
WriteBarrierMode write_barrier_mode = UPDATE_WRITE_BARRIER,
ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED);
V8_INLINE Address target_off_heap_target();
V8_INLINE void set_target_external_reference(
Address, ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED);
......@@ -339,8 +328,6 @@ class RelocInfo {
visitor->VisitExternalReference(host(), this);
} else if (IsInternalReference(mode) || IsInternalReferenceEncoded(mode)) {
visitor->VisitInternalReference(host(), this);
} else if (IsRuntimeEntry(mode)) {
visitor->VisitRuntimeEntry(host(), this);
} else if (IsBuiltinEntryMode(mode)) {
visitor->VisitOffHeapTarget(host(), this);
}
......@@ -384,7 +371,6 @@ class RelocInfo {
ModeMask(RelocInfo::FULL_EMBEDDED_OBJECT) |
ModeMask(RelocInfo::DATA_EMBEDDED_OBJECT) |
ModeMask(RelocInfo::NEAR_BUILTIN_ENTRY) |
ModeMask(RelocInfo::RUNTIME_ENTRY) |
ModeMask(RelocInfo::RELATIVE_CODE_TARGET) | kApplyMask;
}
......
......@@ -35,14 +35,6 @@ void Assembler::emitw(uint16_t x) {
pc_ += sizeof(uint16_t);
}
void Assembler::emit_runtime_entry(Address entry, RelocInfo::Mode rmode) {
DCHECK(RelocInfo::IsRuntimeEntry(rmode));
DCHECK_NE(options().code_range_base, 0);
RecordRelocInfo(rmode);
uint32_t offset = static_cast<uint32_t>(entry - options().code_range_base);
emitl(offset);
}
void Assembler::emit(Immediate x) {
if (!RelocInfo::IsNoInfo(x.rmode_)) {
RecordRelocInfo(x.rmode_);
......@@ -277,17 +269,12 @@ Builtin Assembler::target_builtin_at(Address pc) {
return static_cast<Builtin>(builtin_id);
}
Address Assembler::runtime_entry_at(Address pc) {
return ReadUnalignedValue<int32_t>(pc) + options().code_range_base;
}
// -----------------------------------------------------------------------------
// Implementation of RelocInfo
// The modes possibly affected by apply must be in kApplyMask.
void RelocInfo::apply(intptr_t delta) {
if (IsCodeTarget(rmode_) || IsNearBuiltinEntry(rmode_) ||
IsRuntimeEntry(rmode_)) {
if (IsCodeTarget(rmode_) || IsNearBuiltinEntry(rmode_)) {
WriteUnalignedValue(
pc_, ReadUnalignedValue<int32_t>(pc_) - static_cast<int32_t>(delta));
} else if (IsInternalReference(rmode_)) {
......@@ -298,15 +285,14 @@ void RelocInfo::apply(intptr_t delta) {
Address RelocInfo::target_address() {
DCHECK(IsCodeTarget(rmode_) || IsNearBuiltinEntry(rmode_) ||
IsRuntimeEntry(rmode_) || IsWasmCall(rmode_));
IsWasmCall(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
}
Address RelocInfo::target_address_address() {
DCHECK(IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_) || IsWasmCall(rmode_) ||
IsWasmStubCall(rmode_) || IsFullEmbeddedObject(rmode_) ||
IsCompressedEmbeddedObject(rmode_) || IsExternalReference(rmode_) ||
IsOffHeapTarget(rmode_));
DCHECK(IsCodeTarget(rmode_) || IsWasmCall(rmode_) || IsWasmStubCall(rmode_) ||
IsFullEmbeddedObject(rmode_) || IsCompressedEmbeddedObject(rmode_) ||
IsExternalReference(rmode_) || IsOffHeapTarget(rmode_));
return pc_;
}
......@@ -400,20 +386,6 @@ Builtin RelocInfo::target_builtin_at(Assembler* origin) {
return Assembler::target_builtin_at(pc_);
}
Address RelocInfo::target_runtime_entry(Assembler* origin) {
DCHECK(IsRuntimeEntry(rmode_));
return target_address();
}
void RelocInfo::set_target_runtime_entry(Address target,
WriteBarrierMode write_barrier_mode,
ICacheFlushMode icache_flush_mode) {
DCHECK(IsRuntimeEntry(rmode_));
if (target_address() != target) {
set_target_address(target, write_barrier_mode, icache_flush_mode);
}
}
Address RelocInfo::target_off_heap_target() {
DCHECK(IsOffHeapTarget(rmode_));
return ReadUnalignedValue<Address>(pc_);
......@@ -427,8 +399,7 @@ void RelocInfo::WipeOut() {
Address smi_address = Smi::FromInt(0).ptr();
WriteUnalignedValue(pc_,
V8HeapCompressionScheme::CompressTagged(smi_address));
} else if (IsCodeTarget(rmode_) || IsNearBuiltinEntry(rmode_) ||
IsRuntimeEntry(rmode_)) {
} else if (IsCodeTarget(rmode_) || IsNearBuiltinEntry(rmode_)) {
// Effectively write zero into the relocation.
Assembler::set_target_address_at(pc_, constant_pool_,
pc_ + sizeof(int32_t));
......
......@@ -989,14 +989,6 @@ void Assembler::call(Label* L) {
}
}
void Assembler::call(Address entry, RelocInfo::Mode rmode) {
DCHECK(RelocInfo::IsRuntimeEntry(rmode));
EnsureSpace ensure_space(this);
// 1110 1000 #32-bit disp.
emit(0xE8);
emit_runtime_entry(entry, rmode);
}
void Assembler::call(Handle<CodeT> target, RelocInfo::Mode rmode) {
DCHECK(RelocInfo::IsCodeTarget(rmode));
DCHECK(FromCodeT(*target).IsExecutable());
......@@ -1412,14 +1404,6 @@ void Assembler::j(Condition cc, Handle<CodeT> target, RelocInfo::Mode rmode) {
emitl(code_target_index);
}
void Assembler::jmp(Address entry, RelocInfo::Mode rmode) {
DCHECK(RelocInfo::IsRuntimeEntry(rmode));
EnsureSpace ensure_space(this);
// 1110 1001 #32-bit disp.
emit(0xE9);
emit_runtime_entry(entry, rmode);
}
void Assembler::jmp_rel(int32_t offset) {
EnsureSpace ensure_space(this);
// The offset is encoded relative to the next instruction.
......@@ -4464,7 +4448,6 @@ void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
const int RelocInfo::kApplyMask =
RelocInfo::ModeMask(RelocInfo::CODE_TARGET) |
RelocInfo::ModeMask(RelocInfo::NEAR_BUILTIN_ENTRY) |
RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
RelocInfo::ModeMask(RelocInfo::WASM_CALL);
......
......@@ -476,7 +476,6 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
inline Handle<CodeT> code_target_object_handle_at(Address pc);
inline Handle<HeapObject> compressed_embedded_object_handle_at(Address pc);
inline Address runtime_entry_at(Address pc);
// Number of bytes taken up by the branch target in the code.
static constexpr int kSpecialTargetSize = 4; // 32-bit displacement.
......@@ -815,7 +814,6 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// Calls
// Call near relative 32-bit displacement, relative to next instruction.
void call(Label* L);
void call(Address entry, RelocInfo::Mode rmode);
// Explicitly emit a near call / near jump. The displacement is relative to
// the next instructions (which starts at {pc_offset() + kNearJmpInstrSize}).
......@@ -835,7 +833,6 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// Unconditional jump to L
void jmp(Label* L, Label::Distance distance = Label::kFar);
void jmp(Handle<CodeT> target, RelocInfo::Mode rmode);
void jmp(Address entry, RelocInfo::Mode rmode);
// Jump near absolute indirect (r64)
void jmp(Register adr);
......@@ -2132,7 +2129,6 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
inline void emitl(uint32_t x);
inline void emitq(uint64_t x);
inline void emitw(uint16_t x);
inline void emit_runtime_entry(Address entry, RelocInfo::Mode rmode);
inline void emit(Immediate x);
inline void emit(Immediate64 x);
......
......@@ -275,16 +275,6 @@ static void PrintRelocInfo(std::ostringstream& out, Isolate* isolate,
relocinfo->wasm_stub_call_address()));
out << " ;; wasm stub: " << runtime_stub_name;
#endif // V8_ENABLE_WEBASSEMBLY
} else if (RelocInfo::IsRuntimeEntry(rmode) && isolate != nullptr) {
// A runtime entry relocinfo might be a deoptimization bailout.
Address addr = relocinfo->target_address();
DeoptimizeKind type;
if (Deoptimizer::IsDeoptimizationEntry(isolate, addr, &type)) {
out << " ;; " << Deoptimizer::MessageFor(type)
<< " deoptimization bailout";
} else {
out << " ;; " << RelocInfo::RelocModeName(rmode);
}
} else {
out << " ;; " << RelocInfo::RelocModeName(rmode);
}
......
......@@ -1637,7 +1637,6 @@ class RecordMigratedSlotVisitor : public ObjectVisitorWithCageBases {
// Entries that are skipped for recording.
inline void VisitExternalReference(Code host, RelocInfo* rinfo) final {}
inline void VisitRuntimeEntry(Code host, RelocInfo* rinfo) final {}
inline void VisitInternalReference(Code host, RelocInfo* rinfo) final {}
inline void VisitExternalPointer(HeapObject host, ExternalPointerSlot slot,
ExternalPointerTag tag) final {}
......
......@@ -215,10 +215,6 @@ void Code::RelocateFromDesc(ByteArray reloc_info, Heap* heap,
it.rinfo()->set_target_address(p, UPDATE_WRITE_BARRIER,
SKIP_ICACHE_FLUSH);
DCHECK_EQ(p, it.rinfo()->target_address());
} else if (RelocInfo::IsRuntimeEntry(mode)) {
Address p = it.rinfo()->target_runtime_entry(origin);
it.rinfo()->set_target_runtime_entry(p, UPDATE_WRITE_BARRIER,
SKIP_ICACHE_FLUSH);
} else {
intptr_t delta =
raw_instruction_start() - reinterpret_cast<Address>(desc.buffer);
......@@ -374,7 +370,6 @@ bool Code::IsIsolateIndependent(Isolate* isolate) {
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE_ENCODED) |
RelocInfo::ModeMask(RelocInfo::NEAR_BUILTIN_ENTRY) |
RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY) |
RelocInfo::ModeMask(RelocInfo::WASM_CALL) |
RelocInfo::ModeMask(RelocInfo::WASM_STUB_CALL)));
......
......@@ -957,8 +957,7 @@ class Code::BodyDescriptor final : public BodyDescriptorBase {
RelocInfo::ModeMask(RelocInfo::EXTERNAL_REFERENCE) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE_ENCODED) |
RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET) |
RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY);
RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET);
template <typename ObjectVisitor>
static inline void IterateBody(Map map, HeapObject obj, ObjectVisitor* v) {
......
......@@ -161,9 +161,6 @@ class ObjectVisitor {
// Visit pointer embedded into a code object.
virtual void VisitEmbeddedPointer(Code host, RelocInfo* rinfo) = 0;
// Visits a runtime entry in the instruction stream.
virtual void VisitRuntimeEntry(Code host, RelocInfo* rinfo) {}
// Visits an external reference embedded into a code object.
virtual void VisitExternalReference(Code host, RelocInfo* rinfo) {}
......
......@@ -732,7 +732,6 @@ class DeserializerRelocInfoVisitor {
void VisitCodeTarget(Code host, RelocInfo* rinfo);
void VisitEmbeddedPointer(Code host, RelocInfo* rinfo);
void VisitRuntimeEntry(Code host, RelocInfo* rinfo);
void VisitExternalReference(Code host, RelocInfo* rinfo);
void VisitInternalReference(Code host, RelocInfo* rinfo);
void VisitOffHeapTarget(Code host, RelocInfo* rinfo);
......@@ -759,12 +758,6 @@ void DeserializerRelocInfoVisitor::VisitEmbeddedPointer(Code host,
rinfo->set_target_object(isolate()->heap(), object);
}
void DeserializerRelocInfoVisitor::VisitRuntimeEntry(Code host,
RelocInfo* rinfo) {
// We no longer serialize code that contains runtime entries.
UNREACHABLE();
}
void DeserializerRelocInfoVisitor::VisitExternalReference(Code host,
RelocInfo* rinfo) {
byte data = source().Get();
......
......@@ -1039,7 +1039,6 @@ class Serializer::ObjectSerializer::RelocInfoObjectPreSerializer {
void VisitExternalReference(Code host, RelocInfo* rinfo) {}
void VisitInternalReference(Code host, RelocInfo* rinfo) {}
void VisitRuntimeEntry(Code host, RelocInfo* reloc) { UNREACHABLE(); }
void VisitOffHeapTarget(Code host, RelocInfo* target) {}
int num_serialized_objects() const { return num_serialized_objects_; }
......@@ -1126,12 +1125,6 @@ void Serializer::ObjectSerializer::VisitExternalPointer(
}
}
void Serializer::ObjectSerializer::VisitRuntimeEntry(Code host,
RelocInfo* rinfo) {
// We no longer serialize code that contains runtime entries.
UNREACHABLE();
}
void Serializer::ObjectSerializer::VisitOffHeapTarget(Code host,
RelocInfo* rinfo) {
static_assert(EmbeddedData::kTableSize == Builtins::kBuiltinCount);
......@@ -1270,8 +1263,7 @@ void Serializer::ObjectSerializer::SerializeCode(Map map, int size) {
RelocInfo::ModeMask(RelocInfo::EXTERNAL_REFERENCE) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE_ENCODED) |
RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET) |
RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY);
RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET);
DCHECK_EQ(HeapObject::kHeaderSize, bytes_processed_so_far_);
Handle<Code> on_heap_code = Handle<Code>::cast(object_);
......
......@@ -447,7 +447,6 @@ class Serializer::ObjectSerializer : public ObjectVisitor {
void VisitExternalReference(Code host, RelocInfo* rinfo) override;
void VisitInternalReference(Code host, RelocInfo* rinfo) override;
void VisitCodeTarget(Code host, RelocInfo* target) override;
void VisitRuntimeEntry(Code host, RelocInfo* reloc) override;
void VisitOffHeapTarget(Code host, RelocInfo* target) override;
void VisitExternalPointer(HeapObject host, ExternalPointerSlot slot,
......
......@@ -138,7 +138,6 @@ TEST(AssemblerIa322) {
// some relocated stuff here, not executed
__ mov(eax, isolate->factory()->true_value());
__ jmp(kNullAddress, RelocInfo::RUNTIME_ENTRY);
CodeDesc desc;
assm.GetCode(isolate, &desc);
......
......@@ -45,8 +45,6 @@ using DisasmIa320Test = TestWithIsolate;
#define __ assm.
static void DummyStaticFunction(Object result) {}
TEST_F(DisasmIa320Test, DisasmIa320) {
HandleScope scope(isolate());
v8::internal::byte buffer[8192];
......@@ -293,8 +291,6 @@ TEST_F(DisasmIa320Test, DisasmIa320) {
Handle<Code> ic = BUILTIN_CODE(isolate(), ArrayFrom);
__ call(ic, RelocInfo::CODE_TARGET);
__ nop();
__ call(FUNCTION_ADDR(DummyStaticFunction), RelocInfo::RUNTIME_ENTRY);
__ nop();
__ jmp(&L1);
__ jmp(Operand(ebx, ecx, times_4, 10000));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment