[liftoff] Remove kTaggedKind

Since the introduction of actual references, we should either use {kRef}
for tagged values or {kSmiKind} for tagged values that are known to be
Smis. {kTaggedKind} is misleading as it looks like it would be treated
as a tagged references, but it is actually not.

R=ahaas@chromium.org

Change-Id: Ib74d8365497eeaa9ff9e9bbcbd204233451b498f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4020510
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#84210}
This commit is contained in:
Clemens Backes 2022-11-10 16:09:30 +01:00 committed by V8 LUCI CQ
parent 590db5e6eb
commit 64e597b305
3 changed files with 15 additions and 12 deletions

View File

@ -26,7 +26,6 @@ using VarState = LiftoffAssembler::VarState;
using ValueKindSig = LiftoffAssembler::ValueKindSig;
constexpr ValueKind LiftoffAssembler::kPointerKind;
constexpr ValueKind LiftoffAssembler::kTaggedKind;
constexpr ValueKind LiftoffAssembler::kSmiKind;
namespace {

View File

@ -116,9 +116,8 @@ class LiftoffAssembler : public TurboAssembler {
static constexpr ValueKind kPointerKind =
kSystemPointerSize == kInt32Size ? kI32 : kI64;
static constexpr ValueKind kTaggedKind =
kTaggedSize == kInt32Size ? kI32 : kI64;
static constexpr ValueKind kSmiKind = kTaggedKind;
// A tagged value known to be a Smi can be treated like a ptr-sized int.
static constexpr ValueKind kSmiKind = kTaggedSize == kInt32Size ? kI32 : kI64;
using ValueKindSig = Signature<ValueKind>;

View File

@ -99,7 +99,6 @@ constexpr LoadType::LoadTypeValue kPointerLoadType =
constexpr ValueKind kPointerKind = LiftoffAssembler::kPointerKind;
constexpr ValueKind kSmiKind = LiftoffAssembler::kSmiKind;
constexpr ValueKind kTaggedKind = LiftoffAssembler::kTaggedKind;
// Used to construct fixed-size signatures: MakeSig::Returns(...).Params(...);
using MakeSig = FixedSizeSignature<ValueKind>;
@ -5437,15 +5436,17 @@ class LiftoffCompiler {
LiftoffRegister table_index_reg =
pinned.set(__ GetUnusedRegister(kGpReg, pinned));
LoadSmi(table_index_reg, imm.index);
LiftoffAssembler::VarState table_index(kPointerKind, table_index_reg, 0);
LiftoffAssembler::VarState table_index(kSmiKind, table_index_reg, 0);
LiftoffAssembler::VarState delta = __ cache_state()->stack_state.end()[-1];
LiftoffAssembler::VarState value = __ cache_state()->stack_state.end()[-2];
CallRuntimeStub(
WasmCode::kWasmTableGrow,
MakeSig::Returns(kSmiKind).Params(kSmiKind, kI32, kTaggedKind),
{table_index, delta, value}, decoder->position());
DCHECK_EQ(kI32, delta.kind());
DCHECK(is_object_reference(value.kind()));
CallRuntimeStub(WasmCode::kWasmTableGrow,
MakeSig::Returns(kSmiKind).Params(kSmiKind, kI32, kRef),
{table_index, delta, value}, decoder->position());
// Pop parameters from the value stack.
__ cache_state()->stack_state.pop_back(2);
@ -5487,14 +5488,18 @@ class LiftoffCompiler {
LiftoffRegister table_index_reg =
pinned.set(__ GetUnusedRegister(kGpReg, pinned));
LoadSmi(table_index_reg, imm.index);
LiftoffAssembler::VarState table_index(kPointerKind, table_index_reg, 0);
LiftoffAssembler::VarState table_index(kSmiKind, table_index_reg, 0);
LiftoffAssembler::VarState count = __ cache_state()->stack_state.end()[-1];
LiftoffAssembler::VarState value = __ cache_state()->stack_state.end()[-2];
LiftoffAssembler::VarState start = __ cache_state()->stack_state.end()[-3];
DCHECK_EQ(kI32, count.kind());
DCHECK(is_object_reference(value.kind()));
DCHECK_EQ(kI32, start.kind());
CallRuntimeStub(WasmCode::kWasmTableFill,
MakeSig::Params(kSmiKind, kI32, kI32, kTaggedKind),
MakeSig::Params(kSmiKind, kI32, kI32, kRef),
{table_index, start, count, value}, decoder->position());
// Pop parameters from the value stack.