From cd2fb1ec666d76f585194ad838b24e2deda9783e Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Sat, 20 Jun 2015 11:45:34 -0600 Subject: [PATCH] Normalize integer types in the loc saving --- include/chaiscript/dispatchkit/dispatchkit.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/chaiscript/dispatchkit/dispatchkit.hpp b/include/chaiscript/dispatchkit/dispatchkit.hpp index 30d91078..0bbe0833 100644 --- a/include/chaiscript/dispatchkit/dispatchkit.hpp +++ b/include/chaiscript/dispatchkit/dispatchkit.hpp @@ -571,14 +571,14 @@ namespace chaiscript /// ensure that it is always in scope. Boxed_Value get_object(const std::string &name, std::atomic_uint_fast32_t &t_loc) const { - enum class Loc : uint32_t { + enum class Loc : uint_fast32_t { located = 0x80000000, is_local = 0x40000000, stack_mask = 0x0FFF0000, loc_mask = 0x0000FFFF }; - uint32_t loc = t_loc.load(std::memory_order_relaxed); + uint_fast32_t loc = t_loc.load(std::memory_order_relaxed); if (loc == 0) { @@ -590,21 +590,21 @@ namespace chaiscript for (auto s = stack_elem->begin(); s != stack_elem->end(); ++s ) { if (s->first == name) { - t_loc.store( static_cast(std::distance(stack.rbegin(), stack_elem) << 16) - | static_cast(std::distance(stack_elem->begin(), s)) - | static_cast(Loc::located) - | static_cast(Loc::is_local), + t_loc.store( static_cast(std::distance(stack.rbegin(), stack_elem) << 16) + | static_cast(std::distance(stack_elem->begin(), s)) + | static_cast(Loc::located) + | static_cast(Loc::is_local), std::memory_order_relaxed); return s->second; } } } - t_loc.store( static_cast(Loc::located), std::memory_order_relaxed); - } else if (loc & static_cast(Loc::is_local)) { + t_loc.store( static_cast(Loc::located), std::memory_order_relaxed); + } else if (loc & static_cast(Loc::is_local)) { auto &stack = get_stack_data(); - return stack[stack.size() - 1 - ((loc & static_cast(Loc::stack_mask)) >> 16)][loc & static_cast(Loc::loc_mask)].second; + return stack[stack.size() - 1 - ((loc & static_cast(Loc::stack_mask)) >> 16)][loc & static_cast(Loc::loc_mask)].second; } // Is the value we are looking for a global?