instead of globally storing unresolved and tentative defs, store indices to actual symbols in the functions that are responsible for symbol resolution.