From 5197ab0548f343daf636b0b0af8c4c1a3b798e86 Mon Sep 17 00:00:00 2001 From: "palfia@homejinni.com" Date: Thu, 18 Apr 2013 23:47:40 +0000 Subject: [PATCH] MIPS: HArgument instructions currently require a frame. In Lithium we can ensure a frame is created for these instructions via a compile info flag. Port r14339 (7d544be1) BUG= Review URL: https://codereview.chromium.org/14367003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/mips/lithium-codegen-mips.h | 3 ++- src/mips/lithium-mips.cc | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mips/lithium-codegen-mips.h b/src/mips/lithium-codegen-mips.h index 01d0ffc..9634aa6 100644 --- a/src/mips/lithium-codegen-mips.h +++ b/src/mips/lithium-codegen-mips.h @@ -82,7 +82,8 @@ class LCodeGen BASE_EMBEDDED { bool NeedsEagerFrame() const { return GetStackSlotCount() > 0 || info()->is_non_deferred_calling() || - !info()->IsStub(); + !info()->IsStub() || + info()->requires_frame(); } bool NeedsDeferredFrame() const { return !NeedsEagerFrame() && info()->is_deferred_calling(); diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc index 0d12c45..5c0b85e 100644 --- a/src/mips/lithium-mips.cc +++ b/src/mips/lithium-mips.cc @@ -988,12 +988,14 @@ LInstruction* LChunkBuilder::DoCompareMap(HCompareMap* instr) { LInstruction* LChunkBuilder::DoArgumentsLength(HArgumentsLength* length) { + info()->MarkAsRequiresFrame(); return DefineAsRegister( new(zone()) LArgumentsLength(UseRegister(length->value()))); } LInstruction* LChunkBuilder::DoArgumentsElements(HArgumentsElements* elems) { + info()->MarkAsRequiresFrame(); return DefineAsRegister(new(zone()) LArgumentsElements); } @@ -2331,6 +2333,7 @@ LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) { LInstruction* LChunkBuilder::DoAccessArgumentsAt(HAccessArgumentsAt* instr) { + info()->MarkAsRequiresFrame(); LOperand* args = UseRegister(instr->arguments()); LOperand* length = UseTempRegister(instr->length()); LOperand* index = UseRegister(instr->index()); -- 2.7.4