1.1 --- a/src/cpu/sparc/vm/relocInfo_sparc.cpp Wed May 21 10:45:07 2008 -0700 1.2 +++ b/src/cpu/sparc/vm/relocInfo_sparc.cpp Wed May 21 13:46:23 2008 -0700 1.3 @@ -87,6 +87,17 @@ 1.4 #ifdef _LP64 1.5 jint inst2; 1.6 guarantee(Assembler::inv_op2(inst)==Assembler::sethi_op2, "must be sethi"); 1.7 + if (format() != 0) { 1.8 + assert(type() == relocInfo::oop_type, "only narrow oops case"); 1.9 + jint np = oopDesc::encode_heap_oop((oop)x); 1.10 + inst &= ~Assembler::hi22(-1); 1.11 + inst |= Assembler::hi22((intptr_t)np); 1.12 + ip->set_long_at(0, inst); 1.13 + inst2 = ip->long_at( NativeInstruction::nop_instruction_size ); 1.14 + guarantee(Assembler::inv_op(inst2)==Assembler::arith_op, "arith op"); 1.15 + ip->set_long_at(NativeInstruction::nop_instruction_size, ip->set_data32_simm13( inst2, (intptr_t)np)); 1.16 + break; 1.17 + } 1.18 ip->set_data64_sethi( ip->addr_at(0), (intptr_t)x ); 1.19 #ifdef COMPILER2 1.20 // [RGV] Someone must have missed putting in a reloc entry for the