I want to understand how JVM works and I have been reading blog posts and documentation. However, things are quite confusing and frequently outdated. I understand as methods get invoked more and more (10k or 15k invocations threshold depending on compiler), JVM JIT compiles them to native code and maintains a code cache. I am interested in browsing the actual source code where these decisions are being made.
This post explains things well. However, I am using OpenJDK11 and the structure of source code seems to have changed. Tiered compilation makes things more complicated. Is there any detailed documentation for OpenJDK's source code? Or do I have to go through source files one by one?
Searching the JDK's mercurial repository reveals that the AdvancedThresholdPolicy was merged into the SimpleThresholdPolicy in commit 5201c9474ee7 as part of 8202711, and may now be found in src/hotspot/share/runtime/simpleThresholdPolicy.cpp.