src/share/vm/opto/callGenerator.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8042786 Sdiff src/share/vm/opto

src/share/vm/opto/callGenerator.cpp

Print this page




 374   // the incoming arguments and return value.
 375   map->ensure_stack(jvms, jvms->method()->max_stack());
 376   for (uint i1 = 0; i1 < nargs; i1++) {
 377     map->set_argument(jvms, i1, call->in(TypeFunc::Parms + i1));
 378   }
 379 
 380   C->print_inlining_assert_ready();
 381 
 382   C->print_inlining_move_to(this);
 383 
 384   C->log_late_inline(this);
 385 
 386   // This check is done here because for_method_handle_inline() method
 387   // needs jvms for inlined state.
 388   if (!do_late_inline_check(jvms)) {
 389     map->disconnect_inputs(NULL, C);
 390     return;
 391   }
 392 
 393   // Setup default node notes to be picked up by the inlining
 394   Node_Notes* old_nn = C->default_node_notes();
 395   if (old_nn != NULL) {
 396     Node_Notes* entry_nn = old_nn->clone(C);
 397     entry_nn->set_jvms(jvms);
 398     C->set_default_node_notes(entry_nn);
 399   }
 400 
 401   // Now perform the inlining using the synthesized JVMState
 402   JVMState* new_jvms = _inline_cg->generate(jvms, NULL);
 403   if (new_jvms == NULL)  return;  // no change
 404   if (C->failing())      return;
 405 
 406   // Capture any exceptional control flow
 407   GraphKit kit(new_jvms);
 408 
 409   // Find the result object
 410   Node* result = C->top();
 411   int   result_size = method()->return_type()->size();
 412   if (result_size != 0 && !kit.stopped()) {
 413     result = (result_size == 1) ? kit.pop() : kit.pop_pair();
 414   }




 374   // the incoming arguments and return value.
 375   map->ensure_stack(jvms, jvms->method()->max_stack());
 376   for (uint i1 = 0; i1 < nargs; i1++) {
 377     map->set_argument(jvms, i1, call->in(TypeFunc::Parms + i1));
 378   }
 379 
 380   C->print_inlining_assert_ready();
 381 
 382   C->print_inlining_move_to(this);
 383 
 384   C->log_late_inline(this);
 385 
 386   // This check is done here because for_method_handle_inline() method
 387   // needs jvms for inlined state.
 388   if (!do_late_inline_check(jvms)) {
 389     map->disconnect_inputs(NULL, C);
 390     return;
 391   }
 392 
 393   // Setup default node notes to be picked up by the inlining
 394   Node_Notes* old_nn = C->node_notes_at(call->_idx);
 395   if (old_nn != NULL) {
 396     Node_Notes* entry_nn = old_nn->clone(C);
 397     entry_nn->set_jvms(jvms);
 398     C->set_default_node_notes(entry_nn);
 399   }
 400 
 401   // Now perform the inlining using the synthesized JVMState
 402   JVMState* new_jvms = _inline_cg->generate(jvms, NULL);
 403   if (new_jvms == NULL)  return;  // no change
 404   if (C->failing())      return;
 405 
 406   // Capture any exceptional control flow
 407   GraphKit kit(new_jvms);
 408 
 409   // Find the result object
 410   Node* result = C->top();
 411   int   result_size = method()->return_type()->size();
 412   if (result_size != 0 && !kit.stopped()) {
 413     result = (result_size == 1) ? kit.pop() : kit.pop_pair();
 414   }


src/share/vm/opto/callGenerator.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File