src/hotspot/share/runtime/interfaceSupport.cpp
changeset 58527 f9cc0141574c
parent 57603 f9d9bed12d1a
child 58679 9c3209ff7550
child 59247 56bf71d64d51
equal deleted inserted replaced
58524:e84d8379815b 58527:f9cc0141574c
    53 VMEntryWrapper::~VMEntryWrapper() {
    53 VMEntryWrapper::~VMEntryWrapper() {
    54   InterfaceSupport::check_gc_alot();
    54   InterfaceSupport::check_gc_alot();
    55   if (WalkStackALot) {
    55   if (WalkStackALot) {
    56     InterfaceSupport::walk_stack();
    56     InterfaceSupport::walk_stack();
    57   }
    57   }
    58 #ifdef COMPILER2
       
    59   // This option is not used by Compiler 1
       
    60   if (StressDerivedPointers) {
       
    61     InterfaceSupport::stress_derived_pointers();
       
    62   }
       
    63 #endif
       
    64   if (DeoptimizeALot || DeoptimizeRandom) {
    58   if (DeoptimizeALot || DeoptimizeRandom) {
    65     InterfaceSupport::deoptimizeAll();
    59     InterfaceSupport::deoptimizeAll();
    66   }
    60   }
    67   if (ZombieALot) {
    61   if (ZombieALot) {
    68     InterfaceSupport::zombieAll();
    62     InterfaceSupport::zombieAll();
   232   }
   226   }
   233   deoptimizeAllCounter++;
   227   deoptimizeAllCounter++;
   234 }
   228 }
   235 
   229 
   236 
   230 
   237 void InterfaceSupport::stress_derived_pointers() {
       
   238 #ifdef COMPILER2
       
   239   JavaThread *thread = JavaThread::current();
       
   240   if (!is_init_completed()) return;
       
   241   ResourceMark rm(thread);
       
   242   bool found = false;
       
   243   for (StackFrameStream sfs(thread); !sfs.is_done() && !found; sfs.next()) {
       
   244     CodeBlob* cb = sfs.current()->cb();
       
   245     if (cb != NULL && cb->oop_maps() ) {
       
   246       // Find oopmap for current method
       
   247       const ImmutableOopMap* map = cb->oop_map_for_return_address(sfs.current()->pc());
       
   248       assert(map != NULL, "no oopmap found for pc");
       
   249       found = map->has_derived_pointer();
       
   250     }
       
   251   }
       
   252   if (found) {
       
   253     // $$$ Not sure what to do here.
       
   254     /*
       
   255     Scavenge::invoke(0);
       
   256     */
       
   257   }
       
   258 #endif
       
   259 }
       
   260 
       
   261 
       
   262 void InterfaceSupport::verify_stack() {
   231 void InterfaceSupport::verify_stack() {
   263   JavaThread* thread = JavaThread::current();
   232   JavaThread* thread = JavaThread::current();
   264   ResourceMark rm(thread);
   233   ResourceMark rm(thread);
   265   // disabled because it throws warnings that oop maps should only be accessed
   234   // disabled because it throws warnings that oop maps should only be accessed
   266   // in VM thread or during debugging
   235   // in VM thread or during debugging