Index: src/platform-posix.cc |
diff --git a/src/platform-posix.cc b/src/platform-posix.cc |
index e72a5d9bc12ceee4b85b19907ca0e70fe7f00f0e..5eda3e295fdd8a830f1438a2a5ebd0b8df9cde64 100644 |
--- a/src/platform-posix.cc |
+++ b/src/platform-posix.cc |
@@ -340,7 +340,26 @@ void OS::MemMove(void* dest, const void* src, size_t size) { |
(*memmove_function)(dest, src, size); |
} |
-#endif // V8_TARGET_ARCH_IA32 |
+#elif defined(V8_HOST_ARCH_ARM) |
+void OS::MemCopyUint16Uint8Wrapper(uint16_t* dest, |
+ const uint8_t* src, |
+ size_t chars) { |
+ uint16_t *limit = dest + chars; |
+ while (dest < limit) { |
+ *dest++ = static_cast<uint16_t>(*src++); |
+ } |
+} |
+ |
+ |
+OS::MemCopyUint8Function OS::memcopy_uint8_function = &OS::MemCopyUint8Wrapper; |
+OS::MemCopyUint16Uint8Function OS::memcopy_uint16_uint8_function = |
+ &OS::MemCopyUint16Uint8Wrapper; |
+// Defined in codegen-arm.cc. |
+OS::MemCopyUint8Function CreateMemCopyUint8Function( |
+ OS::MemCopyUint8Function stub); |
+OS::MemCopyUint16Uint8Function CreateMemCopyUint16Uint8Function( |
+ OS::MemCopyUint16Uint8Function stub); |
+#endif |
void POSIXPostSetUp() { |
@@ -349,6 +368,11 @@ void POSIXPostSetUp() { |
if (generated_memmove != NULL) { |
memmove_function = generated_memmove; |
} |
+#elif defined(V8_HOST_ARCH_ARM) |
+ OS::memcopy_uint8_function = |
+ CreateMemCopyUint8Function(&OS::MemCopyUint8Wrapper); |
+ OS::memcopy_uint16_uint8_function = |
+ CreateMemCopyUint16Uint8Function(&OS::MemCopyUint16Uint8Wrapper); |
#endif |
init_fast_sin_function(); |
init_fast_cos_function(); |