Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 54fb1877da23260b578664b08fd2e1e0ee2f7b26..cefa3ffd129ee58dfab8d970fd3f028916a386b7 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -6051,6 +6051,23 @@ 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(temp, (size / kPointerSize) - 1); |
+ } else { |
+ temp = ToRegister(instr->size()); |
+ __ shr(temp, kPointerSizeLog2); |
+ __ dec(temp); |
+ } |
+ Label loop; |
+ __ bind(&loop); |
+ __ mov(FieldOperand(result, temp, times_pointer_size, 0), |
+ isolate()->factory()->one_pointer_filler_map()); |
+ __ dec(temp); |
+ __ j(not_zero, &loop); |
+ } |
} |