File tree 1 file changed +7
-14
lines changed
1 file changed +7
-14
lines changed Original file line number Diff line number Diff line change @@ -73,20 +73,13 @@ void MMTkObjectBarrierSetAssembler::object_reference_write_post(MacroAssembler*
73
73
#endif
74
74
75
75
__ movptr (c_rarg0, obj);
76
- __ lea (c_rarg1, dst);
77
- if (val == noreg) {
78
- __ xorptr (c_rarg2, c_rarg2);
79
- } else {
80
- if (compensate_val_reg && UseCompressedOops) {
81
- // `val` is compressed. Decompress it.
82
- if (is_not_null) {
83
- __ decode_heap_oop_not_null (val);
84
- } else {
85
- __ decode_heap_oop (val);
86
- }
87
- }
88
- __ movptr (c_rarg2, val);
89
- }
76
+ __ xorptr (c_rarg1, c_rarg1);
77
+ // Note: If `compensate_val_reg == true && UseCompressedOops === true`, the `val` register will be
78
+ // holding a compressed pointer to the target object. If the write barrier needs to know the
79
+ // target, we will need to decompress it before passing it to the barrier slow path. However,
80
+ // since we know the semantics of `ObjectReference`, i.e. it logs the object without looking at
81
+ // the `slot` or the `target` parameter at all, we simply pass nullptr to both parameters.
82
+ __ xorptr (c_rarg2, c_rarg2);
90
83
91
84
#if MMTK_ENABLE_BARRIER_FASTPATH
92
85
__ call_VM_leaf_base (FN_ADDR (MMTkBarrierSetRuntime::object_reference_write_slow_call), 3 );
You can’t perform that action at this time.
0 commit comments