#JVM

Common Patterns in JIT-generated Assembly Code

Veröffentlicht am 12. August 2019 ·  1 min

Hier findet sich eine Sammlung einiger wiederkehrender Muster, die sich im vom JIT-Compiler generierten Code finden lassen. Die Liste ist keineswegs vollständig, und wird immer mal wieder aktualisiert. NullPointerException-Check test %rbp,%rbp je <label/line> test führt ein bitweises AND mit beiden Werten durch und setzt entsprechende Flags, relevant ist hierbei das ZERO-FLAG. Dieses wird genau dann gesetzt, wenn beide Werte 0 sind, in diesem Fall also, wenn %rbp (oder andere Register) 0 ist....


Volatile Variablen und Auswirkungen auf den generierten Assembler-Code

Veröffentlicht am 5. August 2019 ·  5 min

In vielen Projekten gibt es die Notwendigkeit, zwei Threads miteinander zu synchronisieren. Zwei Threads sollen dabei gleichzeitig laufen, und ein Thread soll eine Schleife im anderen abbrechen können. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class Main { public static void main(String[] args) throws InterruptedException { Worker worker = new Worker(); worker.start(); Thread.sleep(10_000); worker....