< prev index next >

src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp

Print this page
@@ -1,8 +1,9 @@
  /*
   * Copyright (c) 2018, 2020, Red Hat, Inc. All rights reserved.
   * Copyright (c) 2020, 2021, Huawei Technologies Co., Ltd. All rights reserved.
+  * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.

@@ -62,11 +63,11 @@
        __ lbu(t0, gc_state);
        if (ShenandoahSATBBarrier && dest_uninitialized) {
          __ test_bit(t0, t0, ShenandoahHeap::HAS_FORWARDED_BITPOS);
          __ beqz(t0, done);
        } else {
-         __ andi(t0, t0, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::MARKING);
+         __ andi(t0, t0, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::YOUNG_MARKING | ShenandoahHeap::OLD_MARKING);
          __ beqz(t0, done);
        }
  
        __ push_reg(saved_regs, sp);
        if (UseCompressedOops) {

@@ -640,11 +641,11 @@
    Label runtime;
  
    // Is marking still active?
    Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
    __ lb(tmp, gc_state);
-   __ test_bit(tmp, tmp, ShenandoahHeap::MARKING_BITPOS);
+   __ andi(tmp, tmp, ShenandoahHeap::YOUNG_MARKING | ShenandoahHeap::OLD_MARKING);
    __ beqz(tmp, done);
  
    // Can we store original value in the thread's buffer?
    __ ld(tmp, queue_index);
    __ beqz(tmp, runtime);
< prev index next >