any Graal-specific diagnostics flags? (deopt, re-compilation, and so on)

Lukas Stadler lukas.stadler at jku.at
Tue Feb 4 04:27:10 PST 2014


-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