src/cpu/mips/vm/templateInterpreter_mips_64.cpp

changeset 8858
e3f4d3592615
parent 8027
23d8d77777e0
child 8863
5376ce0dc552
equal deleted inserted replaced
8857:69619c96717a 8858:e3f4d3592615
682 __ move(T1, in_bytes(ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset())); 682 __ move(T1, in_bytes(ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()));
683 __ dadd(T1, T1, T8); 683 __ dadd(T1, T1, T8);
684 __ dadd(T1, T1, T2); 684 __ dadd(T1, T1, T2);
685 __ lw(T3, T1, 0); 685 __ lw(T3, T1, 0);
686 686
687 Label notByte, notShort, notChar, notObj; 687 Label notByte, notBool, notShort, notChar, notObj;
688 // const Address field_address (eax, esi, Address::times_1); 688 // const Address field_address (eax, esi, Address::times_1);
689 689
690 // Need to differentiate between igetfield, agetfield, bgetfield etc. 690 // Need to differentiate between igetfield, agetfield, bgetfield etc.
691 // because they are different sizes. 691 // because they are different sizes.
692 // Use the type from the constant pool cache 692 // Use the type from the constant pool cache
699 699
700 __ lb(V0, T0, 0); 700 __ lb(V0, T0, 0);
701 __ b(xreturn_path); 701 __ b(xreturn_path);
702 __ delayed()->nop(); 702 __ delayed()->nop();
703 703
704 //ztos
705 __ bind(notByte);
706 __ daddi(T1, T3, (-1) * ztos);
707 __ bne(T1, R0, notBool);
708 __ delayed()->nop();
709 __ lb(V0, T0, 0);
710 __ b(xreturn_path);
711 __ delayed()->nop();
712
704 //stos 713 //stos
705 __ bind(notByte); 714 __ bind(notBool);
706 __ daddi(T1, T3, (-1) * stos); 715 __ daddi(T1, T3, (-1) * stos);
707 __ bne(T1, R0, notShort); 716 __ bne(T1, R0, notShort);
708 __ delayed()->nop(); 717 __ delayed()->nop();
709 __ lh(V0, T0, 0); 718 __ lh(V0, T0, 0);
710 __ b(xreturn_path); 719 __ b(xreturn_path);

mercurial