50 BasicType bt, uint adr_idx) const;
51 void satb_write_barrier_pre(GraphKit* kit, bool do_load,
52 Node* obj,
53 Node* adr,
54 uint alias_idx,
55 Node* val,
56 const TypeOopPtr* val_type,
57 Node* pre_val,
58 BasicType bt) const;
59
60 void shenandoah_write_barrier_pre(GraphKit* kit,
61 bool do_load,
62 Node* obj,
63 Node* adr,
64 uint alias_idx,
65 Node* val,
66 const TypeOopPtr* val_type,
67 Node* pre_val,
68 BasicType bt) const;
69
70 void insert_pre_barrier(GraphKit* kit, Node* base_oop, Node* offset,
71 Node* pre_val, bool need_mem_bar) const;
72
73 static bool clone_needs_barrier(Node* src, PhaseGVN& gvn);
74
75 protected:
76 virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
77 virtual Node* store_at_resolved(C2Access& access, C2AccessValue& val) const;
78 virtual Node* atomic_cmpxchg_val_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
79 Node* new_val, const Type* val_type) const;
80 virtual Node* atomic_cmpxchg_bool_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
81 Node* new_val, const Type* value_type) const;
82 virtual Node* atomic_xchg_at_resolved(C2AtomicParseAccess& access, Node* new_val, const Type* val_type) const;
83
84 public:
85 static ShenandoahBarrierSetC2* bsc2();
86
87 static bool is_shenandoah_wb_pre_call(Node* call);
88 static bool is_shenandoah_clone_call(Node* call);
89 static bool is_shenandoah_lrb_call(Node* call);
|
50 BasicType bt, uint adr_idx) const;
51 void satb_write_barrier_pre(GraphKit* kit, bool do_load,
52 Node* obj,
53 Node* adr,
54 uint alias_idx,
55 Node* val,
56 const TypeOopPtr* val_type,
57 Node* pre_val,
58 BasicType bt) const;
59
60 void shenandoah_write_barrier_pre(GraphKit* kit,
61 bool do_load,
62 Node* obj,
63 Node* adr,
64 uint alias_idx,
65 Node* val,
66 const TypeOopPtr* val_type,
67 Node* pre_val,
68 BasicType bt) const;
69
70 Node* byte_map_base_node(GraphKit* kit) const;
71
72 void post_barrier(GraphKit* kit,
73 Node* ctl,
74 Node* store,
75 Node* obj,
76 Node* adr,
77 uint adr_idx,
78 Node* val,
79 BasicType bt,
80 bool use_precise) const;
81
82 void insert_pre_barrier(GraphKit* kit, Node* base_oop, Node* offset,
83 Node* pre_val, bool need_mem_bar) const;
84
85 static bool clone_needs_barrier(Node* src, PhaseGVN& gvn);
86
87 protected:
88 virtual Node* load_at_resolved(C2Access& access, const Type* val_type) const;
89 virtual Node* store_at_resolved(C2Access& access, C2AccessValue& val) const;
90 virtual Node* atomic_cmpxchg_val_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
91 Node* new_val, const Type* val_type) const;
92 virtual Node* atomic_cmpxchg_bool_at_resolved(C2AtomicParseAccess& access, Node* expected_val,
93 Node* new_val, const Type* value_type) const;
94 virtual Node* atomic_xchg_at_resolved(C2AtomicParseAccess& access, Node* new_val, const Type* val_type) const;
95
96 public:
97 static ShenandoahBarrierSetC2* bsc2();
98
99 static bool is_shenandoah_wb_pre_call(Node* call);
100 static bool is_shenandoah_clone_call(Node* call);
101 static bool is_shenandoah_lrb_call(Node* call);
|