aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--xbyak/xbyak.h91
1 files changed, 45 insertions, 46 deletions
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index 0df79eb..6d14d7d 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -919,32 +919,32 @@ public:
class LabelManager {
// for string label
- struct StrLabelVal {
+ struct SlabelVal {
size_t offset;
- StrLabelVal(size_t offset) : offset(offset) {}
+ SlabelVal(size_t offset) : offset(offset) {}
};
- typedef XBYAK_STD_UNORDERED_MAP<std::string, StrLabelVal> DefinedList;
- typedef XBYAK_STD_UNORDERED_MULTIMAP<std::string, const JmpLabel> UndefinedList;
- struct State {
- DefinedList defList;
- UndefinedList undefList;
+ typedef XBYAK_STD_UNORDERED_MAP<std::string, SlabelVal> SlabelDefList;
+ typedef XBYAK_STD_UNORDERED_MULTIMAP<std::string, const JmpLabel> SlabelUndefList;
+ struct SlabelState {
+ SlabelDefList defList;
+ SlabelUndefList undefList;
};
- typedef std::list<State> StateList;
- // global : stateList_.front(), local : stateList_.back()
- StateList stateList_;
+ typedef std::list<SlabelState> StateList;
// for Label class
- struct LabelClassVal {
- LabelClassVal(size_t offset = 0) : offset(offset), refCount(1) {}
+ struct ClabelVal {
+ ClabelVal(size_t offset = 0) : offset(offset), refCount(1) {}
size_t offset;
int refCount;
};
- typedef XBYAK_STD_UNORDERED_MAP<int, LabelClassVal> DefinedList2;
- typedef XBYAK_STD_UNORDERED_MULTIMAP<int, const JmpLabel> UndefinedList2;
+ typedef XBYAK_STD_UNORDERED_MAP<int, ClabelVal> ClabelDefList;
+ typedef XBYAK_STD_UNORDERED_MULTIMAP<int, const JmpLabel> ClabelUndefList;
+
CodeArray *base_;
+ // global : stateList_.front(), local : stateList_.back()
+ StateList stateList_;
mutable int labelId_;
-
- DefinedList2 definedList2_;
- UndefinedList2 undefinedList2_;
+ ClabelDefList clabelDefList_;
+ ClabelUndefList clabelUndefList_;
int getId(const Label& label) const
{
@@ -993,13 +993,13 @@ class LabelManager {
return true;
}
friend class Label;
- void incRefCount(int id) { definedList2_[id].refCount++; }
+ void incRefCount(int id) { clabelDefList_[id].refCount++; }
void decRefCount(int id)
{
- DefinedList2::iterator i = definedList2_.find(id);
- if (i == definedList2_.end()) return;
+ ClabelDefList::iterator i = clabelDefList_.find(id);
+ if (i == clabelDefList_.end()) return;
if (i->second.refCount == 1) {
- definedList2_.erase(id);
+ clabelDefList_.erase(id);
} else {
--i->second.refCount;
}
@@ -1024,12 +1024,12 @@ public:
base_ = 0;
labelId_ = 1;
stateList_.clear();
- stateList_.push_back(State());
- stateList_.push_back(State());
+ stateList_.push_back(SlabelState());
+ stateList_.push_back(SlabelState());
}
void enterLocal()
{
- stateList_.push_back(State());
+ stateList_.push_back(SlabelState());
}
void leaveLocal()
{
@@ -1038,12 +1038,12 @@ public:
stateList_.pop_back();
}
void set(CodeArray *base) { base_ = base; }
- void define(std::string label)
+ void defineSlabel(std::string label)
{
if (label == "@b" || label == "@f") throw Error(ERR_BAD_LABEL_STR);
if (label == "@@") {
- DefinedList& defList = stateList_.front().defList;
- DefinedList::iterator i = defList.find("@f");
+ SlabelDefList& defList = stateList_.front().defList;
+ SlabelDefList::iterator i = defList.find("@f");
if (i != defList.end()) {
defList.erase(i);
label = "@b";
@@ -1055,24 +1055,24 @@ public:
label = "@f";
}
}
- State& st = *label.c_str() == '.' ? stateList_.back() : stateList_.front();
+ SlabelState& st = *label.c_str() == '.' ? stateList_.back() : stateList_.front();
define_inner(st.defList, st.undefList, label, base_->getSize());
}
- void define2(const Label& label)
+ void defineClabel(const Label& label)
{
- define_inner(definedList2_, undefinedList2_, getId(label), base_->getSize());
+ define_inner(clabelDefList_, clabelUndefList_, getId(label), base_->getSize());
label.mgr = this;
}
void assign(Label& dst, const Label& src)
{
- DefinedList2::const_iterator i = definedList2_.find(src.id);
- if (i == definedList2_.end()) throw Error(ERR_LABEL_ISNOT_SET_BY_L);
- define_inner(definedList2_, undefinedList2_, dst.id, i->second.offset);
+ ClabelDefList::const_iterator i = clabelDefList_.find(src.id);
+ if (i == clabelDefList_.end()) throw Error(ERR_LABEL_ISNOT_SET_BY_L);
+ define_inner(clabelDefList_, clabelUndefList_, dst.id, i->second.offset);
dst.mgr = this;
}
bool getOffset(size_t *offset, std::string& label) const
{
- const DefinedList& defList = stateList_.front().defList;
+ const SlabelDefList& defList = stateList_.front().defList;
if (label == "@b") {
if (defList.find("@f") != defList.end()) {
label = "@f";
@@ -1084,31 +1084,30 @@ public:
label = "@b";
}
}
- const State& st = *label.c_str() == '.' ? stateList_.back() : stateList_.front();
+ const SlabelState& st = *label.c_str() == '.' ? stateList_.back() : stateList_.front();
return getOffset_inner(st.defList, offset, label);
}
bool getOffset(size_t *offset, const Label& label) const
{
- return getOffset_inner(definedList2_, offset, getId(label));
+ return getOffset_inner(clabelDefList_, offset, getId(label));
}
void addUndefinedLabel(const std::string& label, const JmpLabel& jmp)
{
- State& st = *label.c_str() == '.' ? stateList_.back() : stateList_.front();
- st.undefList.insert(UndefinedList::value_type(label, jmp));
+ SlabelState& st = *label.c_str() == '.' ? stateList_.back() : stateList_.front();
+ st.undefList.insert(SlabelUndefList::value_type(label, jmp));
}
void addUndefinedLabel(const Label& label, const JmpLabel& jmp)
{
- undefinedList2_.insert(UndefinedList2::value_type(label.id, jmp));
+ clabelUndefList_.insert(ClabelUndefList::value_type(label.id, jmp));
}
- bool hasUndefinedLabel() const
+ bool hasUndefSlabel() const
{
for (StateList::const_iterator i = stateList_.begin(), ie = stateList_.end(); i != ie; ++i) {
- bool found = hasUndefinedLabel_inner(i->undefList);
- if (found) return true;
+ if (hasUndefinedLabel_inner(i->undefList)) return true;
}
return false;
}
- bool hasUndefinedLabel2() const { return hasUndefinedLabel_inner(undefinedList2_); }
+ bool hasUndefClabel() const { return hasUndefinedLabel_inner(clabelUndefList_); }
};
inline Label::Label(const Label& rhs)
@@ -1573,8 +1572,8 @@ public:
const Ymm &ym8, &ym9, &ym10, &ym11, &ym12, &ym13, &ym14, &ym15;
const RegRip rip;
#endif
- void L(const std::string& label) { labelMgr_.define(label); }
- void L(const Label& label) { labelMgr_.define2(label); }
+ void L(const std::string& label) { labelMgr_.defineSlabel(label); }
+ void L(const Label& label) { labelMgr_.defineClabel(label); }
/*
assign src to dst
require
@@ -1966,7 +1965,7 @@ public:
labelMgr_.reset();
labelMgr_.set(this);
}
- bool hasUndefinedLabel() const { return labelMgr_.hasUndefinedLabel() || labelMgr_.hasUndefinedLabel2(); }
+ bool hasUndefinedLabel() const { return labelMgr_.hasUndefSlabel() || labelMgr_.hasUndefClabel(); }
/*
call ready() to complete generating code on AutoGrow
*/