RFR(XS): 8167300: Local scheduling failures during gcm should be fatal
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Oct 7 16:32:25 UTC 2016
On 10/7/16 4:25 AM, Roland Westrelin wrote:
>
> Thanks for looking at this, Vladimir.
>
>> First, I can find who can set failure reason in LCM. Can you point me?
>
> It's not set in lcm.cpp. PhaseCFG::schedule_local() returns false and
> the caller (PhaseCFG::global_code_motion()) sets the failure reason.
>
>> Second, is not better for debugging to add assert in a place where we
>> record failure instead of waiting when we exit compilation?
>
> Are you suggesting this?
Yes, it is in addition to your changes.
>
> diff --git a/src/share/vm/opto/lcm.cpp b/src/share/vm/opto/lcm.cpp
> --- a/src/share/vm/opto/lcm.cpp
> +++ b/src/share/vm/opto/lcm.cpp
> @@ -1147,6 +1147,8 @@
> // If this is the first failure, the sentinel string will "stick"
> // to the Compile object, and the C2Compiler will see it and retry.
> C->record_failure(C2Compiler::retry_no_subsuming_loads());
> + } else {
> + assert(false, "graph should be schedulable");
> }
> // assert( phi_cnt == end_idx(), "did not schedule all" );
> return false;
>
>
>> Third, should we do the same for late schedule failure?:
>> C->record_method_not_compilable("late schedule failed: incorrect graph");
>
> Ok. But why don't we do the same for all the other
> record_method_not_compilable() calls in gcm.cpp that don't cause the
> compilation to be reattempted:
Yes, that is what I meant. I gave only one example but it should be for
all cases.
Thanks,
Vladimir
>
> C->record_method_not_compilable("late schedule failed: LCA == NULL");
> C->record_method_not_compilable("late schedule failed: incorrect graph");
> C->record_method_not_compilable("early schedule failed");
>
> ?
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list