Commit 5197ab05 authored by palfia@homejinni.com's avatar palfia@homejinni.com

MIPS: HArgument instructions currently require a frame. In Lithium we can...

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
parent bd03455c
......@@ -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();
......
......@@ -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());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment