diff --git a/Types.cpp b/Types.cpp index ea2da0b6f..6a1b120c9 100644 --- a/Types.cpp +++ b/Types.cpp @@ -546,7 +546,8 @@ u256 StructType::getStorageOffsetOfMember(string const& _name) const BOOST_THROW_EXCEPTION(InternalCompilerError() << errinfo_comment("Storage offset of non-existing member requested.")); } -FunctionType::FunctionType(FunctionDefinition const& _function, bool _isInternal) +FunctionType::FunctionType(FunctionDefinition const& _function, bool _isInternal): + m_location(_isInternal ? Location::INTERNAL : Location::EXTERNAL) { TypePointers params; TypePointers retParams; @@ -558,22 +559,6 @@ FunctionType::FunctionType(FunctionDefinition const& _function, bool _isInternal retParams.push_back(var->getType()); swap(params, m_parameterTypes); swap(retParams, m_returnParameterTypes); - m_location = _isInternal ? Location::INTERNAL : Location::EXTERNAL; -} - -FunctionType::FunctionType(TypePointers const& _parameterTypes, TypePointers const& _returnParameterTypes, - FunctionType::Location _location, bool _gasSet, bool _valueSet): - m_parameterTypes(_parameterTypes), m_returnParameterTypes(_returnParameterTypes), - m_location(_location), m_gasSet(_gasSet), m_valueSet(_valueSet) -{ - if (m_location == Location::EXTERNAL) - m_sizeOnStack = 2; - else if (m_location == Location::INTERNAL || m_location == Location::BARE) - m_sizeOnStack = 1; - if (m_gasSet) - m_sizeOnStack++; - if (m_valueSet) - m_sizeOnStack++; } bool FunctionType::operator==(Type const& _other) const @@ -680,7 +665,6 @@ TypePointer FunctionType::copyAndSetGasOrValue(bool _setGas, bool _setValue) con m_gasSet || _setGas, m_valueSet || _setValue); } - bool MappingType::operator==(Type const& _other) const { if (_other.getCategory() != getCategory()) diff --git a/Types.h b/Types.h index c0ffe864e..158d58eb9 100644 --- a/Types.h +++ b/Types.h @@ -365,7 +365,9 @@ public: _location) {} FunctionType(TypePointers const& _parameterTypes, TypePointers const& _returnParameterTypes, Location _location = Location::INTERNAL, - bool _gasSet = false, bool _valueSet = false); + bool _gasSet = false, bool _valueSet = false): + m_parameterTypes(_parameterTypes), m_returnParameterTypes(_returnParameterTypes), + m_location(_location), m_gasSet(_gasSet), m_valueSet(_valueSet) {} TypePointers const& getParameterTypes() const { return m_parameterTypes; } TypePointers const& getReturnParameterTypes() const { return m_returnParameterTypes; } @@ -393,10 +395,9 @@ private: TypePointers m_parameterTypes; TypePointers m_returnParameterTypes; - Location m_location; - unsigned m_sizeOnStack = 0; - bool m_gasSet = false; ///< true iff the gas value to be used is on the stack - bool m_valueSet = false; ///< true iff the value to be sent is on the stack + Location const m_location; + bool const m_gasSet = false; ///< true iff the gas value to be used is on the stack + bool const m_valueSet = false; ///< true iff the value to be sent is on the stack mutable std::unique_ptr m_members; };