Commit c5391e9d authored by Igor Sheludko's avatar Igor Sheludko Committed by Commit Bot

[ic][ptr-compr] Fix CloneObjectIC for pointer compression mode

Bug: chromium:973045, v8:7611, v8:9114, v8:9183, v8:9343
Tbr: verwaest@chromium.org,tebbi@chromium.org
Change-Id: I08b509368972956d1c7aedf53884d2590e4cfa27
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1660619
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62193}
parent d7a8170d
...@@ -147,6 +147,12 @@ struct Float64T : UntaggedT { ...@@ -147,6 +147,12 @@ struct Float64T : UntaggedT {
static constexpr MachineType kMachineType = MachineType::Float64(); static constexpr MachineType kMachineType = MachineType::Float64();
}; };
#ifdef V8_COMPRESS_POINTERS
using TaggedT = Int32T;
#else
using TaggedT = IntPtrT;
#endif
// Result of a comparison operation. // Result of a comparison operation.
struct BoolT : Word32T {}; struct BoolT : Word32T {};
......
...@@ -3768,8 +3768,8 @@ void AccessorAssembler::GenerateCloneObjectIC() { ...@@ -3768,8 +3768,8 @@ void AccessorAssembler::GenerateCloneObjectIC() {
[=](Node* field_index) { [=](Node* field_index) {
TNode<IntPtrT> field_offset = TNode<IntPtrT> field_offset =
TimesTaggedSize(UncheckedCast<IntPtrT>(field_index)); TimesTaggedSize(UncheckedCast<IntPtrT>(field_index));
TNode<IntPtrT> field = TNode<TaggedT> field =
LoadObjectField<IntPtrT>(CAST(source), field_offset); LoadObjectField<TaggedT>(CAST(source), field_offset);
TNode<IntPtrT> result_offset = TNode<IntPtrT> result_offset =
IntPtrAdd(field_offset, field_offset_difference); IntPtrAdd(field_offset, field_offset_difference);
StoreObjectFieldNoWriteBarrier(object, result_offset, field); StoreObjectFieldNoWriteBarrier(object, result_offset, field);
......
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