develooper Front page | perl.perl5.changes | Postings from September 2021

[Perl/perl5] 73ace1: Call mro_method_changed_in() later inhv_delete_co...

From:
Nicholas Clark via perl5-changes
Date:
September 18, 2021 18:55
Subject:
[Perl/perl5] 73ace1: Call mro_method_changed_in() later inhv_delete_co...
Message ID:
Perl/perl5/push/refs/heads/blead/6a3871-d61c34@github.com
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: 73ace1cb5078023d3dca765f0f10329b8606fc05
      https://github.com/Perl/perl5/commit/73ace1cb5078023d3dca765f0f10329b8606fc05
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-09-18 (Sat, 18 Sep 2021)

  Changed paths:
    M hv.c

  Log Message:
  -----------
  Call mro_method_changed_in() later in hv_delete_common()

Move the call as late as possible - just before the deleted hash key is
freed if G_DISCARD is set. In particular, move it *after* the HE is
freed.

Move the code that sets HeVAL() to &PL_sv_placeholder into the if block that
handles restricted hashes - no need to set this on normal hashes, as the
structure is about to be freed anyway.


  Commit: d15612fefdeea3e8baf64a5409a5385b54db76b1
      https://github.com/Perl/perl5/commit/d15612fefdeea3e8baf64a5409a5385b54db76b1
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-09-18 (Sat, 18 Sep 2021)

  Changed paths:
    M hv.c

  Log Message:
  -----------
  Merge the two `d_flags & G_DISCARD` tests in hv_delete_common()

Read from HeVAL() once, and move the call to sv_2mortal() later.


  Commit: d61c34dd2e02d6c4d8d1397b079542222fe6ea7e
      https://github.com/Perl/perl5/commit/d61c34dd2e02d6c4d8d1397b079542222fe6ea7e
  Author: Nicholas Clark <nick@ccl4.org>
  Date:   2021-09-18 (Sat, 18 Sep 2021)

  Changed paths:
    M hv.c

  Log Message:
  -----------
  Move all the code that deletes the hash entry into one place

Move the code that removed the entry from the hash ahead of all the code
that post-processes that entry to update method caches.

The entry is now completely deleted from the hash before any needed MRO
related logic is triggered, and the code that is specific to the chosen hash
table implementation is now untangled from the MRO code.


Compare: https://github.com/Perl/perl5/compare/6a3871b339dd...d61c34dd2e02



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About