RFR: 8144964: JVMCI compilations need to be disabled until the module system is initialized
Christian Thalinger
christian.thalinger at oracle.com
Fri Apr 1 00:36:59 UTC 2016
Thank you, Vladimir.
> On Mar 31, 2016, at 2:36 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>
> Looks good.
>
> Thanks,
> Vladimir
>
> On 3/31/16 5:22 PM, Christian Thalinger wrote:
>> Vladimir pointed out a bug. Of course it should be:
>>
>> + bool must_load;
>> +#if INCLUDE_JVMCI
>> + if (EnableJVMCI) {
>> + // If JVMCI is enabled we require its classes to be found.
>> + must_load = (init_opt < SystemDictionary::Opt) || (init_opt == SystemDictionary::Jvmci);
>> + } else
>> +#endif
>> + {
>> + must_load = (init_opt < SystemDictionary::Opt);
>> + }
>>
>>> On Mar 31, 2016, at 1:08 PM, Christian Thalinger <christian.thalinger at oracle.com
>>> <mailto:christian.thalinger at oracle.com <mailto:christian.thalinger at oracle.com>>> wrote:
>>>
>>> I found a problem when graal.jar is appended to the boot class path. Somehow (and I don’t know why, yet) in that case
>>> jdk.vm.ci classes are not found when trying to preload them and the VM crashes. We need to make sure the jdk.vm.ci
>>> classes are preloaded if the JVMCI is enabled.
>>>
>>> diff -r 1b1fb02718ef src/share/vm/classfile/systemDictionary.cpp
>>> --- a/src/share/vm/classfile/systemDictionary.cppThu Mar 31 09:16:49 2016 -0700
>>> +++ b/src/share/vm/classfile/systemDictionary.cppThu Mar 31 13:04:35 2016 -1000
>>> @@ -2063,7 +2063,18 @@ bool SystemDictionary::initialize_wk_kla
>>> int sid = (info >> CEIL_LG_OPTION_LIMIT);
>>> Symbol* symbol = vmSymbols::symbol_at((vmSymbols::SID)sid);
>>> InstanceKlass** klassp = &_well_known_klasses[id];
>>> - bool must_load = (init_opt < SystemDictionary::Opt);
>>> +
>>> + bool must_load;
>>> +#if INCLUDE_JVMCI
>>> + if (EnableJVMCI) {
>>> + // If JVMCI is enabled we require its classes to be found.
>>> + must_load = (init_opt <= SystemDictionary::Jvmci);
>>> + } else
>>> +#endif
>>> + {
>>> + must_load = (init_opt < SystemDictionary::Opt);
>>> + }
>>> +
>>> if ((*klassp) == NULL) {
>>> Klass* k;
>>> if (must_load) {
>>> diff -r 1b1fb02718ef src/share/vm/classfile/systemDictionary.hpp
>>> --- a/src/share/vm/classfile/systemDictionary.hppThu Mar 31 09:16:49 2016 -0700
>>> +++ b/src/share/vm/classfile/systemDictionary.hppThu Mar 31 13:04:35 2016 -1000
>>> @@ -241,7 +241,7 @@ class SystemDictionary : AllStatic {
>>>
>>> Opt, // preload tried; NULL if not present
>>> #if INCLUDE_JVMCI
>>> - Jvmci, // preload tried; error if not present, use only with JVMCI
>>> + Jvmci, // preload tried; error if not present if JVMCI enabled
>>> #endif
>>> OPTION_LIMIT,
>>> CEIL_LG_OPTION_LIMIT = 2 // OPTION_LIMIT <= (1<<CEIL_LG_OPTION_LIMIT)
>>>
>>>
>>>> On Mar 31, 2016, at 11:10 AM, Christian Thalinger <christian.thalinger at oracle.com <mailto:christian.thalinger at oracle.com>
>>>> <mailto:christian.thalinger at oracle.com <mailto:christian.thalinger at oracle.com>>> wrote:
>>>>
>>>> Thanks, Vladimir.
>>>>
>>>>> On Mar 30, 2016, at 7:09 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com><mailto:vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>>> wrote:
>>>>>
>>>>> Looks fine.
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 3/30/16 5:01 PM, Christian Thalinger wrote:
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8144964 <https://bugs.openjdk.java.net/browse/JDK-8144964>
>>>>>> http://cr.openjdk.java.net/~twisti/8144964/webrev.01/ <http://cr.openjdk.java.net/~twisti/8144964/webrev.01/>
>>>>>>
>>>>>> JVMCI compilations need to be disabled until the module system is initialized. Basically, only allow tier 1-3
>>>>>> compilations until it's up.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20160331/91ff4786/attachment.html>
More information about the hotspot-compiler-dev
mailing list