src/cpu/mips/vm/assembler_mips.cpp

changeset 14
92759d406e78
parent 9
81c75db49881
child 16
3cedde979d75
equal deleted inserted replaced
13:bc227c49eaae 14:92759d406e78
3301 sb(reg, BCP, offset + 1); 3301 sb(reg, BCP, offset + 1);
3302 } 3302 }
3303 else 3303 else
3304 sh(reg, BCP, offset); 3304 sh(reg, BCP, offset);
3305 } 3305 }
3306
3307 void MacroAssembler::get_4_byte_integer_at_bcp(
3308 Register reg,
3309 Register tmp,
3310 int offset) {
3311 assert(reg != tmp, "need separate temp register");
3312 if (offset & 3) { // Offset unaligned?
3313 lbu(reg, BCP, offset+3);
3314 lbu(tmp, BCP, offset+2);
3315 #ifdef _LP64
3316 dsll(reg, reg, 8);
3317 daddu(reg, tmp, reg);
3318 lbu(tmp, BCP, offset+1);
3319 dsll(reg, reg, 8);
3320 daddu(reg, tmp, reg);
3321 lbu(tmp, BCP, offset);
3322 dsll(reg, reg, 8);
3323 daddu(reg, tmp, reg);
3324 #else
3325 sll(reg, reg, 8);
3326 addu(reg, tmp, reg);
3327 lbu(tmp, BCP, offset+1);
3328 sll(reg, reg, 8);
3329 addu(reg, tmp, reg);
3330 lbu(tmp, BCP, offset);
3331 sll(reg, reg, 8);
3332 addu(reg, tmp, reg);
3333 #endif
3334 } else {
3335 lwu(reg, BCP, offset);
3336 }
3337 }
3338
3306 //for UseCompressedOops Option 3339 //for UseCompressedOops Option
3307 void MacroAssembler::load_klass(Register dst, Register src) { 3340 void MacroAssembler::load_klass(Register dst, Register src) {
3308 #ifdef _LP64 3341 #ifdef _LP64
3309 if(UseCompressedClassPointers){ 3342 if(UseCompressedClassPointers){
3310 lwu(dst, Address(src, oopDesc::klass_offset_in_bytes())); 3343 lwu(dst, Address(src, oopDesc::klass_offset_in_bytes()));

mercurial