SkipFlow is a new extension to GraalVM Native Image's points-to analysis that tracks primitive values and evaluates branching conditions during analysis. By introducing predicate edges into type flow graphs, it delays evaluating branch contents until it's determined those branches may actually execute at runtime. This eliminates dead code more aggressively — for example, reducing one benchmark image by over 50% by avoiding pulling in AWT/Swing libraries through an unreachable null-check branch. Across Renaissance, Dacapo, and microservices benchmarks, SkipFlow reduces binary size by an average of 6.35% without increasing build time. It's included in GraalVM for JDK 24 behind flags (-H:+TrackPrimitiveValues -H:+UsePredicates) and will be enabled by default in JDK 25.

8m read timeFrom medium.com
Post cover image
Table of contents
Points-to Analysis in GraalVM Native ImageIntroducing SkipFlowGet David Kozak’s stories in your inboxExperimental EvaluationConclusion

Sort: