-
由 Shreedhar Hardikar 提交于
We can avoid generating multiple versions of the slot_getattr. Once we deform any of the attributes in the tuples, we make it a virtual tuple. At code generation time, we know exactly how many need to be deformed and can in fact go ahead deform all the way. This way we don't need to worry about the case when slot_getattr is called on a virtual tuple with attnum > nvalid - that is deformation is partially complete. To enable this, we need to collect information from all the code generators that depend on SlotGetAttrCodegen before it is generated. We maintain a static map (keyed on the manager and the slot) to instances of SlotGetAttrCodegen. We also introduce a InitDependencies phase that happens before the GenerateCode phase, when dependants of SlotGetAttrCodegen can retrieve instances from the static map.
c5e3aed4