From: palfia@homejinni.com Date: Mon, 22 Jul 2013 18:16:44 +0000 (+0000) Subject: MIPS: Prefill pre-allocated memory of folded allocation with one pointer fillers... X-Git-Tag: upstream/4.7.83~13262 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d6e54c5f58dcdaa57196d3e482e53f95541fcf5e;p=platform%2Fupstream%2Fv8.git MIPS: Prefill pre-allocated memory of folded allocation with one pointer fillers when heap verifier is on. Port r15798 (3b92806) BUG= Review URL: https://codereview.chromium.org/19485006 Patch from Balazs Kilvady . git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc index 65b4a57..53f76f1 100644 --- a/src/mips/lithium-codegen-mips.cc +++ b/src/mips/lithium-codegen-mips.cc @@ -5323,6 +5323,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())); + __ li(scratch, Operand(size)); + } else { + scratch = ToRegister(instr->size()); + } + __ Subu(scratch, scratch, Operand(kPointerSize)); + __ Subu(result, result, Operand(kHeapObjectTag)); + Label loop; + __ bind(&loop); + __ li(scratch2, Operand(isolate()->factory()->one_pointer_filler_map())); + __ Addu(at, result, Operand(scratch)); + __ sw(scratch2, MemOperand(at)); + __ Subu(scratch, scratch, Operand(kPointerSize)); + __ Branch(&loop, ge, scratch, Operand(zero_reg)); + __ Addu(result, result, Operand(kHeapObjectTag)); + } }