-
Notifications
You must be signed in to change notification settings - Fork 30
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
Handle Eager Primitive Specialization without huge switch/case #30
Merged
Conversation
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
67b4f25
to
5bd37e4
Compare
Signed-off-by: Stefan Marr <git@stefan-marr.de>
29b4bec
to
ac5979f
Compare
Signed-off-by: Stefan Marr <git@stefan-marr.de>
The goal is to avoid hardcoded switch/case statements. - made @primitive repeatable annotation - added additional attributes to @primitive - made `primitive` property optional to be able to express all type constraints for a single selector easily (see SqrtPrim). - added Specializer class to allow for primitive specific guards and instantiation. Since annotations can only have primitive values, this is required for guards. - made primitive constructors more uniform - fix code deprecations (introduce during rebasing of this branch)
- takes common code for eagerlyWrapped tag handling - has factory method for wrapper objects - generalize the `makeEager*Prim` method to a common one - make sure makeEagerPrim is properly synced - QuaternaryExpressionNode also EagerlySpecializableNode Signed-off-by: Stefan Marr <git@stefan-marr.de>
Signed-off-by: Stefan Marr <git@stefan-marr.de>
712aad4
to
3012cad
Compare
3012cad
to
75cb45b
Compare
- pass all arguments to the matcher - make constructors more uniform - add eagerWrapper flag - remove constructors with just source section - use Specializer to instantiate primitives - merge PrimAndFact into Specializer - add @Primitive.extraChild for child node factory This is used only in a very specific way currently, so, support is limited to that, to avoid implementation complexity. - add Primitive.requiresArguments to pass the argument array to nodes that require it Signed-off-by: Stefan Marr <git@stefan-marr.de>
symbol sends. This is a regression, tracked with #32, needs further work. Signed-off-by: Stefan Marr <git@stefan-marr.de>
75cb45b
to
f1852c3
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The goal of this PR is to solve eager primitive specialization properly without having hard-coded switch/case stuff in MessageSendNode.
Currently work in progress.
Open issues:
@Primitive
annotation/cc
@charig probably relevant for you.
@kjx might be interesting for you, since it would allow to more systematically disable optimizations. If you need something specific, I should add a proper option.