[GR-18355] [GR-60481] Espresso: Add JVMCI partial implementation. #10443
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.
hasDefaultMethods
for classes as wellIt is true if any of the interfaces (directly or indirectly) implemented by the class have default methods.
UseJVMCICompiler
in espresso launchersBootstrapMethodConstant.Indexes
ConstantPool.Tag.getValue()
This avoids a cast to byte at usages.
ModuleExtension
: supportautoAdd
,optional
, andrequiresConcealed
ModuleExtensions
autoAdd
property to automatically add the module (--add-modules
) if it is enabled.optional
property to ignore a module if its jar is not availablerequiresConcealed
property to automatically add exports if the extension is enabled.ModuleExtensions
: don't add platform extensions to the boot class pathRuntimeConstantPool
: replacecontext
&classLoader
withholder
Meta.isSignaturePolymorphicHolderType
Methodversion.refKind
can be a byteContextDescription
ContextDescription
: the version is part of the languageInterfaceTables.getITable
checkLoadingConstraints
toMember
memberDoAccessCheck
usesIndy
property for methodsModuleExtension
jarArrayKlass.arrayTypeChecks
ClassNotFoundException
inMeta.knownKlass
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