# HG changeset patch # Parent a5cd168ab92ba6cd22154fbc9f7b5af04e61d6d3 diff -r a5cd168ab92b src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp --- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp Sat Nov 17 05:32:34 2018 -0500 @@ -41,7 +41,6 @@ #define __ masm-> address ShenandoahBarrierSetAssembler::_shenandoah_wb = NULL; -address ShenandoahBarrierSetAssembler::_shenandoah_wb_C = NULL; void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, Register addr, Register count, RegSet saved_regs) { @@ -617,11 +616,6 @@ return _shenandoah_wb; } -address ShenandoahBarrierSetAssembler::shenandoah_wb_C() { - assert(_shenandoah_wb_C != NULL, "need write barrier stub"); - return _shenandoah_wb_C; -} - #define __ cgen->assembler()-> // Shenandoah write barrier. @@ -633,41 +627,31 @@ // r0: Pointer to evacuated OOP. // // Trash rscratch1, rscratch2. Preserve everything else. -address ShenandoahBarrierSetAssembler::generate_shenandoah_wb(StubCodeGenerator* cgen, bool c_abi, bool do_cset_test) { +address ShenandoahBarrierSetAssembler::generate_shenandoah_wb(StubCodeGenerator* cgen) { __ align(6); StubCodeMark mark(cgen, "StubRoutines", "shenandoah_wb"); address start = __ pc(); - if (do_cset_test) { - Label work; - __ mov(rscratch2, ShenandoahHeap::in_cset_fast_test_addr()); - __ lsr(rscratch1, r0, ShenandoahHeapRegion::region_size_bytes_shift_jint()); - __ ldrb(rscratch2, Address(rscratch2, rscratch1)); - __ tbnz(rscratch2, 0, work); - __ ret(lr); - __ bind(work); - } + Label work; + __ mov(rscratch2, ShenandoahHeap::in_cset_fast_test_addr()); + __ lsr(rscratch1, r0, ShenandoahHeapRegion::region_size_bytes_shift_jint()); + __ ldrb(rscratch2, Address(rscratch2, rscratch1)); + __ tbnz(rscratch2, 0, work); + __ ret(lr); + __ bind(work); Register obj = r0; __ enter(); // required for proper stackwalking of RuntimeStub frame - if (!c_abi) { - __ push_call_clobbered_registers(); - } else { - __ push_call_clobbered_fp_registers(); - } + __ push_call_clobbered_registers(); __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_barrier_JRT)); __ blrt(lr, 1, 0, MacroAssembler::ret_type_integral); - if (!c_abi) { - __ mov(rscratch1, obj); - __ pop_call_clobbered_registers(); - __ mov(obj, rscratch1); - } else { - __ pop_call_clobbered_fp_registers(); - } + __ mov(rscratch1, obj); + __ pop_call_clobbered_registers(); + __ mov(obj, rscratch1); __ leave(); // required for proper stackwalking of RuntimeStub frame __ ret(lr); @@ -684,7 +668,6 @@ BufferBlob* bb = BufferBlob::create("shenandoah_barrier_stubs", stub_code_size); CodeBuffer buf(bb); StubCodeGenerator cgen(&buf); - _shenandoah_wb = generate_shenandoah_wb(&cgen, false, true); - _shenandoah_wb_C = generate_shenandoah_wb(&cgen, true, !ShenandoahWriteBarrierCsetTestInIR); + _shenandoah_wb = generate_shenandoah_wb(&cgen); } } diff -r a5cd168ab92b src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp --- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp Sat Nov 17 05:32:34 2018 -0500 @@ -38,7 +38,6 @@ private: static address _shenandoah_wb; - static address _shenandoah_wb_C; void satb_write_barrier_pre(MacroAssembler* masm, Register obj, @@ -64,13 +63,10 @@ void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp); void asm_acmp_barrier(MacroAssembler* masm, Register op1, Register op2); - address generate_shenandoah_wb(StubCodeGenerator* cgen, bool c_abi, bool do_cset_test); + address generate_shenandoah_wb(StubCodeGenerator* cgen); public: static address shenandoah_wb(); - static address shenandoah_wb_C(); - - static bool is_shenandoah_wb_C_call(address call); #ifdef COMPILER1 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub); diff -r a5cd168ab92b src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Sat Nov 17 05:32:34 2018 -0500 @@ -2588,8 +2588,9 @@ } #endif -void MacroAssembler::push_call_clobbered_fp_registers() { +void MacroAssembler::push_call_clobbered_registers() { int step = 4 * wordSize; + push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp); sub(sp, sp, step); mov(rscratch1, -step); // Push v0-v7, v16-v31. @@ -2602,21 +2603,13 @@ as_FloatRegister(3), T1D, Address(sp)); } -void MacroAssembler::pop_call_clobbered_fp_registers() { +void MacroAssembler::pop_call_clobbered_registers() { for (int i = 0; i < 32; i += 4) { if (i <= v7->encoding() || i >= v16->encoding()) ld1(as_FloatRegister(i), as_FloatRegister(i+1), as_FloatRegister(i+2), as_FloatRegister(i+3), T1D, Address(post(sp, 4 * wordSize))); } -} - -void MacroAssembler::push_call_clobbered_registers() { - push(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp); - push_call_clobbered_fp_registers(); -} - -void MacroAssembler::pop_call_clobbered_registers() { - pop_call_clobbered_fp_registers(); + pop(RegSet::range(r0, r18) - RegSet::of(rscratch1, rscratch2), sp); } diff -r a5cd168ab92b src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp Sat Nov 17 05:32:34 2018 -0500 @@ -456,8 +456,6 @@ // 64 bits of each vector register. void push_call_clobbered_registers(); void pop_call_clobbered_registers(); - void push_call_clobbered_fp_registers(); - void pop_call_clobbered_fp_registers(); // now mov instructions for loading absolute addresses and 32 or // 64 bit integers diff -r a5cd168ab92b src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp --- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp Sat Nov 17 05:32:34 2018 -0500 @@ -42,7 +42,6 @@ #define __ masm-> address ShenandoahBarrierSetAssembler::_shenandoah_wb = NULL; -address ShenandoahBarrierSetAssembler::_shenandoah_wb_C = NULL; void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count) { @@ -731,108 +730,6 @@ } #endif // LP64 -void ShenandoahBarrierSetAssembler::save_vector_registers(MacroAssembler* masm) { - int num_xmm_regs = LP64_ONLY(16) NOT_LP64(8); - if (UseAVX > 2) { - num_xmm_regs = LP64_ONLY(32) NOT_LP64(8); - } - - if (UseSSE == 1) { - __ subptr(rsp, sizeof(jdouble)*8); - for (int n = 0; n < 8; n++) { - __ movflt(Address(rsp, n*sizeof(jdouble)), as_XMMRegister(n)); - } - } else if (UseSSE >= 2) { - if (UseAVX > 2) { - __ push(rbx); - __ movl(rbx, 0xffff); - __ kmovwl(k1, rbx); - __ pop(rbx); - } -#ifdef COMPILER2 - if (MaxVectorSize > 16) { - if(UseAVX > 2) { - // Save upper half of ZMM registers - __ subptr(rsp, 32*num_xmm_regs); - for (int n = 0; n < num_xmm_regs; n++) { - __ vextractf64x4_high(Address(rsp, n*32), as_XMMRegister(n)); - } - } - assert(UseAVX > 0, "256 bit vectors are supported only with AVX"); - // Save upper half of YMM registers - __ subptr(rsp, 16*num_xmm_regs); - for (int n = 0; n < num_xmm_regs; n++) { - __ vextractf128_high(Address(rsp, n*16), as_XMMRegister(n)); - } - } -#endif - // Save whole 128bit (16 bytes) XMM registers - __ subptr(rsp, 16*num_xmm_regs); -#ifdef _LP64 - if (VM_Version::supports_evex()) { - for (int n = 0; n < num_xmm_regs; n++) { - __ vextractf32x4(Address(rsp, n*16), as_XMMRegister(n), 0); - } - } else { - for (int n = 0; n < num_xmm_regs; n++) { - __ movdqu(Address(rsp, n*16), as_XMMRegister(n)); - } - } -#else - for (int n = 0; n < num_xmm_regs; n++) { - __ movdqu(Address(rsp, n*16), as_XMMRegister(n)); - } -#endif - } -} - -void ShenandoahBarrierSetAssembler::restore_vector_registers(MacroAssembler* masm) { - int num_xmm_regs = LP64_ONLY(16) NOT_LP64(8); - if (UseAVX > 2) { - num_xmm_regs = LP64_ONLY(32) NOT_LP64(8); - } - if (UseSSE == 1) { - for (int n = 0; n < 8; n++) { - __ movflt(as_XMMRegister(n), Address(rsp, n*sizeof(jdouble))); - } - __ addptr(rsp, sizeof(jdouble)*8); - } else if (UseSSE >= 2) { - // Restore whole 128bit (16 bytes) XMM registers -#ifdef _LP64 - if (VM_Version::supports_evex()) { - for (int n = 0; n < num_xmm_regs; n++) { - __ vinsertf32x4(as_XMMRegister(n), as_XMMRegister(n), Address(rsp, n*16), 0); - } - } else { - for (int n = 0; n < num_xmm_regs; n++) { - __ movdqu(as_XMMRegister(n), Address(rsp, n*16)); - } - } -#else - for (int n = 0; n < num_xmm_regs; n++) { - __ movdqu(as_XMMRegister(n), Address(rsp, n*16)); - } -#endif - __ addptr(rsp, 16*num_xmm_regs); - -#ifdef COMPILER2 - if (MaxVectorSize > 16) { - // Restore upper half of YMM registers. - for (int n = 0; n < num_xmm_regs; n++) { - __ vinsertf128_high(as_XMMRegister(n), Address(rsp, n*16)); - } - __ addptr(rsp, 16*num_xmm_regs); - if (UseAVX > 2) { - for (int n = 0; n < num_xmm_regs; n++) { - __ vinsertf64x4_high(as_XMMRegister(n), Address(rsp, n*32)); - } - __ addptr(rsp, 32*num_xmm_regs); - } - } -#endif - } -} - #ifdef COMPILER1 #undef __ @@ -954,14 +851,9 @@ return _shenandoah_wb; } -address ShenandoahBarrierSetAssembler::shenandoah_wb_C() { - assert(_shenandoah_wb_C != NULL, "need write barrier stub"); - return _shenandoah_wb_C; -} - #define __ cgen->assembler()-> -address ShenandoahBarrierSetAssembler::generate_shenandoah_wb(StubCodeGenerator* cgen, bool c_abi, bool do_cset_test) { +address ShenandoahBarrierSetAssembler::generate_shenandoah_wb(StubCodeGenerator* cgen) { __ align(CodeEntryAlignment); StubCodeMark mark(cgen, "StubRoutines", "shenandoah_wb"); address start = __ pc(); @@ -973,80 +865,63 @@ // RAX always holds the src object ptr, except after the slow call and // the cmpxchg, then it holds the result. // R8 and RCX are used as temporary registers. - if (!c_abi) { - __ push(rdi); - __ push(r8); - } + __ push(rdi); + __ push(r8); // Check for object beeing in the collection set. // TODO: Can we use only 1 register here? // The source object arrives here in rax. // live: rax // live: rdi - if (!c_abi) { - __ mov(rdi, rax); - } else { - if (rax != c_rarg0) { - __ mov(rax, c_rarg0); - } - } - if (do_cset_test) { - __ shrptr(rdi, ShenandoahHeapRegion::region_size_bytes_shift_jint()); - // live: r8 - __ movptr(r8, (intptr_t) ShenandoahHeap::in_cset_fast_test_addr()); - __ movbool(r8, Address(r8, rdi, Address::times_1)); - // unlive: rdi - __ testbool(r8); - // unlive: r8 - __ jccb(Assembler::notZero, not_done); + __ mov(rdi, rax); - if (!c_abi) { - __ pop(r8); - __ pop(rdi); - } - __ ret(0); + __ shrptr(rdi, ShenandoahHeapRegion::region_size_bytes_shift_jint()); + // live: r8 + __ movptr(r8, (intptr_t) ShenandoahHeap::in_cset_fast_test_addr()); + __ movbool(r8, Address(r8, rdi, Address::times_1)); + // unlive: rdi + __ testbool(r8); + // unlive: r8 + __ jccb(Assembler::notZero, not_done); - __ bind(not_done); - } + __ pop(r8); + __ pop(rdi); + __ ret(0); - if (!c_abi) { - __ push(rcx); - } + __ bind(not_done); - if (!c_abi) { - __ push(rdx); - __ push(rdi); - __ push(rsi); - __ push(r8); - __ push(r9); - __ push(r10); - __ push(r11); - __ push(r12); - __ push(r13); - __ push(r14); - __ push(r15); - } - save_vector_registers(cgen->assembler()); + __ push(rcx); + __ push(rdx); + __ push(rdi); + __ push(rsi); + __ push(r8); + __ push(r9); + __ push(r10); + __ push(r11); + __ push(r12); + __ push(r13); + __ push(r14); + __ push(r15); + + // TODO: Use c_rarg0 to begin with? __ movptr(rdi, rax); __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_barrier_JRT), rdi); - restore_vector_registers(cgen->assembler()); - if (!c_abi) { - __ pop(r15); - __ pop(r14); - __ pop(r13); - __ pop(r12); - __ pop(r11); - __ pop(r10); - __ pop(r9); - __ pop(r8); - __ pop(rsi); - __ pop(rdi); - __ pop(rdx); - __ pop(rcx); - __ pop(r8); - __ pop(rdi); - } + __ pop(r15); + __ pop(r14); + __ pop(r13); + __ pop(r12); + __ pop(r11); + __ pop(r10); + __ pop(r9); + __ pop(r8); + __ pop(rsi); + __ pop(rdi); + __ pop(rdx); + __ pop(rcx); + + __ pop(r8); + __ pop(rdi); __ ret(0); #else ShouldNotReachHere(); @@ -1063,7 +938,6 @@ BufferBlob* bb = BufferBlob::create("shenandoah_barrier_stubs", stub_code_size); CodeBuffer buf(bb); StubCodeGenerator cgen(&buf); - _shenandoah_wb = generate_shenandoah_wb(&cgen, false, true); - _shenandoah_wb_C = generate_shenandoah_wb(&cgen, true, !ShenandoahWriteBarrierCsetTestInIR); + _shenandoah_wb = generate_shenandoah_wb(&cgen); } } diff -r a5cd168ab92b src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp --- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp Sat Nov 17 05:32:34 2018 -0500 @@ -38,7 +38,6 @@ private: static address _shenandoah_wb; - static address _shenandoah_wb_C; void satb_write_barrier_pre(MacroAssembler* masm, Register obj, @@ -68,16 +67,10 @@ void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp); void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp); - address generate_shenandoah_wb(StubCodeGenerator* cgen, bool c_abi, bool do_cset_test); - - void save_vector_registers(MacroAssembler* masm); - void restore_vector_registers(MacroAssembler* masm); + address generate_shenandoah_wb(StubCodeGenerator* cgen); public: static address shenandoah_wb(); - static address shenandoah_wb_C(); - - static bool is_shenandoah_wb_C_call(address call); #ifdef COMPILER1 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub); diff -r a5cd168ab92b src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp Sat Nov 17 05:32:34 2018 -0500 @@ -359,6 +359,15 @@ call->as_CallLeaf()->entry_point() == CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry); } +bool ShenandoahBarrierSetC2::is_shenandoah_wb_call(Node* call) { + if (ShenandoahWriteBarrier || ShenandoahStoreValEnqueueBarrier) { + return call->is_CallLeaf() && + call->as_CallLeaf()->entry_point() == CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_barrier_JRT); + } else { + return false; + } +} + bool ShenandoahBarrierSetC2::is_shenandoah_marking_if(PhaseTransform *phase, Node* n) { if (n->Opcode() != Op_If) { return false; diff -r a5cd168ab92b src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp Sat Nov 17 05:32:34 2018 -0500 @@ -92,6 +92,7 @@ static ShenandoahBarrierSetC2* bsc2(); static bool is_shenandoah_wb_pre_call(Node* call); + static bool is_shenandoah_wb_call(Node* call); static bool is_shenandoah_marking_if(PhaseTransform *phase, Node* n); static bool is_shenandoah_state_load(Node* n); static bool has_only_shenandoah_wb_pre_uses(Node* n); diff -r a5cd168ab92b src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Sat Nov 17 05:32:34 2018 -0500 @@ -2432,7 +2432,7 @@ mm->set_memory_at(Compile::AliasIdxRaw, raw_mem); phase->register_new_node(mm, ctrl); - Node* call = new CallLeafNoFPNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), ShenandoahBarrierSetAssembler::shenandoah_wb_C(), "shenandoah_write_barrier", TypeRawPtr::BOTTOM); + Node* call = new CallLeafNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_barrier_JRT), "shenandoah_write_barrier", TypeRawPtr::BOTTOM); call->init_req(TypeFunc::Control, ctrl); call->init_req(TypeFunc::I_O, phase->C->top()); call->init_req(TypeFunc::Memory, mm); @@ -3157,8 +3157,7 @@ nodes.push(root); for (uint next = 0; next < nodes.size(); next++) { Node *n = nodes.at(next); - if (n->Opcode() == Op_CallLeafNoFP && - ShenandoahBarrierSetAssembler::is_shenandoah_wb_C_call(n->as_Call()->entry_point())) { + if (ShenandoahBarrierSetC2::is_shenandoah_wb_call(n)) { controls.push(n); if (trace) { tty->print("XXXXXX verifying"); n->dump(); } for (uint next2 = 0; next2 < controls.size(); next2++) { diff -r a5cd168ab92b src/hotspot/share/gc/shenandoah/shenandoahBarrierSetAssembler.cpp --- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSetAssembler.cpp Thu Nov 15 16:54:56 2018 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2018, Red Hat, Inc. and/or its affiliates. - * - * 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. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -#include "precompiled.hpp" -#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" - -bool ShenandoahBarrierSetAssembler::is_shenandoah_wb_C_call(address call) { - if (ShenandoahWriteBarrier || ShenandoahStoreValEnqueueBarrier) { - return call == _shenandoah_wb_C; - } else { - return false; - } -} diff -r a5cd168ab92b src/hotspot/share/opto/lcm.cpp --- a/src/hotspot/share/opto/lcm.cpp Thu Nov 15 16:54:56 2018 -0500 +++ b/src/hotspot/share/opto/lcm.cpp Sat Nov 17 05:32:34 2018 -0500 @@ -790,12 +790,9 @@ //------------------------------add_call_kills------------------------------------- // helper function that adds caller save registers to MachProjNode -static void add_call_kills(MachProjNode *proj, RegMask& regs, const char* save_policy, bool exclude_soe, bool exclude_fp) { +static void add_call_kills(MachProjNode *proj, RegMask& regs, const char* save_policy, bool exclude_soe) { // Fill in the kill mask for the call for( OptoReg::Name r = OptoReg::Name(0); r < _last_Mach_Reg; r=OptoReg::add(r,1) ) { - if (exclude_fp && (register_save_type[r] == Op_RegF || register_save_type[r] == Op_RegD)) { - continue; - } if( !regs.Member(r) ) { // Not already defined by the call // Save-on-call register? if ((save_policy[r] == 'C') || @@ -896,16 +893,8 @@ proj->_rout.OR(Matcher::method_handle_invoke_SP_save_mask()); } -#if INCLUDE_SHENANDOAHGC - if (UseShenandoahGC && - ShenandoahBarrierSetAssembler::is_shenandoah_wb_C_call(mcall->entry_point())) { - assert(op == Op_CallLeafNoFP, "shenandoah_wb_C should be called with Op_CallLeafNoFP"); - add_call_kills(proj, regs, save_policy, exclude_soe, true); - } else -#endif - { - add_call_kills(proj, regs, save_policy, exclude_soe, false); - } + add_call_kills(proj, regs, save_policy, exclude_soe); + return node_cnt; } @@ -1165,7 +1154,7 @@ map_node_to_block(proj, block); block->insert_node(proj, phi_cnt++); - add_call_kills(proj, regs, _matcher._c_reg_save_policy, false, false); + add_call_kills(proj, regs, _matcher._c_reg_save_policy, false); } // Children are now all ready