Restore 'computed goto' code generation for the VM loop on VS2022 #1751
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 patch adds an
__assume
statement for passed assertations (on release builds) and switches the interpreter loop to using a while-switch instead of a goto-switch loop on MSVC. This seems to prevent the performance regression experienced on 2022, and the end result is two less basic blocks in the dispatch logic.__assume
safetyThis patch changes the behavior of assertions on release builds. Any assertion that would throw on a debug build now invokes undefined behavior on a release build. In my testing, this seemed to have a minimal impact on performance on MSVC (within standard error on most benchmarks) so the __assume changes can be reverted if there's a concern.
i9-9900
Compared against 0.666
'luau.exe' change is 7.502% positive on average
Table
i7-1065G7
Compared against 0.666
'luau.exe' change is 4.434% positive on average
Table