RFR: bootstrap might exit early in debug JVM

Christian Thalinger christian.thalinger at oracle.com
Thu Mar 12 00:23:27 UTC 2015


Done.

> On Mar 5, 2015, at 8:11 AM, Doug Simon <doug.simon at oracle.com> wrote:
> 
> You are welcome to try.
> 
>> On Mar 5, 2015, at 4:15 PM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
>> 
>> No problem.  Are you pushing it or should I do it?
>> 
>>> On Mar 5, 2015, at 1:32 AM, Doug Simon <doug.simon at oracle.com> wrote:
>>> 
>>> Looks good to me. However, getting it integrated may take a while given the current gate instability.
>>> 
>>>> On Mar 5, 2015, at 12:53 AM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
>>>> 
>>>> Sometimes a debug JVM is too slow to schedule compilations in time during a bootstrap and the result is an early exit:
>>>> 
>>>> Bootstrapping Graal in 1000 ms (compiled 0 methods)
>>>> 
>>>> Here is a fix that waits until there are some methods in the queue the first time:
>>>> 
>>>> diff --git a/src/share/vm/graal/graalCompiler.cpp b/src/share/vm/graal/graalCompiler.cpp
>>>> --- a/src/share/vm/graal/graalCompiler.cpp
>>>> +++ b/src/share/vm/graal/graalCompiler.cpp
>>>> @@ -85,12 +85,15 @@
>>>> }
>>>> 
>>>> int qsize;
>>>> -  jlong sleep_time = 1000;
>>>> +  bool first_round = true;
>>>> int z = 0;
>>>> do {
>>>> -    os::sleep(THREAD, sleep_time, true);
>>>> -    sleep_time = 100;
>>>> -    qsize = CompileBroker::queue_size(CompLevel_full_optimization);
>>>> +    // Loop until there is something in the queue.
>>>> +    do {
>>>> +      os::sleep(THREAD, 100, true);
>>>> +      qsize = CompileBroker::queue_size(CompLevel_full_optimization);
>>>> +    } while (first_round && qsize == 0);
>>>> +    first_round = false;
>>>>  if (PrintBootstrap) {
>>>>    while (z < (_methodsCompiled / 100)) {
>>>>      ++z;
>>>> 
>>> 
>> 
> 



More information about the graal-dev mailing list