Skip to content

Instantly share code, notes, and snippets.

@abeln
Created January 8, 2019 17:03
Show Gist options
  • Save abeln/028cfa66c11df2a9d8fce954737980bc to your computer and use it in GitHub Desktop.
Save abeln/028cfa66c11df2a9d8fce954737980bc to your computer and use it in GitHub Desktop.
Unpickling logic in Dotty
ClassFileLoader (SymbolLoader)
|
v
ClassFileParser
|
v
run()
|
v
parseClass()
|
v
unpickleOrParseInnerClass()
|
v
unpickleTASTY()
|
v
DottyUnpickler (TreeProvider (a marker trait with a `rootTrees` method))
|
v
enter(classRoot, moduleRoot) // SymDenotations
|
v
TastyUnpickler
* reads header
* reads name table
* creates readers for each section
- unpickle() // unpickle a given section
|
v
SectionUnpickler
|
v
TreeUnpickler (main unpickling logic)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment