src/share/vm/runtime/interfaceSupport.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/runtime

src/share/vm/runtime/interfaceSupport.cpp

Print this page
rev 7259 : 8036913: make DeoptimizeALot dependent on number of threads
Reviewed-by:


 170 
 171 
 172 # ifdef ENABLE_ZAP_DEAD_LOCALS
 173 
 174 static int zap_traversals = 0;
 175 
 176 void InterfaceSupport::zap_dead_locals_old() {
 177   JavaThread* thread = JavaThread::current();
 178   if (zap_traversals == -1) // edit constant for debugging
 179     warning("I am here");
 180   int zap_frame_count = 0; // count frames to help debugging
 181   for (StackFrameStream sfs(thread); !sfs.is_done(); sfs.next()) {
 182     sfs.current()->zap_dead_locals(thread, sfs.register_map());
 183     ++zap_frame_count;
 184   }
 185   ++zap_traversals;
 186 }
 187 
 188 # endif
 189 
 190 
 191 int deoptimizeAllCounter = 0;
 192 int zombieAllCounter = 0;
 193 
 194 
 195 void InterfaceSupport::zombieAll() {
 196   if (is_init_completed() && zombieAllCounter > ZombieALotInterval) {

 197     zombieAllCounter = 0;
 198     VM_ZombieAll op;
 199     VMThread::execute(&op);
 200   } else {
 201     zombieAllCounter++;
 202   }

 203 }
 204 
 205 void InterfaceSupport::unlinkSymbols() {
 206   VM_UnlinkSymbols op;
 207   VMThread::execute(&op);
 208 }
 209 
 210 void InterfaceSupport::deoptimizeAll() {
 211   if (is_init_completed() ) {
 212     if (DeoptimizeALot && deoptimizeAllCounter > DeoptimizeALotInterval) {

 213       deoptimizeAllCounter = 0;
 214       VM_DeoptimizeAll op;
 215       VMThread::execute(&op);
 216     } else if (DeoptimizeRandom && (deoptimizeAllCounter & 0x1f) == (os::random() & 0x1f)) {
 217       VM_DeoptimizeAll op;
 218       VMThread::execute(&op);
 219     }
 220   }
 221   deoptimizeAllCounter++;
 222 }
 223 
 224 
 225 void InterfaceSupport::stress_derived_pointers() {
 226 #ifdef COMPILER2
 227   JavaThread *thread = JavaThread::current();
 228   if (!is_init_completed()) return;
 229   ResourceMark rm(thread);
 230   bool found = false;
 231   for (StackFrameStream sfs(thread); !sfs.is_done() && !found; sfs.next()) {
 232     CodeBlob* cb = sfs.current()->cb();
 233     if (cb != NULL && cb->oop_maps() ) {
 234       // Find oopmap for current method
 235       OopMap* map = cb->oop_map_for_return_address(sfs.current()->pc());
 236       assert(map != NULL, "no oopmap found for pc");




 170 
 171 
 172 # ifdef ENABLE_ZAP_DEAD_LOCALS
 173 
 174 static int zap_traversals = 0;
 175 
 176 void InterfaceSupport::zap_dead_locals_old() {
 177   JavaThread* thread = JavaThread::current();
 178   if (zap_traversals == -1) // edit constant for debugging
 179     warning("I am here");
 180   int zap_frame_count = 0; // count frames to help debugging
 181   for (StackFrameStream sfs(thread); !sfs.is_done(); sfs.next()) {
 182     sfs.current()->zap_dead_locals(thread, sfs.register_map());
 183     ++zap_frame_count;
 184   }
 185   ++zap_traversals;
 186 }
 187 
 188 # endif
 189 

 190 int deoptimizeAllCounter = 0;
 191 int zombieAllCounter = 0;
 192 

 193 void InterfaceSupport::zombieAll() {
 194   int value = zombieAllCounter / Threads::number_of_threads();
 195   if (is_init_completed() && value > ZombieALotInterval) {
 196     zombieAllCounter = 0;
 197     VM_ZombieAll op;
 198     VMThread::execute(&op);


 199   }
 200   zombieAllCounter++;
 201 }
 202 
 203 void InterfaceSupport::unlinkSymbols() {
 204   VM_UnlinkSymbols op;
 205   VMThread::execute(&op);
 206 }
 207 
 208 void InterfaceSupport::deoptimizeAll() {
 209   int value = deoptimizeAllCounter / Threads::number_of_threads();
 210   if (is_init_completed()) {
 211     if (DeoptimizeALot && value > DeoptimizeALotInterval) {
 212       deoptimizeAllCounter = 0;
 213       VM_DeoptimizeAll op;
 214       VMThread::execute(&op);
 215     } else if (DeoptimizeRandom && (value & 0x1F) == (os::random() & 0x1F)) {
 216       VM_DeoptimizeAll op;
 217       VMThread::execute(&op);
 218     }
 219   }
 220   deoptimizeAllCounter++;
 221 }
 222 
 223 
 224 void InterfaceSupport::stress_derived_pointers() {
 225 #ifdef COMPILER2
 226   JavaThread *thread = JavaThread::current();
 227   if (!is_init_completed()) return;
 228   ResourceMark rm(thread);
 229   bool found = false;
 230   for (StackFrameStream sfs(thread); !sfs.is_done() && !found; sfs.next()) {
 231     CodeBlob* cb = sfs.current()->cb();
 232     if (cb != NULL && cb->oop_maps() ) {
 233       // Find oopmap for current method
 234       OopMap* map = cb->oop_map_for_return_address(sfs.current()->pc());
 235       assert(map != NULL, "no oopmap found for pc");


src/share/vm/runtime/interfaceSupport.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File