コード例 #1
0
void NonTieredCompPolicy::reset_counter_for_back_branch_event(methodHandle m) {
    // Delay next back-branch event but pump up invocation counter to triger
    // whole method compilation.
    InvocationCounter* i = m->invocation_counter();
    InvocationCounter* b = m->backedge_counter();

    // Don't set invocation_counter's value too low otherwise the method will
    // look like immature (ic < ~5300) which prevents the inlining based on
    // the type profiling.
    i->set(i->state(), CompileThreshold);
    // Don't reset counter too low - it is used to check if OSR method is ready.
    b->set(b->state(), CompileThreshold / 2);
}
コード例 #2
0
void NonTieredCompPolicy::reprofile(ScopeDesc* trap_scope, bool is_osr) {
    ScopeDesc* sd = trap_scope;
    for (; !sd->is_top(); sd = sd->sender()) {
        // Reset ICs of inlined methods, since they can trigger compilations also.
        sd->method()->invocation_counter()->reset();
    }
    InvocationCounter* c = sd->method()->invocation_counter();
    if (is_osr) {
        // It was an OSR method, so bump the count higher.
        c->set(c->state(), CompileThreshold);
    } else {
        c->reset();
    }
    sd->method()->backedge_counter()->reset();
}