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 }
|