Index: src/list-inl.h |
diff --git a/src/list-inl.h b/src/list-inl.h |
index 60e8fab6f6fb5196aa6c500e0fd3d7dfd948505a..9b122fdbae4417fc710b755cc4be9fe541f4b04b 100644 |
--- a/src/list-inl.h |
+++ b/src/list-inl.h |
@@ -7,6 +7,7 @@ |
#include "src/list.h" |
+#include "src/base/macros.h" |
#include "src/base/platform/platform.h" |
namespace v8 { |
@@ -33,8 +34,10 @@ template<typename T, class P> |
void List<T, P>::AddAll(const Vector<T>& other, P alloc) { |
int result_length = length_ + other.length(); |
if (capacity_ < result_length) Resize(result_length, alloc); |
- for (int i = 0; i < other.length(); i++) { |
- data_[length_ + i] = other.at(i); |
+ if (base::is_fundamental<T>()) { |
+ memcpy(data_ + length_, other.start(), sizeof(*data_) * other.length()); |
+ } else { |
+ for (int i = 0; i < other.length(); i++) data_[length_ + i] = other.at(i); |
} |
length_ = result_length; |
} |