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

Reply via email to