Invocation counters always decay at the first safepoint regardless of CounterDecayMinIntervalLength when using SimpleThresholdPolicy (-XX:-TieredCompilation).
This leads to warmup issues (e.g. observed in compiler/c2/Test8004741.java). Some methods don't get compiled as early as expected after the first safepoint.
Reason:
SimpleThresholdPolicy uses a dedicated class CounterDecay which contains a static timestamp. The timestamp is initialized to 0 and is_decay_needed() compares it to the current time.