graal
graal copied to clipboard
Updated uq interpreter
An interpreter for GraalVM IR graphs.
This can be useful for evaluating IR graphs during testing.
This implements 'interpret(InterpreterState)' methods in 30+ of the most common subclasses of FixedNode in order to interpret those control-flow nodes, and 'interpretExpr(InterpreterState)' methods in most of the common data flow nodes in order to interpret expressions. The main entry point for the interpreter is the GraalInterpreter class and its executeGraph method.
The interpreter is based on a 2020-2021 UQ honours project by Leon Karstens plus further contributions by Kristian Thomassen and Mark Utting (UQ). Some current limitations are that it focusses mostly on high-level nodes rather than lowered nodes, supports only simple objects whose fields are primitive values, it attempts to interpret methods in ALL classes that are called (an alternative might be to treat some java.lang.* classes as pre-defined), and uses reflection to initialize static fields (which means that it cannot find some private fields).
- Hello Kristian Thomassen, thanks for contributing a PR to our project!
We use the Oracle Contributor Agreement to make the copyright of contributions clear. We don't have a record of you having signed this yet, based on your email address k -(dot)- thomassen -(at)- uq -(dot)- edu -(dot)- au. You can sign it at that link.
If you think you've already signed it, please comment below and we'll check.
- Hello Mark Utting, thanks for contributing a PR to our project!
We use the Oracle Contributor Agreement to make the copyright of contributions clear. We don't have a record of you having signed this yet, based on your email address m -(dot)- utting -(at)- uq -(dot)- edu -(dot)- au. You can sign it at that link.
If you think you've already signed it, please comment below and we'll check.
- Hello Mark Utting, thanks for contributing a PR to our project!
We use the Oracle Contributor Agreement to make the copyright of contributions clear. We don't have a record of you having signed this yet, based on your email address bm -(dot)- utting -(at)- gmail -(dot)- com. You can sign it at that link.
If you think you've already signed it, please comment below and we'll check.
This is brilliant!
Hello Brae Webb, thanks for contributing a PR to our project!
We use the Oracle Contributor Agreement to make the copyright of contributions clear. We don't have a record of you having signed this yet, based on your email address email -(at)- braewebb -(dot)- com. You can sign it at that link.
If you think you've already signed it, please comment below and we'll check.
- Mark Utting has signed the Oracle Contributor Agreement (based on email address bm -(dot)- utting -(at)- gmail -(dot)- com) so can contribute to this repository.
- These emails are still not recorded as having signed the Oracle Contributor Agreement: [email protected], [email protected], [email protected]
- Kristian Thomassen has signed the Oracle Contributor Agreement (based on email address k -(dot)- thomassen -(at)- uq -(dot)- edu -(dot)- au) so can contribute to this repository.
- Mark Utting has signed the Oracle Contributor Agreement (based on email address m -(dot)- utting -(at)- uq -(dot)- edu -(dot)- au) so can contribute to this repository.
- Brae Webb has signed the Oracle Contributor Agreement (based on email address email -(at)- braewebb -(dot)- com) so can contribute to this repository.
Thank you for your pull request and welcome to our community! To contribute, please sign the Oracle Contributor Agreement (OCA). The following contributors of this PR have not signed the OCA:
- [email protected] (@arucil)
To sign the OCA, please create an Oracle account and sign the OCA in Oracle's Contributor Agreement Application.
When singing the OCA, please provide your GitHub username. After signing the OCA and getting an OCA approval from Oracle, this PR will be automatically updated.
Thank you for your pull request and welcome to our community! To contribute, please sign the Oracle Contributor Agreement (OCA). The following contributors of this PR have not signed the OCA:
- [email protected] (@WeiyiDong)
To sign the OCA, please create an Oracle account and sign the OCA in Oracle's Contributor Agreement Application.
When singing the OCA, please provide your GitHub username. After signing the OCA and getting an OCA approval from Oracle, this PR will be automatically updated.