384 bool speculative = false); |
384 bool speculative = false); |
385 |
385 |
386 // Check the null_seen bit. |
386 // Check the null_seen bit. |
387 bool seems_never_null(Node* obj, ciProfileData* data, bool& speculating); |
387 bool seems_never_null(Node* obj, ciProfileData* data, bool& speculating); |
388 |
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 |
389 // Check for unique class for receiver at call |
394 // Check for unique class for receiver at call |
390 ciKlass* profile_has_unique_klass() { |
395 ciKlass* profile_has_unique_klass() { |
391 ciCallProfile profile = method()->call_profile_at_bci(bci()); |
396 ciCallProfile profile = method()->call_profile_at_bci(bci()); |
392 if (profile.count() >= 0 && // no cast failures here |
397 if (profile.count() >= 0 && // no cast failures here |
393 profile.has_receiver(0) && |
398 profile.has_receiver(0) && |
558 // This version computes alias_index from an address type |
563 // This version computes alias_index from an address type |
559 assert(adr_type != NULL, "use other store_to_memory factory"); |
564 assert(adr_type != NULL, "use other store_to_memory factory"); |
560 return store_to_memory(ctl, adr, val, bt, |
565 return store_to_memory(ctl, adr, val, bt, |
561 C->get_alias_index(adr_type), |
566 C->get_alias_index(adr_type), |
562 mo, require_atomic_access, |
567 mo, require_atomic_access, |
563 unaligned, mismatched); |
568 unaligned, mismatched, unsafe); |
564 } |
569 } |
565 // This is the base version which is given alias index |
570 // This is the base version which is given alias index |
566 // Return the new StoreXNode |
571 // Return the new StoreXNode |
567 Node* store_to_memory(Node* ctl, Node* adr, Node* val, BasicType bt, |
572 Node* store_to_memory(Node* ctl, Node* adr, Node* val, BasicType bt, |
568 int adr_idx, |
573 int adr_idx, |