nitc :: AAttrFormExpr :: optimize
# Optimize this attribute access
# * `mproperty` The attribute which is accessed
# * `recv` The receiver (The object) of the access
protected fun optimize(mproperty: MAttribute, recv: MutableInstance)
do
var position = recv.mtype.as(MClassType).mclass.get_position_attributes(mproperty.intro_mclassdef.mclass)
if position > 0 then
# if this attribute class has an unique position for this receiver, then use direct access
offset = position + mproperty.offset
status = 1
else
# Otherwise, perfect hashing must be used
id = mproperty.intro_mclassdef.mclass.vtable.id
offset = mproperty.offset
status = 2
end
end
src/vm/vm_optimizations.nit:71,2--87,4