445
446 // emit the static call stub stuff out of line
447 emit_static_call_stub();
448 CHECK_BAILOUT();
449
450 switch (op->code()) {
451 case lir_static_call:
452 case lir_dynamic_call:
453 call(op, relocInfo::static_call_type);
454 break;
455 case lir_optvirtual_call:
456 call(op, relocInfo::opt_virtual_call_type);
457 break;
458 case lir_icvirtual_call:
459 ic_call(op);
460 break;
461 case lir_virtual_call:
462 vtable_call(op);
463 break;
464 default:
465 fatal(err_msg_res("unexpected op code: %s", op->name()));
466 break;
467 }
468
469 // JSR 292
470 // Record if this method has MethodHandle invokes.
471 if (op->is_method_handle_invoke()) {
472 compilation()->set_has_method_handle_invokes(true);
473 }
474
475 #if defined(X86) && defined(TIERED)
476 // C2 leave fpu stack dirty clean it
477 if (UseSSE < 2) {
478 int i;
479 for ( i = 1; i <= 7 ; i++ ) {
480 ffree(i);
481 }
482 if (!op->result_opr()->is_float_kind()) {
483 ffree(0);
484 }
485 }
|
445
446 // emit the static call stub stuff out of line
447 emit_static_call_stub();
448 CHECK_BAILOUT();
449
450 switch (op->code()) {
451 case lir_static_call:
452 case lir_dynamic_call:
453 call(op, relocInfo::static_call_type);
454 break;
455 case lir_optvirtual_call:
456 call(op, relocInfo::opt_virtual_call_type);
457 break;
458 case lir_icvirtual_call:
459 ic_call(op);
460 break;
461 case lir_virtual_call:
462 vtable_call(op);
463 break;
464 default:
465 fatal("unexpected op code: %s", op->name());
466 break;
467 }
468
469 // JSR 292
470 // Record if this method has MethodHandle invokes.
471 if (op->is_method_handle_invoke()) {
472 compilation()->set_has_method_handle_invokes(true);
473 }
474
475 #if defined(X86) && defined(TIERED)
476 // C2 leave fpu stack dirty clean it
477 if (UseSSE < 2) {
478 int i;
479 for ( i = 1; i <= 7 ; i++ ) {
480 ffree(i);
481 }
482 if (!op->result_opr()->is_float_kind()) {
483 ffree(0);
484 }
485 }
|