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

[GR-32682] [GR-52145] Add initial version of the Bytecode DSL. #9556

Open
wants to merge 140 commits into
base: master
Choose a base branch
from

Conversation

graalvmbot
Copy link
Collaborator

@graalvmbot graalvmbot commented Aug 23, 2024

This pull request introduces Bytecode DSL, a new framework for implementing bytecode interpreters. Bytecode DSL consumes a user-provided specification (including a set of node-like operations) to generate a bytecode interpreter.

Tips for reviewing:

  1. The first commit is the one of interest. The next two two commits are migration code, and the ones after are bug/gate/feedback fixes (which will be squashed into the first commit before merge). It may be helpful to read some of the docs and tutorials to get started.
  2. The generated code is intended to be human readable, so it may be helpful to check out and build the test interpreters directly if you wish to look at generated code.
  3. @Bind.DefaultExpression was added in this PR. The changes are (unfortunately) too entangled with Bytecode DSL to easily pull out, so some of the changes here just remove redundant bind expressions.

Also read the changelog: https://github.com/oracle/graal/pull/9556/files#diff-0152a89226e848ea31c4005b3c57079db79ff8112c4278d28237c8b9ed24dc16

Features:

  • Tiered Interpretation (uncached -> cached)
  • Boxing elimination + Quickening
  • Reparsing (Lazy sources and Instrumentation)
  • Serialization/Deserialization
  • Coroutines
  • Tag and Bytecode Based Instrumentation
  • Local or Global Scoping of Variables
  • AST node proxying (for migration)
  • Several Tutorials & Guides

Continuation from:
#6697

@oracle-contributor-agreement oracle-contributor-agreement bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Aug 23, 2024
@graalvmbot graalvmbot force-pushed the mdsouza/GR-32682-bytecode-dsl branch from b40cfe9 to 9e57dc7 Compare August 28, 2024 14:52
@graalvmbot graalvmbot changed the title [GR-32682] Bytecode DSL [GR-32682][GR-52145] Add initial version of the Bytecode DSL. Sep 5, 2024
@graalvmbot graalvmbot force-pushed the mdsouza/GR-32682-bytecode-dsl branch 2 times, most recently from 2288bd8 to ab347b2 Compare October 24, 2024 20:32
@graalvmbot graalvmbot changed the title [GR-32682][GR-52145] Add initial version of the Bytecode DSL. [GR-32682] [GR-52145] Add initial version of the Bytecode DSL. Nov 1, 2024
DSouzaM and others added 17 commits November 5, 2024 15:29
Co-authored-by: Christian Humer <[email protected]>
Co-authored-by: Nikola Bebić <[email protected]>
Co-authored-by: Christian Humer <[email protected]>
Co-authored-by: Nikola Bebić <[email protected]>
…nguage,...); remove language param from serialize
… improve grouping/ordering of instructions when transitioning to cached
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OCA Verified All contributors have signed the Oracle Contributor Agreement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants