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