-
Frank Tang authored
This is a reland of commit a165e82e The reason of revert is SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../../src/objects/js-temporal-objects.cc:3837:22 which is the line "nanoseconds_mv = std::round((seconds_mv - std::floor(seconds_mv)) * 1e9);" where seconds_mv is a double and nanoseconds_mv is a int32_t In this reland, we change the type of nanoseconds_mv to double to avoid the ubsan error. Original change's description: > [Temporal] Use double/int32_t instead of int64_t for duration parsing > > Use double and int32_t instead of int64_t in duration parsing result > so we can parse very large duration fields as infinity and throw RangeError in later stages. The three fractional parts can hold up value from 0 to 999,999,999 so we use int32_t to hold it. Other part could be infinity so we use double to hold it. Also rearrange the order of the three int32_t in the struct ParsedISO8601Duration after all the double > > Bug: v8:11544 > Change-Id: I7e5b02f7c7bbb60997f1419f016aed61dd3e0d6c > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3840761 > Reviewed-by: Shu-yu Guo <syg@chromium.org> > Commit-Queue: Frank Tang <ftang@chromium.org> > Cr-Commit-Position: refs/heads/main@{#82754} Bug: v8:11544 Change-Id: If8b72cb4912d8b4fc4c286fc856ea59df5cf0bb7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3858576Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/main@{#83090}
14d9b9a2