--- Source/JavaScriptCore/runtime/DatePrototype.cpp.orig	2017-06-16 05:46:36.000000000 -0700
+++ Source/JavaScriptCore/runtime/DatePrototype.cpp	2019-10-07 15:34:27.000000000 -0700
@@ -167,7 +167,7 @@
     CFRelease(locale);
 
     if (useCustomFormat) {
-        CFStringRef customFormatCFString = CFStringCreateWithCharacters(0, customFormatString.characters(), customFormatString.length());
+        CFStringRef customFormatCFString = CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar *>(customFormatString.characters()), customFormatString.length());
         CFDateFormatterSetFormat(formatter, customFormatCFString);
         CFRelease(customFormatCFString);
     }
@@ -184,7 +184,7 @@
     ASSERT(length <= bufferLength);
     if (length > bufferLength)
         length = bufferLength;
-    CFStringGetCharacters(string, CFRangeMake(0, length), buffer);
+    CFStringGetCharacters(string, CFRangeMake(0, length), reinterpret_cast<UniChar *>(buffer));
 
     CFRelease(string);
 
--- Source/WebCore/platform/graphics/SegmentedFontData.cpp.orig	2017-06-16 05:46:36.000000000 -0700
+++ Source/WebCore/platform/graphics/SegmentedFontData.cpp	2019-10-07 16:34:39.000000000 -0700
@@ -61,7 +61,7 @@
 {
     UChar32 c;
     for (int i = 0; i < length; ) {
-        U16_NEXT(characters, i, length, c)
+        U16_NEXT(characters, i, length, c);
         if (!containsCharacter(c))
             return false;
     }
--- Source/WebCore/dom/Document.cpp.orig	2017-06-16 05:46:36.000000000 -0700
+++ Source/WebCore/dom/Document.cpp	2019-10-07 17:30:02.000000000 -0700
@@ -3846,12 +3846,12 @@
     unsigned i = 0;
 
     UChar32 c;
-    U16_NEXT(characters, i, length, c)
+    U16_NEXT(characters, i, length, c);
     if (!isValidNameStart(c))
         return false;
 
     while (i < length) {
-        U16_NEXT(characters, i, length, c)
+        U16_NEXT(characters, i, length, c);
         if (!isValidNamePart(c))
             return false;
     }
@@ -3914,7 +3914,7 @@
     const UChar* s = qualifiedName.characters();
     for (unsigned i = 0; i < length;) {
         UChar32 c;
-        U16_NEXT(s, i, length, c)
+        U16_NEXT(s, i, length, c);
         if (c == ':') {
             if (sawColon) {
                 ec = NAMESPACE_ERR;
--- Source/JavaScriptCore/API/JSStringRef.cpp.orig	2014-09-11 03:48:22.000000000 -0700
+++ Source/JavaScriptCore/API/JSStringRef.cpp	2019-10-22 18:44:31.000000000 -0700
@@ -37,7 +37,7 @@
 JSStringRef JSStringCreateWithCharacters(const JSChar* chars, size_t numChars)
 {
     initializeThreading();
-    return OpaqueJSString::create(chars, numChars).leakRef();
+    return OpaqueJSString::create(reinterpret_cast<const UChar*>(chars), numChars).leakRef();
 }
 
 JSStringRef JSStringCreateWithUTF8CString(const char* string)
@@ -62,7 +62,7 @@
 JSStringRef JSStringCreateWithCharactersNoCopy(const JSChar* chars, size_t numChars)
 {
     initializeThreading();
-    return OpaqueJSString::create(StringImpl::createWithoutCopying(chars, numChars, WTF::DoesNotHaveTerminatingNullCharacter)).leakRef();
+    return OpaqueJSString::create(StringImpl::createWithoutCopying(reinterpret_cast<const UChar*>(chars), numChars, WTF::DoesNotHaveTerminatingNullCharacter)).leakRef();
 }
 
 JSStringRef JSStringRetain(JSStringRef string)
@@ -83,7 +83,7 @@
 
 const JSChar* JSStringGetCharactersPtr(JSStringRef string)
 {
-    return string->characters();
+    return reinterpret_cast<const JSChar*>(string->characters());
 }
 
 size_t JSStringGetMaximumUTF8CStringSize(JSStringRef string)
--- Source/WTF/wtf/TypeTraits.h.orig	2014-09-11 03:48:11.000000000 -0700
+++ Source/WTF/wtf/TypeTraits.h	2019-10-23 05:19:48.000000000 -0700
@@ -72,6 +72,9 @@
     template<> struct IsInteger<unsigned long>      { static const bool value = true; };
     template<> struct IsInteger<long long>          { static const bool value = true; };
     template<> struct IsInteger<unsigned long long> { static const bool value = true; };
+#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(_HAS_CHAR16_T_LANGUAGE_SUPPORT) && _HAS_CHAR16_T_LANGUAGE_SUPPORT)
+    template<> struct IsInteger<char16_t>           { static const bool value = true; };
+#endif
 #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED)
     template<> struct IsInteger<wchar_t>            { static const bool value = true; };
 #endif
--- Source/WebKit2/Shared/API/c/WKString.cpp.orig	2014-09-11 03:48:24.000000000 -0700
+++ Source/WebKit2/Shared/API/c/WKString.cpp	2019-10-23 08:30:40.000000000 -0700
@@ -55,7 +55,7 @@
 size_t WKStringGetCharacters(WKStringRef stringRef, WKChar* buffer, size_t bufferLength)
 {
     COMPILE_ASSERT(sizeof(WKChar) == sizeof(UChar), WKStringGetCharacters_sizeof_WKChar_matches_UChar);
-    return (toImpl(stringRef)->getCharacters(static_cast<UChar*>(buffer), bufferLength));
+    return (toImpl(stringRef)->getCharacters(reinterpret_cast<UChar*>(buffer), bufferLength));
 }
 
 size_t WKStringGetMaximumUTF8CStringSize(WKStringRef stringRef)