Frame slots were hiding function defined outside the frame (e.g. primitives in the global scope), even if they weren't function slots. This caused unexpected behavior when data slots corresponded to names of primitives. Now, during eval when a function is required (e.g. the car of a list that is being evaled), frame slots will only be used if they are function slots.