RFR: 8144083 [JVMCI] CompilationResult should be finalized by JVMCI compiler and made effectively final
Christian Thalinger
christian.thalinger at oracle.com
Mon Nov 30 17:32:56 UTC 2015
Forgot one comment:
/**
* Gets the assumptions made during compilation.
+ *
+ * The caller must not modify the contents of the returned array.
*/
public Assumption[] getAssumptions() {
return assumptions;
}
Should we file an enhancement to somehow enforce this contract? Or should we just clone the array?
> On Nov 30, 2015, at 7:30 AM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
>
> Looks good.
>
>> On Nov 26, 2015, at 3:33 AM, Doug Simon <doug.simon at oracle.com> wrote:
>>
>> 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.
>>
>> https://bugs.openjdk.java.net/browse/JDK-8144083
>> http://cr.openjdk.java.net/~dnsimon/8144083/
>>
>> -Doug
>
More information about the hotspot-compiler-dev
mailing list