any Graal-specific diagnostics flags? (deopt, re-compilation,

Gilles Duboscq duboscq at ssw.jku.at
Tue Feb 4 04:45:49 PST 2014


Regarding assumptions you can try to use -XX:+PrintDependencies and
-XX:+TraceDependencies (these are develop flags so only available in
non product builds (debug, fastdebug, optimized)).

On Tue, Feb 4, 2014 at 1:27 PM, Lukas Stadler <Lukas.Stadler at jku.at> wrote:
> -XX:+TraceDeoptimization will show a Graal debug id, which contains the id of the node from which the deopt originated.
> Since this information is only meaningful if the graph was actually dumped, it is only provided when graph dumping for that method is enabled.
>
> So you could try to get to the root of the problem with -G:MethodFilter=List.takeWhile “-G:Dump=~Inlin,~Lower”
> The second option enables dumping, but hides inlining and lowering graphs.
>
> The fact that a method was invalidated does not always imply that all compilations in which it was inlined will be invalidated as well.
> It depends on the actual reason for the deoptimization.
> I don’t think there’s an option to list all assumptions, at least I don’t know of one.
>
> - Lukas
>
> On 04 Feb 2014, at 12:46, Garcia Gutierrez Miguel Alfredo <miguelalfredo.garcia at epfl.ch> wrote:
>
>>
>> A behavior the JIT exhibits for (unoptimized) Scala code is shown below (it's representative of methods taking a closure, aka the GoF Command Pattern in Java). I wanted to know if any Graal-specific flags exist to help diagnosing similar cases.
>>
>> Notes:
>>  output from -XX:+PrintCompilation on JDK 7,
>>  first sorted by method, then by compilation-task, then by timestamp.
>>  an explanation of that JVM flag can be found at https://gist.github.com/rednaxelafx/1165804#file_notes.md
>>
>> time    c-task  method
>> ----    ------  ------
>> . . .
>> 35358    4777    scala.collection.immutable.List::takeWhile (93 bytes)
>> 47002    4777    scala.collection.immutable.List::takeWhile (93 bytes)   made not entrant
>> 48419    4777    scala.collection.immutable.List::takeWhile (93 bytes)   made zombie
>>
>> 47357    5788    scala.collection.immutable.List::takeWhile (93 bytes)
>> 48407    5788    scala.collection.immutable.List::takeWhile (93 bytes)   made not entrant
>> 49596    5788    scala.collection.immutable.List::takeWhile (93 bytes)   made zombie
>>
>> 50804    6076    scala.collection.immutable.List::takeWhile (93 bytes)
>> . . .
>>
>> A few questions:
>>
>>  (1) with Graal, can more detailed information be obtained (eg, what event triggers each invalidation, eg which subclass was loaded and so on)
>>
>>  (2) counterpart to the previous question:
>>
>>      (2.a) each invalidation (eg of the method above) will invalidate all methods where it's been inlined (as per MethodContentsAssumption), right?
>>      (2.b) Are there flags to list those? (and thus estimate the impact of the ensuing recompilations)
>>
>>  (3) any Graal-specific version of -XX:+TraceDeoptimization
>>
>>
>> Miguel
>>
>>
>> --
>> Miguel Garcia
>> Swiss Federal Institute of Technology
>> EPFL - IC - LAMP1 - INR 328 - Station 14
>> CH-1015 Lausanne - Switzerland
>> http://lamp.epfl.ch/~magarcia/
>


More information about the graal-dev mailing list