From c6bfe05083fde0d1c44ddd23963351b2a39d2592 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Fri, 3 Sep 2010 12:11:15 +0200 Subject: [PATCH] Fixed alignment issues with 64 bits ABIs. --- src/shared/cplusplus/Bind.cpp | 4 ++-- src/shared/cplusplus/Bind.h | 3 ++- src/shared/cplusplus/Control.cpp | 4 ++-- src/shared/cplusplus/Control.h | 3 ++- src/shared/cplusplus/Literals.cpp | 2 +- src/shared/cplusplus/Literals.h | 6 +++--- src/shared/cplusplus/Names.cpp | 4 ++-- src/shared/cplusplus/Names.h | 6 +++--- src/shared/cplusplus/Scope.cpp | 6 +++--- src/shared/cplusplus/Scope.h | 3 ++- src/shared/cplusplus/Symbol.cpp | 8 ++++++-- src/shared/cplusplus/Symbol.h | 8 ++++---- src/shared/cplusplus/Symbols.cpp | 12 ++++++------ src/shared/cplusplus/Symbols.h | 14 ++++---------- 14 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp index d7ab4d38535..3517b51b9df 100644 --- a/src/shared/cplusplus/Bind.cpp +++ b/src/shared/cplusplus/Bind.cpp @@ -626,7 +626,7 @@ bool Bind::visit(OperatorAST *ast) return false; } -int Bind::cppOperator(OperatorAST *ast) +OperatorNameId::Kind Bind::cppOperator(OperatorAST *ast) { OperatorNameId::Kind kind = OperatorNameId::InvalidOp; @@ -2423,7 +2423,7 @@ bool Bind::visit(QualifiedNameAST *ast) bool Bind::visit(OperatorFunctionIdAST *ast) { - const int op = this->cppOperator(ast->op); + const OperatorNameId::Kind op = this->cppOperator(ast->op); ast->name = _name = control()->operatorNameId(op); return false; } diff --git a/src/shared/cplusplus/Bind.h b/src/shared/cplusplus/Bind.h index 0bdd5c63e1f..0a6e757b462 100644 --- a/src/shared/cplusplus/Bind.h +++ b/src/shared/cplusplus/Bind.h @@ -51,6 +51,7 @@ #include "ASTVisitor.h" #include "FullySpecifiedType.h" +#include "Names.h" namespace CPlusPlus { @@ -117,7 +118,7 @@ protected: FullySpecifiedType newArrayDeclarator(NewArrayDeclaratorAST *ast, const FullySpecifiedType &init); void newInitializer(NewInitializerAST *ast); FullySpecifiedType newTypeId(NewTypeIdAST *ast); - int cppOperator(OperatorAST *ast); + OperatorNameId::Kind cppOperator(OperatorAST *ast); void parameterDeclarationClause(ParameterDeclarationClauseAST *ast, unsigned lparen_token, Function *fun); void translationUnit(TranslationUnitAST *ast); void objCProtocolRefs(ObjCProtocolRefsAST *ast, Symbol *objcClassOrProtocol); diff --git a/src/shared/cplusplus/Control.cpp b/src/shared/cplusplus/Control.cpp index 647b17ce357..1b42ead2061 100644 --- a/src/shared/cplusplus/Control.cpp +++ b/src/shared/cplusplus/Control.cpp @@ -259,7 +259,7 @@ public: return destructorNameIds.intern(DestructorNameId(id)); } - const OperatorNameId *findOrInsertOperatorNameId(int kind) + const OperatorNameId *findOrInsertOperatorNameId(OperatorNameId::Kind kind) { return operatorNameIds.intern(OperatorNameId(kind)); } @@ -609,7 +609,7 @@ const TemplateNameId *Control::templateNameId(const Identifier *id, const DestructorNameId *Control::destructorNameId(const Identifier *id) { return d->findOrInsertDestructorNameId(id); } -const OperatorNameId *Control::operatorNameId(int kind) +const OperatorNameId *Control::operatorNameId(OperatorNameId::Kind kind) { return d->findOrInsertOperatorNameId(kind); } const ConversionNameId *Control::conversionNameId(const FullySpecifiedType &type) diff --git a/src/shared/cplusplus/Control.h b/src/shared/cplusplus/Control.h index 69c6dceae6a..930b1beacfc 100644 --- a/src/shared/cplusplus/Control.h +++ b/src/shared/cplusplus/Control.h @@ -50,6 +50,7 @@ #define CPLUSPLUS_CONTROL_H #include "CPlusPlusForwardDeclarations.h" +#include "Names.h" namespace CPlusPlus { @@ -74,7 +75,7 @@ public: const DestructorNameId *destructorNameId(const Identifier *id); /// Returns the canonical operator name id. - const OperatorNameId *operatorNameId(int operatorId); + const OperatorNameId *operatorNameId(OperatorNameId::Kind operatorId); /// Returns the canonical conversion name id. const ConversionNameId *conversionNameId(const FullySpecifiedType &type); diff --git a/src/shared/cplusplus/Literals.cpp b/src/shared/cplusplus/Literals.cpp index 9d1bf652254..398821ccc7d 100644 --- a/src/shared/cplusplus/Literals.cpp +++ b/src/shared/cplusplus/Literals.cpp @@ -56,7 +56,7 @@ using namespace CPlusPlus; //////////////////////////////////////////////////////////////////////////////// Literal::Literal(const char *chars, unsigned size) - : _index(0), _next(0) + : _next(0), _index(0) { _chars = new char[size + 1]; diff --git a/src/shared/cplusplus/Literals.h b/src/shared/cplusplus/Literals.h index 6c1e958b6ce..7e69efc59ff 100644 --- a/src/shared/cplusplus/Literals.h +++ b/src/shared/cplusplus/Literals.h @@ -80,15 +80,15 @@ public: bool equalTo(const Literal *other) const; + Literal *_next; // ## private + private: char *_chars; unsigned _size; unsigned _hashCode; public: - // ### private - unsigned _index; - Literal *_next; + unsigned _index; // ### private }; class CPLUSPLUS_EXPORT StringLiteral: public Literal diff --git a/src/shared/cplusplus/Names.cpp b/src/shared/cplusplus/Names.cpp index 63ff03f38cc..56e15611664 100644 --- a/src/shared/cplusplus/Names.cpp +++ b/src/shared/cplusplus/Names.cpp @@ -153,7 +153,7 @@ bool TemplateNameId::isEqualTo(const Name *other) const return true; } -OperatorNameId::OperatorNameId(int kind) +OperatorNameId::OperatorNameId(Kind kind) : _kind(kind) { } @@ -163,7 +163,7 @@ OperatorNameId::~OperatorNameId() void OperatorNameId::accept0(NameVisitor *visitor) const { visitor->visit(this); } -int OperatorNameId::kind() const +OperatorNameId::Kind OperatorNameId::kind() const { return _kind; } const Identifier *OperatorNameId::identifier() const diff --git a/src/shared/cplusplus/Names.h b/src/shared/cplusplus/Names.h index 3a894a351e6..62d290a91f2 100644 --- a/src/shared/cplusplus/Names.h +++ b/src/shared/cplusplus/Names.h @@ -193,10 +193,10 @@ public: }; public: - OperatorNameId(int kind); + OperatorNameId(Kind kind); virtual ~OperatorNameId(); - int kind() const; + Kind kind() const; virtual const Identifier *identifier() const; virtual bool isEqualTo(const Name *other) const; @@ -208,7 +208,7 @@ protected: virtual void accept0(NameVisitor *visitor) const; private: - int _kind; + Kind _kind; }; class CPLUSPLUS_EXPORT ConversionNameId: public Name diff --git a/src/shared/cplusplus/Scope.cpp b/src/shared/cplusplus/Scope.cpp index b500f178cb8..87655be6c34 100644 --- a/src/shared/cplusplus/Scope.cpp +++ b/src/shared/cplusplus/Scope.cpp @@ -95,7 +95,7 @@ public: iterator lastSymbol() const; Symbol *lookat(const Identifier *id) const; - Symbol *lookat(int operatorId) const; + Symbol *lookat(OperatorNameId::Kind operatorId) const; private: /// Returns the hash value for the given Symbol. @@ -186,7 +186,7 @@ Symbol *SymbolTable::lookat(const Identifier *id) const return symbol; } -Symbol *SymbolTable::lookat(int operatorId) const +Symbol *SymbolTable::lookat(OperatorNameId::Kind operatorId) const { if (! _hash) return 0; @@ -290,7 +290,7 @@ Scope::iterator Scope::lastMember() const Symbol *Scope::find(const Identifier *id) const { return _members ? _members->lookat(id) : 0; } -Symbol *Scope::find(int operatorId) const +Symbol *Scope::find(OperatorNameId::Kind operatorId) const { return _members ? _members->lookat(operatorId) : 0; } /// Set the start offset of the scope diff --git a/src/shared/cplusplus/Scope.h b/src/shared/cplusplus/Scope.h index 47114111ba0..d2ae2f9c471 100644 --- a/src/shared/cplusplus/Scope.h +++ b/src/shared/cplusplus/Scope.h @@ -51,6 +51,7 @@ #include "CPlusPlusForwardDeclarations.h" #include "Symbol.h" +#include "Names.h" namespace CPlusPlus { @@ -81,7 +82,7 @@ public: iterator lastMember() const; Symbol *find(const Identifier *id) const; - Symbol *find(int operatorId) const; + Symbol *find(OperatorNameId::Kind operatorId) const; /// Set the start offset of the scope unsigned startOffset() const; diff --git a/src/shared/cplusplus/Symbol.cpp b/src/shared/cplusplus/Symbol.cpp index 5d46bc774ad..f373f7fd17b 100644 --- a/src/shared/cplusplus/Symbol.cpp +++ b/src/shared/cplusplus/Symbol.cpp @@ -112,12 +112,16 @@ private: Symbol::Symbol(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name) : _name(0), + _scope(0), + _next(0), + _fileId(0), + _sourceLocation(0), _hashCode(0), _storage(Symbol::NoStorage), _visibility(Symbol::Public), - _scope(0), _index(0), - _next(0), + _line(0), + _column(0), _isGenerated(false), _isDeprecated(false), _isUnavailable(false) diff --git a/src/shared/cplusplus/Symbol.h b/src/shared/cplusplus/Symbol.h index 96d8707cdb9..3f9411b4648 100644 --- a/src/shared/cplusplus/Symbol.h +++ b/src/shared/cplusplus/Symbol.h @@ -319,15 +319,15 @@ protected: virtual void visitSymbol0(SymbolVisitor *visitor) = 0; private: - unsigned _sourceLocation; const Name *_name; + Scope *_scope; + Symbol *_next; + const StringLiteral *_fileId; + unsigned _sourceLocation; unsigned _hashCode; int _storage; int _visibility; - Scope *_scope; unsigned _index; - Symbol *_next; - const StringLiteral *_fileId; unsigned _line; unsigned _column; diff --git a/src/shared/cplusplus/Symbols.cpp b/src/shared/cplusplus/Symbols.cpp index 7dae7792179..dd39b066549 100644 --- a/src/shared/cplusplus/Symbols.cpp +++ b/src/shared/cplusplus/Symbols.cpp @@ -681,10 +681,10 @@ void ObjCBaseProtocol::visitSymbol0(SymbolVisitor *visitor) { visitor->visit(this); } ObjCClass::ObjCClass(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name): - Scope(translationUnit, sourceLocation, name), - _isInterface(false), - _categoryName(0), - _baseClass(0) + Scope(translationUnit, sourceLocation, name), + _categoryName(0), + _baseClass(0), + _isInterface(false) { } @@ -992,9 +992,9 @@ ObjCPropertyDeclaration::ObjCPropertyDeclaration(TranslationUnit *translationUni unsigned sourceLocation, const Name *name): Symbol(translationUnit, sourceLocation, name), - _propertyAttributes(None), _getterName(0), - _setterName(0) + _setterName(0), + _propertyAttributes(None) {} ObjCPropertyDeclaration::~ObjCPropertyDeclaration() diff --git a/src/shared/cplusplus/Symbols.h b/src/shared/cplusplus/Symbols.h index dd7fe67a1a4..cd618a9c876 100644 --- a/src/shared/cplusplus/Symbols.h +++ b/src/shared/cplusplus/Symbols.h @@ -171,8 +171,8 @@ protected: virtual void visitSymbol0(SymbolVisitor *visitor); private: - FullySpecifiedType _type; const StringLiteral *_initializer; + FullySpecifiedType _type; }; class CPLUSPLUS_EXPORT TypenameArgument: public Symbol @@ -531,8 +531,6 @@ public: protected: virtual void visitSymbol0(SymbolVisitor *visitor); - -private: }; class CPLUSPLUS_EXPORT ObjCBaseProtocol: public Symbol @@ -552,8 +550,6 @@ public: protected: virtual void visitSymbol0(SymbolVisitor *visitor); - -private: }; class CPLUSPLUS_EXPORT ObjCForwardProtocolDeclaration: public Symbol, public Type @@ -647,8 +643,6 @@ protected: virtual void visitSymbol0(SymbolVisitor *visitor); virtual void accept0(TypeVisitor *visitor); virtual bool matchType0(const Type *otherType, TypeMatcher *matcher) const; - -private: }; class CPLUSPLUS_EXPORT ObjCClass: public Scope, public Type @@ -695,10 +689,10 @@ protected: virtual bool matchType0(const Type *otherType, TypeMatcher *matcher) const; private: - bool _isInterface; const Name *_categoryName; ObjCBaseClass * _baseClass; std::vector<ObjCBaseProtocol *> _protocols; + bool _isInterface; }; class CPLUSPLUS_EXPORT ObjCMethod: public Scope, public Type @@ -808,10 +802,10 @@ protected: virtual void visitSymbol0(SymbolVisitor *visitor); private: - FullySpecifiedType _type; - int _propertyAttributes; const Name *_getterName; const Name *_setterName; + FullySpecifiedType _type; + int _propertyAttributes; }; } // end of namespace CPlusPlus -- GitLab