This patch removes 'label_value' from lang_identifier, shrinking it from 72 to 64 bytes (on 64-bit machine). We replace this by augmenting the already used per-function named_labels hash table. This is a major win, because labels are extremely rare and there are many identifiers. We also shring the binding structure by a pointer, as the shadowed_labels list goes away. The slight difficulty is with the declared label extension. These have a regular scope and can hide an outer binding. We stash the outer binding in the named_label_entry and restore it when popping that scope. Applying to trunk nathan -- Nathan Sidwell