Example #1
0
JVMState* WarmCallGenerator::generate(JVMState* jvms) {
    Compile* C = Compile::current();
    if (C->log() != NULL) {
        C->log()->elem("warm_call bci='%d'", jvms->bci());
    }
    jvms = _if_cold->generate(jvms);
    if (jvms != NULL) {
        Node* m = jvms->map()->control();
        if (m->is_CatchProj()) m = m->in(0);
        else m = C->top();
        if (m->is_Catch())     m = m->in(0);
        else m = C->top();
        if (m->is_Proj())      m = m->in(0);
        else m = C->top();
        if (m->is_CallJava()) {
            _call_info->set_call(m->as_Call());
            _call_info->set_hot_cg(_if_hot);
#ifndef PRODUCT
            if (PrintOpto || PrintOptoInlining) {
                tty->print_cr("Queueing for warm inlining at bci %d:", jvms->bci());
                tty->print("WCI: ");
                _call_info->print();
            }
#endif
            _call_info->set_heat(_call_info->compute_heat());
            C->set_warm_calls(_call_info->insert_into(C->warm_calls()));
        }
    }
    return jvms;
}