Commit cde53270 authored by Jaroslav Sevcik's avatar Jaroslav Sevcik Committed by Commit Bot

[turbofan][ptr-compr] Fix pointer map generation for compression nodes

Bug: v8:8977
Change-Id: I3eed7db62e4b6fc8f8e51c5aca29c8b78439a400
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1545891Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60526}
parent 4902e91a
......@@ -1518,17 +1518,17 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kChangeUint32ToUint64:
return MarkAsWord64(node), VisitChangeUint32ToUint64(node);
case IrOpcode::kChangeTaggedToCompressed:
return MarkAsWord32(node), VisitChangeTaggedToCompressed(node);
return MarkAsCompressed(node), VisitChangeTaggedToCompressed(node);
case IrOpcode::kChangeTaggedPointerToCompressedPointer:
return MarkAsWord32(node),
return MarkAsCompressed(node),
VisitChangeTaggedPointerToCompressedPointer(node);
case IrOpcode::kChangeTaggedSignedToCompressedSigned:
return MarkAsWord32(node),
VisitChangeTaggedSignedToCompressedSigned(node);
case IrOpcode::kChangeCompressedToTagged:
return MarkAsWord64(node), VisitChangeCompressedToTagged(node);
return MarkAsReference(node), VisitChangeCompressedToTagged(node);
case IrOpcode::kChangeCompressedPointerToTaggedPointer:
return MarkAsWord64(node),
return MarkAsReference(node),
VisitChangeCompressedPointerToTaggedPointer(node);
case IrOpcode::kChangeCompressedSignedToTaggedSigned:
return MarkAsWord64(node),
......
......@@ -539,6 +539,9 @@ class V8_EXPORT_PRIVATE InstructionSelector final {
void MarkAsReference(Node* node) {
MarkAsRepresentation(MachineRepresentation::kTagged, node);
}
void MarkAsCompressed(Node* node) {
MarkAsRepresentation(MachineRepresentation::kCompressed, node);
}
// Inform the register allocation of the representation of the unallocated
// operand {op}.
......
......@@ -1493,7 +1493,7 @@ class V8_EXPORT_PRIVATE InstructionSequence final
void MarkAsRepresentation(MachineRepresentation rep, int virtual_register);
bool IsReference(int virtual_register) const {
return CanBeTaggedPointer(GetRepresentation(virtual_register));
return CanBeTaggedOrCompressedPointer(GetRepresentation(virtual_register));
}
bool IsFP(int virtual_register) const {
return IsFloatingPoint(GetRepresentation(virtual_register));
......
......@@ -4772,7 +4772,7 @@ void ReferenceMapPopulator::PopulateReferenceMaps() {
spill_operand = range->GetSpillRangeOperand();
}
DCHECK(spill_operand.IsStackSlot());
DCHECK(CanBeTaggedPointer(
DCHECK(CanBeTaggedOrCompressedPointer(
AllocatedOperand::cast(spill_operand).representation()));
}
......@@ -4835,7 +4835,7 @@ void ReferenceMapPopulator::PopulateReferenceMaps() {
safe_point);
InstructionOperand operand = cur->GetAssignedOperand();
DCHECK(!operand.IsStackSlot());
DCHECK(CanBeTaggedPointer(
DCHECK(CanBeTaggedOrCompressedPointer(
AllocatedOperand::cast(operand).representation()));
map->RecordReference(AllocatedOperand::cast(operand));
}
......
......@@ -319,6 +319,10 @@ inline bool CanBeCompressedPointer(MachineRepresentation rep) {
rep == MachineRepresentation::kCompressedPointer;
}
inline bool CanBeTaggedOrCompressedPointer(MachineRepresentation rep) {
return CanBeTaggedPointer(rep) || CanBeCompressedPointer(rep);
}
inline bool CanBeCompressedSigned(MachineRepresentation rep) {
return rep == MachineRepresentation::kCompressed ||
rep == MachineRepresentation::kCompressedSigned;
......
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