Index: src/crankshaft/arm64/lithium-codegen-arm64.cc |
diff --git a/src/crankshaft/arm64/lithium-codegen-arm64.cc b/src/crankshaft/arm64/lithium-codegen-arm64.cc |
index 5c90beb68ef79d5b81d0625e5073b6941ba1baf9..61413192b7a1ec03a16e8e08a0a35b47f8752577 100644 |
--- a/src/crankshaft/arm64/lithium-codegen-arm64.cc |
+++ b/src/crankshaft/arm64/lithium-codegen-arm64.cc |
@@ -1555,20 +1555,20 @@ void LCodeGen::DoAllocate(LAllocate* instr) { |
__ Bind(deferred->exit()); |
if (instr->hydrogen()->MustPrefillWithFiller()) { |
- Register filler_count = temp1; |
- Register filler = temp2; |
- Register untagged_result = ToRegister(instr->temp3()); |
+ Register start = temp1; |
+ Register end = temp2; |
+ Register filler = ToRegister(instr->temp3()); |
+ |
+ __ Sub(start, result, kHeapObjectTag); |
if (instr->size()->IsConstantOperand()) { |
int32_t size = ToInteger32(LConstantOperand::cast(instr->size())); |
- __ Mov(filler_count, size / kPointerSize); |
+ __ Add(end, start, size); |
} else { |
- __ Lsr(filler_count.W(), ToRegister32(instr->size()), kPointerSizeLog2); |
+ __ Add(end, start, ToRegister(instr->size())); |
} |
- |
- __ Sub(untagged_result, result, kHeapObjectTag); |
- __ Mov(filler, Operand(isolate()->factory()->one_pointer_filler_map())); |
- __ FillFields(untagged_result, filler_count, filler); |
+ __ LoadRoot(filler, Heap::kOnePointerFillerMapRootIndex); |
+ __ InitializeFieldsWithFiller(start, end, filler); |
} else { |
DCHECK(instr->temp3() == NULL); |
} |