Fix float32 again
JerryScript CI / Checks (push) Failing after 22s
JerryScript CI / Linux_x86_cpointer-32bit_Build_Correctness_Tests (push) Failing after 16s
JerryScript CI / Linux_x86-64_Build_Option_Tests (push) Failing after 14s
JerryScript CI / Conformance_Tests_ESNext_Debug_B (push) Failing after 10s
JerryScript CI / ASAN_Tests (push) Failing after 14s
JerryScript CI / ASAN_Tests_Debug (push) Failing after 15s
JerryScript CI / UBSAN_Tests (push) Failing after 14s
JerryScript CI / Linux_ARMv7l_Tests (push) Failing after 15s
JerryScript CI / Linux_ARMv7l_Tests_Debug (push) Failing after 14s
JerryScript CI / Linux_AArch64_Tests (push) Failing after 14s
JerryScript CI / Linux_x86-64_Build_Correctness_Debugger_Tests (push) Failing after 8s
JerryScript CI / Conformance_Tests_ESNext (push) Failing after 10s
JerryScript CI / Conformance_Tests_ESNext_Debug_A (push) Failing after 10s
JerryScript CI / Unit_Tests (push) Failing after 8s
JerryScript CI / Clang_Unit_Build_Option_Tests (push) Failing after 16s
JerryScript CI / Zephyr_STM32F4_Build_Test (push) Failing after 14s
JerryScript CI / Win_x86-64_Conformance_Tests_ESNext_Debug (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests-MINGW (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests (push) Has been cancelled
JerryScript CI / Win_x86-64_Tests_Debug (push) Has been cancelled
JerryScript CI / OSX_x86-64_Build_Correctness_Unit_Tests_Debug (push) Has been cancelled
JerryScript CI / Linux_AArch64_Tests_Debug (push) Failing after 14s
JerryScript CI / MbedOS_K64F_Build_Test (push) Failing after 15s
JerryScript CI / NuttX_STM32F4_Build_Test (push) Failing after 15s
JerryScript CI / Win_x86-64_Conformance_Tests_ESNext (push) Has been cancelled
JerryScript CI / OSX_x86-64_Build_Correctness_Unit_Tests (push) Has been cancelled
JerryScript CI / ESP8266_RTOS_SDK_Build_Test (push) Has been cancelled
JerryScript CI / ESP_IDF_Build_Test (push) Has been cancelled
JerryScript CI / Notification (push) Has been cancelled
JerryScript CI / RIOT_STM32F4_Build_Test (push) Has been cancelled

This commit is contained in:
2026-04-28 21:03:21 -05:00
parent 5cced37f43
commit 0ed67e6a53
12 changed files with 51 additions and 36 deletions
@@ -333,7 +333,7 @@ ecma_utf8_string_to_number_by_radix (const lit_utf8_byte_t *str_p, /**< utf-8 st
return ecma_number_make_nan ();
}
num = num * radix + value;
num = num * (ecma_number_t) radix + (ecma_number_t) value;
}
return num;
@@ -630,7 +630,10 @@ ecma_utf8_string_to_number (const lit_utf8_byte_t *str_p, /**< utf-8 string */
return ecma_number_create (sign, (uint32_t) binary_exponent, significand);
#elif !JERRY_NUMBER_TYPE_FLOAT64
/* Less precise conversion */
ecma_number_t num = (ecma_number_t) (uint32_t) fraction_uint64;
ecma_number_t num = (ecma_number_t) (uint32_t) significand;
bool e_sign = decimal_exponent < 0;
int32_t e = e_sign ? -decimal_exponent : decimal_exponent;
ecma_number_t m = e_sign ? (ecma_number_t) 0.1 : (ecma_number_t) 10.0;
@@ -645,7 +648,7 @@ ecma_utf8_string_to_number (const lit_utf8_byte_t *str_p, /**< utf-8 string */
e /= 2;
}
return num;
return sign ? -num : num;
#endif /* JERRY_NUMBER_TYPE_FLOAT64 */
} /* ecma_utf8_string_to_number */
+12 -4
View File
@@ -117,7 +117,7 @@ ecma_number_create (bool sign, /**< sign */
ecma_binary_num_t binary = biased_exp;
binary <<= ECMA_NUMBER_FRACTION_WIDTH;
binary |= fraction;
binary |= (ecma_binary_num_t) fraction;
if (sign)
{
@@ -259,7 +259,11 @@ ecma_number_t JERRY_ATTR_CONST
ecma_number_get_prev (ecma_number_t num) /**< ecma-number */
{
#if defined(__GNUC__) || defined(__clang__)
#if JERRY_NUMBER_TYPE_FLOAT64
return __builtin_nextafter (num, -INFINITY);
#else /* !JERRY_NUMBER_TYPE_FLOAT64 */
return __builtin_nextafterf (num, -INFINITY);
#endif /* JERRY_NUMBER_TYPE_FLOAT64 */
#else /* !defined (__GNUC__) && !defined (__clang__) */
JERRY_ASSERT (!ecma_number_is_nan (num));
ecma_binary_num_t binary = ecma_number_to_binary (num);
@@ -294,7 +298,11 @@ ecma_number_t JERRY_ATTR_CONST
ecma_number_get_next (ecma_number_t num) /**< ecma-number */
{
#if defined(__GNUC__) || defined(__clang__)
#if JERRY_NUMBER_TYPE_FLOAT64
return __builtin_nextafter (num, INFINITY);
#else /* !JERRY_NUMBER_TYPE_FLOAT64 */
return __builtin_nextafterf (num, INFINITY);
#endif /* JERRY_NUMBER_TYPE_FLOAT64 */
#else /* !defined (__GNUC__) && !defined (__clang__) */
JERRY_ASSERT (!ecma_number_is_nan (num));
ecma_binary_num_t binary = ecma_number_to_binary (num);
@@ -345,7 +353,7 @@ ecma_number_trunc (ecma_number_t num) /**< ecma-number */
return num;
}
binary &= ~((1ull << (ECMA_NUMBER_FRACTION_WIDTH - unbiased_exp)) - 1);
binary &= ~(((ecma_binary_num_t) 1 << (ECMA_NUMBER_FRACTION_WIDTH - unbiased_exp)) - 1);
return ecma_number_from_binary (binary);
} /* ecma_number_trunc */
@@ -542,8 +550,8 @@ ecma_number_parse_int (const lit_utf8_byte_t *str_p, /**< routine's first argume
break;
}
value *= radix;
value += digit;
value *= (ecma_number_t) radix;
value += (ecma_number_t) digit;
str_p++;
}