555
556 case lir_leal:
557 leal(op->in_opr(), op->result_opr(), op->patch_code(), op->info());
558 break;
559
560 case lir_null_check: {
561 ImplicitNullCheckStub* stub = add_debug_info_for_null_check_here(op->info());
562
563 if (op->in_opr()->is_single_cpu()) {
564 _masm->null_check(op->in_opr()->as_register(), stub->entry());
565 } else {
566 Unimplemented();
567 }
568 break;
569 }
570
571 case lir_monaddr:
572 monitor_address(op->in_opr()->as_constant_ptr()->as_jint(), op->result_opr());
573 break;
574
575 #ifdef SPARC
576 case lir_pack64:
577 pack64(op->in_opr(), op->result_opr());
578 break;
579
580 case lir_unpack64:
581 unpack64(op->in_opr(), op->result_opr());
582 break;
583 #endif
584
585 case lir_unwind:
586 unwind_op(op->in_opr());
587 break;
588
589 default:
590 Unimplemented();
591 break;
592 }
593 }
594
595
596 void LIR_Assembler::emit_op0(LIR_Op0* op) {
597 switch (op->code()) {
598 case lir_nop:
599 assert(op->info() == NULL, "not supported");
600 _masm->nop();
601 break;
602
603 case lir_label:
604 Unimplemented();
818 } else if (src->is_address()) {
819 mem2reg(src, dest, type, patch_code, info, wide, unaligned);
820
821 } else {
822 ShouldNotReachHere();
823 }
824 }
825
826
827 void LIR_Assembler::verify_oop_map(CodeEmitInfo* info) {
828 #ifndef PRODUCT
829 if (VerifyOops) {
830 OopMapStream s(info->oop_map());
831 while (!s.is_done()) {
832 OopMapValue v = s.current();
833 if (v.is_oop()) {
834 VMReg r = v.reg();
835 if (!r->is_stack()) {
836 stringStream st;
837 st.print("bad oop %s at %d", r->as_Register()->name(), _masm->offset());
838 #ifdef SPARC
839 _masm->_verify_oop(r->as_Register(), os::strdup(st.as_string(), mtCompiler), __FILE__, __LINE__);
840 #else
841 _masm->verify_oop(r->as_Register());
842 #endif
843 } else {
844 _masm->verify_stack_oop(r->reg2stack() * VMRegImpl::stack_slot_size);
845 }
846 }
847 check_codespace();
848 CHECK_BAILOUT();
849
850 s.next();
851 }
852 }
853 #endif
854 }
|
555
556 case lir_leal:
557 leal(op->in_opr(), op->result_opr(), op->patch_code(), op->info());
558 break;
559
560 case lir_null_check: {
561 ImplicitNullCheckStub* stub = add_debug_info_for_null_check_here(op->info());
562
563 if (op->in_opr()->is_single_cpu()) {
564 _masm->null_check(op->in_opr()->as_register(), stub->entry());
565 } else {
566 Unimplemented();
567 }
568 break;
569 }
570
571 case lir_monaddr:
572 monitor_address(op->in_opr()->as_constant_ptr()->as_jint(), op->result_opr());
573 break;
574
575 case lir_unwind:
576 unwind_op(op->in_opr());
577 break;
578
579 default:
580 Unimplemented();
581 break;
582 }
583 }
584
585
586 void LIR_Assembler::emit_op0(LIR_Op0* op) {
587 switch (op->code()) {
588 case lir_nop:
589 assert(op->info() == NULL, "not supported");
590 _masm->nop();
591 break;
592
593 case lir_label:
594 Unimplemented();
808 } else if (src->is_address()) {
809 mem2reg(src, dest, type, patch_code, info, wide, unaligned);
810
811 } else {
812 ShouldNotReachHere();
813 }
814 }
815
816
817 void LIR_Assembler::verify_oop_map(CodeEmitInfo* info) {
818 #ifndef PRODUCT
819 if (VerifyOops) {
820 OopMapStream s(info->oop_map());
821 while (!s.is_done()) {
822 OopMapValue v = s.current();
823 if (v.is_oop()) {
824 VMReg r = v.reg();
825 if (!r->is_stack()) {
826 stringStream st;
827 st.print("bad oop %s at %d", r->as_Register()->name(), _masm->offset());
828 _masm->verify_oop(r->as_Register());
829 } else {
830 _masm->verify_stack_oop(r->reg2stack() * VMRegImpl::stack_slot_size);
831 }
832 }
833 check_codespace();
834 CHECK_BAILOUT();
835
836 s.next();
837 }
838 }
839 #endif
840 }
|