235 CodeBlob* cb = sfs.current()->cb(); 236 if (cb != NULL && cb->oop_maps() ) { 237 // Find oopmap for current method 238 const ImmutableOopMap* map = cb->oop_map_for_return_address(sfs.current()->pc()); 239 assert(map != NULL, "no oopmap found for pc"); 240 found = map->has_derived_pointer(); 241 } 242 } 243 if (found) { 244 // $$$ Not sure what to do here. 245 /* 246 Scavenge::invoke(0); 247 */ 248 } 249 #endif 250 } 251 252 253 void InterfaceSupport::verify_stack() { 254 JavaThread* thread = JavaThread::current(); 255 BufferedValuesDealiaser dealiaser(thread); 256 ResourceMark rm(thread); 257 // disabled because it throws warnings that oop maps should only be accessed 258 // in VM thread or during debugging 259 260 if (!thread->has_pending_exception()) { 261 // verification does not work if there are pending exceptions 262 StackFrameStream sfs(thread); 263 CodeBlob* cb = sfs.current()->cb(); 264 // In case of exceptions we might not have a runtime_stub on 265 // top of stack, hence, all callee-saved registers are not going 266 // to be setup correctly, hence, we cannot do stack verify 267 if (cb != NULL && !(cb->is_runtime_stub() || cb->is_uncommon_trap_stub())) return; 268 269 for (; !sfs.is_done(); sfs.next()) { 270 sfs.current()->verify(sfs.register_map()); 271 } 272 } 273 } 274 275 276 void InterfaceSupport::verify_last_frame() { 277 JavaThread* thread = JavaThread::current(); 278 BufferedValuesDealiaser dealiaser(thread); 279 ResourceMark rm(thread); 280 RegisterMap reg_map(thread); 281 frame fr = thread->last_frame(); 282 fr.verify(®_map); 283 } 284 285 286 #endif // ASSERT 287 288 289 void InterfaceSupport_init() { 290 #ifdef ASSERT 291 if (ScavengeALot || FullGCALot) { 292 srand(ScavengeALotInterval * FullGCALotInterval); 293 } 294 #endif 295 } 296 297 #ifdef ASSERT 298 // JRT_LEAF rules: | 235 CodeBlob* cb = sfs.current()->cb(); 236 if (cb != NULL && cb->oop_maps() ) { 237 // Find oopmap for current method 238 const ImmutableOopMap* map = cb->oop_map_for_return_address(sfs.current()->pc()); 239 assert(map != NULL, "no oopmap found for pc"); 240 found = map->has_derived_pointer(); 241 } 242 } 243 if (found) { 244 // $$$ Not sure what to do here. 245 /* 246 Scavenge::invoke(0); 247 */ 248 } 249 #endif 250 } 251 252 253 void InterfaceSupport::verify_stack() { 254 JavaThread* thread = JavaThread::current(); 255 ResourceMark rm(thread); 256 // disabled because it throws warnings that oop maps should only be accessed 257 // in VM thread or during debugging 258 259 if (!thread->has_pending_exception()) { 260 // verification does not work if there are pending exceptions 261 StackFrameStream sfs(thread); 262 CodeBlob* cb = sfs.current()->cb(); 263 // In case of exceptions we might not have a runtime_stub on 264 // top of stack, hence, all callee-saved registers are not going 265 // to be setup correctly, hence, we cannot do stack verify 266 if (cb != NULL && !(cb->is_runtime_stub() || cb->is_uncommon_trap_stub())) return; 267 268 for (; !sfs.is_done(); sfs.next()) { 269 sfs.current()->verify(sfs.register_map()); 270 } 271 } 272 } 273 274 275 void InterfaceSupport::verify_last_frame() { 276 JavaThread* thread = JavaThread::current(); 277 ResourceMark rm(thread); 278 RegisterMap reg_map(thread); 279 frame fr = thread->last_frame(); 280 fr.verify(®_map); 281 } 282 283 284 #endif // ASSERT 285 286 287 void InterfaceSupport_init() { 288 #ifdef ASSERT 289 if (ScavengeALot || FullGCALot) { 290 srand(ScavengeALotInterval * FullGCALotInterval); 291 } 292 #endif 293 } 294 295 #ifdef ASSERT 296 // JRT_LEAF rules: |