Fix test failures in debug mode w/snapshots. It turns out that not
all stubs have valid major_keys, and this is OK. So I've added a check to avoid termination in debug mode. Review URL: http://codereview.chromium.org/572034 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
dd85270967
commit
19c1675b94
@ -149,13 +149,16 @@ Object* CodeStub::TryGetCode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char* CodeStub::MajorName(CodeStub::Major major_key) {
|
const char* CodeStub::MajorName(CodeStub::Major major_key,
|
||||||
|
bool allow_unknown_keys) {
|
||||||
switch (major_key) {
|
switch (major_key) {
|
||||||
#define DEF_CASE(name) case name: return #name;
|
#define DEF_CASE(name) case name: return #name;
|
||||||
CODE_STUB_LIST(DEF_CASE)
|
CODE_STUB_LIST(DEF_CASE)
|
||||||
#undef DEF_CASE
|
#undef DEF_CASE
|
||||||
default:
|
default:
|
||||||
|
if (!allow_unknown_keys) {
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,7 +100,7 @@ class CodeStub BASE_EMBEDDED {
|
|||||||
static int MinorKeyFromKey(uint32_t key) {
|
static int MinorKeyFromKey(uint32_t key) {
|
||||||
return MinorKeyBits::decode(key);
|
return MinorKeyBits::decode(key);
|
||||||
};
|
};
|
||||||
static const char* MajorName(Major major_key);
|
static const char* MajorName(Major major_key, bool allow_unknown_keys);
|
||||||
|
|
||||||
virtual ~CodeStub() {}
|
virtual ~CodeStub() {}
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ class CodeStub BASE_EMBEDDED {
|
|||||||
virtual InLoopFlag InLoop() { return NOT_IN_LOOP; }
|
virtual InLoopFlag InLoop() { return NOT_IN_LOOP; }
|
||||||
|
|
||||||
// Returns a name for logging/debugging purposes.
|
// Returns a name for logging/debugging purposes.
|
||||||
virtual const char* GetName() { return MajorName(MajorKey()); }
|
virtual const char* GetName() { return MajorName(MajorKey(), false); }
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
virtual void Print() { PrintF("%s\n", GetName()); }
|
virtual void Print() { PrintF("%s\n", GetName()); }
|
||||||
|
@ -261,7 +261,7 @@ static int DecodeIt(FILE* f,
|
|||||||
ASSERT(code->major_key() == CodeStub::MajorKeyFromKey(key));
|
ASSERT(code->major_key() == CodeStub::MajorKeyFromKey(key));
|
||||||
out.AddFormatted(" %s, %s, ",
|
out.AddFormatted(" %s, %s, ",
|
||||||
Code::Kind2String(kind),
|
Code::Kind2String(kind),
|
||||||
CodeStub::MajorName(code->major_key()));
|
CodeStub::MajorName(code->major_key(), false));
|
||||||
switch (code->major_key()) {
|
switch (code->major_key()) {
|
||||||
case CodeStub::CallFunction:
|
case CodeStub::CallFunction:
|
||||||
out.AddFormatted("argc = %d", minor_key);
|
out.AddFormatted("argc = %d", minor_key);
|
||||||
|
@ -1261,7 +1261,9 @@ void Logger::LogCodeObject(Object* object) {
|
|||||||
case Code::FUNCTION:
|
case Code::FUNCTION:
|
||||||
return; // We log this later using LogCompiledFunctions.
|
return; // We log this later using LogCompiledFunctions.
|
||||||
case Code::STUB:
|
case Code::STUB:
|
||||||
description = CodeStub::MajorName(code_object->major_key());
|
description = CodeStub::MajorName(code_object->major_key(), true);
|
||||||
|
if (description == NULL)
|
||||||
|
description = "A stub from the snapshot";
|
||||||
tag = Logger::STUB_TAG;
|
tag = Logger::STUB_TAG;
|
||||||
break;
|
break;
|
||||||
case Code::BUILTIN:
|
case Code::BUILTIN:
|
||||||
|
Loading…
Reference in New Issue
Block a user