617
618 // Could be an array or object we don't know at compile time (unsafe ref.)
619 Node* store_oop_to_unknown(Node* ctl,
620 Node* obj, // containing obj
621 Node* adr, // actual adress to store val at
622 const TypePtr* adr_type,
623 Node* val,
624 BasicType bt,
625 MemNode::MemOrd mo,
626 bool mismatched = false);
627
628 // For the few case where the barriers need special help
629 Node* pre_barrier(bool do_load, Node* ctl,
630 Node* obj, Node* adr, uint adr_idx, Node* val, const TypeOopPtr* val_type,
631 Node* pre_val,
632 BasicType bt);
633
634 void post_barrier(Node* ctl, Node* store, Node* obj, Node* adr, uint adr_idx,
635 Node* val, BasicType bt, bool use_precise);
636
637 // Return addressing for an array element.
638 Node* array_element_address(Node* ary, Node* idx, BasicType elembt,
639 // Optional constraint on the array size:
640 const TypeInt* sizetype = NULL,
641 // Optional control dependency (for example, on range check)
642 Node* ctrl = NULL);
643
644 // Return a load of array element at idx.
645 Node* load_array_element(Node* ctl, Node* ary, Node* idx, const TypeAryPtr* arytype);
646
647 //---------------- Dtrace support --------------------
648 void make_dtrace_method_entry_exit(ciMethod* method, bool is_entry);
649 void make_dtrace_method_entry(ciMethod* method) {
650 make_dtrace_method_entry_exit(method, true);
651 }
652 void make_dtrace_method_exit(ciMethod* method) {
653 make_dtrace_method_entry_exit(method, false);
654 }
655
656 //--------------- stub generation -------------------
|
617
618 // Could be an array or object we don't know at compile time (unsafe ref.)
619 Node* store_oop_to_unknown(Node* ctl,
620 Node* obj, // containing obj
621 Node* adr, // actual adress to store val at
622 const TypePtr* adr_type,
623 Node* val,
624 BasicType bt,
625 MemNode::MemOrd mo,
626 bool mismatched = false);
627
628 // For the few case where the barriers need special help
629 Node* pre_barrier(bool do_load, Node* ctl,
630 Node* obj, Node* adr, uint adr_idx, Node* val, const TypeOopPtr* val_type,
631 Node* pre_val,
632 BasicType bt);
633
634 void post_barrier(Node* ctl, Node* store, Node* obj, Node* adr, uint adr_idx,
635 Node* val, BasicType bt, bool use_precise);
636
637 void keep_alive_barrier(Node* ctl, Node* pre_val);
638
639 // Return addressing for an array element.
640 Node* array_element_address(Node* ary, Node* idx, BasicType elembt,
641 // Optional constraint on the array size:
642 const TypeInt* sizetype = NULL,
643 // Optional control dependency (for example, on range check)
644 Node* ctrl = NULL);
645
646 // Return a load of array element at idx.
647 Node* load_array_element(Node* ctl, Node* ary, Node* idx, const TypeAryPtr* arytype);
648
649 //---------------- Dtrace support --------------------
650 void make_dtrace_method_entry_exit(ciMethod* method, bool is_entry);
651 void make_dtrace_method_entry(ciMethod* method) {
652 make_dtrace_method_entry_exit(method, true);
653 }
654 void make_dtrace_method_exit(ciMethod* method) {
655 make_dtrace_method_entry_exit(method, false);
656 }
657
658 //--------------- stub generation -------------------
|