logo       

Re: analogy pmc/content with inode/file: msg#00553

lang.perl.perl6.internals

Subject: Re: analogy pmc/content with inode/file

Stéphane Payrard <stef@xxxxxxxxxxx> 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



<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise