Skip to content

Commit

Permalink
make execution states more clear
Browse files Browse the repository at this point in the history
  • Loading branch information
jumormt committed Dec 2, 2023
1 parent 98b58aa commit 885f8cd
Show file tree
Hide file tree
Showing 10 changed files with 204 additions and 204 deletions.
62 changes: 31 additions & 31 deletions svf/include/AbstractExecution/ConsExeState.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,11 @@ class ConsExeState final : public ExeState
public:

/// get memory addresses of variable
virtual VAddrs &getAddrs(u32_t id) override
virtual Addrs &getAddrs(u32_t id) override
{
auto it = globalConsES._varToVAddrs.find(id);
if (it != globalConsES._varToVAddrs.end()) return it->second;
return _varToVAddrs[id];
auto it = globalConsES._varToAddrs.find(id);
if (it != globalConsES._varToAddrs.end()) return it->second;
return _varToAddrs[id];
}

/// get constant value of variable
Expand All @@ -137,8 +137,8 @@ class ConsExeState final : public ExeState
/// whether the variable is in varToAddrs table
virtual inline bool inVarToAddrsTable(u32_t id) const override
{
return _varToVAddrs.find(id) != _varToVAddrs.end() ||
globalConsES._varToVAddrs.find(id) != globalConsES._varToVAddrs.end();
return _varToAddrs.find(id) != _varToAddrs.end() ||
globalConsES._varToAddrs.find(id) != globalConsES._varToAddrs.end();
}

/// whether the variable is in varToVal table
Expand All @@ -148,15 +148,15 @@ class ConsExeState final : public ExeState
}

/// whether the memory address stores memory addresses
virtual inline bool locStoredAddrs(u32_t id) const override
virtual inline bool inLocToAddrsTable(u32_t id) const override
{
return globalConsES._locToVAddrs.find(id) != globalConsES._locToVAddrs.end() || localLocStoredAddrs(id);
return globalConsES._locToAddrs.find(id) != globalConsES._locToAddrs.end() || inLocalLocToAddrsTable(id);
}

/// whether the memory address stores constant value
inline bool locStoredVal(u32_t varId) const
inline bool inLocToValTable(u32_t varId) const
{
return localLocStoredVal(varId) || globalConsES._locToVal.count(varId);
return inLocalLocToValTable(varId) || globalConsES._locToVal.count(varId);
}

inline const VarToValMap &getVarToVal() const
Expand All @@ -169,17 +169,17 @@ class ConsExeState final : public ExeState
return _locToVal;
}

virtual inline bool localLocStoredAddrs(u32_t id) const
virtual inline bool inLocalLocToAddrsTable(u32_t id) const
{
return _locToVAddrs.find(id) != _locToVAddrs.end();
return _locToAddrs.find(id) != _locToAddrs.end();
}

inline bool localLocStoredVal(u32_t varId) const
inline bool inLocalLocToValTable(u32_t varId) const
{
return _locToVal.count(varId);
}

inline bool localLocStoredVal(const SingleAbsValue& addr) const
inline bool inLocalLocToValTable(const SingleAbsValue& addr) const
{
return _locToVal.count(getInternalID(addr.getNumeral()));
}
Expand Down Expand Up @@ -225,19 +225,19 @@ class ConsExeState final : public ExeState

bool applyPhi(u32_t res, std::vector<u32_t> &ops);

virtual VAddrs &loadAddrs(u32_t addr) override
virtual Addrs &loadAddrs(u32_t addr) override
{
assert(isVirtualMemAddress(addr) && "not virtual address?");
u32_t objId = getInternalID(addr);
auto it = _locToVAddrs.find(objId);
if (it != _locToVAddrs.end())
auto it = _locToAddrs.find(objId);
if (it != _locToAddrs.end())
{
return it->second;
}
else
{
auto globIt = globalConsES._locToVAddrs.find(objId);
if (globIt != globalConsES._locToVAddrs.end())
auto globIt = globalConsES._locToAddrs.find(objId);
if (globIt != globalConsES._locToAddrs.end())
{
return globIt->second;
}
Expand All @@ -251,15 +251,15 @@ class ConsExeState final : public ExeState
virtual std::string varToAddrs(u32_t varId) const override
{
std::stringstream exprName;
auto it = _varToVAddrs.find(varId);
if (it == _varToVAddrs.end())
auto it = _varToAddrs.find(varId);
if (it == _varToAddrs.end())
{
auto git = globalConsES._varToVAddrs.find(varId);
if (git == globalConsES._varToVAddrs.end())
auto git = globalConsES._varToAddrs.find(varId);
if (git == globalConsES._varToAddrs.end())
exprName << "Var not in varToAddrs!\n";
else
{
const VAddrs &vaddrs = git->second;
const Addrs &vaddrs = git->second;
if (vaddrs.size() == 1)
{
exprName << "addr: {" << std::dec << getInternalID(*vaddrs.begin()) << "}\n";
Expand All @@ -277,7 +277,7 @@ class ConsExeState final : public ExeState
}
else
{
const VAddrs &vaddrs = it->second;
const Addrs &vaddrs = it->second;
if (vaddrs.size() == 1)
{
exprName << "addr: {" << std::dec << getInternalID(*vaddrs.begin()) << "}\n";
Expand All @@ -298,15 +298,15 @@ class ConsExeState final : public ExeState
virtual std::string locToAddrs(u32_t objId) const override
{
std::stringstream exprName;
auto it = _locToVAddrs.find(objId);
if (it == _locToVAddrs.end())
auto it = _locToAddrs.find(objId);
if (it == _locToAddrs.end())
{
auto git = globalConsES._locToVAddrs.find(objId);
if (git == globalConsES._locToVAddrs.end())
auto git = globalConsES._locToAddrs.find(objId);
if (git == globalConsES._locToAddrs.end())
exprName << "Obj not in locToVal!\n";
else
{
const VAddrs &vaddrs = git->second;
const Addrs &vaddrs = git->second;
if (vaddrs.size() == 1)
{
exprName << "addr: {" << std::dec << getInternalID(*vaddrs.begin()) << "}\n";
Expand All @@ -324,7 +324,7 @@ class ConsExeState final : public ExeState
}
else
{
const VAddrs &vaddrs = it->second;
const Addrs &vaddrs = it->second;
if (vaddrs.size() == 1)
{
exprName << "addr: {" << std::dec << getInternalID(*vaddrs.begin()) << "}\n";
Expand Down
64 changes: 32 additions & 32 deletions svf/include/AbstractExecution/ExeState.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ class ExeState

public:

typedef AddressValue VAddrs;
typedef Map<u32_t, VAddrs> VarToVAddrs;
typedef AddressValue Addrs;
typedef Map<u32_t, Addrs> VarToAddrs;
/// Execution state type
enum ExeState_TYPE
{
Expand All @@ -64,18 +64,18 @@ class ExeState

virtual ~ExeState() = default;

ExeState(const ExeState &rhs) : _varToVAddrs(rhs._varToVAddrs),
_locToVAddrs(rhs._locToVAddrs) {}
ExeState(const ExeState &rhs) : _varToAddrs(rhs._varToAddrs),
_locToAddrs(rhs._locToAddrs) {}

ExeState(ExeState &&rhs) noexcept: _varToVAddrs(std::move(rhs._varToVAddrs)),
_locToVAddrs(std::move(rhs._locToVAddrs)) {}
ExeState(ExeState &&rhs) noexcept: _varToAddrs(std::move(rhs._varToAddrs)),
_locToAddrs(std::move(rhs._locToAddrs)) {}

ExeState &operator=(const ExeState &rhs)
{
if(*this != rhs)
{
_varToVAddrs = rhs._varToVAddrs;
_locToVAddrs = rhs._locToVAddrs;
_varToAddrs = rhs._varToAddrs;
_locToAddrs = rhs._locToAddrs;
}
return *this;
}
Expand All @@ -84,46 +84,46 @@ class ExeState
{
if (this != &rhs)
{
_varToVAddrs = std::move(rhs._varToVAddrs);
_locToVAddrs = std::move(rhs._locToVAddrs);
_varToAddrs = std::move(rhs._varToAddrs);
_locToAddrs = std::move(rhs._locToAddrs);
}
return *this;
}


protected:
VarToVAddrs _varToVAddrs{{0, getVirtualMemAddress(0)}}; ///< Map a variable (symbol) to its memory addresses
VarToVAddrs _locToVAddrs; ///< Map a memory address to its stored memory addresses
VarToAddrs _varToAddrs{{0, getVirtualMemAddress(0)}}; ///< Map a variable (symbol) to its memory addresses
VarToAddrs _locToAddrs; ///< Map a memory address to its stored memory addresses

public:

/// get memory addresses of variable
virtual VAddrs &getAddrs(u32_t id)
virtual Addrs &getAddrs(u32_t id)
{
return _varToVAddrs[id];
return _varToAddrs[id];
}

/// whether the variable is in varToAddrs table
inline virtual bool inVarToAddrsTable(u32_t id) const
{
return _varToVAddrs.find(id) != _varToVAddrs.end();
return _varToAddrs.find(id) != _varToAddrs.end();
}

/// whether the memory address stores memory addresses
inline virtual bool locStoredAddrs(u32_t id) const
inline virtual bool inLocToAddrsTable(u32_t id) const
{
return _locToVAddrs.find(id) != _locToVAddrs.end();
return _locToAddrs.find(id) != _locToAddrs.end();
}


inline virtual const VarToVAddrs &getVarToVAddrs() const
inline virtual const VarToAddrs &getVarToAddrs() const
{
return _varToVAddrs;
return _varToAddrs;
}

inline virtual const VarToVAddrs &getLocToVAddrs() const
inline virtual const VarToAddrs &getLocToAddrs() const
{
return _locToVAddrs;
return _locToAddrs;
}

public:
Expand Down Expand Up @@ -151,19 +151,19 @@ class ExeState


public:
inline virtual void storeVAddrs(u32_t addr, const VAddrs &vaddrs)
inline virtual void storeAddrs(u32_t addr, const Addrs &vaddrs)
{
assert(isVirtualMemAddress(addr) && "not virtual address?");
if(isNullPtr(addr)) return;
u32_t objId = getInternalID(addr);
_locToVAddrs[objId] = vaddrs;
_locToAddrs[objId] = vaddrs;
}

inline virtual VAddrs &loadAddrs(u32_t addr)
inline virtual Addrs &loadAddrs(u32_t addr)
{
assert(isVirtualMemAddress(addr) && "not virtual address?");
u32_t objId = getInternalID(addr);
return _locToVAddrs[objId];
return _locToAddrs[objId];
}

inline bool isNullPtr(u32_t addr)
Expand All @@ -187,7 +187,7 @@ class ExeState

protected:

static bool eqVarToVAddrs(const VarToVAddrs &lhs, const VarToVAddrs &rhs)
static bool eqVarToAddrs(const VarToAddrs &lhs, const VarToAddrs &rhs)
{
if (lhs.size() != rhs.size()) return false;
for (const auto &item: lhs)
Expand All @@ -208,14 +208,14 @@ class ExeState
virtual std::string varToAddrs(u32_t varId) const
{
std::stringstream exprName;
auto it = _varToVAddrs.find(varId);
if (it == _varToVAddrs.end())
auto it = _varToAddrs.find(varId);
if (it == _varToAddrs.end())
{
exprName << "Var not in varToAddrs!\n";
}
else
{
const VAddrs &vaddrs = it->second;
const Addrs &vaddrs = it->second;
if (vaddrs.size() == 1)
{
exprName << "addr: {" << std::dec << getInternalID(*vaddrs.begin()) << "}\n";
Expand All @@ -236,14 +236,14 @@ class ExeState
virtual std::string locToAddrs(u32_t objId) const
{
std::stringstream exprName;
auto it = _locToVAddrs.find(objId);
if (it == _locToVAddrs.end())
auto it = _locToAddrs.find(objId);
if (it == _locToAddrs.end())
{
exprName << "Var not in varToAddrs!\n";
}
else
{
const VAddrs &vaddrs = it->second;
const Addrs &vaddrs = it->second;
if (vaddrs.size() == 1)
{
exprName << "addr: {" << std::dec << getInternalID(*vaddrs.begin()) << "}\n";
Expand Down
Loading

0 comments on commit 885f8cd

Please sign in to comment.