Benjamin Goldberg <[EMAIL PROTECTED]> wrote:
>> (PMCs have reference semantics[1])

I should have started with [1]:

  new P1, .PerlHash
  # new P3, .PerlString
  # set P3, "yyy\n"
  # set P1["a"], P3
  set P0, P1["a"]
  print P0
  set P0, "xxx\n"
  set P2, P1["a"]
  print P2
  end

When the hash entry exists (3 comments enabled), there is a different
behavior compared to the non existing case. "set"ting (assigning) the
returned P0 changes the aggregate member or not.

> If you'd done:

>      assign P0, "xxx\n"

   set P0, "xx" and assign P0, "xx" are the same. As already outlined,
one of these opcodes is obsolete. "set" does assign for I,N,S registers.

> Instead of set, then yes.  However, "set Px, Py" merely stores Py into
> the register Px, without touching the PMC that was in it.

There is not set P, P in above code.

So I assume, that the returned PerlUndef should be put into the
aggregate, if there was none before access.

leo

Reply via email to