diff --git a/src/code-stubs.cc b/src/code-stubs.cc index 09581aa82a..95f0760aec 100644 --- a/src/code-stubs.cc +++ b/src/code-stubs.cc @@ -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) { #define DEF_CASE(name) case name: return #name; CODE_STUB_LIST(DEF_CASE) #undef DEF_CASE default: - UNREACHABLE(); + if (!allow_unknown_keys) { + UNREACHABLE(); + } return NULL; } } diff --git a/src/code-stubs.h b/src/code-stubs.h index 16267f64e0..d502f14cd2 100644 --- a/src/code-stubs.h +++ b/src/code-stubs.h @@ -100,7 +100,7 @@ class CodeStub BASE_EMBEDDED { static int MinorKeyFromKey(uint32_t 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() {} @@ -138,7 +138,7 @@ class CodeStub BASE_EMBEDDED { virtual InLoopFlag InLoop() { return NOT_IN_LOOP; } // Returns a name for logging/debugging purposes. - virtual const char* GetName() { return MajorName(MajorKey()); } + virtual const char* GetName() { return MajorName(MajorKey(), false); } #ifdef DEBUG virtual void Print() { PrintF("%s\n", GetName()); } diff --git a/src/disassembler.cc b/src/disassembler.cc index 50f3eb996b..8473cd9f95 100644 --- a/src/disassembler.cc +++ b/src/disassembler.cc @@ -261,7 +261,7 @@ static int DecodeIt(FILE* f, ASSERT(code->major_key() == CodeStub::MajorKeyFromKey(key)); out.AddFormatted(" %s, %s, ", Code::Kind2String(kind), - CodeStub::MajorName(code->major_key())); + CodeStub::MajorName(code->major_key(), false)); switch (code->major_key()) { case CodeStub::CallFunction: out.AddFormatted("argc = %d", minor_key); diff --git a/src/log.cc b/src/log.cc index 1281a863b6..0e3f998bdf 100644 --- a/src/log.cc +++ b/src/log.cc @@ -1261,7 +1261,9 @@ void Logger::LogCodeObject(Object* object) { case Code::FUNCTION: return; // We log this later using LogCompiledFunctions. 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; break; case Code::BUILTIN: