Revision: 3281
Author: [email protected]
Date: Wed Nov 11 04:35:50 2009
Log: Log the stubs found in the snapshot so the profiler can give
a sensible output.
Review URL: http://codereview.chromium.org/385039
http://code.google.com/p/v8/source/detail?r=3281

Modified:
  /branches/bleeding_edge/src/log.cc
  /branches/bleeding_edge/src/log.h
  /branches/bleeding_edge/src/serialize.cc

=======================================
--- /branches/bleeding_edge/src/log.cc  Wed Nov 11 01:50:06 2009
+++ /branches/bleeding_edge/src/log.cc  Wed Nov 11 04:35:50 2009
@@ -1119,6 +1119,48 @@
    }
    return compiled_funcs_count;
  }
+
+
+void Logger::LogCodeObject(Object* object) {
+  if (FLAG_log_code) {
+    Code* code_object = Code::cast(object);
+    LogEventsAndTags tag = Logger::STUB_TAG;
+    const char* description = "Unknown code from the snapshot";
+    switch (code_object->kind()) {
+      case Code::FUNCTION:
+        return;  // We log this later using LogCompiledFunctions.
+      case Code::STUB:
+        description = CodeStub::MajorName(code_object->major_key());
+        tag = Logger::STUB_TAG;
+        break;
+      case Code::BUILTIN:
+        description = "A builtin from the snapshot";
+        tag = Logger::BUILTIN_TAG;
+        break;
+      case Code::KEYED_LOAD_IC:
+        description = "A keyed load IC from the snapshot";
+        tag = Logger::KEYED_LOAD_IC_TAG;
+        break;
+      case Code::LOAD_IC:
+        description = "A load IC from the snapshot";
+        tag = Logger::LOAD_IC_TAG;
+        break;
+      case Code::STORE_IC:
+        description = "A store IC from the snapshot";
+        tag = Logger::STORE_IC_TAG;
+        break;
+      case Code::KEYED_STORE_IC:
+        description = "A keyed store IC from the snapshot";
+        tag = Logger::KEYED_STORE_IC_TAG;
+        break;
+      case Code::CALL_IC:
+        description = "A call IC from the snapshot";
+        tag = Logger::CALL_IC_TAG;
+        break;
+    }
+    LOG(CodeCreateEvent(tag, code_object, description));
+  }
+}


  void Logger::LogCompiledFunctions() {
=======================================
--- /branches/bleeding_edge/src/log.h   Thu Oct 15 00:50:23 2009
+++ /branches/bleeding_edge/src/log.h   Wed Nov 11 04:35:50 2009
@@ -265,6 +265,8 @@

    // Logs all compiled functions found in the heap.
    static void LogCompiledFunctions();
+  // Used for logging stubs found in the snapshot.
+  static void LogCodeObject(Object* code_object);

   private:

=======================================
--- /branches/bleeding_edge/src/serialize.cc    Wed Nov 11 01:50:06 2009
+++ /branches/bleeding_edge/src/serialize.cc    Wed Nov 11 04:35:50 2009
@@ -1953,6 +1953,7 @@
          break;
        case OBJECT_SERIALIZATION + CODE_SPACE:
          ReadObject(CODE_SPACE, Heap::code_space(), current++);
+        Logger::LogCodeObject(current[-1]);
          break;
        case OBJECT_SERIALIZATION + CELL_SPACE:
          ReadObject(CELL_SPACE, Heap::cell_space(), current++);
@@ -1962,6 +1963,7 @@
          break;
        case OBJECT_SERIALIZATION + kLargeCode:
          ReadObject(kLargeCode, Heap::lo_space(), current++);
+        Logger::LogCodeObject(current[-1]);
          break;
        case OBJECT_SERIALIZATION + kLargeFixedArray:
          ReadObject(kLargeFixedArray, Heap::lo_space(), current++);
@@ -1970,6 +1972,7 @@
          Object* new_code_object = NULL;
          ReadObject(kLargeCode, Heap::lo_space(), &new_code_object);
          Code* code_object = reinterpret_cast<Code*>(new_code_object);
+        Logger::LogCodeObject(code_object);
          // Setting a branch/call to another code object from code.
          Address location_of_branch_data =  
reinterpret_cast<Address>(current);
          Assembler::set_target_at(location_of_branch_data,
@@ -1982,6 +1985,7 @@
          Object* new_code_object = NULL;
          ReadObject(CODE_SPACE, Heap::code_space(), &new_code_object);
          Code* code_object = reinterpret_cast<Code*>(new_code_object);
+        Logger::LogCodeObject(code_object);
          // Setting a branch/call to another code object from code.
          Address location_of_branch_data =  
reinterpret_cast<Address>(current);
          Assembler::set_target_at(location_of_branch_data,

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to