Author: labath Date: Fri Apr 5 00:28:52 2019 New Revision: 357744 URL: http://llvm.org/viewvc/llvm-project?rev=357744&view=rev Log: PDBFPO: Use references instead of pointers, where possible
Summary: The code was passing pointers around, expecting they would be not null. In c++ it is possible to convey this notion explicitly by using a reference instead. Not all uses of pointers could be converted to references (e.g. one can't store references in a container), but this will at least make it locally obvious that code is dealing with nonnull pointers. Reviewers: aleksandr.urakov, amccarth Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D60271 Modified: lldb/trunk/source/Plugins/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpression.cpp Modified: lldb/trunk/source/Plugins/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpression.cpp?rev=357744&r1=357743&r2=357744&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpression.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpression.cpp Fri Apr 5 00:28:52 2019 @@ -53,7 +53,7 @@ protected: public: virtual ~FPOProgramNode() = default; - virtual void Accept(FPOProgramASTVisitor *visitor) = 0; + virtual void Accept(FPOProgramASTVisitor &visitor) = 0; Kind GetKind() const { return m_token_kind; } @@ -66,7 +66,7 @@ public: FPOProgramNodeSymbol(llvm::StringRef name) : FPOProgramNode(Symbol), m_name(name) {} - void Accept(FPOProgramASTVisitor *visitor) override; + void Accept(FPOProgramASTVisitor &visitor) override; llvm::StringRef GetName() const { return m_name; } @@ -79,7 +79,7 @@ public: FPOProgramNodeRegisterRef(uint32_t lldb_reg_num) : FPOProgramNode(Register), m_lldb_reg_num(lldb_reg_num) {} - void Accept(FPOProgramASTVisitor *visitor) override; + void Accept(FPOProgramASTVisitor &visitor) override; uint32_t GetLLDBRegNum() const { return m_lldb_reg_num; } @@ -92,7 +92,7 @@ public: FPOProgramNodeIntegerLiteral(uint32_t value) : FPOProgramNode(IntegerLiteral), m_value(value) {} - void Accept(FPOProgramASTVisitor *visitor) override; + void Accept(FPOProgramASTVisitor &visitor) override; uint32_t GetValue() const { return m_value; } @@ -108,12 +108,12 @@ public: Align, }; - FPOProgramNodeBinaryOp(OpType op_type, FPOProgramNode *left, - FPOProgramNode *right) - : FPOProgramNode(BinaryOp), m_op_type(op_type), m_left(left), - m_right(right) {} + FPOProgramNodeBinaryOp(OpType op_type, FPOProgramNode &left, + FPOProgramNode &right) + : FPOProgramNode(BinaryOp), m_op_type(op_type), m_left(&left), + m_right(&right) {} - void Accept(FPOProgramASTVisitor *visitor) override; + void Accept(FPOProgramASTVisitor &visitor) override; OpType GetOpType() const { return m_op_type; } @@ -135,10 +135,10 @@ public: Deref, }; - FPOProgramNodeUnaryOp(OpType op_type, FPOProgramNode *operand) - : FPOProgramNode(UnaryOp), m_op_type(op_type), m_operand(operand) {} + FPOProgramNodeUnaryOp(OpType op_type, FPOProgramNode &operand) + : FPOProgramNode(UnaryOp), m_op_type(op_type), m_operand(&operand) {} - void Accept(FPOProgramASTVisitor *visitor) override; + void Accept(FPOProgramASTVisitor &visitor) override; OpType GetOpType() const { return m_op_type; } @@ -154,31 +154,31 @@ class FPOProgramASTVisitor { public: virtual ~FPOProgramASTVisitor() = default; - virtual void Visit(FPOProgramNodeSymbol *node) {} - virtual void Visit(FPOProgramNodeRegisterRef *node) {} - virtual void Visit(FPOProgramNodeIntegerLiteral *node) {} - virtual void Visit(FPOProgramNodeBinaryOp *node) {} - virtual void Visit(FPOProgramNodeUnaryOp *node) {} + virtual void Visit(FPOProgramNodeSymbol &node) {} + virtual void Visit(FPOProgramNodeRegisterRef &node) {} + virtual void Visit(FPOProgramNodeIntegerLiteral &node) {} + virtual void Visit(FPOProgramNodeBinaryOp &node) {} + virtual void Visit(FPOProgramNodeUnaryOp &node) {} }; -void FPOProgramNodeSymbol::Accept(FPOProgramASTVisitor *visitor) { - visitor->Visit(this); +void FPOProgramNodeSymbol::Accept(FPOProgramASTVisitor &visitor) { + visitor.Visit(*this); } -void FPOProgramNodeRegisterRef::Accept(FPOProgramASTVisitor *visitor) { - visitor->Visit(this); +void FPOProgramNodeRegisterRef::Accept(FPOProgramASTVisitor &visitor) { + visitor.Visit(*this); } -void FPOProgramNodeIntegerLiteral::Accept(FPOProgramASTVisitor *visitor) { - visitor->Visit(this); +void FPOProgramNodeIntegerLiteral::Accept(FPOProgramASTVisitor &visitor) { + visitor.Visit(*this); } -void FPOProgramNodeBinaryOp::Accept(FPOProgramASTVisitor *visitor) { - visitor->Visit(this); +void FPOProgramNodeBinaryOp::Accept(FPOProgramASTVisitor &visitor) { + visitor.Visit(*this); } -void FPOProgramNodeUnaryOp::Accept(FPOProgramASTVisitor *visitor) { - visitor->Visit(this); +void FPOProgramNodeUnaryOp::Accept(FPOProgramASTVisitor &visitor) { + visitor.Visit(*this); } class FPOProgramASTVisitorMergeDependent : public FPOProgramASTVisitor { @@ -191,10 +191,8 @@ public: void Merge(FPOProgramNode *&node_ref); private: - void Visit(FPOProgramNodeRegisterRef *node) override {} - void Visit(FPOProgramNodeIntegerLiteral *node) override {} - void Visit(FPOProgramNodeBinaryOp *node) override; - void Visit(FPOProgramNodeUnaryOp *node) override; + void Visit(FPOProgramNodeBinaryOp &node) override; + void Visit(FPOProgramNodeUnaryOp &node) override; void TryReplace(FPOProgramNode *&node_ref) const; @@ -204,15 +202,15 @@ private: void FPOProgramASTVisitorMergeDependent::Merge(FPOProgramNode *&node_ref) { TryReplace(node_ref); - node_ref->Accept(this); + node_ref->Accept(*this); } -void FPOProgramASTVisitorMergeDependent::Visit(FPOProgramNodeBinaryOp *node) { - Merge(node->Left()); - Merge(node->Right()); +void FPOProgramASTVisitorMergeDependent::Visit(FPOProgramNodeBinaryOp &node) { + Merge(node.Left()); + Merge(node.Right()); } -void FPOProgramASTVisitorMergeDependent::Visit(FPOProgramNodeUnaryOp *node) { - Merge(node->Operand()); +void FPOProgramASTVisitorMergeDependent::Visit(FPOProgramNodeUnaryOp &node) { + Merge(node.Operand()); } void FPOProgramASTVisitorMergeDependent::TryReplace( @@ -242,8 +240,8 @@ public: bool Resolve(FPOProgramNode *&program); private: - void Visit(FPOProgramNodeBinaryOp *node) override; - void Visit(FPOProgramNodeUnaryOp *node) override; + void Visit(FPOProgramNodeBinaryOp &node) override; + void Visit(FPOProgramNodeUnaryOp &node) override; bool TryReplace(FPOProgramNode *&node_ref); @@ -256,7 +254,7 @@ private: bool FPOProgramASTVisitorResolveRegisterRefs::Resolve(FPOProgramNode *&program) { if (!TryReplace(program)) return false; - program->Accept(this); + program->Accept(*this); return m_no_error_flag; } @@ -302,38 +300,38 @@ bool FPOProgramASTVisitorResolveRegister } void FPOProgramASTVisitorResolveRegisterRefs::Visit( - FPOProgramNodeBinaryOp *node) { - m_no_error_flag = Resolve(node->Left()) && Resolve(node->Right()); + FPOProgramNodeBinaryOp &node) { + m_no_error_flag = Resolve(node.Left()) && Resolve(node.Right()); } void FPOProgramASTVisitorResolveRegisterRefs::Visit( - FPOProgramNodeUnaryOp *node) { - m_no_error_flag = Resolve(node->Operand()); + FPOProgramNodeUnaryOp &node) { + m_no_error_flag = Resolve(node.Operand()); } class FPOProgramASTVisitorDWARFCodegen : public FPOProgramASTVisitor { public: FPOProgramASTVisitorDWARFCodegen(Stream &stream) : m_out_stream(stream) {} - void Emit(FPOProgramNode *program); + void Emit(FPOProgramNode &program); private: - void Visit(FPOProgramNodeRegisterRef *node) override; - void Visit(FPOProgramNodeIntegerLiteral *node) override; - void Visit(FPOProgramNodeBinaryOp *node) override; - void Visit(FPOProgramNodeUnaryOp *node) override; + void Visit(FPOProgramNodeRegisterRef &node) override; + void Visit(FPOProgramNodeIntegerLiteral &node) override; + void Visit(FPOProgramNodeBinaryOp &node) override; + void Visit(FPOProgramNodeUnaryOp &node) override; private: Stream &m_out_stream; }; -void FPOProgramASTVisitorDWARFCodegen::Emit(FPOProgramNode *program) { - program->Accept(this); +void FPOProgramASTVisitorDWARFCodegen::Emit(FPOProgramNode &program) { + program.Accept(*this); } -void FPOProgramASTVisitorDWARFCodegen::Visit(FPOProgramNodeRegisterRef *node) { +void FPOProgramASTVisitorDWARFCodegen::Visit(FPOProgramNodeRegisterRef &node) { - uint32_t reg_num = node->GetLLDBRegNum(); + uint32_t reg_num = node.GetLLDBRegNum(); lldbassert(reg_num != LLDB_INVALID_REGNUM); if (reg_num > 31) { @@ -346,18 +344,18 @@ void FPOProgramASTVisitorDWARFCodegen::V } void FPOProgramASTVisitorDWARFCodegen::Visit( - FPOProgramNodeIntegerLiteral *node) { - uint32_t value = node->GetValue(); + FPOProgramNodeIntegerLiteral &node) { + uint32_t value = node.GetValue(); m_out_stream.PutHex8(DW_OP_constu); m_out_stream.PutULEB128(value); } -void FPOProgramASTVisitorDWARFCodegen::Visit(FPOProgramNodeBinaryOp *node) { +void FPOProgramASTVisitorDWARFCodegen::Visit(FPOProgramNodeBinaryOp &node) { - Emit(node->Left()); - Emit(node->Right()); + Emit(*node.Left()); + Emit(*node.Right()); - switch (node->GetOpType()) { + switch (node.GetOpType()) { case FPOProgramNodeBinaryOp::Plus: m_out_stream.PutHex8(DW_OP_plus); // NOTE: can be optimized by using DW_OP_plus_uconst opcpode @@ -379,10 +377,10 @@ void FPOProgramASTVisitorDWARFCodegen::V } } -void FPOProgramASTVisitorDWARFCodegen::Visit(FPOProgramNodeUnaryOp *node) { - Emit(node->Operand()); +void FPOProgramASTVisitorDWARFCodegen::Visit(FPOProgramNodeUnaryOp &node) { + Emit(*node.Operand()); - switch (node->GetOpType()) { + switch (node.GetOpType()) { case FPOProgramNodeUnaryOp::Deref: m_out_stream.PutHex8(DW_OP_deref); break; @@ -429,7 +427,7 @@ static bool ParseFPOSingleAssignmentProg FPOProgramNode *right = eval_stack.pop_back_val(); FPOProgramNode *left = eval_stack.pop_back_val(); FPOProgramNode *node = alloc.makeNode<FPOProgramNodeBinaryOp>( - ops_binary_it->second, left, right); + ops_binary_it->second, *left, *right); eval_stack.push_back(node); continue; } @@ -442,7 +440,7 @@ static bool ParseFPOSingleAssignmentProg } FPOProgramNode *operand = eval_stack.pop_back_val(); FPOProgramNode *node = - alloc.makeNode<FPOProgramNodeUnaryOp>(ops_unary_it->second, operand); + alloc.makeNode<FPOProgramNodeUnaryOp>(ops_unary_it->second, *operand); eval_stack.push_back(node); continue; } @@ -542,6 +540,6 @@ bool lldb_private::npdb::TranslateFPOPro } FPOProgramASTVisitorDWARFCodegen codegen(stream); - codegen.Emit(target_program); + codegen.Emit(*target_program); return true; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits