duke@435: /* dbuck@8997: * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. duke@435: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. duke@435: * duke@435: * This code is free software; you can redistribute it and/or modify it duke@435: * under the terms of the GNU General Public License version 2 only, as duke@435: * published by the Free Software Foundation. duke@435: * duke@435: * This code is distributed in the hope that it will be useful, but WITHOUT duke@435: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or duke@435: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License duke@435: * version 2 for more details (a copy is included in the LICENSE file that duke@435: * accompanied this code). duke@435: * duke@435: * You should have received a copy of the GNU General Public License version duke@435: * 2 along with this work; if not, write to the Free Software Foundation, duke@435: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. duke@435: * trims@1907: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA trims@1907: * or visit www.oracle.com if you need additional information or have any trims@1907: * questions. duke@435: * duke@435: */ duke@435: stefank@2314: #include "precompiled.hpp" coleenp@4037: #include "oops/compiledICHolder.hpp" coleenp@4037: #include "oops/klass.hpp" coleenp@4037: #include "oops/method.hpp" coleenp@4037: #include "oops/oop.inline2.hpp" duke@435: coleenp@4037: volatile int CompiledICHolder::_live_count; coleenp@4037: volatile int CompiledICHolder::_live_not_claimed_count; coleenp@4037: coleenp@4037: dbuck@8997: bool CompiledICHolder::is_loader_alive(BoolObjectClosure* is_alive) { dbuck@8997: if (_holder_metadata->is_method()) { dbuck@8997: if (!((Method*)_holder_metadata)->method_holder()->is_loader_alive(is_alive)) { dbuck@8997: return false; dbuck@8997: } dbuck@8997: } else if (_holder_metadata->is_klass()) { dbuck@8997: if (!((Klass*)_holder_metadata)->is_loader_alive(is_alive)) { dbuck@8997: return false; dbuck@8997: } dbuck@8997: } dbuck@8997: if (!_holder_klass->is_loader_alive(is_alive)) { dbuck@8997: return false; dbuck@8997: } dbuck@8997: return true; dbuck@8997: } dbuck@8997: coleenp@4037: // Printing coleenp@4037: coleenp@4037: void CompiledICHolder::print_on(outputStream* st) const { coleenp@4037: st->print("%s", internal_name()); dbuck@8997: st->print(" - metadata: "); holder_metadata()->print_value_on(st); st->cr(); dbuck@8997: st->print(" - klass: "); holder_klass()->print_value_on(st); st->cr(); coleenp@4037: } coleenp@4037: coleenp@4037: void CompiledICHolder::print_value_on(outputStream* st) const { coleenp@4037: st->print("%s", internal_name()); coleenp@4037: } coleenp@4037: coleenp@4037: coleenp@4037: // Verification coleenp@4037: coleenp@4037: void CompiledICHolder::verify_on(outputStream* st) { dbuck@8997: guarantee(holder_metadata()->is_method() || holder_metadata()->is_klass(), "should be method or klass"); coleenp@4037: guarantee(holder_klass()->is_klass(), "should be klass"); coleenp@4037: }