HotSpots JIT lernt, Bits zu denken: Die Maske, die zu nichts kompiliert
The mask that compiles to nothing: how HotSpots JIT learned to reason about bits

Wenn ein Entwickler `(x << 2) & -4` schreibt, sollte ein optimierender Compiler daraus einfach `x << 2` machen – die bitweise UND-Verknüpfung verschwindet. Doch wie schafft das der C2-Compiler von HotSpot? Der Schlüssel liegt in einer neuen Abstraktion namens "Known Bits", die neben dem bisherigen Wertebereich auch Wissen über einzelne Bits speichert. Dieser Artikel erklärt, wie C2 mit Hilfe von zwei sich gegenseitig verfeinernden Sichten – Bereich und bekannte Bits – arbeitet, und zeigt den Kanonisierungsalgorithmus, der beide in Einklang bringt. Die Grundlagen wurden in JDK 26 gelegt, die eigentliche Optimierung folgte in JDK 27. Ähnliche Techniken nutzen auch LLVM und GCC.
Die Bits wissen, dass die unteren zwei Bits null sind – ein Bereich kann das nicht ausdrücken.