< prev index next >

src/hotspot/cpu/arm/stubGenerator_arm.cpp

Print this page
rev 53683 : 8218625: Remove dead code in relocInfo
Reviewed-by: TBD


 803     const Register ret_addr  = Rtmp_save1; // R5/R20
 804     assert_different_registers(oop, klass, tmp1, tmp2, flags, ret_addr, R7);
 805 
 806     Label exit, error;
 807     InlinedAddress verify_oop_count((address) StubRoutines::verify_oop_count_addr());
 808 
 809     __ mrs(Assembler::CPSR, flags);
 810 
 811     __ ldr_literal(tmp1, verify_oop_count);
 812     __ ldr_s32(tmp2, Address(tmp1));
 813     __ add(tmp2, tmp2, 1);
 814     __ str_32(tmp2, Address(tmp1));
 815 
 816     // make sure object is 'reasonable'
 817     __ cbz(oop, exit);                           // if obj is NULL it is ok
 818 
 819     // Check if the oop is in the right area of memory
 820     // Note: oop_mask and oop_bits must be updated if the code is saved/reused
 821     const address oop_mask = (address) Universe::verify_oop_mask();
 822     const address oop_bits = (address) Universe::verify_oop_bits();
 823     __ mov_address(tmp1, oop_mask, symbolic_Relocation::oop_mask_reference);
 824     __ andr(tmp2, oop, tmp1);
 825     __ mov_address(tmp1, oop_bits, symbolic_Relocation::oop_bits_reference);
 826     __ cmp(tmp2, tmp1);
 827     __ b(error, ne);
 828 
 829     // make sure klass is 'reasonable'
 830     __ load_klass(klass, oop);                   // get klass
 831     __ cbz(klass, error);                        // if klass is NULL it is broken
 832 
 833     // return if everything seems ok
 834     __ bind(exit);
 835 
 836     __ msr(Assembler::CPSR_f, flags);
 837 
 838     __ ret();
 839 
 840     // handle errors
 841     __ bind(error);
 842 
 843     __ mov(ret_addr, LR);                      // save return address
 844 
 845     // R0: error message




 803     const Register ret_addr  = Rtmp_save1; // R5/R20
 804     assert_different_registers(oop, klass, tmp1, tmp2, flags, ret_addr, R7);
 805 
 806     Label exit, error;
 807     InlinedAddress verify_oop_count((address) StubRoutines::verify_oop_count_addr());
 808 
 809     __ mrs(Assembler::CPSR, flags);
 810 
 811     __ ldr_literal(tmp1, verify_oop_count);
 812     __ ldr_s32(tmp2, Address(tmp1));
 813     __ add(tmp2, tmp2, 1);
 814     __ str_32(tmp2, Address(tmp1));
 815 
 816     // make sure object is 'reasonable'
 817     __ cbz(oop, exit);                           // if obj is NULL it is ok
 818 
 819     // Check if the oop is in the right area of memory
 820     // Note: oop_mask and oop_bits must be updated if the code is saved/reused
 821     const address oop_mask = (address) Universe::verify_oop_mask();
 822     const address oop_bits = (address) Universe::verify_oop_bits();
 823     __ mov_address(tmp1, oop_mask);
 824     __ andr(tmp2, oop, tmp1);
 825     __ mov_address(tmp1, oop_bits);
 826     __ cmp(tmp2, tmp1);
 827     __ b(error, ne);
 828 
 829     // make sure klass is 'reasonable'
 830     __ load_klass(klass, oop);                   // get klass
 831     __ cbz(klass, error);                        // if klass is NULL it is broken
 832 
 833     // return if everything seems ok
 834     __ bind(exit);
 835 
 836     __ msr(Assembler::CPSR_f, flags);
 837 
 838     __ ret();
 839 
 840     // handle errors
 841     __ bind(error);
 842 
 843     __ mov(ret_addr, LR);                      // save return address
 844 
 845     // R0: error message


< prev index next >