JDK-8027476 introduced parallel string and symbol table scan. This code includes a check whether the whole string and symbol table were processed or not.
This check for symbol tables uses a predicate used for string table.
E.g.
guarantee(!_process_strings || SymbolTable::parallel_claimed_index() >= _initial_symbol_table_size,
err_msg("claim value "INT32_FORMAT" after unlink less than initial symbol table size "INT32_FORMAT,
SymbolTable::parallel_claimed_index(), _initial_symbol_table_size));
must be changed to
guarantee(!_process_symbols || SymbolTable::parallel_claimed_index() >= _initial_symbol_table_size,
err_msg("claim value "INT32_FORMAT" after unlink less than initial symbol table size "INT32_FORMAT,
SymbolTable::parallel_claimed_index(), _initial_symbol_table_size));
This slipped through because when the symbol table is scanned always, regardless of whether the string table is scanned.