A transformer of code models to models that build them. #37
+515
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A building code model when executed will construct the same code model it was transformed from. Such a building code model could be transformed to bytecode and stored in class files. This may be a better cross platform alternative than storing the textual form in class files (the form of which would need to be specified).
The implementation is using the operation factory and type factory to construct operations and types from their more general definitions (similarly to how they are used by the parser).
It would be interesting to compare the size of class files with the embedded textual form of a code model and the generated bytecode to build the code model. We could be more efficient but the implementation cost is not worth it, at least for now and would require further evaluation of that cost.
Progress
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/babylon.git pull/37/head:pull/37
$ git checkout pull/37
Update a local copy of the PR:
$ git checkout pull/37
$ git pull https://git.openjdk.org/babylon.git pull/37/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 37
View PR using the GUI difftool:
$ git pr show -t 37
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/babylon/pull/37.diff
Webrev
Link to Webrev Comment