< prev index next >

src/share/vm/opto/live.cpp

Print this page




 330                 if( isc ) {
 331                   worklist.push(check->in(isc));
 332                 } else if( check->is_Phi() ) {
 333                   for (uint m = 1; m < check->req(); m++)
 334                     worklist.push(check->in(m));
 335                 } else if( check->is_Con() ) {
 336                   if (is_derived) {
 337                     // Derived is NULL+offset
 338                     assert(!is_derived || check->bottom_type()->is_ptr()->ptr() == TypePtr::Null,"Bad derived pointer");
 339                   } else {
 340                     assert(check->bottom_type()->is_ptr()->_offset == 0,"Bad base pointer");
 341                     // Base either ConP(NULL) or loadConP
 342                     if (check->is_Mach()) {
 343                       assert(check->as_Mach()->ideal_Opcode() == Op_ConP,"Bad base pointer");
 344                     } else {
 345                       assert(check->Opcode() == Op_ConP &&
 346                              check->bottom_type()->is_ptr()->ptr() == TypePtr::Null,"Bad base pointer");
 347                     }
 348                   }
 349                 } else if( check->bottom_type()->is_ptr()->_offset == 0 ) {
 350                   if(check->is_Proj() || check->is_Mach() &&
 351                      (check->as_Mach()->ideal_Opcode() == Op_CreateEx ||
 352                       check->as_Mach()->ideal_Opcode() == Op_ThreadLocal ||
 353                       check->as_Mach()->ideal_Opcode() == Op_CMoveP ||
 354                       check->as_Mach()->ideal_Opcode() == Op_CheckCastPP ||
 355 #ifdef _LP64
 356                       UseCompressedOops && check->as_Mach()->ideal_Opcode() == Op_CastPP ||
 357                       UseCompressedOops && check->as_Mach()->ideal_Opcode() == Op_DecodeN ||
 358                       UseCompressedClassPointers && check->as_Mach()->ideal_Opcode() == Op_DecodeNKlass ||
 359 #endif
 360                       check->as_Mach()->ideal_Opcode() == Op_LoadP ||
 361                       check->as_Mach()->ideal_Opcode() == Op_LoadKlass)) {
 362                     // Valid nodes
 363                   } else {
 364                     check->dump();
 365                     assert(false,"Bad base or derived pointer");
 366                   }
 367                 } else {
 368                   assert(is_derived,"Bad base pointer");
 369                   assert(check->is_Mach() && check->as_Mach()->ideal_Opcode() == Op_AddP,"Bad derived pointer");
 370                 }
 371                 k++;
 372                 assert(k < 100000,"Derived pointer checking in infinite loop");
 373               } // End while
 374             }
 375           } // End of check for derived pointers
 376         } // End of Kcheck for debug info
 377       } // End of if found a safepoint
 378     } // End of forall instructions in block
 379   } // End of forall blocks
 380 #endif
 381 }


 330                 if( isc ) {
 331                   worklist.push(check->in(isc));
 332                 } else if( check->is_Phi() ) {
 333                   for (uint m = 1; m < check->req(); m++)
 334                     worklist.push(check->in(m));
 335                 } else if( check->is_Con() ) {
 336                   if (is_derived) {
 337                     // Derived is NULL+offset
 338                     assert(!is_derived || check->bottom_type()->is_ptr()->ptr() == TypePtr::Null,"Bad derived pointer");
 339                   } else {
 340                     assert(check->bottom_type()->is_ptr()->_offset == 0,"Bad base pointer");
 341                     // Base either ConP(NULL) or loadConP
 342                     if (check->is_Mach()) {
 343                       assert(check->as_Mach()->ideal_Opcode() == Op_ConP,"Bad base pointer");
 344                     } else {
 345                       assert(check->Opcode() == Op_ConP &&
 346                              check->bottom_type()->is_ptr()->ptr() == TypePtr::Null,"Bad base pointer");
 347                     }
 348                   }
 349                 } else if( check->bottom_type()->is_ptr()->_offset == 0 ) {
 350                   if(check->is_Proj() || (check->is_Mach() &&
 351                      (check->as_Mach()->ideal_Opcode() == Op_CreateEx ||
 352                       check->as_Mach()->ideal_Opcode() == Op_ThreadLocal ||
 353                       check->as_Mach()->ideal_Opcode() == Op_CMoveP ||
 354                       check->as_Mach()->ideal_Opcode() == Op_CheckCastPP ||
 355 #ifdef _LP64
 356                       (UseCompressedOops && check->as_Mach()->ideal_Opcode() == Op_CastPP) ||
 357                       (UseCompressedOops && check->as_Mach()->ideal_Opcode() == Op_DecodeN) ||
 358                       (UseCompressedClassPointers && check->as_Mach()->ideal_Opcode() == Op_DecodeNKlass) ||
 359 #endif
 360                       check->as_Mach()->ideal_Opcode() == Op_LoadP ||
 361                       check->as_Mach()->ideal_Opcode() == Op_LoadKlass))) {
 362                     // Valid nodes
 363                   } else {
 364                     check->dump();
 365                     assert(false,"Bad base or derived pointer");
 366                   }
 367                 } else {
 368                   assert(is_derived,"Bad base pointer");
 369                   assert(check->is_Mach() && check->as_Mach()->ideal_Opcode() == Op_AddP,"Bad derived pointer");
 370                 }
 371                 k++;
 372                 assert(k < 100000,"Derived pointer checking in infinite loop");
 373               } // End while
 374             }
 375           } // End of check for derived pointers
 376         } // End of Kcheck for debug info
 377       } // End of if found a safepoint
 378     } // End of forall instructions in block
 379   } // End of forall blocks
 380 #endif
 381 }
< prev index next >