The constant back-end optimizes executable code now. It records, optimizes, and then emits to LLVM the exported functions and globals. The globals and other functions used by them are also emitted. This prevents the unused functions and globals from appearing in executable. In contrast, LLVM may emit unused functions or globals, because it has insufficient information.
Also, the compiler runs a bit (~6%) faster now. Probably because the compiler issues less JNI calls and emits less data to LLVM.
An internal (run-time) representation of objects were slightly reworked and reduced.