From 080e391e51390f2739098295d391680e05a6ca93 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Tue, 8 Jan 2019 18:13:55 +0100 Subject: [PATCH] obey sonar and make SwappedContext::stack_ private --- src/kernel/context/ContextBoost.cpp | 4 ++-- src/kernel/context/ContextRaw.cpp | 6 +++--- src/kernel/context/ContextSwapped.cpp | 5 +++++ src/kernel/context/ContextSwapped.hpp | 7 +++---- src/kernel/context/ContextUnix.cpp | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/kernel/context/ContextBoost.cpp b/src/kernel/context/ContextBoost.cpp index 1e65b4806b..56208f719c 100644 --- a/src/kernel/context/ContextBoost.cpp +++ b/src/kernel/context/ContextBoost.cpp @@ -33,9 +33,9 @@ BoostContext::BoostContext(std::function code, void_pfn_smxprocess_t cle /* We need to pass the bottom of the stack to make_fcontext, depending on the stack direction it may be the lower or higher address: */ #if PTH_STACKGROWTH == -1 - void* stack = static_cast(this->stack_) + smx_context_usable_stack_size; + void* stack = static_cast(get_stack()) + smx_context_usable_stack_size; #else - void* stack = this->stack_; + void* stack = get_stack(); #endif ASAN_ONLY(this->asan_stack_ = stack); #if BOOST_VERSION < 106100 diff --git a/src/kernel/context/ContextRaw.cpp b/src/kernel/context/ContextRaw.cpp index f6eaf314b2..d8dab5ac34 100644 --- a/src/kernel/context/ContextRaw.cpp +++ b/src/kernel/context/ContextRaw.cpp @@ -200,11 +200,11 @@ RawContext::RawContext(std::function code, void_pfn_smxprocess_t cleanup { if (has_code()) { #if PTH_STACKGROWTH == -1 - ASAN_ONLY(this->asan_stack_ = static_cast(this->stack_) + smx_context_usable_stack_size); + ASAN_ONLY(this->asan_stack_ = static_cast(get_stack()) + smx_context_usable_stack_size); #else - ASAN_ONLY(this->asan_stack_ = this->stack_); + ASAN_ONLY(this->asan_stack_ = get_stack()); #endif - this->stack_top_ = raw_makecontext(this->stack_, smx_context_usable_stack_size, RawContext::wrapper, this); + this->stack_top_ = raw_makecontext(get_stack(), smx_context_usable_stack_size, RawContext::wrapper, this); } else { set_maestro(this); // save maestro for run_all() if (MC_is_active()) diff --git a/src/kernel/context/ContextSwapped.cpp b/src/kernel/context/ContextSwapped.cpp index a270f90fc0..b550205e99 100644 --- a/src/kernel/context/ContextSwapped.cpp +++ b/src/kernel/context/ContextSwapped.cpp @@ -140,6 +140,11 @@ void SwappedContext::set_maestro(SwappedContext* ctx) factory_->workers_context_[0] = ctx; } +void* SwappedContext::get_stack() +{ + return stack_; +} + void SwappedContext::stop() { Context::stop(); diff --git a/src/kernel/context/ContextSwapped.hpp b/src/kernel/context/ContextSwapped.hpp index da798ed468..8ff75d5626 100644 --- a/src/kernel/context/ContextSwapped.hpp +++ b/src/kernel/context/ContextSwapped.hpp @@ -46,15 +46,14 @@ public: virtual void swap_into(SwappedContext* to) = 0; // Defined in Raw, Boost and UContext subclasses void set_maestro(SwappedContext* ctx); + void* get_stack(); // FIXME: Killme static thread_local uintptr_t worker_id_; -protected: - void* stack_ = nullptr; /* the thread stack */ - private: - SwappedContextFactory* factory_; // for sequential and parallel run_all() + void* stack_ = nullptr; /* the thread stack */ + SwappedContextFactory* const factory_; // for sequential and parallel run_all() }; } // namespace context diff --git a/src/kernel/context/ContextUnix.cpp b/src/kernel/context/ContextUnix.cpp index 727ffb8a8c..0ad3f4ed8c 100644 --- a/src/kernel/context/ContextUnix.cpp +++ b/src/kernel/context/ContextUnix.cpp @@ -46,7 +46,7 @@ UContext::UContext(std::function code, void_pfn_smxprocess_t cleanup_fun if (has_code()) { getcontext(&this->uc_); this->uc_.uc_link = nullptr; - this->uc_.uc_stack.ss_sp = sg_makecontext_stack_addr(this->stack_); + this->uc_.uc_stack.ss_sp = sg_makecontext_stack_addr(get_stack()); this->uc_.uc_stack.ss_size = sg_makecontext_stack_size(smx_context_usable_stack_size); #if PTH_STACKGROWTH == -1 ASAN_ONLY(this->asan_stack_ = static_cast(this->stack_) + smx_context_usable_stack_size); -- 2.20.1