Reviewers: fschneider, Description: Avoid using full array literal boilerplate cloning for non-nested literals that are too big to hit the fast case.
Please review this at http://codereview.chromium.org/503055 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M bleeding_edge/src/ia32/codegen-ia32.cc Index: bleeding_edge/src/ia32/codegen-ia32.cc =================================================================== --- bleeding_edge/src/ia32/codegen-ia32.cc (revision 3488) +++ bleeding_edge/src/ia32/codegen-ia32.cc (working copy) @@ -4443,10 +4443,13 @@ // Clone the boilerplate object. int length = node->values()->length(); Result clone; - if (node->depth() == 1 && - length <= FastCloneShallowArrayStub::kMaximumLength) { - FastCloneShallowArrayStub stub(length); - clone = frame_->CallStub(&stub, 1); + if (node->depth() == 1) { + if (length <= FastCloneShallowArrayStub::kMaximumLength) { + FastCloneShallowArrayStub stub(length); + clone = frame_->CallStub(&stub, 1); + } else { + clone = frame_->CallRuntime(Runtime::kCloneShallowLiteralBoilerplate, 1); + } } else { clone = frame_->CallRuntime(Runtime::kCloneLiteralBoilerplate, 1); } -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
