870 } |
870 } |
871 } |
871 } |
872 |
872 |
873 |
873 |
874 void LIRGenerator::do_NewInstance(NewInstance* x) { |
874 void LIRGenerator::do_NewInstance(NewInstance* x) { |
|
875 print_if_not_loaded(x); |
|
876 |
875 // This instruction can be deoptimized in the slow path : use |
877 // This instruction can be deoptimized in the slow path : use |
876 // O0 as result register. |
878 // O0 as result register. |
877 const LIR_Opr reg = result_register_for(x->type()); |
879 const LIR_Opr reg = result_register_for(x->type()); |
878 #ifndef PRODUCT |
880 |
879 if (PrintNotLoaded && !x->klass()->is_loaded()) { |
|
880 tty->print_cr(" ###class not loaded at new bci %d", x->printable_bci()); |
|
881 } |
|
882 #endif |
|
883 CodeEmitInfo* info = state_for(x, x->state()); |
881 CodeEmitInfo* info = state_for(x, x->state()); |
884 LIR_Opr tmp1 = FrameMap::G1_oop_opr; |
882 LIR_Opr tmp1 = FrameMap::G1_oop_opr; |
885 LIR_Opr tmp2 = FrameMap::G3_oop_opr; |
883 LIR_Opr tmp2 = FrameMap::G3_oop_opr; |
886 LIR_Opr tmp3 = FrameMap::G4_oop_opr; |
884 LIR_Opr tmp3 = FrameMap::G4_oop_opr; |
887 LIR_Opr tmp4 = FrameMap::O1_oop_opr; |
885 LIR_Opr tmp4 = FrameMap::O1_oop_opr; |
888 LIR_Opr klass_reg = FrameMap::G5_metadata_opr; |
886 LIR_Opr klass_reg = FrameMap::G5_metadata_opr; |
889 new_instance(reg, x->klass(), tmp1, tmp2, tmp3, tmp4, klass_reg, info); |
887 new_instance(reg, x->klass(), x->is_unresolved(), tmp1, tmp2, tmp3, tmp4, klass_reg, info); |
890 LIR_Opr result = rlock_result(x); |
888 LIR_Opr result = rlock_result(x); |
891 __ move(reg, result); |
889 __ move(reg, result); |
892 } |
890 } |
893 |
891 |
894 |
892 |