Make makeSetValue rounding consistent with HEAP64 semantics#19239
Merged
Make makeSetValue rounding consistent with HEAP64 semantics#19239
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change does two things:
Require 8 byte alignment for
makeSetValueof i64. Natural alignment is already required for all other types inmakeSetValueand I don't know of good reason not to require this also for i64. The comment here implied that perhaps i64 was not always 8 bytes aligned, perhaps in the fastcomp days. But with wasm32 and wasm64 i64 should always be 8 bytes aligned. Folks with unaligned data already cannot use makeGetValue/makeSetValue.Make
splitI64consistent withHEAP64in the way it handles numbers that are outside the i64 range. i.e. truncationWithout the second part of the change the
other.test_parseTools_bigintwill fail because it will useHEAP64.setto set the value rather thansplitI64, andHEAP64.setwrites0x2233445566780000rather than0xffffffff66780000.The existing behaviour of
splitI64to write0xffffffff66780000seems rather odd since it seems to use saturation, but only for the upper half.