8305320: DbgStrings and AsmRemarks are leaking

Reviewed-by: coleenp, fparain
This commit is contained in:
Justin King
2023-05-31 21:41:46 +00:00
parent 09514745fc
commit 8eda97dc8d
3 changed files with 9 additions and 0 deletions

View File

@@ -1250,6 +1250,7 @@ bool DbgStrings::is_empty() const {
void DbgStrings::share(const DbgStrings &src) {
precond(is_empty());
clear();
_strings = src._strings->reuse();
}

View File

@@ -114,6 +114,11 @@ CodeletMark::~CodeletMark() {
NOT_PRODUCT(_clet->use_strings((*_masm)->code()->dbg_strings()));
AbstractInterpreter::code()->commit(committed_code_size);
} else {
// InterpreterCodelet is not being commited and may be re-used. We need to free the storage for
// remarks and strings.
NOT_PRODUCT(_clet->clear_remarks());
NOT_PRODUCT(_clet->clear_strings());
}
// Make sure nobody can use _masm outside a CodeletMark lifespan.
*_masm = nullptr;

View File

@@ -85,6 +85,9 @@ class InterpreterCodelet: public Stub {
}
void use_remarks(AsmRemarks &remarks) { _asm_remarks.share(remarks); }
void use_strings(DbgStrings &strings) { _dbg_strings.share(strings); }
void clear_remarks() { _asm_remarks.clear(); }
void clear_strings() { _dbg_strings.clear(); }
#endif
};