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