diff --git a/Source/JavaScriptCore/runtime/MathCommon.h b/Source/JavaScriptCore/runtime/MathCommon.h index b049b32a1ef6..10204adb4461 100644 --- a/Source/JavaScriptCore/runtime/MathCommon.h +++ b/Source/JavaScriptCore/runtime/MathCommon.h @@ -182,6 +182,12 @@ ALWAYS_INLINE int32_t toInt32(double number) int32_t result = 0; __asm__ ("fjcvtzs %w0, %d1" : "=r" (result) : "w" (number) : "cc"); return result; +#elif CPU(X86_64) && COMPILER(GCC_COMPATIBLE) + int32_t result; + __asm__ ("cvttsd2si %1, %0" : "=r" (result) : "x" (number)); + if (static_cast(result) != number) + return toIntImpl(number); + return result; #else return toIntImpl(number); #endif diff --git a/Source/JavaScriptCore/runtime/TypedArrayAdaptors.h b/Source/JavaScriptCore/runtime/TypedArrayAdaptors.h index b6c443ca1833..4dd85f48d8b1 100644 --- a/Source/JavaScriptCore/runtime/TypedArrayAdaptors.h +++ b/Source/JavaScriptCore/runtime/TypedArrayAdaptors.h @@ -68,14 +68,7 @@ struct IntegralTypedArrayAdaptor { static Type toNativeFromDouble(double value) { -#if HAVE(FJCVTZS_INSTRUCTION) return static_cast(toInt32(value)); -#else - int32_t result = static_cast(value); - if (static_cast(result) != value) - result = toInt32(value); - return static_cast(result); -#endif } static constexpr Type toNativeFromUndefined()