In perl.perl6.internals, you wrote: > A "thing" has three parts, a name (which is optional), a container, > and the contents of the container.
[ ... ] > Well, first it means we need to conceptually split "variables" into > three parts, rather than two as we have been. Do you have a more verbose description of variable/value separation? > It also means that we need to (or at least really should) split > vtables up into parts, so we can pull them upwards as > appropriate. That way we can promote vtable pieces where appropriate, > when the value and variable are of the same type, to cut out dispatch > overhead. something like: struct { can; has; isa; union { scalar_vtable; aggregate_vtable; object_vtable; }; VTABLE; "Plain" variables would call either the scalar or the aggregate variant of the vtable of there type. Overloaded variables would have a private copy of this vtable. The overloaded vtable entry points to a stub function, invoking the actual code. Objects have their classes vtable, using find_method to locate the PMC which can then be invoked to do the action. > ... And in those cases where we can't do that, we can do the > normal two-level access. (Though hopefully we can avoid it for most > anything besides objects and aggregates) verbose please leo