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