RFR: 8144083 [JVMCI] CompilationResult should be finalized by JVMCI compiler and made effectively final

Christian Thalinger christian.thalinger at oracle.com
Mon Nov 30 18:01:25 UTC 2015


> On Nov 30, 2015, at 7:57 AM, Doug Simon <doug.simon at oracle.com> wrote:
> 
> 
>> On 30 Nov 2015, at 18:32, Christian Thalinger <christian.thalinger at oracle.com> wrote:
>> 
>> Forgot one comment:
>> 
>>    /**
>>     * Gets the assumptions made during compilation.
>> +     *
>> +     * The caller must not modify the contents of the returned array.
>>     */
> 
> Good catch.
> 
>>    public Assumption[] getAssumptions() {
>>        return assumptions;
>>    }
>> 
>> Should we file an enhancement to somehow enforce this contract?  Or should we just clone the array?
> 
> We want to avoid copying/cloning to minimize code installation time.

I understand but are you sure this is a problem?  Installation time compared to compilation time should be small.

> 
> This is a value that will assigned to HotSpotCompiledCode.assumptions which in turn will be read directly by the VM so we want a simple data type like an array. As far as I know, there’s no way to enforce array contents as being treated constant/final.

Not yet.

> 
>> 
>>> 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