Skip to content

Commit a9fe0bf

Browse files
committed
Also exclude un-needed globals
1 parent 04a0ca5 commit a9fe0bf

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/java_bytecode/java_bytecode_language.cpp

+19-4
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,20 @@ bool java_bytecode_languaget::parse(
171171

172172
return false;
173173
}
174-
174+
175+
static void gather_needed_globals(const exprt& e, const symbol_tablet& symbol_table, symbol_tablet& needed)
176+
{
177+
if(e.id()==ID_symbol)
178+
{
179+
const auto& sym=symbol_table.lookup(to_symbol_expr(e).get_identifier());
180+
if(sym.is_static_lifetime)
181+
needed.add(sym);
182+
}
183+
else
184+
forall_operands(opit,e)
185+
gather_needed_globals(*opit,symbol_table,needed);
186+
}
187+
175188
/*******************************************************************\
176189
177190
Function: java_bytecode_languaget::typecheck
@@ -184,8 +197,6 @@ Function: java_bytecode_languaget::typecheck
184197
185198
\*******************************************************************/
186199

187-
188-
189200
bool java_bytecode_languaget::typecheck(
190201
symbol_tablet &symbol_table,
191202
const std::string &module)
@@ -268,12 +279,16 @@ bool java_bytecode_languaget::typecheck(
268279

269280
for(const auto& sym : symbol_table.symbols)
270281
{
282+
if(sym.second.is_static_lifetime)
283+
continue;
271284
if(lazy_methods.count(sym.first) && !already_populated.count(sym.first))
272285
continue;
286+
if(sym.second.type.id()==ID_code)
287+
gather_needed_globals(sym.second.value,symbol_table,keep_symbols);
273288
keep_symbols.add(sym.second);
274289
}
275290

276-
debug() << "Lazy methods: removed " << symbol_table.symbols.size() - keep_symbols.symbols.size() << " unreachable methods" << eom;
291+
debug() << "Lazy methods: removed " << symbol_table.symbols.size() - keep_symbols.symbols.size() << " unreachable methods and globals" << eom;
277292

278293
symbol_table.swap(keep_symbols);
279294

0 commit comments

Comments
 (0)