hsail gate commands -- webrev

Doug Simon doug.simon at oracle.com
Wed Jan 22 11:29:52 PST 2014


I see that the sources have a “src/“ prefix in the jar file. Can you please remove this so that Eclipse can find them (Eclipse doesn’t strip the “src/“ prefix when resolving the source by qualified class name). Thanks.

On Jan 22, 2014, at 8:19 PM, Deneau, Tom <tom.deneau at amd.com> wrote:

> Doug --
> 
> There is a newer .jar file (same name) up on cr.openjdk.java.net now that includes the changes you asked for
>   * includes the sources
>   * deletes the temporary .hsail and .o files
> 
> Can you make the okraLibExists() change which you mention below without a new webrev?
> 
> -- Tom
> 
> 
>> -----Original Message-----
>> From: Doug Simon [mailto:doug.simon at oracle.com]
>> Sent: Wednesday, January 22, 2014 5:58 AM
>> To: Deneau, Tom
>> Cc: Tom Rodriguez; graal-dev at openjdk.java.net
>> Subject: Re: hsail gate commands -- webrev
>> 
>> This all seems to work - nice job. Just a few requests/comments before I
>> integrate.
>> 
>> HSAILCompilationResult.java:
>> 
>>  60     // this test of okraLib existence is to allow the loading of
>> the
>>  61     // native library from the jar file if it is not already on the
>> path
>>  62     private static boolean okraLibExists =
>> OkraUtil.okraLibExists();
>> 
>> The above assignment produces a "value of field is not used" warning in
>> Eclipse. It seems that all you want here is the side-effect of the call
>> to OkraUtil.okraLibExists(). If that's the case, just put the call in a
>> static initializer block and delete the field:
>> 
>> static {
>>    OkraUtil.okraLibExists();
>> }
>> 
>> However, I tried just commenting out the line altogether and the unit
>> tests seemed to still run fine. Which begs the question, do you really
>> need this here?
>> 
>> Can you also please update (and re-upload) okra-with-sim.jar to include
>> the Java sources (just like okra-1.2.jar had). This helps with debugging
>> the code in Eclipse.
>> 
>> -Doug
>> 
>> On Jan 21, 2014, at 6:07 PM, Deneau, Tom <tom.deneau at amd.com> wrote:
>> 
>>> All --
>>> 
>>> I have uploaded a webrev to allow use of the hsail simulator without
>> setting up any PATH or LD_LIBRARY_PATH variables to make it easier to
>> run the hsail junit tests as part of the graal gate:
>>> 
>>> http://cr.openjdk.java.net/~tdeneau/graal-webrevs/webrev-lazy-native-h
>>> sail-library-open/webrev/
>>> 
>>>  * The main change was in gpu_hsail.cpp to lazily load the native
>> library,
>>>    (waiting until it is really needed).  It always tries the original
>> LD_LIBRARY_PATH
>>>    as a first try, and only if that doesn't work, it will try
>>>    the environment variable _OKRA_SIM_LIB_PATH_ (which will have been
>> set up by the
>>>    java side which will have copied the native library and hsailasm
>> to a temporary
>>>    directory if necessary)
>>> 
>>>  * HSAILCompilationResult, added a call the the JNI side to get it to
>> load the native library
>>>    from the jar file if it needs to.
>>> 
>>>  * mx/projects changed to use the newly built okra-with-sim.jar which
>> has been uploaded to
>>>    my cr.openjdk.java.net directory (the old okra.jar came from there
>> as well).
>>>    This jar file contains the prebuilt binaries but can also be built
>> from sources
>>>    following the instructions at
>>>    https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-Simulator
>>> 
>>> To test:
>>>  * make sure not only that the okra/dist/bin directory
>>>    is removed from PATH and LD_LIBRARY_PATH but also that it is not
>> one of the directories
>>>    listed under "ldconfig -p"
>>> 
>>> 
>>> The changes to the okra.jar file and the native library are not part
>>> of this webrev, but if interested, these changes can be viewed as a
>>> pull request on the github directory
>>> https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-Simulator/pul
>>> l/11
>>> 
>>>  * Again, the native library loading as performed by the OkraContext
>> class
>>>    first tries the original PATH and LD_LIBRARY_PATH strategy before
>> reverting
>>>    to using a temporary directory.  It looks in the jar file that
>> OkraContext.class
>>>    was loaded from and copies anything in resources/okra to a
>> temporary directory.
>>>    Then it tries to load the native library from there.
>>> 
>>>  * the native library itself now contains an on_load function
>>>    with attribute((constructor)) which gets executed as the .so file
>> gets loaded.
>>>    It does the following:
>>>       * finds out where it was loaded from (using dladdr)
>>>       * appends that directory to PATH and LD_LIBRARY_PATH (this
>> allows
>>>         a later invoke of hsailasm to work)
>>>       * sets an environment variable _OKRA_SIM_LIB_PATH_.  This env
>> var
>>>         is used later by the JVM when it wants to load the native
>> library
>>>         and discover its C-based entry points.
>>> 
>>> -- Tom
>>> 
>>> 
>>>> -----Original Message-----
>>>> From: Tom Rodriguez [mailto:tom.rodriguez at oracle.com]
>>>> Sent: Wednesday, January 15, 2014 4:15 PM
>>>> To: Douglas Simon
>>>> Cc: Deneau, Tom; graal-dev at openjdk.java.net
>>>> Subject: Re: hsail gate commands
>>>> 
>>>> dladdr can also be used to figure it out directly.
>>>> 
>>>> tom
>>>> 
>>>> On Jan 15, 2014, at 2:07 PM, Doug Simon <doug.simon at oracle.com>
>> wrote:
>>>> 
>>>>> 
>>>>> On Jan 15, 2014, at 10:46 PM, Deneau, Tom <tom.deneau at amd.com>
>> wrote:
>>>>> 
>>>>>> Doug --
>>>>>> 
>>>>>> how does the JNI_OnLoad know what path it was loaded from?
>>>>>> or would the java side have to pass this information down?
>>>>> 
>>>>> The Java side has to pass this down. One way to do it would be to
>>>> define a static String field in some class in the Okra Java library
>>>> and assign it the path before calling System.load(). Inside
>>>> JNI_OnLoad, the JNI interface can be used to find the class and read
>> the field.
>>>>> 
>>>>> -Doug
>>>>> 
>>>>>>> -----Original Message-----
>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>> Sent: Wednesday, January 15, 2014 3:11 PM
>>>>>>> To: Deneau, Tom
>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>> Subject: Re: hsail gate commands
>>>>>>> 
>>>>>>> Hi Tom,
>>>>>>> 
>>>>>>> A quick glance through the HSAIL C++ layer seems to indicate that
>>>>>>> it should be able to lazily initialize the HSAIL library linkage
>>>> (currently
>>>>>>> done in gnu::Hsail::probe_linkage()). This means it should be
>>>> deferrable
>>>>>>> until after the Java part of the Okra library has had a chance to
>>>>>>> extract the native library file (and hsailasm executable) into the
>>>> file
>>>>>>> system. Then you would call System.load() to load the library.
>>>> There's
>>>>>>> still the problem of how to communicate the absolute path of the
>>>> native
>>>>>>> library to the os::dll_load call. There may be a more elegant
>>>> solution,
>>>>>>> but I'd suggest using the JNI_OnLoad[1] mechanism. Inside the
>>>> JNI_OnLoad
>>>>>>> function in the Okra native library, you can set an environment
>>>> variable
>>>>>>> (e.g., OKRA_DLL_PATH) which gnu::Hsail::probe_linkage can then
>> use.
>>>> Note
>>>>>>> that the environment variable has to be set this way as there's no
>>>> way
>>>>>>> to set an environment variable from Java.
>>>>>>> 
>>>>>>> By the time you finish all this hackery, you may start thinking
>>>>>>> that simply porting the HSAIL simulator/toolchain to Java might be
>>>>>>> easier
>>>> ;-)
>>>>>>> 
>>>>>>> [1]
>>>>>>> 
>>>> http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/invocation.ht
>>>> ml#
>>>>>>> JNI_OnLoad
>>>>>>> 
>>>>>>> On Jan 15, 2014, at 9:05 PM, Deneau, Tom <tom.deneau at amd.com>
>> wrote:
>>>>>>> 
>>>>>>>> Doug --
>>>>>>>> 
>>>>>>>> One complication I saw here.
>>>>>>>> The native library file is used both from the java side (using
>>>>>>>> loadLibrary) and from the hotspot side (using os::dll_load
>>>>>>>> followed
>>>> by
>>>>>>> looking up the specific functions it needs).
>>>>>>>> And the hotspot attempt to load happens first (from gpu::init()).
>>>>>>>> 
>>>>>>>> So anything the java side would have done with resources in the
>>>> .jar
>>>>>>>> file and temp directories wouldn't have been done yet.
>>>>>>>> 
>>>>>>>> -- Tom
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> -----Original Message-----
>>>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>>>> Sent: Tuesday, January 14, 2014 3:27 AM
>>>>>>>>> To: Deneau, Tom
>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>> Subject: Re: hsail gate commands
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Jan 13, 2014, at 8:52 PM, Deneau, Tom <tom.deneau at amd.com>
>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Doug --
>>>>>>>>>> 
>>>>>>>>>> Using the techniques in
>>>>>>>>>> http://frommyplayground.com/how-to-load-native-jni-library-from
>>>>>>>>>> -
>>>> jar/
>>>>>>>>>> that you sent, would it be acceptable to leave hsailasm as a
>>>>>>>>>> separate
>>>>>>>>> executable which gets unjarred into the system temporary
>>>>>>>>> directory and then executed from there using an absolute
>> pathname?
>>>>>>>>> 
>>>>>>>>> Sounds feasible and reasonable to me.
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> -- Tom
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>>>>>> Sent: Sunday, January 12, 2014 2:29 PM
>>>>>>>>>>> To: Deneau, Tom
>>>>>>>>>>> Subject: Re: hsail gate commands
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Jan 9, 2014, at 9:50 PM, Deneau, Tom <tom.deneau at amd.com>
>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Doug --
>>>>>>>>>>>> 
>>>>>>>>>>>> We'll take a look at your suggestion.
>>>>>>>>>>> 
>>>>>>>>>>> Great.
>>>>>>>>>>> 
>>>>>>>>>>> BTW, you guys may want to bring
>>>>>>>>>>> 
>>>> https://wiki.openjdk.java.net/display/Sumatra/The+HSAIL+Simulator
>>>>>>>>>>> more up to date at some point. At least you can remove the
>>>> "(webrev
>>>>>>>>>>> under review)" qualifications.
>>>>>>>>>>> 
>>>>>>>>>>> -Doug
>>>>>>>>>>> 
>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>>>>>>>> Sent: Thursday, January 09, 2014 1:38 PM
>>>>>>>>>>>>> To: Deneau, Tom
>>>>>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>>>>>> Subject: Re: hsail gate commands
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Jan 9, 2014, at 6:51 PM, Tom Rodriguez
>>>>>>>>>>>>> <tom.rodriguez at oracle.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> It would still be great if there would be some way to
>>>>>>>>>>>>>>>>> incorporate
>>>>>>>>>>>>> the hsail simulator into the gate...
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> A good start would be if you could provide us with a
>>>>>>>>>>>>>>>> patch
>>>> for
>>>>>>>>>>>>>>>> `mx',
>>>>>>>>>>>>> that adds a command which sets up the HSAIL simulator
>>>> properly.
>>>>>>>>>>>>> Currently our gate is running on Linux, but this might
>>>>>>>>>>>>> change
>>>> in
>>>>>>>>>>>>> the future, so keep in mind that this should potentially
>>>>>>>>>>>>> work
>>>> on
>>>>>>>>>>>>> all platforms (Linux, MacOSX, Windows).
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Our gate server is basically executing `mx gate' to
>>>> validate
>>>>>>>>>>>>> changes. That includes building, bootstrap tests, unittest,
>>>> etc.
>>>>>>>>>>>>> If that command was successful on our gate server, the
>>>>>>>>>>>>> changes are accepted and pushed to the repository.  Having
>>>>>>>>>>>>> the `mx
>>>> gate'
>>>>>>>>>>>>> command, one can reproduce the gate process on his/her local
>>>>>>>>> machine.
>>>>>>>>>>>>> Therefore it would be important that one can easily and
>>>> reliable
>>>>>>>>>>>>> set up the HSAIL environment if it is part of the gate
>>>> process.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Given the dependencies for building the simulator[1] and
>>>>>>>>>>>>>>> the fact it
>>>>>>>>>>>>> only currently runs on linux, I don't think it will be that
>>>> easy
>>>>>>>>>>>>> to come up with an mx command.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> What precompiling an okra distribution for linux that mx
>>>>>>>>>>>>>> can
>>>>>>>>>>> download?
>>>>>>>>>>>>> 
>>>>>>>>>>>>> If Okra used a self contained JNI library, that might just
>>>> work.
>>>>>>>>>>>>> However, the way it is deployed now involves having the
>>>> hsailasm
>>>>>>>>>>>>> executable on your PATH. Also, LD_LIBRARY_PATH has to be
>>>>>>>>>>>>> setup
>>>> to
>>>>>>>>>>>>> find the JNI library itself.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> @AMD guys: How hard would it be to make the Okra JNI be self
>>>>>>>>>>>>> contained library and include the hsailasm functionality? If
>>>>>>>>>>>>> that's possible, you could bundle the JNI library inside the
>>>> Okra
>>>>>>>>>>>>> jar using a technique like
>>>>>>>>>>>>> http://frommyplayground.com/how-to-load-native-jni-library-
>>>> from-j
>>>>>>>>>>>>> ar
>>>>>>>>>>>>> /
>>>>>>>>>>> to avoid having to set up PATH or LD_LIBRARY_PATH.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -Doug
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>>> https://github.com/HSAFoundation/Okra-Interface-to-HSAIL-
>>>> Simula
>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>> r#
>>>>>>>>>>>>>>> ok
>>>>>>>>>>>>>>> ra-interface-to-hsail-simulator
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>>>>>> From: graal-dev-bounces at openjdk.java.net [mailto:graal-
>>>> dev-
>>>>>>>>>>>>>>>>>> bounces at openjdk.java.net] On Behalf Of Deneau, Tom
>>>>>>>>>>>>>>>>>> Sent: Monday, December 16, 2013 11:24 AM
>>>>>>>>>>>>>>>>>> To: Doug Simon
>>>>>>>>>>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>>>>>>>>>>> Subject: RE: hsail gate commands
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> OK, I see why there is no error when running mx --vm
>>>> server
>>>>>>>>>>>>>>>>>> unittest hsail
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> At some point (I don't recall why, maybe at Oracle's
>>>>>>>>>>>>>>>>>> request??), we put in some code in KernelTester that if
>>>> it
>>>>>>>>>>>>>>>>>> could not find the okra simulator files would just
>>>> silently
>>>>>>>>>>>>>>>>>> not run the tests (which I guess counts as a pass).
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> No the hsail simulator is not a java app at all.
>>>>>>>>>>>>>>>>>> The page at
>>>>>>>>>>>>>>>>>> 
>>>> https://wiki.openjdk.java.net/display/Sumatra/The+HSAIL+Simu
>>>>>>>>>>>>>>>>>> la to r should describe how to build it and what
>>>> environment
>>>>>>>>>>>>>>>>>> variables to set up to use it...
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> -- Tom
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>>>>>>>>>>>>>> Sent: Monday, December 16, 2013 11:02 AM
>>>>>>>>>>>>>>>>>>> To: Deneau, Tom
>>>>>>>>>>>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>>>>>>>>>>>> Subject: Re: hsail gate commands
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> On Dec 16, 2013, at 5:48 PM, Deneau, Tom
>>>>>>>>>>>>>>>>>>> <tom.deneau at amd.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Doug --
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> I see.
>>>>>>>>>>>>>>>>>>>> I don't understand why the tests would run without
>>>> error
>>>>>>>>>>>>>>>>>>>> if the simulator and associated assembler is missing
>>>>>>> but...
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> What error are you seeing?
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Is there a way we can get the HSAIL simulator into
>>>>>>>>>>>>>>>>>>>> the gate
>>>>>>>>>>>>>>>>>>> infrastructure?
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Is it a pure Java app yet? That would certainly make
>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>> trivial.
>>>>>>>>>>>>>>>>>>> In any case, I'll defer to Bernhard or Gilles to
>>>>>>>>>>>>>>>>>>> answer this since they are the maintainers of this
>>>> infrastructure.
>>>>>>>>>>>>>>>>>>> Can you please send instructions on how to
>>>>>>>>>>>>>>>>>>> install/use/configure the
>>>>>>>>>>>>> simulator.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> -Doug
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>>>>>>>>> From: Doug Simon [mailto:doug.simon at oracle.com]
>>>>>>>>>>>>>>>>>>>>> Sent: Monday, December 16, 2013 10:36 AM
>>>>>>>>>>>>>>>>>>>>> To: Deneau, Tom
>>>>>>>>>>>>>>>>>>>>> Cc: graal-dev at openjdk.java.net
>>>>>>>>>>>>>>>>>>>>> Subject: Re: hsail gate commands
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> On Dec 16, 2013, at 5:21 PM, Deneau, Tom
>>>>>>>>>>>>>>>>>>>>> <tom.deneau at amd.com>
>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Doug --
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> I noticed in syncing with the trunk as of last
>>>>>>>>>>>>>>>>>>>>>> Friday that all of our
>>>>>>>>>>>>>>>>>>>>> HSAIL test cases broke.  The cause was some
>>>>>>>>>>>>>>>>>>>>> imperfect code in our HSAILAssembler for compare
>>>>>>>>>>>>>>>>>>>>> instructions
>>>> which
>>>>>>>>>>>>>>>>>>>>> when presented with an unordered compare could
>>>> generate
>>>>>>>>>>>>>>>>>>>>> code that would not assemble, and was easy to fix.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> But I was wondering how this made it past the gate.
>>>>>>>>>>>>>>>>>>>>>> Can you describe what gate commands are used
>>>> regarding
>>>>>>>>>>> hsail?
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> We simply run 'mx gate' which will include running
>>>>>>>>>>>>>>>>>>>>> all the HSAIL unit tests.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> On my Mac with the latest bits:
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> $ mx --vm server unittest hsail executing junit
>>>>>>>>>>>>>>>>>>>>> tests
>>>>>>>>> now...
>>>>>>>>>>>>>>>>>>>>> (107 test classes) JUnit version 4.8
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>> 
>> ........................................................................
>>>>>>>>>>>>>>>>>>>>> ...........I................I......
>>>>>>>>>>>>>>>>>>>>> Time: 5.525
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> OK (105 tests)
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Keep in mind I (and the gate infrastructure) don't
>>>> have
>>>>>>>>>>>>>>>>>>>>> the HSAIL simulator.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> -Doug
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>>> 
>> 
> 
> 



More information about the graal-dev mailing list