| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 9900a1e9848f0515b093bb423c4b212de5e81fb2..db97966a9aad7aa2fb0855623151a8f8f60bceb5 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -5369,6 +5369,25 @@ void LCodeGen::DoAllocate(LAllocate* instr) {
|
| }
|
|
|
| __ bind(deferred->exit());
|
| +
|
| + if (instr->hydrogen()->MustPrefillWithFiller()) {
|
| + if (instr->size()->IsConstantOperand()) {
|
| + int32_t size = ToInteger32(LConstantOperand::cast(instr->size()));
|
| + __ mov(scratch, Operand(size));
|
| + } else {
|
| + scratch = ToRegister(instr->size());
|
| + }
|
| + __ sub(scratch, scratch, Operand(kPointerSize));
|
| + __ sub(result, result, Operand(kHeapObjectTag));
|
| + Label loop;
|
| + __ bind(&loop);
|
| + __ mov(scratch2, Operand(isolate()->factory()->one_pointer_filler_map()));
|
| + __ str(scratch2, MemOperand(result, scratch));
|
| + __ sub(scratch, scratch, Operand(kPointerSize));
|
| + __ cmp(scratch, Operand(0));
|
| + __ b(ge, &loop);
|
| + __ add(result, result, Operand(kHeapObjectTag));
|
| + }
|
| }
|
|
|
|
|
|
|