src/share/vm/opto/callGenerator.cpp

Print this page
rev 3898 : 8005031: Some cleanup in c2 to prepare for incremental inlining support
Summary: collection of small changes to prepare for incremental inlining.
Reviewed-by:

*** 272,292 **** // Convert the CallStaticJava into an inline virtual void do_late_inline(); virtual JVMState* generate(JVMState* jvms) { // Record that this call site should be revisited once the main // parse is finished. Compile::current()->add_late_inline(this); // Emit the CallStaticJava and request separate projections so // that the late inlining logic can distinguish between fall // through and exceptional uses of the memory and io projections // as is done for allocations and macro expansion. return DirectCallGenerator::generate(jvms); } - }; void LateInlineCallGenerator::do_late_inline() { // Can't inline it --- 272,294 ---- // Convert the CallStaticJava into an inline virtual void do_late_inline(); virtual JVMState* generate(JVMState* jvms) { + Compile *C = Compile::current(); + C->print_inlining_skip(this); + // Record that this call site should be revisited once the main // parse is finished. Compile::current()->add_late_inline(this); // Emit the CallStaticJava and request separate projections so // that the late inlining logic can distinguish between fall // through and exceptional uses of the memory and io projections // as is done for allocations and macro expansion. return DirectCallGenerator::generate(jvms); } }; void LateInlineCallGenerator::do_late_inline() { // Can't inline it
*** 305,315 **** map->init_req(i1, call->in(i1)); } // Make sure the state is a MergeMem for parsing. if (!map->in(TypeFunc::Memory)->is_MergeMem()) { ! map->set_req(TypeFunc::Memory, MergeMemNode::make(C, map->in(TypeFunc::Memory))); } // Make enough space for the expression stack and transfer the incoming arguments int nargs = method()->arg_size(); jvms->set_map(map); --- 307,319 ---- map->init_req(i1, call->in(i1)); } // Make sure the state is a MergeMem for parsing. if (!map->in(TypeFunc::Memory)->is_MergeMem()) { ! Node* mem = MergeMemNode::make(C, map->in(TypeFunc::Memory)); ! C->initial_gvn()->set_type_bottom(mem); ! map->set_req(TypeFunc::Memory, mem); } // Make enough space for the expression stack and transfer the incoming arguments int nargs = method()->arg_size(); jvms->set_map(map);
*** 318,327 **** --- 322,333 ---- for (int i1 = 0; i1 < nargs; i1++) { map->set_req(i1 + jvms->argoff(), call->in(TypeFunc::Parms + i1)); } } + C->print_inlining_insert(this); + CompileLog* log = C->log(); if (log != NULL) { log->head("late_inline method='%d'", log->identify(method())); JVMState* p = jvms; while (p != NULL) {
*** 606,616 **** const int vtable_index = Method::invalid_vtable_index; CallGenerator* cg = C->call_generator(target, vtable_index, false, jvms, true, PROB_ALWAYS); if (cg != NULL && cg->is_inline()) return cg; } else { ! if (PrintInlining) CompileTask::print_inlining(callee, jvms->depth() - 1, jvms->bci(), "receiver not constant"); } } break; case vmIntrinsics::_linkToVirtual: --- 612,622 ---- const int vtable_index = Method::invalid_vtable_index; CallGenerator* cg = C->call_generator(target, vtable_index, false, jvms, true, PROB_ALWAYS); if (cg != NULL && cg->is_inline()) return cg; } else { ! if (PrintInlining) C->print_inlining(callee, jvms->depth() - 1, jvms->bci(), "receiver not constant"); } } break; case vmIntrinsics::_linkToVirtual: