graal icon indicating copy to clipboard operation
graal copied to clipboard

Updated uq interpreter

Open utting opened this issue 3 years ago • 7 comments

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).

utting avatar Dec 12 '21 09:12 utting

  • 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.

graalvmbot avatar Dec 12 '21 10:12 graalvmbot

This is brilliant!

GavinRay97 avatar Dec 14 '21 16:12 GavinRay97

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.

graalvmbot avatar Dec 15 '21 05:12 graalvmbot

graalvmbot avatar Dec 20 '21 13:12 graalvmbot

  • 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.

graalvmbot avatar Dec 20 '21 14:12 graalvmbot

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:

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:

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.