Index: src/elements.cc |
diff --git a/src/elements.cc b/src/elements.cc |
index 8cb48c6ad8a418e3640b82d2d796b191eddc9a7a..4bc22248fc8a674dd3fea354750089883f18bc48 100644 |
--- a/src/elements.cc |
+++ b/src/elements.cc |
@@ -146,6 +146,23 @@ static Failure* ThrowArrayLengthRangeError(Heap* heap) { |
} |
+void CopySmiToSmiElements(FixedArray* from, |
+ uint32_t from_start, |
+ FixedArray* to, |
+ uint32_t to_start, |
+ int copy_size) { |
+ ASSERT(to->map() != HEAP->fixed_cow_array_map()); |
+ ASSERT((copy_size + static_cast<int>(to_start)) <= to->length() && |
+ (copy_size + static_cast<int>(from_start)) <= from->length()); |
danno
2012/11/13 22:05:12
Please handle the hole here and handle the Element
Toon Verwaest
2012/11/14 11:53:13
Removed this function again now that I just use ac
|
+ if (copy_size == 0) return; |
+ Address to_address = to->address() + FixedArray::kHeaderSize; |
+ Address from_address = from->address() + FixedArray::kHeaderSize; |
+ CopyWords(reinterpret_cast<Object**>(to_address) + to_start, |
+ reinterpret_cast<Object**>(from_address) + from_start, |
+ copy_size); |
+} |
+ |
+ |
void CopyObjectToObjectElements(FixedArray* from, |
ElementsKind from_kind, |
uint32_t from_start, |
@@ -243,7 +260,7 @@ static void CopyDictionaryToObjectElements(SeededNumberDictionary* from, |
} |
-MUST_USE_RESULT static MaybeObject* CopyDoubleToObjectElements( |
+MUST_USE_RESULT MaybeObject* CopyDoubleToObjectElements( |
FixedDoubleArray* from, |
uint32_t from_start, |
FixedArray* to, |
@@ -298,7 +315,7 @@ MUST_USE_RESULT static MaybeObject* CopyDoubleToObjectElements( |
} |
-static void CopyDoubleToDoubleElements(FixedDoubleArray* from, |
+void CopyDoubleToDoubleElements(FixedDoubleArray* from, |
uint32_t from_start, |
FixedDoubleArray* to, |
uint32_t to_start, |
@@ -329,11 +346,11 @@ static void CopyDoubleToDoubleElements(FixedDoubleArray* from, |
} |
-static void CopySmiToDoubleElements(FixedArray* from, |
- uint32_t from_start, |
- FixedDoubleArray* to, |
- uint32_t to_start, |
- int raw_copy_size) { |
+void CopySmiToDoubleElements(FixedArray* from, |
+ uint32_t from_start, |
+ FixedDoubleArray* to, |
+ uint32_t to_start, |
+ int raw_copy_size) { |
int copy_size = raw_copy_size; |
if (raw_copy_size < 0) { |
ASSERT(raw_copy_size == ElementsAccessor::kCopyToEnd || |