Vladimir Lipskiy <[EMAIL PROTECTED]> wrote:

> What are "-", "X", and " "(whitespace) supossed to mean there?

"X" is meaning "is in context". Sorry if that is misleading, I'll update
the pod.

> Why is Eval not there? Does it have no context?

Its not specified yet, how eval fits into the picture. Its currently
different, because it runs a different code segment. We don't have
general support for multiple code segment yet.

> "If items in the interpreter context are changed between creation of the
> subroutine/return continuation and its invocation, the C<updatecc> opcode
> should be used:"

> What items? Items of the interpreter context or items of the Sub context
> mentioned above? Is there any difference betwen these? How do I know
> items are changed?

If you have something like:

    newsub .Sub, .Continuation, _sub_label, ret_label
    ...
  loop:
    ...
    invoke
  ret_label:
    branch loop

and e.g. interpreter's warning flags are changed during creation of the
return continuation and the subroutine call, the C<updatecc> opcode
updates the warnings in the return continuation, so that after returning
you have the very same interpreter context. The C<updatecc> should
finally set the same state of the return continuation, as if you had an
C<invokecc> inside the loop, without the overhead of creating new
continuation objects every time.

When using the PIR .pcc_begin/.pcc_end directives, C<updatecc> gets
inserted automatically when needed.

> Thanks.

leo
  • subs.pod Vladimir Lipskiy
    • Leopold Toetsch

Reply via email to