1. 42
  1.  

  2. 11

    This is one of the best articles I read on the internet. No ifs, no buts.


    Regarding

    deoptimization can happen from the DFG to the Baseline JIT (this is likely also the case for Hotspot C2->C1)

    and taking

    I will often describe an optimization behaviour and claim that it probably exists in some other compiler.

    into account, I think HotSpot only supports deopt-to-interpreter (that is C2→interpreter, C1→interpreter), not deopt-to-another-compile-tier (C2→C1).

    Maybe someone else can chime in?


    Edit: Having checked that person’s CV, I’m now considering a career change, because I obviously suck at computers.

    1. 5

      (I’m author) I did a deeper search on this and forgot to update, but I believe Hotspot does not deoptimise C2 -> C1. There’s no official statement on that but general research into how Hotspot optimizes between tiers and their glossary page indicates that fairly clearly. Also an O’Reilly book seems to state that too (https://www.oreilly.com/library/view/java-performance-the/9781449363512/ch04.html#Deoptimization)

      The process of converting an compiled (or more optimized) stack frame into an interpreted (or less optimized) stack frame. https://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html

      I should probably just ask Cliff but guessing is fun (and I think this is pretty conclusive)

      1. 3

        I’ve enjoyed your blog’s random colours!