Skip to content
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

Sync to upstream/release/566 #853

Merged
merged 86 commits into from
Mar 3, 2023
Merged

Sync to upstream/release/566 #853

merged 86 commits into from
Mar 3, 2023

Conversation

vegorov-rbx
Copy link
Collaborator

We also made many improvements to our experimental components.

For our new type solver:

  • Overhauled data flow analysis system, fixed issues with 'repeat' loops, global variables and type annotations
  • Type refinements now work on generic table indexing with a string literal
  • Type refinements will properly track potentially 'nil' values (like t[x] for a missing key) and their further refinements
  • Internal top table type is now isomorphic to {} which fixes issues when typeof(v) == 'table' type refinement is handled
  • References to non-existent types in type annotations no longer resolve to 'error' type like in old solver
  • Improved handling of class unions in property access expressions
  • Fixed default type packs
  • Unsealed tables can now have metatables
  • Restored expected types for function arguments

And for native code generation:

  • Added min and max IR instructions mapping to vminsd/vmaxsd on x64
  • We now speculatively extract direct execution fast-paths based on expected types of expressions which provides better optimization opportunities inside a single basic block
  • Translated existing math fastcalls to IR form to improve tag guard removal and constant propagation

@vegorov-rbx vegorov-rbx merged commit 140e5a1 into master Mar 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

InterpStringMid appears to be impossible to create Issues using Clang with Visual Studio 2022
3 participants