From 7dc74da5505399d289249f54ddba5d582391a3ea Mon Sep 17 00:00:00 2001 From: Marcus Comstedt <marcus@mc.pp.se> Date: Sun, 5 Aug 2018 11:45:13 +0200 Subject: [PATCH] Thread.ResourceCountKey: Make destruct immediate --- lib/modules/Thread.pmod | 3 +++ src/builtin.cmod | 13 +++++++++++++ src/program.c | 6 +++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/modules/Thread.pmod b/lib/modules/Thread.pmod index 5969c8aadf..06c5052a97 100644 --- a/lib/modules/Thread.pmod +++ b/lib/modules/Thread.pmod @@ -879,6 +879,9 @@ optional class Farm //! @[ResourceCount], @[MutexKey] //! optional class ResourceCountKey { + + private inherit __builtin.DestructImmediate; + /*semi*/private ResourceCount parent; /*semi*/private void create(ResourceCount _parent) { diff --git a/src/builtin.cmod b/src/builtin.cmod index fd6fc59ace..eb9bfdd12c 100644 --- a/src/builtin.cmod +++ b/src/builtin.cmod @@ -4581,6 +4581,19 @@ PIKECLASS Null } } +/*! @endclass + */ + +/*! @class DestructImmediate + *! An empty class that can be intherited to get the PROGRAM_DESTRUCT_IMMEDIATE + *! flag set. + */ + +PIKECLASS DestructImmediate + program_flags PROGRAM_DESTRUCT_IMMEDIATE; +{ +} + /*! @endclass */ diff --git a/src/program.c b/src/program.c index 56b84b704f..470d57bb92 100644 --- a/src/program.c +++ b/src/program.c @@ -4820,10 +4820,10 @@ void lower_inherit(struct program *p, return; } - /* Propagate the HAS_C_METHODS and CLEAR_STORAGE flags. */ - if (p->flags & (PROGRAM_HAS_C_METHODS|PROGRAM_CLEAR_STORAGE)) { + /* Propagate the HAS_C_METHODS, CLEAR_STORAGE and DESTRUCT_IMMEDIATE flags. */ + if (p->flags & (PROGRAM_HAS_C_METHODS|PROGRAM_CLEAR_STORAGE|PROGRAM_DESTRUCT_IMMEDIATE)) { Pike_compiler->new_program->flags |= - (p->flags & (PROGRAM_HAS_C_METHODS|PROGRAM_CLEAR_STORAGE)); + (p->flags & (PROGRAM_HAS_C_METHODS|PROGRAM_CLEAR_STORAGE|PROGRAM_DESTRUCT_IMMEDIATE)); } /* parent offset was increased by 42 for above test.. */ -- GitLab