diff -r dc0a15e6e113 -r 4b9d492b033d src/base/flags.hh --- a/src/base/flags.hh Wed Aug 19 10:03:03 2015 +0100 +++ b/src/base/flags.hh Wed Aug 19 10:03:19 2015 +0100 @@ -39,8 +39,8 @@ public: typedef T Type; - Flags() : _flags(0) {} - Flags(Type flags) : _flags(flags) {} + constexpr Flags() : _flags(0) {} + constexpr Flags(Type flags) : _flags(flags) {} operator const Type() const { return _flags; } diff -r dc0a15e6e113 -r 4b9d492b033d src/mem/request.hh --- a/src/mem/request.hh Wed Aug 19 10:03:03 2015 +0100 +++ b/src/mem/request.hh Wed Aug 19 10:03:19 2015 +0100 @@ -222,27 +222,6 @@ private: /** - * Set up a physical (e.g. device) request in a previously - * allocated Request object. - */ - void - setPhys(Addr paddr, unsigned size, Flags flags, MasterID mid, Tick time) - { - assert(size >= 0); - _paddr = paddr; - _size = size; - _time = time; - _masterId = mid; - _flags.clear(~STICKY_FLAGS); - _flags.set(flags); - privateFlags.clear(~STICKY_PRIVATE_FLAGS); - privateFlags.set(VALID_PADDR|VALID_SIZE); - depth = 0; - accessDelta = 0; - //translateDelta = 0; - } - - /** * The physical address of the request. Valid only if validPaddr * is set. */ @@ -304,7 +283,7 @@ * _flags and privateFlags are cleared by Flags default * constructor.) */ - Request() + constexpr Request() : _paddr(0), _size(0), _masterId(invldMasterId), _time(0), _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0), _extraData(0), _contextId(0), _threadId(0), _pc(0), @@ -317,31 +296,22 @@ * These fields are adequate to perform a request. */ Request(Addr paddr, unsigned size, Flags flags, MasterID mid) - : _paddr(0), _size(0), _masterId(invldMasterId), _time(0), + : Request(paddr, size, flags, mid, curTick()) + { } + + constexpr Request(Addr paddr, unsigned size, Flags flags, MasterID mid, + Tick time) + : _paddr(paddr), _size(size), _masterId(mid), + _flags(flags), privateFlags(VALID_PADDR|VALID_SIZE), _time(time), _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0), _extraData(0), _contextId(0), _threadId(0), _pc(0), translateDelta(0), accessDelta(0), depth(0) - { - setPhys(paddr, size, flags, mid, curTick()); - } - - Request(Addr paddr, unsigned size, Flags flags, MasterID mid, Tick time) - : _paddr(0), _size(0), _masterId(invldMasterId), _time(0), - _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0), - _extraData(0), _contextId(0), _threadId(0), _pc(0), - translateDelta(0), accessDelta(0), depth(0) - { - setPhys(paddr, size, flags, mid, time); - } + { } Request(Addr paddr, unsigned size, Flags flags, MasterID mid, Tick time, Addr pc) - : _paddr(0), _size(0), _masterId(invldMasterId), _time(0), - _taskId(ContextSwitchTaskId::Unknown), _asid(0), _vaddr(0), - _extraData(0), _contextId(0), _threadId(0), _pc(0), - translateDelta(0), accessDelta(0), depth(0) + : Request(paddr, size, flags, mid, time) { - setPhys(paddr, size, flags, mid, time); privateFlags.set(VALID_PC); _pc = pc; }