Tip of Graal broken with tip of OpenJDK?
Doug Simon
doug.simon at oracle.com
Thu Mar 22 09:11:48 UTC 2018
Fix is now merged: https://github.com/oracle/graal/commit/56c5c4cebc277ca993095e1ba8fdf2510e1f7ee1
> On 21 Mar 2018, at 16:06, stewartd.qdt <stewartd.qdt at qualcommdatacenter.com> wrote:
>
> Thanks! I'll apply this in the short term. Good to know a fix is already in the works.
>
> -----Original Message-----
> From: Doug Simon [mailto:doug.simon at oracle.com]
> Sent: Wednesday, March 21, 2018 11:01 AM
> To: stewartd.qdt <stewartd.qdt at qualcommdatacenter.com>
> Cc: graal-dev at openjdk.java.net
> Subject: Re: Tip of Graal broken with tip of OpenJDK?
>
> Sorry, that was my fault.
>
> A fix is making its way through our internal gates. Here's the patch if you want to apply it locally:
>
> diff --git a/compiler/src/org.graalvm.compiler.serviceprovider/src/org/graalvm/compiler/serviceprovider/GraalServices.java b/compiler/src/org.graalvm.compiler.serviceprovider/src/org/graalvm/compiler/serviceprovider/GraalServices.java
> index 175db95863..1268f4a429 100644
> --- a/compiler/src/org.graalvm.compiler.serviceprovider/src/org/graalvm/compiler/serviceprovider/GraalServices.java
> +++ b/compiler/src/org.graalvm.compiler.serviceprovider/src/org/graalvm/compiler/serviceprovider/GraalServices.java
> @@ -24,6 +24,7 @@ package org.graalvm.compiler.serviceprovider;
>
> import java.io.IOException;
> import java.io.InputStream;
> +import java.lang.reflect.Method;
> import java.util.Iterator;
> import java.util.ServiceConfigurationError;
>
> @@ -63,11 +64,25 @@ public final class GraalServices {
> * @throws SecurityException if on JDK8 and a security manager is present and it denies
> * {@link JVMCIPermission}
> */
> + @SuppressWarnings("unchecked")
> public static <S> Iterable<S> load(Class<S> service) {
> assert !service.getName().startsWith("jdk.vm.ci") : "JVMCI services must be loaded via " + Services.class.getName();
> - return Services.load(service);
> + try {
> + if (loadMethod == null) {
> + loadMethod = Services.class.getMethod("load", Class.class);
> + }
> + return (Iterable<S>) loadMethod.invoke(null, service);
> + } catch (Exception e) {
> + throw new InternalError(e);
> + }
> }
>
> + /**
> + * {@code Services.load(Class)} is only defined in JVMCI-8 so we use reflection to simplify
> + * compiling with javac on JDK 9 or later.
> + */
> + private static volatile Method loadMethod;
> +
> /**
> * Gets the provider for a given service for which at most one provider must be available.
> *
>
>> On 21 Mar 2018, at 15:42, stewartd.qdt <stewartd.qdt at qualcommdatacenter.com> wrote:
>>
>> After sync'ing to the tip of both Graal and OpenJDK, I get an error building Graal. I get the following error:
>>
>> Compiling com.oracle.truffle.api.dsl with javac-daemon... [/home/stewartd/openjdk/stewartd-graal/truffle/mxbuild/src/com.oracle.truffle.api.dsl/bin/META-INF/upgrade/truffle.api.dsl.Specialization.hint[2018-03-19 14:49:11] is older than /home/stewartd/openjdk/stewartd-graal/truffle/mxbuild/src/com.oracle.truffle.api/bin/com/oracle/truffle/api/nodes/NodeUtil.class[2018-03-21 14:23:27]]
>> /home/stewartd/openjdk/stewartd-graal/compiler/src/org.graalvm.compiler.serviceprovider/src/org/graalvm/compiler/serviceprovider/GraalServices.java:68: error: cannot find symbol
>> return Services.load(service);
>> ^
>> symbol: method load(Class<S>)
>> location: class Services
>> where S is a type-variable:
>> S extends Object declared in method <S>load(Class<S>)
>> 1 error
>>
>> I believe it was caused by this commit: https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_oracle_graal_commit_a0a2d08f84ca5b78a8b880313a1082cc392c167a&d=DwIFAg&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=BmNY5KuefACTr_P43s8fXOXgNDkDiqlviyafeiVaP18&m=AKKIEb8DGWGv3KgInxmtWThq68aqKvSGokdcx2lszrU&s=v82FYdhLenb0gpMOb2EYVGE8mF-JMvI2iCajcelnmBY&e=
>>
>> Is this supposed to work with the tip of OpenJDK or only OpenJDK 8?
>>
>> Thanks,
>> Daniel
More information about the graal-dev
mailing list