Removed unnecessary ::std::string calls.

All the Error and assert calls were using const ::std::string & arguments.
When provided with a char*, the compiler was creating a temporary string
object to pass in.  This was triggering mallocs everywhere, even in the
fast paths.

Change-Id: Ie0ad1f240334de677618086bddd64113c56aae6e
This commit is contained in:
Austin Schuh
2015-11-22 10:07:23 -08:00
committed by Peter Johnson
parent 055ee09825
commit 61760c839a
6 changed files with 78 additions and 83 deletions

View File

@@ -10,6 +10,7 @@
#include "Error.h"
#include "HAL/cpp/priority_mutex.h"
#include "llvm/StringRef.h"
#define wpi_setErrnoErrorWithContext(context) \
(this->SetErrnoError((context), __FILE__, __FUNCTION__, __LINE__))
@@ -60,34 +61,29 @@ class ErrorBase {
virtual Error& GetError();
virtual const Error& GetError() const;
virtual void SetErrnoError(const std::string& contextMessage,
const std::string& filename,
const std::string& function,
virtual void SetErrnoError(llvm::StringRef contextMessage,
llvm::StringRef filename, llvm::StringRef function,
uint32_t lineNumber) const;
virtual void SetImaqError(int success, const std::string& contextMessage,
const std::string& filename,
const std::string& function,
virtual void SetImaqError(int success, llvm::StringRef contextMessage,
llvm::StringRef filename, llvm::StringRef function,
uint32_t lineNumber) const;
virtual void SetError(Error::Code code, const std::string& contextMessage,
const std::string& filename,
const std::string& function, uint32_t lineNumber) const;
virtual void SetWPIError(const std::string& errorMessage, Error::Code code,
const std::string& contextMessage,
const std::string& filename,
const std::string& function,
virtual void SetError(Error::Code code, llvm::StringRef contextMessage,
llvm::StringRef filename, llvm::StringRef function,
uint32_t lineNumber) const;
virtual void SetWPIError(llvm::StringRef errorMessage, Error::Code code,
llvm::StringRef contextMessage,
llvm::StringRef filename, llvm::StringRef function,
uint32_t lineNumber) const;
virtual void CloneError(const ErrorBase& rhs) const;
virtual void ClearError() const;
virtual bool StatusIsFatal() const;
static void SetGlobalError(Error::Code code,
const std::string& contextMessage,
const std::string& filename,
const std::string& function, uint32_t lineNumber);
static void SetGlobalWPIError(const std::string& errorMessage,
const std::string& contextMessage,
const std::string& filename,
const std::string& function,
uint32_t lineNumber);
static void SetGlobalError(Error::Code code, llvm::StringRef contextMessage,
llvm::StringRef filename, llvm::StringRef function,
uint32_t lineNumber);
static void SetGlobalWPIError(llvm::StringRef errorMessage,
llvm::StringRef contextMessage,
llvm::StringRef filename,
llvm::StringRef function, uint32_t lineNumber);
static Error& GetGlobalError();
protected: