Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Improve consistency of JS_NewFloat64 API #319

Merged
merged 7 commits into from
Mar 25, 2024

Conversation

chqrlie
Copy link
Collaborator

@chqrlie chqrlie commented Mar 16, 2024

  • JS_NewFloat64() always creates a JS_TAG_FLOAT64 value
  • rename __JS_NewFloat64 as JS_NewFloat64__ to avoid reserved name issue
  • internal js_float64() always creates a JS_TAG_FLOAT64 value
  • add js_int64 internal function for consistency
  • simplify float_is_int32 and rename as double_is_int32
  • handle INT32_MIN in double_is_int32
  • add js_number(d) to create a JS_TAG_FLOAT64 or a JS_TAG_INT value if possible
  • add JS_NewNumber() API for the same purpose
  • use non testing constructor for infinities in js_atof2
  • always store internal time value as a float64
  • merge JS_NewBigInt64_1 into JS_NewBigInt64

chqrlie added 2 commits March 16, 2024 09:24
- `JS_NewFloat64()` always creates a `JS_TAG_FLOAT64` value
- rename `__JS_NewFloat64` as `JS_NewFloat64__` to avoid reserved name issue
- internal `js_float64()` always creates a `JS_TAG_FLOAT64` value
- add `js_int64` internal function for consistency
- simplify `float_is_int32` and rename as `double_is_int32`
- handle `INT32_MIN` in `double_is_int32`
- add `js_number(d)` to create a `JS_TAG_FLOAT64` or a `JS_TAG_INT` value
  if possible
- add `JS_NewNumber()` API for the same purpose
- use non testing constructor for infinities in `js_atof2`
- always store internal time value as a float64
- merge `JS_NewBigInt64_1` into `JS_NewBigInt64`
@chqrlie
Copy link
Collaborator Author

chqrlie commented Mar 17, 2024

@bnoordhuis do you approve this PR? I would like to move ahead with other features and commit to bellard/quickjs too.

} else {
// fractional if low bits are non-zero
return !(u << 12 << e);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I'm being brutally honest, I feel the old version of this function is more legible. Machine code-wise, it's probably a wash; I don't expect this version to be particularly faster.

@chqrlie chqrlie merged commit 3b50de4 into quickjs-ng:master Mar 25, 2024
38 checks passed
@chqrlie chqrlie deleted the fix-js-float64 branch March 26, 2024 12:24
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants