< prev index next >

src/hotspot/share/c1/c1_LIRAssembler.cpp

Print this page




 429   return stub;
 430 }
 431 
 432 void LIR_Assembler::add_debug_info_for_div0_here(CodeEmitInfo* info) {
 433   add_debug_info_for_div0(code_offset(), info);
 434 }
 435 
 436 void LIR_Assembler::add_debug_info_for_div0(int pc_offset, CodeEmitInfo* cinfo) {
 437   DivByZeroStub* stub = new DivByZeroStub(pc_offset, cinfo);
 438   append_code_stub(stub);
 439 }
 440 
 441 void LIR_Assembler::emit_rtcall(LIR_OpRTCall* op) {
 442   rt_call(op->result_opr(), op->addr(), op->arguments(), op->tmp(), op->info());
 443 }
 444 
 445 
 446 void LIR_Assembler::emit_call(LIR_OpJavaCall* op) {
 447   verify_oop_map(op->info());
 448 
 449   if (os::is_MP()) {
 450     // must align calls sites, otherwise they can't be updated atomically on MP hardware
 451     align_call(op->code());
 452   }
 453 
 454   // emit the static call stub stuff out of line
 455   emit_static_call_stub();
 456   CHECK_BAILOUT();
 457 
 458   switch (op->code()) {
 459   case lir_static_call:
 460   case lir_dynamic_call:
 461     call(op, relocInfo::static_call_type);
 462     break;
 463   case lir_optvirtual_call:
 464     call(op, relocInfo::opt_virtual_call_type);
 465     break;
 466   case lir_icvirtual_call:
 467     ic_call(op);
 468     break;
 469   case lir_virtual_call:
 470     vtable_call(op);
 471     break;
 472   default:




 429   return stub;
 430 }
 431 
 432 void LIR_Assembler::add_debug_info_for_div0_here(CodeEmitInfo* info) {
 433   add_debug_info_for_div0(code_offset(), info);
 434 }
 435 
 436 void LIR_Assembler::add_debug_info_for_div0(int pc_offset, CodeEmitInfo* cinfo) {
 437   DivByZeroStub* stub = new DivByZeroStub(pc_offset, cinfo);
 438   append_code_stub(stub);
 439 }
 440 
 441 void LIR_Assembler::emit_rtcall(LIR_OpRTCall* op) {
 442   rt_call(op->result_opr(), op->addr(), op->arguments(), op->tmp(), op->info());
 443 }
 444 
 445 
 446 void LIR_Assembler::emit_call(LIR_OpJavaCall* op) {
 447   verify_oop_map(op->info());
 448 
 449   // must align calls sites, otherwise they can't be updated atomically

 450   align_call(op->code());

 451 
 452   // emit the static call stub stuff out of line
 453   emit_static_call_stub();
 454   CHECK_BAILOUT();
 455 
 456   switch (op->code()) {
 457   case lir_static_call:
 458   case lir_dynamic_call:
 459     call(op, relocInfo::static_call_type);
 460     break;
 461   case lir_optvirtual_call:
 462     call(op, relocInfo::opt_virtual_call_type);
 463     break;
 464   case lir_icvirtual_call:
 465     ic_call(op);
 466     break;
 467   case lir_virtual_call:
 468     vtable_call(op);
 469     break;
 470   default:


< prev index next >