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.