< prev index next >

src/hotspot/share/opto/graphKit.hpp

Print this page

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();
< prev index next >