From 341dbf266258dcbdb1e5e9f09c244b8ac271faaf Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Sat, 27 Sep 2014 09:08:36 -0400 Subject: arch: Use const StaticInstPtr references where possible This patch optimises the passing of StaticInstPtr by avoiding copying the reference-counting pointer. This avoids first incrementing and then decrementing the reference-counting pointer. --- src/arch/alpha/faults.cc | 12 ++++++------ src/arch/alpha/faults.hh | 24 ++++++++++++------------ src/arch/alpha/stacktrace.cc | 2 +- src/arch/alpha/stacktrace.hh | 6 +++--- src/arch/alpha/utility.hh | 2 +- 5 files changed, 23 insertions(+), 23 deletions(-) (limited to 'src/arch/alpha') diff --git a/src/arch/alpha/faults.cc b/src/arch/alpha/faults.cc index e4a5c9223..6375b0bfb 100644 --- a/src/arch/alpha/faults.cc +++ b/src/arch/alpha/faults.cc @@ -106,7 +106,7 @@ FaultVect IntegerOverflowFault::_vect = 0x0501; FaultStat IntegerOverflowFault::_count; void -AlphaFault::invoke(ThreadContext *tc, StaticInstPtr inst) +AlphaFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) { FaultBase::invoke(tc); if (!FullSystem) @@ -130,7 +130,7 @@ AlphaFault::invoke(ThreadContext *tc, StaticInstPtr inst) } void -ArithmeticFault::invoke(ThreadContext *tc, StaticInstPtr inst) +ArithmeticFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) { FaultBase::invoke(tc); if (!FullSystem) @@ -139,7 +139,7 @@ ArithmeticFault::invoke(ThreadContext *tc, StaticInstPtr inst) } void -DtbFault::invoke(ThreadContext *tc, StaticInstPtr inst) +DtbFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) { if (FullSystem) { // Set fault address and flags. Even though we're modeling an @@ -169,7 +169,7 @@ DtbFault::invoke(ThreadContext *tc, StaticInstPtr inst) } void -ItbFault::invoke(ThreadContext *tc, StaticInstPtr inst) +ItbFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) { if (FullSystem) { if (!tc->misspeculating()) { @@ -183,7 +183,7 @@ ItbFault::invoke(ThreadContext *tc, StaticInstPtr inst) } void -ItbPageFault::invoke(ThreadContext *tc, StaticInstPtr inst) +ItbPageFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) { if (FullSystem) { ItbFault::invoke(tc); @@ -202,7 +202,7 @@ ItbPageFault::invoke(ThreadContext *tc, StaticInstPtr inst) } void -NDtbMissFault::invoke(ThreadContext *tc, StaticInstPtr inst) +NDtbMissFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) { if (FullSystem) { DtbFault::invoke(tc, inst); diff --git a/src/arch/alpha/faults.hh b/src/arch/alpha/faults.hh index 7eddd14eb..4a5e036fd 100644 --- a/src/arch/alpha/faults.hh +++ b/src/arch/alpha/faults.hh @@ -48,8 +48,8 @@ class AlphaFault : public FaultBase virtual bool skipFaultingInstruction() {return false;} virtual bool setRestartAddress() {return true;} public: - void invoke(ThreadContext * tc, - StaticInstPtr inst = StaticInst::nullStaticInstPtr); + void invoke(ThreadContext * tc, const StaticInstPtr &inst = + StaticInst::nullStaticInstPtr); virtual FaultVect vect() = 0; virtual FaultStat & countStat() = 0; }; @@ -108,8 +108,8 @@ class ArithmeticFault : public AlphaFault FaultName name() const {return _name;} FaultVect vect() {return _vect;} FaultStat & countStat() {return _count;} - void invoke(ThreadContext * tc, - StaticInstPtr inst = StaticInst::nullStaticInstPtr); + void invoke(ThreadContext * tc, const StaticInstPtr &inst = + StaticInst::nullStaticInstPtr); }; class InterruptFault : public AlphaFault @@ -142,8 +142,8 @@ class DtbFault : public AlphaFault FaultName name() const = 0; FaultVect vect() = 0; FaultStat & countStat() = 0; - void invoke(ThreadContext * tc, - StaticInstPtr inst = StaticInst::nullStaticInstPtr); + void invoke(ThreadContext * tc, const StaticInstPtr &inst = + StaticInst::nullStaticInstPtr); }; class NDtbMissFault : public DtbFault @@ -160,8 +160,8 @@ class NDtbMissFault : public DtbFault FaultName name() const {return _name;} FaultVect vect() {return _vect;} FaultStat & countStat() {return _count;} - void invoke(ThreadContext * tc, - StaticInstPtr inst = StaticInst::nullStaticInstPtr); + void invoke(ThreadContext * tc, const StaticInstPtr &inst = + StaticInst::nullStaticInstPtr); }; class PDtbMissFault : public DtbFault @@ -238,8 +238,8 @@ class ItbFault : public AlphaFault FaultName name() const = 0; FaultVect vect() = 0; FaultStat & countStat() = 0; - void invoke(ThreadContext * tc, - StaticInstPtr inst = StaticInst::nullStaticInstPtr); + void invoke(ThreadContext * tc, const StaticInstPtr &inst = + StaticInst::nullStaticInstPtr); }; class ItbPageFault : public ItbFault @@ -254,8 +254,8 @@ class ItbPageFault : public ItbFault FaultName name() const {return _name;} FaultVect vect() {return _vect;} FaultStat & countStat() {return _count;} - void invoke(ThreadContext * tc, - StaticInstPtr inst = StaticInst::nullStaticInstPtr); + void invoke(ThreadContext * tc, const StaticInstPtr &inst = + StaticInst::nullStaticInstPtr); }; class ItbAcvFault : public ItbFault diff --git a/src/arch/alpha/stacktrace.cc b/src/arch/alpha/stacktrace.cc index 8c0e85af4..f48955715 100644 --- a/src/arch/alpha/stacktrace.cc +++ b/src/arch/alpha/stacktrace.cc @@ -122,7 +122,7 @@ StackTrace::StackTrace() { } -StackTrace::StackTrace(ThreadContext *_tc, StaticInstPtr inst) +StackTrace::StackTrace(ThreadContext *_tc, const StaticInstPtr &inst) : tc(0), stack(64) { trace(_tc, inst); diff --git a/src/arch/alpha/stacktrace.hh b/src/arch/alpha/stacktrace.hh index 669c65781..59174c568 100644 --- a/src/arch/alpha/stacktrace.hh +++ b/src/arch/alpha/stacktrace.hh @@ -76,7 +76,7 @@ class StackTrace public: StackTrace(); - StackTrace(ThreadContext *tc, StaticInstPtr inst); + StackTrace(ThreadContext *tc, const StaticInstPtr &inst); ~StackTrace(); void @@ -87,7 +87,7 @@ class StackTrace } bool valid() const { return tc != NULL; } - bool trace(ThreadContext *tc, StaticInstPtr inst); + bool trace(ThreadContext *tc, const StaticInstPtr &inst); public: const std::vector &getstack() const { return stack; } @@ -111,7 +111,7 @@ class StackTrace }; inline bool -StackTrace::trace(ThreadContext *tc, StaticInstPtr inst) +StackTrace::trace(ThreadContext *tc, const StaticInstPtr &inst) { if (!inst->isCall() && !inst->isReturn()) return false; diff --git a/src/arch/alpha/utility.hh b/src/arch/alpha/utility.hh index 72643cb16..a52125066 100644 --- a/src/arch/alpha/utility.hh +++ b/src/arch/alpha/utility.hh @@ -105,7 +105,7 @@ void copyMiscRegs(ThreadContext *src, ThreadContext *dest); void skipFunction(ThreadContext *tc); inline void -advancePC(PCState &pc, const StaticInstPtr inst) +advancePC(PCState &pc, const StaticInstPtr &inst) { pc.advance(); } -- cgit v1.2.3