Pointer/Scope API questions
Ty Young
youngty1997 at gmail.com
Wed Jan 8 12:34:59 UTC 2020
On 1/8/20 6:23 AM, Maurizio Cimadamore wrote:
>
> On 08/01/2020 12:12, Ty Young wrote:
>>
>> On 1/8/20 5:53 AM, Maurizio Cimadamore wrote:
>>>
>>> On 08/01/2020 11:48, Ty Young wrote:
>>>>
>>>> On 1/8/20 5:43 AM, Maurizio Cimadamore wrote:
>>>>>
>>>>> On 08/01/2020 11:38, Ty Young wrote:
>>>>>>
>>>>>> On 1/8/20 5:09 AM, sundararajan.athijegannathan at oracle.com wrote:
>>>>>>> [...]
>>>>>>>>>>
>>>>>>>>> Are you also adding `--add-modules
>>>>>>>>> jdk.incubator.foreign,jdk.incubator.jextract` when running? I
>>>>>>>>> was seeing a similar error when I forgot to do that.
>>>>>>>>
>>>>>>>>
>>>>>>>> Ah, no. Works now.
>>>>>>>>
>>>>>>>>
>>>>>>>> Is it supposed to throw an exception there though? The modules
>>>>>>>> are apart of the JDK and preview features are enabled so I
>>>>>>>> don't understand why the extra step of adding the modules at
>>>>>>>> runtime is being required here. Is it a bug?
>>>>>>>
>>>>>>> No. It is not a bug. You've to explicitly add "incubator"
>>>>>>> modules for compilation as well as for runtime.
>>>>>>
>>>>>>
>>>>>> TIL.
>>>>>>
>>>>>>
>>>>>> Just noticed though that while the Memory Access API works, the
>>>>>> jextract API fails because of javax.tools's JaveFileObject from
>>>>>> the java.compiler module.
>>>>>>
>>>>>>
>>>>>> My compiler/runtime --add-modules argument looks like:
>>>>>>
>>>>>>
>>>>>> --add-modules
>>>>>> jdk.incubator.foreign,jdk.incubator.jextract,java.compiler
>>>>>>
>>>>>>
>>>>>> It is also required in module-info.java. Am I missing something
>>>>>> here?
>>>>>
>>>>> Uhm - java.compiler should be available w/o extra flags... what
>>>>> code are you trying to run?
>>>>
>>>>
>>>> Code:
>>>>
>>>>
>>>> Path header =
>>>> Path.of("/opt/cuda/targets/x86_64-linux/include/nvml.h");
>>>>
>>>> JextractTask task = JextractTask.newTask(true, header);
>>>>
>>>> task.write(Path.of("./", args), new JavaFileObjectTest()); <----
>>>> ERROR
>>>
>>> Do you have a module info?
>>
>>
>> Yep:
>>
>>
>> module PanamaMemTest
>> {
>> requires java.compiler;
>> requires jdk.incubator.foreign;
>> requires jdk.incubator.jextract;
>>
>> exports org.goliath.panamamemtest;
>> }
>
> Ok - if you use a module info you have to say which modules you want -
> and so you do need a requires java.compiler.
>
> So, your module info seems correct. Actually, I believe you only need
> 'requires jdk.incubator.jextract' and that will also give you the
> memory access API (jextract "transitively" requires it).
>
> Since everything seems almost correct here- how is the application ran
> (by Netbeans) ? Is there any command line anywhere which gives some
> hints as to whether netbeans is using classpath or modulepath when
> running the Main class?
Going by:
<exec.args>-agentlib:jdwp=transport=dt_socket,server=n,address=${jpda.address} --add-modules jdk.incubator.foreign,jdk.incubator.jextract,java.compiler -classpath %classpath org.goliath.panamamemtest.PanamaMemTest</exec.args>
<exec.executable>java</exec.executable>
from nbactions.xml at the root of the project, classpath.
>
>>
>>
>> I'm using Netbeans 11.2, if that matters.
>>
>>
>>> Or are you just running off the classpath?
>>>
>>> (btw, for now the jextract API doesn't really generate any bindings
>>> - but it can be used to 'parse' an header and inspect the structure
>>> of the declarations in it).
>>
>>
>> I'm a bit confused here, your clang code that you linked is commented
>> saying that it was generated by jextract. Is it internal still then?
>
> Yes, that jextract is still internal - we will open it up in the next
> few weeks (shouldn't take too long).
>
> Maurizio
>
>>
>>
>>>
>>> Maurizio
>>>
>>>>
>>>>
>>>> Exception:
>>>>
>>>>
>>>> Exception in thread "main" java.lang.NoClassDefFoundError:
>>>> javax/tools/JavaFileObject
>>>> at
>>>> jdk.incubator.jextract/jdk.internal.jextract.impl.Writer.resources(Writer.java:108)
>>>> at
>>>> jdk.incubator.jextract/jdk.internal.jextract.impl.Writer.writeAll(Writer.java:57)
>>>> at
>>>> jdk.incubator.jextract/jdk.internal.jextract.impl.JextractTaskImpl.write(JextractTaskImpl.java:65)
>>>> at
>>>> org.goliath.panamamemtest.PanamaMemTest.main(PanamaMemTest.java:37)
>>>>
>>>>
>>>>>
>>>>> Maurizio
>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> -Sundar
>>>>>>>
More information about the panama-dev
mailing list