| Index: src/platform.h
 | 
| diff --git a/src/platform.h b/src/platform.h
 | 
| index 24d21cb3aee129ba84df74a0b8b1037312b24a15..211be39d00c781b7075250d0e149e2b8dcc676e0 100644
 | 
| --- a/src/platform.h
 | 
| +++ b/src/platform.h
 | 
| @@ -315,6 +315,9 @@ class OS {
 | 
|    // Support runtime detection of Cpu implementer
 | 
|    static CpuImplementer GetCpuImplementer();
 | 
|  
 | 
| +  // Support runtime detection of Cpu implementer
 | 
| +  static CpuPart GetCpuPart(CpuImplementer implementer);
 | 
| +
 | 
|    // Support runtime detection of VFP3 on ARM CPUs.
 | 
|    static bool ArmCpuHasFeature(CpuFeature feature);
 | 
|  
 | 
| @@ -343,7 +346,42 @@ class OS {
 | 
|    static void MemCopy(void* dest, const void* src, size_t size) {
 | 
|      MemMove(dest, src, size);
 | 
|    }
 | 
| -#else  // V8_TARGET_ARCH_IA32
 | 
| +#elif defined(V8_HOST_ARCH_ARM)
 | 
| +  typedef void (*MemCopyUint8Function)(uint8_t* dest,
 | 
| +                                       const uint8_t* src,
 | 
| +                                       size_t size);
 | 
| +  static MemCopyUint8Function memcopy_uint8_function;
 | 
| +  static void MemCopyUint8Wrapper(uint8_t* dest,
 | 
| +                                  const uint8_t* src,
 | 
| +                                  size_t chars) {
 | 
| +    memcpy(dest, src, chars);
 | 
| +  }
 | 
| +  // For values < 16, the assembler function is slower than the inlined C code.
 | 
| +  static const int kMinComplexMemCopy = 16;
 | 
| +  static void MemCopy(void* dest, const void* src, size_t size) {
 | 
| +    (*memcopy_uint8_function)(reinterpret_cast<uint8_t*>(dest),
 | 
| +                              reinterpret_cast<const uint8_t*>(src),
 | 
| +                              size);
 | 
| +  }
 | 
| +  static void MemMove(void* dest, const void* src, size_t size) {
 | 
| +    memmove(dest, src, size);
 | 
| +  }
 | 
| +
 | 
| +  typedef void (*MemCopyUint16Uint8Function)(uint16_t* dest,
 | 
| +                                             const uint8_t* src,
 | 
| +                                             size_t size);
 | 
| +  static MemCopyUint16Uint8Function memcopy_uint16_uint8_function;
 | 
| +  static void MemCopyUint16Uint8Wrapper(uint16_t* dest,
 | 
| +                                        const uint8_t* src,
 | 
| +                                        size_t chars);
 | 
| +  // For values < 12, the assembler function is slower than the inlined C code.
 | 
| +  static const int kMinComplexConvertMemCopy = 12;
 | 
| +  static void MemCopyUint16Uint8(uint16_t* dest,
 | 
| +                                 const uint8_t* src,
 | 
| +                                 size_t size) {
 | 
| +    (*memcopy_uint16_uint8_function)(dest, src, size);
 | 
| +  }
 | 
| +#else
 | 
|    // Copy memory area to disjoint memory area.
 | 
|    static void MemCopy(void* dest, const void* src, size_t size) {
 | 
|      memcpy(dest, src, size);
 | 
| 
 |