< prev index next >

src/share/vm/oops/instanceKlass.cpp

Print this page
rev 8983 : 8222670: pathological case of JIT recompilation and code cache bloat
Summary: Prevent downgraded compilation tasks from recompiling.
Reviewed-by: thartmann, sgehwolf, phh, andrew

*** 1,7 **** /* ! * Copyright (c) 1997, 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. --- 1,7 ---- /* ! * Copyright (c) 1997, 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.
*** 2923,2932 **** --- 2923,2939 ---- } #endif // INCLUDE_JVMTI // On-stack replacement stuff void InstanceKlass::add_osr_nmethod(nmethod* n) { + #ifndef PRODUCT + if (TieredCompilation) { + nmethod * prev = lookup_osr_nmethod(n->method(), n->osr_entry_bci(), n->comp_level(), true); + assert(prev == NULL || !prev->is_in_use(), + "redundunt OSR recompilation detected. memory leak in CodeCache!"); + } + #endif // only one compilation can be active NEEDS_CLEANUP // This is a short non-blocking critical region, so the no safepoint check is ok. OsrList_lock->lock_without_safepoint_check(); assert(n->is_osr_method(), "wrong kind of nmethod");
*** 3044,3054 **** } } osr = osr->osr_link(); } OsrList_lock->unlock(); ! if (best != NULL && best->comp_level() >= comp_level && match_level == false) { return best; } return NULL; } --- 3051,3063 ---- } } osr = osr->osr_link(); } OsrList_lock->unlock(); ! ! assert(match_level == false || best == NULL, "shouldn't pick up anything if match_level is set"); ! if (best != NULL && best->comp_level() >= comp_level) { return best; } return NULL; }
< prev index next >