< prev index next >

src/hotspot/share/gc/z/zBarrierSetNMethod.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * 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. --- 1,7 ---- /* ! * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * 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.
*** 43,63 **** if (nm->is_unloading()) { // We don't need to take the lock when unlinking nmethods from // the Method, because it is only concurrently unlinked by // the entry barrier, which acquires the per nmethod lock. ! nm->unlink_from_method(); // We can end up calling nmethods that are unloading // since we clear compiled ICs lazily. Returning false // will re-resovle the call and update the compiled IC. return false; } // Heal oops and disarm ZNMethodOopClosure cl; ! ZNMethod::nmethod_oops_do(nm, &cl); disarm(nm); return true; } --- 43,67 ---- if (nm->is_unloading()) { // We don't need to take the lock when unlinking nmethods from // the Method, because it is only concurrently unlinked by // the entry barrier, which acquires the per nmethod lock. ! nm->unlink_from_method(false /* acquire_lock */); // We can end up calling nmethods that are unloading // since we clear compiled ICs lazily. Returning false // will re-resovle the call and update the compiled IC. return false; } // Heal oops and disarm ZNMethodOopClosure cl; ! nm->oops_do(&cl); ! nm->fix_oop_relocations(); ! ! OrderAccess::release(); ! disarm(nm); return true; }
< prev index next >