351 Node* null_check_receiver() {
352 assert(argument(0)->bottom_type()->isa_ptr(), "must be");
353 return null_check(argument(0));
354 }
355 Node* zero_check_int(Node* value) {
356 assert(value->bottom_type()->basic_type() == T_INT,
357 "wrong type: %s", type2name(value->bottom_type()->basic_type()));
358 return null_check_common(value, T_INT);
359 }
360 Node* zero_check_long(Node* value) {
361 assert(value->bottom_type()->basic_type() == T_LONG,
362 "wrong type: %s", type2name(value->bottom_type()->basic_type()));
363 return null_check_common(value, T_LONG);
364 }
365 // Throw an uncommon trap if a given value is __not__ null.
366 // Return the value cast to null, and be clever about dominating checks.
367 Node* null_assert(Node* value, BasicType type = T_OBJECT) {
368 return null_check_common(value, type, true);
369 }
370
371 // Null check oop. Return null-path control into (*null_control).
372 // Return a cast-not-null node which depends on the not-null control.
373 // If never_see_null, use an uncommon trap (*null_control sees a top).
374 // The cast is not valid along the null path; keep a copy of the original.
375 // If safe_for_replace, then we can replace the value with the cast
376 // in the parsing map (the cast is guaranteed to dominate the map)
377 Node* null_check_oop(Node* value, Node* *null_control,
378 bool never_see_null = false,
379 bool safe_for_replace = false,
380 bool speculative = false);
381
382 // Check the null_seen bit.
383 bool seems_never_null(Node* obj, ciProfileData* data, bool& speculating);
384
385 // Check for unique class for receiver at call
386 ciKlass* profile_has_unique_klass() {
387 ciCallProfile profile = method()->call_profile_at_bci(bci());
388 if (profile.count() >= 0 && // no cast failures here
389 profile.has_receiver(0) &&
390 profile.morphism() == 1) {
|
351 Node* null_check_receiver() {
352 assert(argument(0)->bottom_type()->isa_ptr(), "must be");
353 return null_check(argument(0));
354 }
355 Node* zero_check_int(Node* value) {
356 assert(value->bottom_type()->basic_type() == T_INT,
357 "wrong type: %s", type2name(value->bottom_type()->basic_type()));
358 return null_check_common(value, T_INT);
359 }
360 Node* zero_check_long(Node* value) {
361 assert(value->bottom_type()->basic_type() == T_LONG,
362 "wrong type: %s", type2name(value->bottom_type()->basic_type()));
363 return null_check_common(value, T_LONG);
364 }
365 // Throw an uncommon trap if a given value is __not__ null.
366 // Return the value cast to null, and be clever about dominating checks.
367 Node* null_assert(Node* value, BasicType type = T_OBJECT) {
368 return null_check_common(value, type, true);
369 }
370
371 // Check if value is null and abort if it is
372 Node* must_be_not_null(Node* value, bool do_replace_in_map);
373
374 // Null check oop. Return null-path control into (*null_control).
375 // Return a cast-not-null node which depends on the not-null control.
376 // If never_see_null, use an uncommon trap (*null_control sees a top).
377 // The cast is not valid along the null path; keep a copy of the original.
378 // If safe_for_replace, then we can replace the value with the cast
379 // in the parsing map (the cast is guaranteed to dominate the map)
380 Node* null_check_oop(Node* value, Node* *null_control,
381 bool never_see_null = false,
382 bool safe_for_replace = false,
383 bool speculative = false);
384
385 // Check the null_seen bit.
386 bool seems_never_null(Node* obj, ciProfileData* data, bool& speculating);
387
388 // Check for unique class for receiver at call
389 ciKlass* profile_has_unique_klass() {
390 ciCallProfile profile = method()->call_profile_at_bci(bci());
391 if (profile.count() >= 0 && // no cast failures here
392 profile.has_receiver(0) &&
393 profile.morphism() == 1) {
|