207 CodeBlob* cb = sfs.current()->cb(); 208 if (cb != NULL && cb->oop_maps() ) { 209 // Find oopmap for current method 210 const ImmutableOopMap* map = cb->oop_map_for_return_address(sfs.current()->pc()); 211 assert(map != NULL, "no oopmap found for pc"); 212 found = map->has_derived_pointer(); 213 } 214 } 215 if (found) { 216 // $$$ Not sure what to do here. 217 /* 218 Scavenge::invoke(0); 219 */ 220 } 221 #endif 222 } 223 224 225 void InterfaceSupport::verify_stack() { 226 JavaThread* thread = JavaThread::current(); 227 ResourceMark rm(thread); 228 // disabled because it throws warnings that oop maps should only be accessed 229 // in VM thread or during debugging 230 231 if (!thread->has_pending_exception()) { 232 // verification does not work if there are pending exceptions 233 StackFrameStream sfs(thread); 234 CodeBlob* cb = sfs.current()->cb(); 235 // In case of exceptions we might not have a runtime_stub on 236 // top of stack, hence, all callee-saved registers are not going 237 // to be setup correctly, hence, we cannot do stack verify 238 if (cb != NULL && !(cb->is_runtime_stub() || cb->is_uncommon_trap_stub())) return; 239 240 for (; !sfs.is_done(); sfs.next()) { 241 sfs.current()->verify(sfs.register_map()); 242 } 243 } 244 } 245 246 247 void InterfaceSupport::verify_last_frame() { 248 JavaThread* thread = JavaThread::current(); 249 ResourceMark rm(thread); 250 RegisterMap reg_map(thread); 251 frame fr = thread->last_frame(); 252 fr.verify(®_map); 253 } 254 255 256 #endif // ASSERT 257 258 259 void InterfaceSupport_init() { 260 #ifdef ASSERT 261 if (ScavengeALot || FullGCALot) { 262 srand(ScavengeALotInterval * FullGCALotInterval); 263 } 264 #endif 265 } | 207 CodeBlob* cb = sfs.current()->cb(); 208 if (cb != NULL && cb->oop_maps() ) { 209 // Find oopmap for current method 210 const ImmutableOopMap* map = cb->oop_map_for_return_address(sfs.current()->pc()); 211 assert(map != NULL, "no oopmap found for pc"); 212 found = map->has_derived_pointer(); 213 } 214 } 215 if (found) { 216 // $$$ Not sure what to do here. 217 /* 218 Scavenge::invoke(0); 219 */ 220 } 221 #endif 222 } 223 224 225 void InterfaceSupport::verify_stack() { 226 JavaThread* thread = JavaThread::current(); 227 BufferedValuesDealiaser dealiaser(thread); 228 ResourceMark rm(thread); 229 // disabled because it throws warnings that oop maps should only be accessed 230 // in VM thread or during debugging 231 232 if (!thread->has_pending_exception()) { 233 // verification does not work if there are pending exceptions 234 StackFrameStream sfs(thread); 235 CodeBlob* cb = sfs.current()->cb(); 236 // In case of exceptions we might not have a runtime_stub on 237 // top of stack, hence, all callee-saved registers are not going 238 // to be setup correctly, hence, we cannot do stack verify 239 if (cb != NULL && !(cb->is_runtime_stub() || cb->is_uncommon_trap_stub())) return; 240 241 for (; !sfs.is_done(); sfs.next()) { 242 sfs.current()->verify(sfs.register_map()); 243 } 244 } 245 } 246 247 248 void InterfaceSupport::verify_last_frame() { 249 JavaThread* thread = JavaThread::current(); 250 BufferedValuesDealiaser dealiaser(thread); 251 ResourceMark rm(thread); 252 RegisterMap reg_map(thread); 253 frame fr = thread->last_frame(); 254 fr.verify(®_map); 255 } 256 257 258 #endif // ASSERT 259 260 261 void InterfaceSupport_init() { 262 #ifdef ASSERT 263 if (ScavengeALot || FullGCALot) { 264 srand(ScavengeALotInterval * FullGCALotInterval); 265 } 266 #endif 267 } |