-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
adds a world counter and threads it everywhere and tracks all backedges add tests for some versions of #265 also updates the compile test to be world-aware and add docs for method replacement / world age note that MethodTables need to Base.serialized in a world-aware manner and MethodError needs to be world aware the age in MethodInstance is a copy of the value returned by typemap lookup since we don't currently have a mechanism for accessing that value directly plus, this seems easier anyways handle MethodInstance age range updates correctly means only updating them in-place when that doesn't potentially invalidate other consumers that might also be holding a reference to it and propagate this through the callers to type-inference virtual edges are tracked via exact signature tuple types inference is pure for backedges meaning that we only add backedges that exist at the end of inference and then add them to the correct MethodInstance object which also make codegen caching world-aware min/max validity of ml-matches results is threaded out of jl_matching_methods into inference eventually should probably switch this to use a Ref, or return the value, or something similarly more efficient than a singleton Array, but currently refpointer.jl is not part of Core.Inference incremental deserialize is aware of world counter logic by handling the follow cases: - "free-standing" methods (where age is at the default of 0), probably from a toplevel thunk or deserialize - garbage methods (really we just want to delete these, but, oh well). this is something inferred to have been replaced - applicable methods (this is the overwhelming majority of cases) the logic between TypeMapEntry, Method, and MethodInstance all agree on these concepts this uses Expr(:body) as an argument to eval to ensure that eval won't call expand, which ensures that QuoteNode works correctly and the eval is reasonably fast
- Loading branch information
Showing
48 changed files
with
2,017 additions
and
743 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.