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())); |