< prev index next >

src/hotspot/share/runtime/interfaceSupport.cpp

Print this page




 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(&reg_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(&reg_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 }
< prev index next >