369 return null_check_common(value, type, true, NULL, _gvn.type(value)->speculative_always_null()); 370 } 371 372 // Check if value is null and abort if it is 373 Node* must_be_not_null(Node* value, bool do_replace_in_map); 374 375 // Null check oop. Return null-path control into (*null_control). 376 // Return a cast-not-null node which depends on the not-null control. 377 // If never_see_null, use an uncommon trap (*null_control sees a top). 378 // The cast is not valid along the null path; keep a copy of the original. 379 // If safe_for_replace, then we can replace the value with the cast 380 // in the parsing map (the cast is guaranteed to dominate the map) 381 Node* null_check_oop(Node* value, Node* *null_control, 382 bool never_see_null = false, 383 bool safe_for_replace = false, 384 bool speculative = false); 385 386 // Check the null_seen bit. 387 bool seems_never_null(Node* obj, ciProfileData* data, bool& speculating); 388 389 // Check for unique class for receiver at call 390 ciKlass* profile_has_unique_klass() { 391 ciCallProfile profile = method()->call_profile_at_bci(bci()); 392 if (profile.count() >= 0 && // no cast failures here 393 profile.has_receiver(0) && 394 profile.morphism() == 1) { 395 return profile.receiver(0); 396 } 397 return NULL; 398 } 399 400 // record type from profiling with the type system 401 Node* record_profile_for_speculation(Node* n, ciKlass* exact_kls, ProfilePtrKind ptr_kind); 402 void record_profiled_arguments_for_speculation(ciMethod* dest_method, Bytecodes::Code bc); 403 void record_profiled_parameters_for_speculation(); 404 void record_profiled_return_for_speculation(); 405 Node* record_profiled_receiver_for_speculation(Node* n); 406 407 // Use the type profile to narrow an object type. 408 Node* maybe_cast_profiled_receiver(Node* not_null_obj, | 369 return null_check_common(value, type, true, NULL, _gvn.type(value)->speculative_always_null()); 370 } 371 372 // Check if value is null and abort if it is 373 Node* must_be_not_null(Node* value, bool do_replace_in_map); 374 375 // Null check oop. Return null-path control into (*null_control). 376 // Return a cast-not-null node which depends on the not-null control. 377 // If never_see_null, use an uncommon trap (*null_control sees a top). 378 // The cast is not valid along the null path; keep a copy of the original. 379 // If safe_for_replace, then we can replace the value with the cast 380 // in the parsing map (the cast is guaranteed to dominate the map) 381 Node* null_check_oop(Node* value, Node* *null_control, 382 bool never_see_null = false, 383 bool safe_for_replace = false, 384 bool speculative = false); 385 386 // Check the null_seen bit. 387 bool seems_never_null(Node* obj, ciProfileData* data, bool& speculating); 388 389 void guard_klass_being_initialized(Node* klass); 390 void guard_init_thread(Node* klass); 391 392 void clinit_barrier(ciInstanceKlass* ik, ciMethod* context); 393 394 // Check for unique class for receiver at call 395 ciKlass* profile_has_unique_klass() { 396 ciCallProfile profile = method()->call_profile_at_bci(bci()); 397 if (profile.count() >= 0 && // no cast failures here 398 profile.has_receiver(0) && 399 profile.morphism() == 1) { 400 return profile.receiver(0); 401 } 402 return NULL; 403 } 404 405 // record type from profiling with the type system 406 Node* record_profile_for_speculation(Node* n, ciKlass* exact_kls, ProfilePtrKind ptr_kind); 407 void record_profiled_arguments_for_speculation(ciMethod* dest_method, Bytecodes::Code bc); 408 void record_profiled_parameters_for_speculation(); 409 void record_profiled_return_for_speculation(); 410 Node* record_profiled_receiver_for_speculation(Node* n); 411 412 // Use the type profile to narrow an object type. 413 Node* maybe_cast_profiled_receiver(Node* not_null_obj, |