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

Garcia Gutierrez Miguel Alfredo miguelalfredo.garcia at epfl.ch
Tue Feb 4 03:46:12 PST 2014


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