447 void LIR_Assembler::add_debug_info_for_div0(int pc_offset, CodeEmitInfo* cinfo) {
448 DivByZeroStub* stub = new DivByZeroStub(pc_offset, cinfo);
449 append_code_stub(stub);
450 }
451
452 void LIR_Assembler::emit_rtcall(LIR_OpRTCall* op) {
453 rt_call(op->result_opr(), op->addr(), op->arguments(), op->tmp(), op->info());
454 }
455
456
457 void LIR_Assembler::emit_call(LIR_OpJavaCall* op) {
458 verify_oop_map(op->info());
459
460 if (os::is_MP()) {
461 // must align calls sites, otherwise they can't be updated atomically on MP hardware
462 align_call(op->code());
463 }
464
465 // emit the static call stub stuff out of line
466 emit_static_call_stub();
467
468 switch (op->code()) {
469 case lir_static_call:
470 case lir_dynamic_call:
471 call(op, relocInfo::static_call_type);
472 break;
473 case lir_optvirtual_call:
474 call(op, relocInfo::opt_virtual_call_type);
475 break;
476 case lir_icvirtual_call:
477 ic_call(op);
478 break;
479 case lir_virtual_call:
480 vtable_call(op);
481 break;
482 default:
483 fatal(err_msg_res("unexpected op code: %s", op->name()));
484 break;
485 }
486
|
447 void LIR_Assembler::add_debug_info_for_div0(int pc_offset, CodeEmitInfo* cinfo) {
448 DivByZeroStub* stub = new DivByZeroStub(pc_offset, cinfo);
449 append_code_stub(stub);
450 }
451
452 void LIR_Assembler::emit_rtcall(LIR_OpRTCall* op) {
453 rt_call(op->result_opr(), op->addr(), op->arguments(), op->tmp(), op->info());
454 }
455
456
457 void LIR_Assembler::emit_call(LIR_OpJavaCall* op) {
458 verify_oop_map(op->info());
459
460 if (os::is_MP()) {
461 // must align calls sites, otherwise they can't be updated atomically on MP hardware
462 align_call(op->code());
463 }
464
465 // emit the static call stub stuff out of line
466 emit_static_call_stub();
467 CHECK_BAILOUT();
468
469 switch (op->code()) {
470 case lir_static_call:
471 case lir_dynamic_call:
472 call(op, relocInfo::static_call_type);
473 break;
474 case lir_optvirtual_call:
475 call(op, relocInfo::opt_virtual_call_type);
476 break;
477 case lir_icvirtual_call:
478 ic_call(op);
479 break;
480 case lir_virtual_call:
481 vtable_call(op);
482 break;
483 default:
484 fatal(err_msg_res("unexpected op code: %s", op->name()));
485 break;
486 }
487
|