Stéphane Payrard <[EMAIL PROTECTED]> wrote: > I want to make an loose analogy between pmc/their_content and > Unix inodes/files which I use as a mnemonic.
> PMCs are the equivalent of inodes, each one > reference some content which is the equivalent of a file. > C<set_pmc>, when the source and the destination pmcs are of the same type, > is like creating a hard_link to a file. The two pmcs share the > same content. ,--[ pdd02_vtables.pod ]------------------------------------------ | void set_pmc(INTERP, PMC* self, PMC* value) | Sets the value of the PMC in self to the value of the | PMC in value. | | void assign_pmc(INTERP, PMC* self, PMC* value) | Sets the value of the PMC in self to the value of the | PMC in value by copying the value. `----------------------------------------------------------------- So probably yes. OTOH having e.g. two array PMCs pointing to the same array structure could be rather error prone. I think, we have to consider first variables vs values. Variables have a name and hold values (the PMCs). It depends on the HLL, what e.g. an assignment is doing: i = j # Python - both variables refer to the same value i += k # mutable objects are changed in place # immutable objects are rebound to hold the new value @a = @b # Perl - copy array So normally setting a value happens one level higher. But in leaf functions and in the absence of introspection, I can imagine that the optimizer converts lexical opcodes to PMC-only operations, depending on the semantics of the HLL. leo