-
Notifications
You must be signed in to change notification settings - Fork 121
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move notification of non-local classes to
API
Registers only non-local generated classes in the callback by extracting information about its names and using the names to generate class file paths. Mimics the previous logic that was present in `Analyzer`, despite the fact that now we construct the names that the compiler will give to every non-local class independently of genbcode. Why do we do this? The motivation is that we want to run the incremental algorithm independently of the compiler pipeline. This independence enables us to: 1. Offload the incremental compiler logic out of the primary pipeline and run the incremental phases concurrently. 2. Know before the compilation is completed whether another compilation will or will not be required. This is important to make incremental compilation work with pipelining and enables further optimizations; for example, we can start subsequent incremental compilations before (!) the initial compilation is done. This can buy us ~30-40% faster incremental compiler iterations. This method only takes care of non-local classes because local clsases have no relevance in the correctness of the algorithm and can be registered after genbcode. Local classes are only used to contruct the relations of products and to produce the list of generated files + stamps, but names referring to local classes **never** show up in the name hashes of classes' APIs, hence never considered for name hashing. As local class files are owned by other classes that change whenever they change, we could most likely live without adding their class files to the products relation and registering their stamps. However, to be on the safe side, we will continue to register the local products in `Analyzer`.
- Loading branch information
Showing
4 changed files
with
152 additions
and
21 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