src/hotspot/cpu/ppc/ppc.ad
changeset 59053 ba6c248cae19
parent 58745 70e6b0d8db13
equal deleted inserted replaced
59051:f0312c7d5b37 59053:ba6c248cae19
  6924   ins_cannot_rematerialize(true);
  6924   ins_cannot_rematerialize(true);
  6925 
  6925 
  6926   format %{ "STB     #0, $mem \t// CMS card-mark byte (must be 0!), checking requires_release in [$releaseFieldAddr]" %}
  6926   format %{ "STB     #0, $mem \t// CMS card-mark byte (must be 0!), checking requires_release in [$releaseFieldAddr]" %}
  6927   ins_encode( enc_cms_card_mark(mem, releaseFieldAddr, crx) );
  6927   ins_encode( enc_cms_card_mark(mem, releaseFieldAddr, crx) );
  6928   ins_pipe(pipe_class_memory);
  6928   ins_pipe(pipe_class_memory);
  6929 %}
       
  6930 
       
  6931 // Card-mark for CMS garbage collection.
       
  6932 // This cardmark does an optimization so that it must not always
       
  6933 // do a releasing store. For this, it needs the constant address of
       
  6934 // CMSCollectorCardTableBarrierSetBSExt::_requires_release.
       
  6935 // This constant address is split off here by expand so we can use
       
  6936 // adlc / matcher functionality to load it from the constant section.
       
  6937 instruct storeCM_CMS_ExEx(memory mem, immI_0 zero) %{
       
  6938   match(Set mem (StoreCM mem zero));
       
  6939   predicate(UseConcMarkSweepGC);
       
  6940 
       
  6941   expand %{
       
  6942     immL baseImm %{ 0 /* TODO: PPC port (jlong)CMSCollectorCardTableBarrierSetBSExt::requires_release_address() */ %}
       
  6943     iRegLdst releaseFieldAddress;
       
  6944     flagsReg crx;
       
  6945     loadConL_Ex(releaseFieldAddress, baseImm);
       
  6946     storeCM_CMS(mem, releaseFieldAddress, crx);
       
  6947   %}
       
  6948 %}
  6929 %}
  6949 
  6930 
  6950 instruct storeCM_G1(memory mem, immI_0 zero) %{
  6931 instruct storeCM_G1(memory mem, immI_0 zero) %{
  6951   match(Set mem (StoreCM mem zero));
  6932   match(Set mem (StoreCM mem zero));
  6952   predicate(UseG1GC);
  6933   predicate(UseG1GC);