提交 02a445eb 编写于 作者: N never

6909440: C2 fails with assertion (_always_cold->is_cold(),"must always be cold")

Reviewed-by: kvn
上级 6302c7ff
...@@ -978,31 +978,19 @@ WarmCallInfo* WarmCallInfo::remove_from(WarmCallInfo* head) { ...@@ -978,31 +978,19 @@ WarmCallInfo* WarmCallInfo::remove_from(WarmCallInfo* head) {
return head; return head;
} }
WarmCallInfo* WarmCallInfo::_always_hot = NULL; WarmCallInfo WarmCallInfo::_always_hot(WarmCallInfo::MAX_VALUE(), WarmCallInfo::MAX_VALUE(),
WarmCallInfo* WarmCallInfo::_always_cold = NULL; WarmCallInfo::MIN_VALUE(), WarmCallInfo::MIN_VALUE());
WarmCallInfo WarmCallInfo::_always_cold(WarmCallInfo::MIN_VALUE(), WarmCallInfo::MIN_VALUE(),
WarmCallInfo::MAX_VALUE(), WarmCallInfo::MAX_VALUE());
WarmCallInfo* WarmCallInfo::always_hot() { WarmCallInfo* WarmCallInfo::always_hot() {
if (_always_hot == NULL) { assert(_always_hot.is_hot(), "must always be hot");
static double bits[sizeof(WarmCallInfo) / sizeof(double) + 1] = {0}; return &_always_hot;
WarmCallInfo* ci = (WarmCallInfo*) bits;
ci->_profit = ci->_count = MAX_VALUE();
ci->_work = ci->_size = MIN_VALUE();
_always_hot = ci;
}
assert(_always_hot->is_hot(), "must always be hot");
return _always_hot;
} }
WarmCallInfo* WarmCallInfo::always_cold() { WarmCallInfo* WarmCallInfo::always_cold() {
if (_always_cold == NULL) { assert(_always_cold.is_cold(), "must always be cold");
static double bits[sizeof(WarmCallInfo) / sizeof(double) + 1] = {0}; return &_always_cold;
WarmCallInfo* ci = (WarmCallInfo*) bits;
ci->_profit = ci->_count = MIN_VALUE();
ci->_work = ci->_size = MAX_VALUE();
_always_cold = ci;
}
assert(_always_cold->is_cold(), "must always be cold");
return _always_cold;
} }
......
...@@ -215,8 +215,20 @@ class WarmCallInfo : public ResourceObj { ...@@ -215,8 +215,20 @@ class WarmCallInfo : public ResourceObj {
WarmCallInfo* next() const { return _next; } WarmCallInfo* next() const { return _next; }
void set_next(WarmCallInfo* n) { _next = n; } void set_next(WarmCallInfo* n) { _next = n; }
static WarmCallInfo* _always_hot; static WarmCallInfo _always_hot;
static WarmCallInfo* _always_cold; static WarmCallInfo _always_cold;
// Constructor intitialization of always_hot and always_cold
WarmCallInfo(float c, float p, float w, float s) {
_call = NULL;
_hot_cg = NULL;
_next = NULL;
_count = c;
_profit = p;
_work = w;
_size = s;
_heat = 0;
}
public: public:
// Because WarmInfo objects live over the entire lifetime of the // Because WarmInfo objects live over the entire lifetime of the
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册