Reviewers: mvstanton,

Description:
Log code event for deserialized code.

[email protected]

Please review this at https://codereview.chromium.org/663453005/

Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+28, -3 lines):
  M src/serialize.h
  M src/serialize.cc
  M test/cctest/test-serialize.cc


Index: src/serialize.cc
diff --git a/src/serialize.cc b/src/serialize.cc
index ee0a9ec6a6abbed726b1f935bc41662b1366406f..95d528081fe65be4777f8aa64239298e2b5f86e2 100644
--- a/src/serialize.cc
+++ b/src/serialize.cc
@@ -2244,6 +2244,18 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
   }
Handle<SharedFunctionInfo> result(SharedFunctionInfo::cast(root), isolate);
   result->set_deserialized(true);
+
+  if (isolate->logger()->is_logging_code_events() ||
+      isolate->cpu_profiler()->is_profiling()) {
+    String* name = isolate->heap()->empty_string();
+    if (result->script()->IsScript()) {
+      Script* script = Script::cast(result->script());
+      if (script->name()->IsString()) name = String::cast(script->name());
+    }
+    isolate->logger()->CodeCreateEvent(Logger::SCRIPT_TAG, result->code(),
+                                       *result, NULL, name);
+  }
+
   return result;
 }

Index: src/serialize.h
diff --git a/src/serialize.h b/src/serialize.h
index bc40b8f711b4a86efa8742f11705fc6aca6e29bf..c573eb44f25757a1ba07f515bbb271120acc96d7 100644
--- a/src/serialize.h
+++ b/src/serialize.h
@@ -700,9 +700,7 @@ class CodeSerializer : public Serializer {
       : Serializer(isolate, sink),
         source_(source),
         main_code_(main_code),
-        num_internalized_strings_(0) {
-    InitializeCodeAddressMap();
-  }
+        num_internalized_strings_(0) {}

   virtual void SerializeObject(HeapObject* o, HowToCode how_to_code,
                                WhereToPoint where_to_point, int skip);
Index: test/cctest/test-serialize.cc
diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc
index e73e426c4d00782b99bb414a4a0a345969312738..6697252b3e1590d1064fd94c5cd79cd389efc964 100644
--- a/test/cctest/test-serialize.cc
+++ b/test/cctest/test-serialize.cc
@@ -1162,6 +1162,17 @@ TEST(SerializeToplevelExternalScriptName) {
 }


+static bool toplevel_test_code_event_found = false;
+
+
+static void SerializerCodeEventListener(const v8::JitCodeEvent* event) {
+  if (event->type == v8::JitCodeEvent::CODE_ADDED &&
+      memcmp(event->name.str, "Script:~test", 12) == 0) {
+    toplevel_test_code_event_found = true;
+  }
+}
+
+
 TEST(SerializeToplevelIsolates) {
   FLAG_serialize_toplevel = true;

@@ -1194,6 +1205,9 @@ TEST(SerializeToplevelIsolates) {
   isolate1->Dispose();

   v8::Isolate* isolate2 = v8::Isolate::New();
+  isolate2->SetJitCodeEventHandler(v8::kJitCodeEventDefault,
+                                   SerializerCodeEventListener);
+  toplevel_test_code_event_found = false;
   {
     v8::Isolate::Scope iscope(isolate2);
     v8::HandleScope scope(isolate2);
@@ -1212,6 +1226,7 @@ TEST(SerializeToplevelIsolates) {
     v8::Local<v8::Value> result = script->BindToCurrentContext()->Run();
     CHECK(result->ToString()->Equals(v8_str("abcdef")));
   }
+  DCHECK(toplevel_test_code_event_found);
   isolate2->Dispose();
 }



--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to