Index: src/log.cc |
=================================================================== |
--- src/log.cc (revision 1294) |
+++ src/log.cc (working copy) |
@@ -679,13 +679,22 @@ |
} |
+int Logger::CodeObjectSize(Code* code) { |
+ // Check that the assumptions about the layout of the code object holds. |
+ ASSERT_EQ(reinterpret_cast<unsigned int>(code->instruction_start()) - |
+ reinterpret_cast<unsigned int>(code->address()), |
+ Code::kHeaderSize); |
+ return code->instruction_size() + Code::kHeaderSize; |
+} |
+ |
+ |
void Logger::CodeCreateEvent(const char* tag, Code* code, const char* comment) { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
if (logfile_ == NULL || !FLAG_log_code) return; |
LogMessageBuilder msg; |
msg.Append("code-creation,%s,0x%x,%d,\"", tag, |
reinterpret_cast<unsigned int>(code->address()), |
- code->instruction_size()); |
+ CodeObjectSize(code)); |
for (const char* p = comment; *p != '\0'; p++) { |
if (*p == '"') { |
msg.Append('\\'); |
@@ -707,7 +716,7 @@ |
name->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
msg.Append("code-creation,%s,0x%x,%d,\"%s\"\n", tag, |
reinterpret_cast<unsigned int>(code->address()), |
- code->instruction_size(), *str); |
+ CodeObjectSize(code), *str); |
msg.WriteToLogFile(); |
#endif |
} |
@@ -724,7 +733,8 @@ |
source->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
msg.Append("code-creation,%s,0x%x,%d,\"%s %s:%d\"\n", tag, |
reinterpret_cast<unsigned int>(code->address()), |
- code->instruction_size(), *str, *sourcestr, line); |
+ CodeObjectSize(code), |
+ *str, *sourcestr, line); |
msg.WriteToLogFile(); |
#endif |
} |
@@ -736,7 +746,7 @@ |
LogMessageBuilder msg; |
msg.Append("code-creation,%s,0x%x,%d,\"args_count: %d\"\n", tag, |
reinterpret_cast<unsigned int>(code->address()), |
- code->instruction_size(), |
+ CodeObjectSize(code), |
args_count); |
msg.WriteToLogFile(); |
#endif |