src/cpu/mips/vm/mips_64.ad

changeset 370
21ecdf59ac2b
parent 369
4058e1b73a80
child 372
27610f2f4b93
     1.1 --- a/src/cpu/mips/vm/mips_64.ad	Mon Mar 06 11:06:07 2017 -0500
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Tue Mar 07 04:25:27 2017 -0500
     1.3 @@ -945,7 +945,7 @@
     1.4  // Indicate if the safepoint node needs the polling page as an input.
     1.5  // Since MIPS doesn't have absolute addressing, it needs.
     1.6  bool SafePointNode::needs_polling_address_input() {
     1.7 -  return true;
     1.8 +  return false;
     1.9  }
    1.10  
    1.11  // !!!!! Special hack to get all type of calls to specify the byte offset
    1.12 @@ -1482,17 +1482,10 @@
    1.13      __ ld(FP, SP, -wordSize*2 );
    1.14    }
    1.15  
    1.16 -  /* 2012/11/19 Jin: The epilog in a RuntimeStub should not contain a safepoint */
    1.17    if( do_polling() && C->is_method_compilation() ) {
    1.18 -#ifndef OPT_SAFEPOINT
    1.19      __ set64(AT, (long)os::get_polling_page());
    1.20      __ relocate(relocInfo::poll_return_type);
    1.21      __ lw(AT, AT, 0);
    1.22 -#else
    1.23 -    __ lui(AT, Assembler::split_high((intptr_t)os::get_polling_page()));
    1.24 -    __ relocate(relocInfo::poll_return_type);
    1.25 -    __ lw(AT, AT, Assembler::split_low((intptr_t)os::get_polling_page()));
    1.26 -#endif
    1.27    }
    1.28  }
    1.29  
    1.30 @@ -13346,12 +13339,13 @@
    1.31  
    1.32  // ============================================================================
    1.33  // Safepoint Instruction
    1.34 -instruct safePoint_poll(mRegP poll) %{
    1.35 +instruct safePoint_poll_reg(mRegP poll) %{
    1.36    match(SafePoint poll);
    1.37 +  predicate(false);
    1.38    effect(USE poll);
    1.39  
    1.40    ins_cost(125);
    1.41 -  format %{ "Safepoint @ [$poll] : poll for GC @ safePoint_poll" %}
    1.42 +  format %{ "Safepoint @ [$poll] : poll for GC @ safePoint_poll_reg" %}
    1.43  
    1.44    ins_encode %{
    1.45      Register poll_reg = $poll$$Register;
    1.46 @@ -13364,6 +13358,22 @@
    1.47    ins_pipe( ialu_storeI );
    1.48  %}
    1.49  
    1.50 +instruct safePoint_poll() %{
    1.51 +  match(SafePoint);
    1.52 +
    1.53 +  ins_cost(105);
    1.54 +  format %{ "poll for GC @ safePoint_poll" %}
    1.55 +
    1.56 +  ins_encode %{
    1.57 +    __ block_comment("Safepoint:");
    1.58 +    __ relocate(relocInfo::poll_type);
    1.59 +    __ set64(T9, (long)os::get_polling_page());
    1.60 +    __ lw(AT, T9, 0);
    1.61 +  %}
    1.62 +
    1.63 +  ins_pipe( ialu_storeI );
    1.64 +%}
    1.65 +
    1.66  //----------Arithmetic Conversion Instructions---------------------------------
    1.67  
    1.68  instruct roundFloat_nop(regF dst)

mercurial