mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-06 09:29:38 +01:00
8305320: DbgStrings and AsmRemarks are leaking
Reviewed-by: coleenp, fparain
This commit is contained in:
@@ -1250,6 +1250,7 @@ bool DbgStrings::is_empty() const {
|
||||
|
||||
void DbgStrings::share(const DbgStrings &src) {
|
||||
precond(is_empty());
|
||||
clear();
|
||||
_strings = src._strings->reuse();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user