The CompilationResult object is a mutable object built by a JVMCI compiler backend during code generation. Currently, clients of the compiler are required to finalize construction of a CompilationResult once the compilation has completed. Furthermore, the HotSpotCompiledCode constructor takes a partially-constructed CompilationResult and then completes its construction. This non-locality of mutation is not just bad software design but in this case means a single CompilationResult cannot be used to create multiple HotSpotCompiledCode objects.
We propose to address this by requiring the JVMCI compiler to do all construction of a CompilationResult and then close it to further updating.
We propose to address this by requiring the JVMCI compiler to do all construction of a CompilationResult and then close it to further updating.