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)