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-18355] [GR-60481] Espresso: Add JVMCI partial implementation. #10443

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

Conversation

graalvmbot
Copy link
Collaborator

  • Track hasDefaultMethods for classes as well
    It is true if any of the interfaces (directly or indirectly) implemented by the class have default methods.
  • Ignore UseJVMCICompiler in espresso launchers
  • Remove useless override in BootstrapMethodConstant.Indexes
  • Return byte from ConstantPool.Tag.getValue()
    This avoids a cast to byte at usages.
  • ModuleExtension: support autoAdd, optional, and requiresConcealed
    • Add Builder to help build ModuleExtensions
    • Add autoAdd property to automatically add the module (--add-modules) if it is enabled.
    • Add optional property to ignore a module if its jar is not available
    • Add requiresConcealed property to automatically add exports if the extension is enabled.
  • ModuleExtensions: don't add platform extensions to the boot class path
  • RuntimeConstantPool: replace context & classLoader with holder
  • Add Meta.isSignaturePolymorphicHolderType
  • Methodversion.refKind can be a byte
  • Allow hidden fields to be predicated on ContextDescription
  • Remove ContextDescription: the version is part of the language
  • Simplify InterfaceTables.getITable
  • Add checkLoadingConstraints to Member
  • Fix error message in memberDoAccessCheck
  • Add usesIndy property for methods
  • Print warning on missing required ModuleExtension jar
  • Minor simplification of ArrayKlass.arrayTypeChecks
  • Throw espresso error on ClassNotFoundException in Meta.knownKlass
  • Git: ignore compilation databases
  • Separate immutable and mutable pool constant interfaces
    The goal of the refactoring is to remove all methods that can't be implemented for resolved entries: immutable entries have all the accessors needed to look at constant pool entries syntactically while resolved constant pool entries have all the accessors needed to look at the resolved version.
    This remove a lot of "trap" methods that can't always be called depending on the type of the constant pool entry and lets that be checked at compile time.
    A isSame method was also introduced to serve a comparison that used to be done by comparing a string representation of the entry.
  • LinkResolver: add methods which don't throw on failure
  • Add JVMCI partial implementation

The goal of the refactoring is to remove all methods that can't be
implemented for resolved entries: immutable entries have all the
accessors needed to look at constant pool entries syntaxically while
resolved constant pool entries have all the accessors needed to look at
the resolved version. This remove a lot of "trap" methods that can't
always be called depending on the type of the constant pool entry and
lets that be checked at compile time.
A `isSame` method was also introduced to serve a comparison that used to
be done by comparing a string representation of the entry.

Minor:
* Remove useless override in BootstrapMethodConstant.Indexes
* Return byte from `ConstantPool.Tag.getValue()`. This avoids a cast to
`byte` at usages.
* Use modern switch in `ConstantPool.Tag.fromValue`
Also:
* Track hasDefaultMethods for classes as well. It is true if any of
  the interfaces (directly or indirectly) implemented by the class
  have default methods.
* Git: ignore compilation databases.
* Minor simplification of `ArrayKlass.arrayTypeChecks`.
* Simplify `InterfaceTables.getITable`.
* Ignore `UseJVMCICompiler` in espresso launchers.
* `RuntimeConstantPool`: replace `context` & `classLoader` with
  `holder`.
* `Methodversion.refKind` can be a byte.
* Add `Meta.isSignaturePolymorphicHolderType`.
* Allow hidden fields to be predicated on the language.
* Remove `ContextDescription`: the version is part of the language
* ModuleExtension:
  * Add Builder to help build ModuleExtensions
  * Add `autoAdd` property to automatically add the module
    (`--add-modules`) if it is enabled.
  * Add `optional` property to ignore a module if its jar is not available
  * Add `requiresConcealed` property to automatically add exports if the
    extension is enabled.
  * Don't add platform extensions to the boot class path
  * Print warning on missing required ModuleExtension jar
@oracle-contributor-agreement oracle-contributor-agreement bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Jan 9, 2025
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.

2 participants