Branch: refs/heads/davem/rc3
  Home:   https://github.com/Perl/perl5
  Commit: 253be3248222778ec3d0c6d85b9c0fc8ee86670e
      
https://github.com/Perl/perl5/commit/253be3248222778ec3d0c6d85b9c0fc8ee86670e
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M embed.fnc
    M embed.h
    M inline.h
    M pod/perlguts.pod
    M proto.h

  Log Message:
  -----------
  add rpp_replace_at() API function


  Commit: d00f98795a4dcdfd323a0ed5ab6d301031ab16d3
      
https://github.com/Perl/perl5/commit/d00f98795a4dcdfd323a0ed5ab6d301031ab16d3
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M dist/threads/threads.xs

  Log Message:
  -----------
  threads->object(): handle no argument

threads->object() without an argument is supposed to return undef.
But before checking that there's no argument, the XS was actually
accessing the argument.

This went undetected for around 13 years, due to the fact that
1) likely nothing outside the test code  in basic.t called it without an
   argument;
2) as long as any old SV pointer was still on the stack it would
(probably) harmlessly access it and then return.

I only spotted it due to the fact that a recent change to PERL_RC_STACK
meant that the pointer one above the top of stack happened to be NULL.


  Commit: 401f18ce0246a0f54bf7fa6b85ed75b3513a75ee
      
https://github.com/Perl/perl5/commit/401f18ce0246a0f54bf7fa6b85ed75b3513a75ee
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M embed.fnc
    M embed.h
    M inline.h
    M pod/perlguts.pod
    M proto.h

  Log Message:
  -----------
  add rpp_context() API function


  Commit: 39d32d0a07d2b3e21150e45649b2e064ea4ab499
      
https://github.com/Perl/perl5/commit/39d32d0a07d2b3e21150e45649b2e064ea4ab499
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp.c
    M pp_ctl.c
    M pp_hot.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap startmatch and misc

Remove the temporary wrappers from these pp() functions:

    pp_smartmatch
    pp_i_eq
    pp_eq
    pp_seq
    pp_match

They had to be treated as one group since pp_smartmatch() tail calls
the other four pp() functions.


  Commit: 215ea980d1ffae2df32d63031b9ed241fee15b8d
      
https://github.com/Perl/perl5/commit/215ea980d1ffae2df32d63031b9ed241fee15b8d
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp_hot.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_padsv_store()

Remove the temporary wrapper from this unary pp() function.
It should have been done at the same time as all the other hot unary
ops, but I missed it.


  Commit: b1559ebafb2f7ff0bd8bb2f286663179170f7a34
      
https://github.com/Perl/perl5/commit/b1559ebafb2f7ff0bd8bb2f286663179170f7a34
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M embed.fnc
    M pp_hot.c
    M pp_sys.c
    M proto.h

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_print(),tied_method

Remove the temporary wrapper from pp_print().

Also, update Perl_tied_method() to support both ref-counted-stack and
non-ref-counted-stack callers. Initially pp_print() is the only RC
caller of it.

Perl_tied_method() was a bit of mess: undocumented and confusing.
So also add some more code comments, and rename one of its parameters
from 'sp' to 'mark' to better reflect that it points to the base of the
argument list, not to the top.


  Commit: 07fb468e789015f20d7959d7d079aff757a6daca
      
https://github.com/Perl/perl5/commit/07fb468e789015f20d7959d7d079aff757a6daca
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  make RC-stack-aware: pp_anonlist, pp_av2arylen

Remove the temporary wrapper from pp_anonlist() and update it to directly
work in a refcounted-stack environment.

In addition, fix a bug in (the already unwrapped) pp_av2arylen(),
which only manifests itself in PERL_RC_STACK environments.

In particular, this expression in lvalue context was triggering a
premature free of the array:

    [1..10]->$#*

Basically pp_av2arylen() pops the AV off the stack and replaces it
with an SV with PERL_MAGIC_arylen which points back to the AV (and vice
versa). The link back is weak, so nothing actually keeps the AV alive;
previously, something else like the temps stack was keeping AV alive.

So swap the weak/strong mg_ptrs around to make the problem go away.


  Commit: 8d5561e5b0da75c5200e4b208042084e9c7dbd18
      
https://github.com/Perl/perl5/commit/8d5561e5b0da75c5200e4b208042084e9c7dbd18
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap: pp_(kv)[ah]slice

Remove the temporary wrappers from:
    pp_aslice()
    pp_hslice()
    pp_kvaslice()
    pp_kvhslice()


  Commit: 5dcff307731add12b371587fdcca65ea9723b88b
      
https://github.com/Perl/perl5/commit/5dcff307731add12b371587fdcca65ea9723b88b
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp_hot.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_join()

Remove the temporary wrapper from pp_join()


  Commit: a5203b3f256808ba44d04c438055968bbbde7df6
      
https://github.com/Perl/perl5/commit/a5203b3f256808ba44d04c438055968bbbde7df6
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_push()

Remove the temporary wrapper from pp_push()


  Commit: ef3cee02b07912d81e02dffa7f707bc900bde804
      
https://github.com/Perl/perl5/commit/ef3cee02b07912d81e02dffa7f707bc900bde804
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_list()

Remove the temporary wrapper from pp_list()


  Commit: 6ca77eae1978fadc6359eb2b663ed6620e6185c4
      
https://github.com/Perl/perl5/commit/6ca77eae1978fadc6359eb2b663ed6620e6185c4
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_unshift()

Remove the temporary wrapper from pp_unshift()


  Commit: 23763d5645f5923008fc926e17d50115aa7373b4
      
https://github.com/Perl/perl5/commit/23763d5645f5923008fc926e17d50115aa7373b4
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_refgen()

Remove the temporary wrapper from pp_refgen()


  Commit: f89455eddaa822dc6bac56192d3b3db5db6b0023
      
https://github.com/Perl/perl5/commit/f89455eddaa822dc6bac56192d3b3db5db6b0023
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_anonhash()

Remove the temporary wrapper from pp_anonhash()


  Commit: 4d61c5babb2923beeb4db81633dd196f233ceb9a
      
https://github.com/Perl/perl5/commit/4d61c5babb2923beeb4db81633dd196f233ceb9a
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp_hot.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_multideref()

Remove the temporary wrapper from pp_multideref()


  Commit: e3d299834e35fee339efbc70b9d29edebb582538
      
https://github.com/Perl/perl5/commit/e3d299834e35fee339efbc70b9d29edebb582538
  Author: David Mitchell <da...@iabyn.com>
  Date:   2023-09-11 (Mon, 11 Sep 2023)

  Changed paths:
    M pp_hot.c

  Log Message:
  -----------
  make RC-stack-aware: unwrap pp_multiconcat()

Remove the temporary wrapper from pp_multiconcat()


Compare: https://github.com/Perl/perl5/compare/2559024c1da4...e3d299834e35

Reply via email to