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 } |