MachRegister::names construct on first use idiom wasn't.
Two problems with MachRegister::names static map:
(1) Raw pointer use caused excessive & verbose valgrind
leak output. The actual leak isn't a problem, but it
makes looking for other leaks painful.
(2) The construct on use pattern used was incorrect, leaving
the code at risk for improper static initialization.
Static initialization of the MachRegister::names pointer
races with intitialization via init_names() called in
the header & can lead to duplicate initialization.
Again, no "incorrect" behavior could result; just leads
to overuse of memory.