You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to build jerryscript for the esp32. Due to the fact that the esp32 has no 64-Bit FPU, doubles are very slow. Sadly the JERRY_NUMBER_TYPE_FLOAT64=0 config option seems to be broken and there are multiple compile errors, even when specifying JERRY_BUILTIN_DATE=0. There seem to be multiple issues, fixing the first one about the semicolon isn't enough and I don't know how to fix the rest.
To reproduce this, just checkout the latest commit, edit jerry-core/config.h and add the following lines:
In file included from /home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:16:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_sign’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.h:106:41: error: expected ‘)’ before ‘;’ token
106 | #define ECMA_NUMBER_SIGN_BIT 0x7f800000u;
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:79:20: note: in expansion of macro ‘ECMA_NUMBER_SIGN_BIT’
79 | return (binary & ECMA_NUMBER_SIGN_BIT) != 0;
| ^~~~~~~~~~~~~~~~~~~~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:79:10: note: to match this ‘(’
79 | return (binary & ECMA_NUMBER_SIGN_BIT) != 0;
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_biased_exp’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.h:106:41: error: expected ‘)’ before ‘;’ token
106 | #define ECMA_NUMBER_SIGN_BIT 0x7f800000u;
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:90:33: note: in expansion of macro ‘ECMA_NUMBER_SIGN_BIT’
90 | return (uint32_t) ((binary & ~ECMA_NUMBER_SIGN_BIT) >> ECMA_NUMBER_FRACTION_WIDTH);
| ^~~~~~~~~~~~~~~~~~~~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:90:22: note: to match this ‘(’
90 | return (uint32_t) ((binary & ~ECMA_NUMBER_SIGN_BIT) >> ECMA_NUMBER_FRACTION_WIDTH);
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_create’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:120:13: error: conversion from ‘uint64_t’ {aka ‘long unsigned int’} to ‘ecma_binary_num_t’ {aka ‘unsigned int’} may change value [-Werror=conversion]
120 | binary |= fraction;
| ^~~~~~~~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_is_negative’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.h:106:41: error: expected ‘)’ before ‘;’ token
106 | #define ECMA_NUMBER_SIGN_BIT 0x7f800000u;
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:200:41: note: in expansion of macro ‘ECMA_NUMBER_SIGN_BIT’
200 | return (ecma_number_to_binary (num) & ECMA_NUMBER_SIGN_BIT) != 0;
| ^~~~~~~~~~~~~~~~~~~~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:200:10: note: to match this ‘(’
200 | return (ecma_number_to_binary (num) & ECMA_NUMBER_SIGN_BIT) != 0;
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_is_infinity’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.h:106:41: error: expected ‘)’ before ‘;’ token
106 | #define ECMA_NUMBER_SIGN_BIT 0x7f800000u;
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:232:42: note: in expansion of macro ‘ECMA_NUMBER_SIGN_BIT’
232 | return (ecma_number_to_binary (num) & ~ECMA_NUMBER_SIGN_BIT) == ECMA_NUMBER_BINARY_INF;
| ^~~~~~~~~~~~~~~~~~~~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:232:10: note: to match this ‘(’
232 | return (ecma_number_to_binary (num) & ~ECMA_NUMBER_SIGN_BIT) == ECMA_NUMBER_BINARY_INF;
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:232:64: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
232 | return (ecma_number_to_binary (num) & ~ECMA_NUMBER_SIGN_BIT) == ECMA_NUMBER_BINARY_INF;
| ^~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_get_prev’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:262:10: error: conversion from ‘double’ to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=float-conversion]
262 | return __builtin_nextafter (num, -INFINITY);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_get_next’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:297:10: error: conversion from ‘double’ to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=float-conversion]
297 | return __builtin_nextafter (num, INFINITY);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_trunc’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:348:13: error: conversion from ‘long long unsigned int’ to ‘ecma_binary_num_t’ {aka ‘unsigned int’} may change value [-Werror=conversion]
348 | binary &= ~((1ull << (ECMA_NUMBER_FRACTION_WIDTH - unbiased_exp)) - 1);
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c: In function ‘ecma_number_parse_int’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:545:11: error: conversion from ‘int32_t’ {aka ‘int’} to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=conversion]
545 | value *= radix;
| ^~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-number.c:546:11: error: conversion from ‘int32_t’ {aka ‘int’} to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=conversion]
546 | value += digit;
| ^~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-conversion.c: In function ‘ecma_utf8_string_to_number_by_radix’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-conversion.c:333:15: error: conversion from ‘uint32_t’ {aka ‘unsigned int’} to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=conversion]
333 | num = num * radix + value;
| ^
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-conversion.c:333:23: error: conversion from ‘uint32_t’ {aka ‘unsigned int’} to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=conversion]
333 | num = num * radix + value;
| ^
cc1: all warnings being treated as errors
make[2]: *** [jerry-core/CMakeFiles/jerry-core.dir/build.make:272: jerry-core/CMakeFiles/jerry-core.dir/ecma/base/ecma-helpers-number.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-conversion.c: In function ‘ecma_utf8_string_to_number’:
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-conversion.c:630:50: error: ‘fraction_uint64’ undeclared (first use in this function)
630 | ecma_number_t num = (ecma_number_t) (uint32_t) fraction_uint64;
| ^~~~~~~~~~~~~~~
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-conversion.c:630:50: note: each undeclared identifier is reported only once for each function it appears in
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-conversion.c:632:21: error: ‘e_sign’ undeclared (first use in this function); did you mean ‘sign’?
632 | ecma_number_t m = e_sign ? (ecma_number_t) 0.1 : (ecma_number_t) 10.0;
| ^~~~~~
| sign
/home/vayu/Programs/jerryscript/jerry-core/ecma/base/ecma-helpers-conversion.c:634:10: error: ‘e’ undeclared (first use in this function)
634 | while (e)
| ^
[ 13%] Building C object jerry-core/CMakeFiles/jerry-core.dir/ecma/builtin-objects/ecma-builtin-bigint-prototype.c.o
cc1: all warnings being treated as errors
make[2]: *** [jerry-core/CMakeFiles/jerry-core.dir/build.make:230: jerry-core/CMakeFiles/jerry-core.dir/ecma/base/ecma-helpers-conversion.c.o] Error 1
/home/vayu/Programs/jerryscript/jerry-core/api/jerryscript.c: In function ‘jerry_value_as_integer’:
/home/vayu/Programs/jerryscript/jerry-core/api/jerryscript.c:2251:27: error: conversion from ‘double’ to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=float-conversion]
2251 | if (ecma_number_is_nan (number))
| ^~~~~~
/home/vayu/Programs/jerryscript/jerry-core/api/jerryscript.c:2256:28: error: conversion from ‘double’ to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=float-conversion]
2256 | if (ecma_number_is_zero (number) || ecma_number_is_infinity (number))
| ^~~~~~
/home/vayu/Programs/jerryscript/jerry-core/api/jerryscript.c:2256:64: error: conversion from ‘double’ to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=float-conversion]
2256 | if (ecma_number_is_zero (number) || ecma_number_is_infinity (number))
| ^~~~~~
/home/vayu/Programs/jerryscript/jerry-core/api/jerryscript.c:2263:35: error: conversion from ‘double’ to ‘ecma_number_t’ {aka ‘float’} may change value [-Werror=float-conversion]
2263 | return ecma_number_is_negative (number) ? -floor_fabs : floor_fabs;
| ^~~~~~
cc1: all warnings being treated as errors
make[2]: *** [jerry-core/CMakeFiles/jerry-core.dir/build.make:132: jerry-core/CMakeFiles/jerry-core.dir/api/jerryscript.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:179: jerry-core/CMakeFiles/jerry-core.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
==============================
Build failed with exit code: 2
==============================
The text was updated successfully, but these errors were encountered:
I'm trying to build jerryscript for the esp32. Due to the fact that the esp32 has no 64-Bit FPU, doubles are very slow. Sadly the JERRY_NUMBER_TYPE_FLOAT64=0 config option seems to be broken and there are multiple compile errors, even when specifying JERRY_BUILTIN_DATE=0. There seem to be multiple issues, fixing the first one about the semicolon isn't enough and I don't know how to fix the rest.
To reproduce this, just checkout the latest commit, edit jerry-core/config.h and add the following lines:
JerryScript revision
05dbbd1
Build platform
"Arch Linux" (Linux 6.3.1-arch2-1 x86_64
Build steps
Build log
The text was updated successfully, but these errors were encountered: