Index: src/utils.h |
diff --git a/src/utils.h b/src/utils.h |
index 525c6f87d3d96fbd8504a00474981675c1c1f74d..b7415226a7f82de46f317646b8a25c9d17303b60 100644 |
--- a/src/utils.h |
+++ b/src/utils.h |
@@ -1324,6 +1324,9 @@ INLINE(void CopyCharsUnsigned(uint16_t* dest, const uint16_t* src, int chars)); |
#elif defined(V8_HOST_ARCH_MIPS) |
INLINE(void CopyCharsUnsigned(uint8_t* dest, const uint8_t* src, int chars)); |
INLINE(void CopyCharsUnsigned(uint16_t* dest, const uint16_t* src, int chars)); |
+#elif defined(V8_HOST_ARCH_PPC) |
+INLINE(void CopyCharsUnsigned(uint8_t* dest, const uint8_t* src, int chars)); |
+INLINE(void CopyCharsUnsigned(uint16_t* dest, const uint16_t* src, int chars)); |
#endif |
// Copy from 8bit/16bit chars to 8bit/16bit chars. |
@@ -1483,6 +1486,136 @@ void CopyCharsUnsigned(uint16_t* dest, const uint16_t* src, int chars) { |
MemCopy(dest, src, chars * sizeof(*dest)); |
} |
} |
+#elif defined(V8_HOST_ARCH_PPC) |
+#define CASE(n) \ |
+ case n: \ |
+ memcpy(dest, src, n); \ |
+ break |
+void CopyCharsUnsigned(uint8_t* dest, const uint8_t* src, int chars) { |
+ switch (static_cast<unsigned>(chars)) { |
+ case 0: |
+ break; |
+ case 1: |
+ *dest = *src; |
+ break; |
+ CASE(2); |
+ CASE(3); |
+ CASE(4); |
+ CASE(5); |
+ CASE(6); |
+ CASE(7); |
+ CASE(8); |
+ CASE(9); |
+ CASE(10); |
+ CASE(11); |
+ CASE(12); |
+ CASE(13); |
+ CASE(14); |
+ CASE(15); |
+ CASE(16); |
+ CASE(17); |
+ CASE(18); |
+ CASE(19); |
+ CASE(20); |
+ CASE(21); |
+ CASE(22); |
+ CASE(23); |
+ CASE(24); |
+ CASE(25); |
+ CASE(26); |
+ CASE(27); |
+ CASE(28); |
+ CASE(29); |
+ CASE(30); |
+ CASE(31); |
+ CASE(32); |
+ CASE(33); |
+ CASE(34); |
+ CASE(35); |
+ CASE(36); |
+ CASE(37); |
+ CASE(38); |
+ CASE(39); |
+ CASE(40); |
+ CASE(41); |
+ CASE(42); |
+ CASE(43); |
+ CASE(44); |
+ CASE(45); |
+ CASE(46); |
+ CASE(47); |
+ CASE(48); |
+ CASE(49); |
+ CASE(50); |
+ CASE(51); |
+ CASE(52); |
+ CASE(53); |
+ CASE(54); |
+ CASE(55); |
+ CASE(56); |
+ CASE(57); |
+ CASE(58); |
+ CASE(59); |
+ CASE(60); |
+ CASE(61); |
+ CASE(62); |
+ CASE(63); |
+ CASE(64); |
+ default: |
+ memcpy(dest, src, chars); |
+ break; |
+ } |
+} |
+#undef CASE |
+ |
+#define CASE(n) \ |
+ case n: \ |
+ memcpy(dest, src, n * 2); \ |
+ break |
+void CopyCharsUnsigned(uint16_t* dest, const uint16_t* src, int chars) { |
+ switch (static_cast<unsigned>(chars)) { |
+ case 0: |
+ break; |
+ case 1: |
+ *dest = *src; |
+ break; |
+ CASE(2); |
+ CASE(3); |
+ CASE(4); |
+ CASE(5); |
+ CASE(6); |
+ CASE(7); |
+ CASE(8); |
+ CASE(9); |
+ CASE(10); |
+ CASE(11); |
+ CASE(12); |
+ CASE(13); |
+ CASE(14); |
+ CASE(15); |
+ CASE(16); |
+ CASE(17); |
+ CASE(18); |
+ CASE(19); |
+ CASE(20); |
+ CASE(21); |
+ CASE(22); |
+ CASE(23); |
+ CASE(24); |
+ CASE(25); |
+ CASE(26); |
+ CASE(27); |
+ CASE(28); |
+ CASE(29); |
+ CASE(30); |
+ CASE(31); |
+ CASE(32); |
+ default: |
+ memcpy(dest, src, chars * 2); |
+ break; |
+ } |
+} |
+#undef CASE |
#endif |