-
Notifications
You must be signed in to change notification settings - Fork 18k
syscall/js: allocate arg slices on stack for small numbers of args #66684
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This PR (HEAD: c29c1b7) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/576575. Important tips:
|
Message from Gopher Robot: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Gopher Robot: Patch Set 1: Congratulations on opening your first change. Thank you for your contribution! Next steps: Most changes in the Go project go through a few rounds of revision. This can be During May-July and Nov-Jan the Go project is in a code freeze, during which Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Putting this here for posterity (Also linked in code review: https://go-review.googlesource.com/c/go/+/576575/comments/16d89df8_6a869458 ) Hi, Thanks for reviewing this change. I just wanted to give some additional context about this change and where it came from. As I did not author all of it. The original research and work was done by finnbear (https://github.com/finnbear): #49799 - I'm hoping to help get his changes through the review process. Notes from his original PR (this is from Finnbear):
This is my first PR to golang, so please let me know if I've done anything incorrectly, or if you need anything else! Thanks! |
Message from Jacob Stewart: Patch Set 2: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Jacob Stewart: Patch Set 2: (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Cherry Mui: Patch Set 2: Commit-Queue+1 (6 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 2: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2024-04-04T21:29:07Z","revision":"0ce27014775373c0d26c2069213ac4bdf1999ebd"} Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Cherry Mui: Patch Set 2: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 2: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 2: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
This PR (HEAD: c5a7508) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/576575. Important tips:
|
Message from Jacob Stewart: Patch Set 3: (7 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Cherry Mui: Patch Set 3: Commit-Queue+1 (3 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 3: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2024-04-17T19:32:17Z","revision":"725ed8063eaf707bcd890528e1b99cd9e607a350"} Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Cherry Mui: Patch Set 3: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 3: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 3: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
The existing implementation causes unnecessary heap allocations for javascript syscalls: Call, Invoke, and New. The new change seeks to hint the Go compiler to allocate arg slices with length <=16 to the stack. Original Work: CL 367045 - Calling a JavaScript function with 16 arguments or fewer will not induce two additional heap allocations, at least with the current Go compiler. - Using syscall/js features with slices and strings of statically-known length will not cause them to be escaped to the heap, at least with the current Go compiler. - The reduction in allocations has the additional benefit that the garbage collector runs less often, blocking WebAssembly's one and only thread less often. Fixes golang#39740
This PR (HEAD: 36df1b3) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/576575. Important tips:
|
Message from Jacob Stewart: Patch Set 4: (4 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Cherry Mui: Patch Set 4: Code-Review+2 Commit-Queue+1 (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 4: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2024-04-18T16:32:27Z","revision":"2766bebd7035d7ba443e8ae394f1b7fa682373d2"} Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Cherry Mui: Patch Set 4: -Commit-Queue Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 4: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Go LUCI: Patch Set 4: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
Message from Dmitri Shuralyov: Patch Set 4: Code-Review+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/576575. |
The existing implementation causes unnecessary heap allocations for javascript syscalls: Call, Invoke, and New. The new change seeks to hint the Go compiler to allocate arg slices with length <=16 to the stack. Original Work: CL 367045 - Calling a JavaScript function with 16 arguments or fewer will not induce two additional heap allocations, at least with the current Go compiler. - Using syscall/js features with slices and strings of statically-known length will not cause them to be escaped to the heap, at least with the current Go compiler. - The reduction in allocations has the additional benefit that the garbage collector runs less often, blocking WebAssembly's one and only thread less often. Fixes #39740 Change-Id: I815047e1d4f8ada796318e2064d38d3e63f73098 GitHub-Last-Rev: 36df1b3 GitHub-Pull-Request: #66684 Reviewed-on: https://go-review.googlesource.com/c/go/+/576575 Reviewed-by: Cherry Mui <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]>
This PR is being closed because golang.org/cl/576575 has been merged. |
The existing implementation causes unnecessary heap allocations for
javascript syscalls: Call, Invoke, and New. The new change seeks to
hint the Go compiler to allocate arg slices with length <=16 to the
stack.
Original Work: CL 367045
induce two additional heap allocations, at least with the current Go
compiler.
statically-known length will not cause them to be escaped to the heap,
at least with the current Go compiler.
garbage collector runs less often, blocking WebAssembly's one and only
thread less often.
Fixes #39740