Skip to content
This repository was archived by the owner on Oct 28, 2025. It is now read-only.
This repository was archived by the owner on Oct 28, 2025. It is now read-only.

performance of Uint8Array.prototype.setFrom{Base64,Hex} #57

Closed

Description

@phoddie

The excellent notes from @anba on additional tests made me realize that XS does not implement these methods as expected by the spec text.

Uint8Array.prototype.setFrom{Base64,Hex} doesn't modify the typed array when the input string is invalid.

My recollection is that BYOB was proposed by @syg as a performance optimization. Requiring full validation of the input before modifying the output reduces the performance gain: either two full passes over the source data are necessary or a temporary buffer is needed to store the decoded data before updating the destination.

If leaving the destination unmodified for invalid input takes priority, that's fine. But, since performance was the motivator, I want to check before making changes. I couldn't find previous discussion about this tradeoff.

Activity

  1. bakkot commented on Apr 15, 2024

    @bakkot
    Member

    I originally wrote it this way because it's more consistent with a general philosophy of "validate the input, then process it", but it does seem wasteful to require a second pass or temp buffer, especially in the common case of valid input. I don't think there was any discussion of this.

    I'll put an item on the agenda for the next meeting.

  2. bakkot commented on Apr 15, 2024

    @bakkot
    Member

    PR: #58

  3. bakkot commented on Aug 8, 2024

    @bakkot
    Member

    Done in #58, tests in tc39/test262#4133.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions