1.1 --- a/src/cpu/sparc/vm/vtableStubs_sparc.cpp Fri Apr 11 09:56:35 2008 -0400 1.2 +++ b/src/cpu/sparc/vm/vtableStubs_sparc.cpp Sun Apr 13 17:43:42 2008 -0400 1.3 @@ -60,7 +60,7 @@ 1.4 1.5 // get receiver klass 1.6 address npe_addr = __ pc(); 1.7 - __ ld_ptr(O0, oopDesc::klass_offset_in_bytes(), G3_scratch); 1.8 + __ load_klass(O0, G3_scratch); 1.9 1.10 // set methodOop (in case of interpreted method), and destination address 1.11 int entry_offset = instanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size(); 1.12 @@ -131,7 +131,7 @@ 1.13 1.14 // get receiver klass (also an implicit null-check) 1.15 address npe_addr = __ pc(); 1.16 - __ ld_ptr(O0, oopDesc::klass_offset_in_bytes(), G3_klassOop); 1.17 + __ load_klass(O0, G3_klassOop); 1.18 __ verify_oop(G3_klassOop); 1.19 1.20 // Push a new window to get some temp registers. This chops the head of all 1.21 @@ -237,11 +237,16 @@ 1.22 else { 1.23 const int slop = 2*BytesPerInstWord; // sethi;add (needed for long offsets) 1.24 if (is_vtable_stub) { 1.25 - const int basic = 5*BytesPerInstWord; // ld;ld;ld,jmp,nop 1.26 + // ld;ld;ld,jmp,nop 1.27 + const int basic = 5*BytesPerInstWord + 1.28 + // shift;add for load_klass 1.29 + (UseCompressedOops ? 2*BytesPerInstWord : 0); 1.30 return basic + slop; 1.31 } else { 1.32 // save, ld, ld, sll, and, add, add, ld, cmp, br, add, ld, add, ld, ld, jmp, restore, sethi, jmpl, restore 1.33 - const int basic = (20 LP64_ONLY(+ 6)) * BytesPerInstWord; 1.34 + const int basic = (20 LP64_ONLY(+ 6)) * BytesPerInstWord + 1.35 + // shift;add for load_klass 1.36 + (UseCompressedOops ? 2*BytesPerInstWord : 0); 1.37 return (basic + slop); 1.38 } 1.39 }