3036:6a991dcb52bb | 3037:3d42f82cd811 |
---|---|
74 #ifndef PRODUCT | 74 #ifndef PRODUCT |
75 if (DebugVtables) { | 75 if (DebugVtables) { |
76 Label L; | 76 Label L; |
77 // check offset vs vtable length | 77 // check offset vs vtable length |
78 __ ld(G3_scratch, instanceKlass::vtable_length_offset()*wordSize, G5); | 78 __ ld(G3_scratch, instanceKlass::vtable_length_offset()*wordSize, G5); |
79 __ cmp(G5, vtable_index*vtableEntry::size()); | 79 __ cmp_and_br_short(G5, vtable_index*vtableEntry::size(), Assembler::greaterUnsigned, Assembler::pt, L); |
80 __ br(Assembler::greaterUnsigned, false, Assembler::pt, L); | |
81 __ delayed()->nop(); | |
82 __ set(vtable_index, O2); | 80 __ set(vtable_index, O2); |
83 __ call_VM(noreg, CAST_FROM_FN_PTR(address, bad_compiled_vtable_index), O0, O2); | 81 __ call_VM(noreg, CAST_FROM_FN_PTR(address, bad_compiled_vtable_index), O0, O2); |
84 __ bind(L); | 82 __ bind(L); |
85 } | 83 } |
86 #endif | 84 #endif |
93 } | 91 } |
94 | 92 |
95 #ifndef PRODUCT | 93 #ifndef PRODUCT |
96 if (DebugVtables) { | 94 if (DebugVtables) { |
97 Label L; | 95 Label L; |
98 __ br_notnull(G5_method, false, Assembler::pt, L); | 96 __ br_notnull_short(G5_method, Assembler::pt, L); |
99 __ delayed()->nop(); | |
100 __ stop("Vtable entry is ZERO"); | 97 __ stop("Vtable entry is ZERO"); |
101 __ bind(L); | 98 __ bind(L); |
102 } | 99 } |
103 #endif | 100 #endif |
104 | 101 |
175 throw_icce); | 172 throw_icce); |
176 | 173 |
177 #ifndef PRODUCT | 174 #ifndef PRODUCT |
178 if (DebugVtables) { | 175 if (DebugVtables) { |
179 Label L01; | 176 Label L01; |
180 __ bpr(Assembler::rc_nz, false, Assembler::pt, L5_method, L01); | 177 __ br_notnull_short(L5_method, Assembler::pt, L01); |
181 __ delayed()->nop(); | |
182 __ stop("methodOop is null"); | 178 __ stop("methodOop is null"); |
183 __ bind(L01); | 179 __ bind(L01); |
184 __ verify_oop(L5_method); | 180 __ verify_oop(L5_method); |
185 } | 181 } |
186 #endif | 182 #endif |