Log code event for deserialized code.

R=mvstanton@chromium.org

Review URL: https://codereview.chromium.org/663453005

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24861 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
yangguo@chromium.org 2014-10-24 08:37:03 +00:00
parent eb1aa6aee3
commit e6ac285bd3
3 changed files with 28 additions and 3 deletions

View File

@ -2245,6 +2245,18 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
} }
Handle<SharedFunctionInfo> result(SharedFunctionInfo::cast(root), isolate); Handle<SharedFunctionInfo> result(SharedFunctionInfo::cast(root), isolate);
result->set_deserialized(true); 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; return result;
} }

View File

@ -700,9 +700,7 @@ class CodeSerializer : public Serializer {
: Serializer(isolate, sink), : Serializer(isolate, sink),
source_(source), source_(source),
main_code_(main_code), main_code_(main_code),
num_internalized_strings_(0) { num_internalized_strings_(0) {}
InitializeCodeAddressMap();
}
virtual void SerializeObject(HeapObject* o, HowToCode how_to_code, virtual void SerializeObject(HeapObject* o, HowToCode how_to_code,
WhereToPoint where_to_point, int skip); WhereToPoint where_to_point, int skip);

View File

@ -1156,6 +1156,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) { TEST(SerializeToplevelIsolates) {
FLAG_serialize_toplevel = true; FLAG_serialize_toplevel = true;
@ -1188,6 +1199,9 @@ TEST(SerializeToplevelIsolates) {
isolate1->Dispose(); isolate1->Dispose();
v8::Isolate* isolate2 = v8::Isolate::New(); v8::Isolate* isolate2 = v8::Isolate::New();
isolate2->SetJitCodeEventHandler(v8::kJitCodeEventDefault,
SerializerCodeEventListener);
toplevel_test_code_event_found = false;
{ {
v8::Isolate::Scope iscope(isolate2); v8::Isolate::Scope iscope(isolate2);
v8::HandleScope scope(isolate2); v8::HandleScope scope(isolate2);
@ -1206,6 +1220,7 @@ TEST(SerializeToplevelIsolates) {
v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); v8::Local<v8::Value> result = script->BindToCurrentContext()->Run();
CHECK(result->ToString()->Equals(v8_str("abcdef"))); CHECK(result->ToString()->Equals(v8_str("abcdef")));
} }
DCHECK(toplevel_test_code_event_found);
isolate2->Dispose(); isolate2->Dispose();
} }