< prev index next >

src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.cpp

Print this page
rev 60703 : 8227745, 8233915: Enable Escape Analysis for Better Performance in the Presence of JVMTI Agents
Reviewed-by: mdoerr, goetz


 278     MonitorChunk* chunk = jt->monitor_chunks();
 279     for (; chunk != NULL; chunk = chunk->next()) {
 280       chunk->oops_do(&rcl);
 281     }
 282 
 283     if (rcl.complete()) {
 284       return true;
 285     }
 286 
 287     // Traverse the execution stack
 288     for (StackFrameStream fst(jt); !fst.is_done(); fst.next()) {
 289       fst.current()->oops_do(&rcl, NULL, fst.register_map());
 290     }
 291 
 292   } // last java frame
 293 
 294   if (rcl.complete()) {
 295     return true;
 296   }
 297 
 298   GrowableArray<jvmtiDeferredLocalVariableSet*>* const list = jt->deferred_locals();
 299   if (list != NULL) {
 300     for (int i = 0; i < list->length(); i++) {
 301       list->at(i)->oops_do(&rcl);
 302     }
 303   }
 304 
 305   if (rcl.complete()) {
 306     return true;
 307   }
 308 
 309   // Traverse instance variables at the end since the GC may be moving things
 310   // around using this function
 311   /*
 312   * // can't reach these oop* from the outside
 313   f->do_oop((oop*) &_threadObj);
 314   f->do_oop((oop*) &_vm_result);
 315   f->do_oop((oop*) &_exception_oop);
 316   f->do_oop((oop*) &_pending_async_exception);
 317   */
 318 




 278     MonitorChunk* chunk = jt->monitor_chunks();
 279     for (; chunk != NULL; chunk = chunk->next()) {
 280       chunk->oops_do(&rcl);
 281     }
 282 
 283     if (rcl.complete()) {
 284       return true;
 285     }
 286 
 287     // Traverse the execution stack
 288     for (StackFrameStream fst(jt); !fst.is_done(); fst.next()) {
 289       fst.current()->oops_do(&rcl, NULL, fst.register_map());
 290     }
 291 
 292   } // last java frame
 293 
 294   if (rcl.complete()) {
 295     return true;
 296   }
 297 
 298   GrowableArray<jvmtiDeferredLocalVariableSet*>* const list = JvmtiDeferredUpdates::deferred_locals(jt);
 299   if (list != NULL) {
 300     for (int i = 0; i < list->length(); i++) {
 301       list->at(i)->oops_do(&rcl);
 302     }
 303   }
 304 
 305   if (rcl.complete()) {
 306     return true;
 307   }
 308 
 309   // Traverse instance variables at the end since the GC may be moving things
 310   // around using this function
 311   /*
 312   * // can't reach these oop* from the outside
 313   f->do_oop((oop*) &_threadObj);
 314   f->do_oop((oop*) &_vm_result);
 315   f->do_oop((oop*) &_exception_oop);
 316   f->do_oop((oop*) &_pending_async_exception);
 317   */
 318 


< prev index next >