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

Fix launchers and completion injection #135

Draft
wants to merge 23 commits into
base: main
Choose a base branch
from

Conversation

jackcviers
Copy link
Collaborator

NOT TO BE MERGED -- DRAFT ONLY

* Working on completion injection
* Working on completion substitutiton
* Moves the frame builder to an external extension method on the transformedMethodSymbol
* Adds typeExtensions to make making OrNull and OrTypes easier:
  ```scala
	someType | someOtherType =:= OrType(someType, someOtherType, true)
	someType.? =:= OrNull(someType)
	```
* Fixes block application in Deferred launcher
* moves some additional string names to the constants file
* Adds TransformedMethodKey and TransformedMethod to the
* Uses putAttachment to attatch the transformed method to its subtrees
to allow for local variable reconstruction in the transformation
ContinuationsPhase companion
* Constructs a Thicket around the original method rhs. Then collects
the trees until a tree calling shift is encountered into a list of
thickets, each ending in a call to shift. Finally, constructs the
state machine match tree, creating a CaseDef for each thicket, then
appends the final invocation error case.
* Extracts IllegalArgumentException full name to constants
* Extracts resumeBeforeInvoke message to constants
* Identifies the inlined calls to replace
* TODO -- add initialization
* TODO finish the safe resume transformation
* fixes bad denotation
* TODO -- on 0 case, remove second part of iteration initialization
and generated label.
* TODO: Check intermediate variable names
* TODO: Handle ownership of nested trees
* TODO: Debug which option in the return value is not working
* TODO: Replace suspension point values with reserved variables
* Makes the intermediate states return from the appropiate label
* Replaces the raw values with continuation initialized value refs
* TODO: Fix unbound placeholder parameter
* Todo: Fix GenBCode (probably a non-entered symbol somewhere)
* Transformation is now fully done via TreeTypeMap with substitution
* TODO values inside the anonymous function appear to be discarded --
figure out why
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant