src/hotspot/cpu/s390/macroAssembler_s390.cpp
changeset 49455 848864ed9b17
parent 49449 ef5d5d343e2a
child 49592 77fb0be7d19f
equal deleted inserted replaced
49454:689ebcfe04fd 49455:848864ed9b17
    28 #include "asm/macroAssembler.inline.hpp"
    28 #include "asm/macroAssembler.inline.hpp"
    29 #include "compiler/disassembler.hpp"
    29 #include "compiler/disassembler.hpp"
    30 #include "gc/shared/cardTable.hpp"
    30 #include "gc/shared/cardTable.hpp"
    31 #include "gc/shared/collectedHeap.inline.hpp"
    31 #include "gc/shared/collectedHeap.inline.hpp"
    32 #include "interpreter/interpreter.hpp"
    32 #include "interpreter/interpreter.hpp"
    33 #include "gc/shared/cardTableModRefBS.hpp"
    33 #include "gc/shared/cardTableBarrierSet.hpp"
    34 #include "memory/resourceArea.hpp"
    34 #include "memory/resourceArea.hpp"
    35 #include "memory/universe.hpp"
    35 #include "memory/universe.hpp"
    36 #include "oops/klass.inline.hpp"
    36 #include "oops/klass.inline.hpp"
    37 #include "opto/compile.hpp"
    37 #include "opto/compile.hpp"
    38 #include "opto/intrinsicnode.hpp"
    38 #include "opto/intrinsicnode.hpp"
  3503 }
  3503 }
  3504 
  3504 
  3505 // Write to card table for modification at store_addr - register is destroyed afterwards.
  3505 // Write to card table for modification at store_addr - register is destroyed afterwards.
  3506 void MacroAssembler::card_write_barrier_post(Register store_addr, Register tmp) {
  3506 void MacroAssembler::card_write_barrier_post(Register store_addr, Register tmp) {
  3507   BarrierSet* bs = Universe::heap()->barrier_set();
  3507   BarrierSet* bs = Universe::heap()->barrier_set();
  3508   CardTableModRefBS* ctbs = barrier_set_cast<CardTableModRefBS>(bs);
  3508   CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(bs);
  3509   CardTable* ct = ctbs->card_table();
  3509   CardTable* ct = ctbs->card_table();
  3510   assert(bs->kind() == BarrierSet::CardTableModRef, "wrong barrier");
  3510   assert(bs->kind() == BarrierSet::CardTableBarrierSet, "wrong barrier");
  3511   assert_different_registers(store_addr, tmp);
  3511   assert_different_registers(store_addr, tmp);
  3512   z_srlg(store_addr, store_addr, CardTable::card_shift);
  3512   z_srlg(store_addr, store_addr, CardTable::card_shift);
  3513   load_absolute_address(tmp, (address)ct->byte_map_base());
  3513   load_absolute_address(tmp, (address)ct->byte_map_base());
  3514   z_agr(store_addr, tmp);
  3514   z_agr(store_addr, tmp);
  3515   z_mvi(0, store_addr, 0); // Store byte 0.
  3515   z_mvi(0, store_addr, 0); // Store byte 0.