in reply to Re^16: Perl 5 Optimizing Compiler, Part 4: LLVM Backend?
in thread Perl 5 Optimizing Compiler, Part 4: LLVM Backend?

You do realize your idea will break $^E?

It not "my idea"....

Please think about the following sequence of events:

  1. User program calls some built-in or XS function.

    Program enters C ...

  2. ... does some stuff ...

    Still in C

  3. An system API is called, that fails and causes GetLastError() to be set.

    Still in C

  4. Oh. Let's fiddle with the context at this point

    But we must preserve that extended error information

    So that when we get around to telling the user that the other API we called, failed,

    he can query for some extra information

  5. ... do some more stuff ...
  6. return (failure) to user.

Think. What API might we be calling at 3, that fails, but not so badly that we can't fiddle with the context, before we report that failure back to user, who might want to get the extended error information?

And, if SetContext should fail, is the extended error information from that mysterious API still important? Will we ever get back to the user for him to be able to query that extended error information?

Details. Details... Off topic. Let's stop.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong

  • Comment on Re^17: Perl 5 Optimizing Compiler, Part 4: LLVM Backend?

Replies are listed 'Best First'.
Re^18: Perl 5 Optimizing Compiler, Part 4: LLVM Backend?
by bulk88 (Priest) on Aug 30, 2012 at 17:09 UTC
    The LastError does not survive, on failure OR success, through anything that sets LastError on failure. So even if TlsGetValue was successful, it presumably changed LastError, therefore masking the original error.
      therefore masking the original error.

      Yes. But you're still missing the point.

      Who is ever going to want to see the original error, if between it occurring and them being able to get their hands on it, the internals have gone on to mess with the context?

      Under what circumstances, is that information going to be useful to anyone, if the context has changed in the interim?

      I say: no one.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong