Branch: refs/heads/perl_alloc_using-simplification
Home: https://github.com/Perl/perl5
Commit: c3c34c10a438edbfff32a4274b1a8de4306d535c
https://github.com/Perl/perl5/commit/c3c34c10a438edbfff32a4274b1a8de4306d535c
Author: Nicholas Clark <[email protected]>
Date: 2021-09-22 (Wed, 22 Sep 2021)
Changed paths:
M perl.c
Log Message:
-----------
perl_alloc() wants zeroed memory so should use calloc()
The previous code
1) allocated memory with PerlMem_malloc()
2) passed the pointer to S_init_tls_and_interp()
3) called Zero() or ZeroD()
4) optionally invoked INIT_TRACK_MEMPOOL()
5) returned the pointer
ZeroD() and Zero() are equivalent, apart from the return value of the
expression.
The layers of functions and macros obscured what what was actually
happening, and what the ordering dependencies are:
* S_init_tls_and_interp() uses only the address of the pointer
* Zero() zeros the memory
* Only INIT_TRACK_MEMPOOL() touches the contents
* all the "memory wrap" macros inside the other macros can't "trigger"
Hence the order of Zero() and S_init_tls_and_interp() can be swapped,
at which point Zero() immediately follows malloc(), meaning that the two
should be be replaced with calloc().
This simplifies the function considerably.
Commit: 7845680176b590258093de5b7c8110855b823889
https://github.com/Perl/perl5/commit/7845680176b590258093de5b7c8110855b823889
Author: Nicholas Clark <[email protected]>
Date: 2021-09-22 (Wed, 22 Sep 2021)
Changed paths:
M perl.c
Log Message:
-----------
No need to wrap INIT_TRACK_MEMPOOL with #ifdef PERL_TRACK_MEMPOOL
`INIT_TRACK_MEMPOOL` is defined as a no-op if `PERL_TRACK_MEMPOOL` is not
defined, so no need to wrap it in `#ifdef`.
Spotted by Ilmari.
Commit: e026325d705c76f8fd2fc2cb1c957980c01ab7fa
https://github.com/Perl/perl5/commit/e026325d705c76f8fd2fc2cb1c957980c01ab7fa
Author: Nicholas Clark <[email protected]>
Date: 2021-09-22 (Wed, 22 Sep 2021)
Changed paths:
M perl.c
Log Message:
-----------
perl_alloc_using() should use ->pCalloc
Use ->pCalloc instead of ->pMalloc followed by Zero()
This commit is analogous to the change in perl_alloc() in the previous
commit - the order of S_init_tls_and_interp() and Zero() can be swapped,
at which point the change to use "calloc" is obvious.
Compare: https://github.com/Perl/perl5/compare/c3c34c10a438%5E...e026325d705c