@@ -132,15 +132,13 @@ void MMTkObjectBarrierSetC2::object_reference_write_post(GraphKit* kit, Node* sr
132
132
shift = __ AndI (__ ConvL2I (shift), __ ConI (7 ));
133
133
Node* result = __ AndI (__ URShiftI (byte, shift), __ ConI (1 ));
134
134
135
- // XXX zixianc
136
- // Workaround C2 bug in compare-and-swap codegen on RISC-V
137
135
__ if_then (result, BoolTest::ne, zero, unlikely); {
138
- const TypeFunc* tf = __ func_type (src-> bottom_type () );
139
- Node* x = __ make_leaf_call (tf, FN_ADDR (MMTkBarrierSetRuntime::object_reference_write_slow_call), " mmtk_barrier_call" , src);
136
+ const TypeFunc* tf = __ func_type (TypeOopPtr::BOTTOM, TypeOopPtr::BOTTOM, TypeOopPtr::BOTTOM );
137
+ Node* x = __ make_leaf_call (tf, FN_ADDR (MMTkBarrierSetRuntime::object_reference_write_slow_call), " mmtk_barrier_call" , src, slot, val );
140
138
} __ end_if ();
141
139
#else
142
- const TypeFunc* tf = __ func_type (src-> bottom_type () );
143
- Node* x = __ make_leaf_call (tf, FN_ADDR (MMTkBarrierSetRuntime::object_reference_write_post_call), " mmtk_barrier_call" , src);
140
+ const TypeFunc* tf = __ func_type (TypeOopPtr::BOTTOM, TypeOopPtr::BOTTOM, TypeOopPtr::BOTTOM );
141
+ Node* x = __ make_leaf_call (tf, FN_ADDR (MMTkBarrierSetRuntime::object_reference_write_post_call), " mmtk_barrier_call" , src, slot, val );
144
142
#endif
145
143
146
144
kit->final_sync (ideal); // Final sync IdealKit and GraphKit.
0 commit comments