Initialize list of frame elements to proper size.
authorwhesse@chromium.org <whesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 30 Mar 2009 13:03:32 +0000 (13:03 +0000)
committerwhesse@chromium.org <whesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 30 Mar 2009 13:03:32 +0000 (13:03 +0000)
Review URL: http://codereview.chromium.org/57006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1641 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/list.h
src/virtual-frame-arm.cc
src/virtual-frame-arm.h
src/virtual-frame-ia32.cc
src/virtual-frame-ia32.h
src/virtual-frame.cc

index 15f31fca20a35a17740952652e0bd7fb0f52a648..dc2f1158d3a4957725377fccaec31bba3515a069 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2006-2008 the V8 project authors. All rights reserved.
+// Copyright 2006-2009 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -67,6 +67,7 @@ class List {
 
   INLINE(bool is_empty() const) { return length_ == 0; }
   INLINE(int length() const) { return length_; }
+  INLINE(int capacity() const) { return capacity_; }
 
   Vector<T> ToVector() { return Vector<T>(data_, length_); }
 
index 0ba8beddf971d8ec58e45ba1a7bc750e7412c8a7..baf08145b7886a2d5c82cd7aefb1bc90b9e75897 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright 2009 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -44,7 +44,9 @@ namespace v8 { namespace internal {
 VirtualFrame::VirtualFrame(CodeGenerator* cgen)
     : cgen_(cgen),
       masm_(cgen->masm()),
-      elements_(0),
+      elements_(cgen->scope()->num_parameters()
+                + cgen->scope()->num_stack_slots()
+                + kPreallocatedElements),
       parameter_count_(cgen->scope()->num_parameters()),
       local_count_(0),
       stack_pointer_(parameter_count_),  // 0-based index of TOS.
index 965373e38eee9d4666a3cabb8f33fb3375fe2e8d..79102015f32e998cb1b2224763cc4d7f8020d757 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright 2009 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -331,6 +331,7 @@ class VirtualFrame : public Malloced {
   static const int kContextOffset = StandardFrameConstants::kContextOffset;
 
   static const int kHandlerSize = StackHandlerConstants::kSize / kPointerSize;
+  static const int kPreallocatedElements = 5 + 8;  // 8 expression stack slots.
 
   CodeGenerator* cgen_;
   MacroAssembler* masm_;
index 5bae6194f9045ea260b2cc02ca3d65e079558bb4..aa9c2d11e91f9f2ede0a2e604a2ff4b977117812 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright 2009 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -43,7 +43,9 @@ namespace v8 { namespace internal {
 VirtualFrame::VirtualFrame(CodeGenerator* cgen)
     : cgen_(cgen),
       masm_(cgen->masm()),
-      elements_(0),
+      elements_(cgen->scope()->num_parameters()
+                + cgen->scope()->num_stack_slots()
+                + kPreallocatedElements),
       parameter_count_(cgen->scope()->num_parameters()),
       local_count_(0),
       stack_pointer_(parameter_count_ + 1),  // 0-based index of TOS.
index c44ff75e19187ed3c03977dc912398d9ed40ddd1..6e5497691b9cb1949368936ac22c03251c73ca74 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2008 the V8 project authors. All rights reserved.
+// Copyright 2009 the V8 project authors. All rights reserved.
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are
 // met:
@@ -340,6 +340,7 @@ class VirtualFrame : public Malloced {
   static const int kContextOffset = StandardFrameConstants::kContextOffset;
 
   static const int kHandlerSize = StackHandlerConstants::kSize / kPointerSize;
+  static const int kPreallocatedElements = 5 + 8;  // 8 expression stack slots.
 
   CodeGenerator* cgen_;
   MacroAssembler* masm_;
index b2b6c417b33b365916580e34bf9892f284d5d5ec..73c8b15bd0e54f27de19c39ecc67b127d20b0421 100644 (file)
@@ -53,7 +53,7 @@ VirtualFrame::SpilledScope::~SpilledScope() {
 VirtualFrame::VirtualFrame(VirtualFrame* original)
     : cgen_(original->cgen_),
       masm_(original->masm_),
-      elements_(original->elements_.length()),
+      elements_(original->elements_.capacity()),
       parameter_count_(original->parameter_count_),
       local_count_(original->local_count_),
       stack_pointer_(original->stack_pointer_),