Index: src/log.cc |
diff --git a/src/log.cc b/src/log.cc |
index d21bf3f5be9dd3aa565e6d7fb2552943c146ab6b..fd55331b00e31f2d6fda3945b3e8f926aec18017 100644 |
--- a/src/log.cc |
+++ b/src/log.cc |
@@ -1527,6 +1527,54 @@ void Logger::LogCodeObjects() { |
} |
+void Logger::LogExistingFunction(SharedFunctionInfo* shared_ptr, |
+ Code* code_ptr) { |
+ HandleScope scope; |
+ Handle<SharedFunctionInfo> shared(shared_ptr); |
+ Handle<Code> code(code_ptr); |
+ Handle<String> func_name(shared->DebugName()); |
+ if (shared->script()->IsScript()) { |
+ Handle<Script> script(Script::cast(shared->script())); |
+ if (script->name()->IsString()) { |
+ Handle<String> script_name(String::cast(script->name())); |
+ int line_num = GetScriptLineNumber(script, shared->start_position()); |
+ if (line_num > 0) { |
+ PROFILE(ISOLATE, |
+ CodeCreateEvent( |
+ Logger::ToNativeByScript(Logger::LAZY_COMPILE_TAG, *script), |
+ *code, *shared, |
+ *script_name, line_num + 1)); |
+ } else { |
+ // Can't distinguish eval and script here, so always use Script. |
+ PROFILE(ISOLATE, |
+ CodeCreateEvent( |
+ Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script), |
+ *code, *shared, *script_name)); |
+ } |
+ } else { |
+ PROFILE(ISOLATE, |
+ CodeCreateEvent( |
+ Logger::ToNativeByScript(Logger::LAZY_COMPILE_TAG, *script), |
+ *code, *shared, *func_name)); |
+ } |
+ } else if (shared->IsApiFunction()) { |
+ // API function. |
+ FunctionTemplateInfo* fun_data = shared->get_api_func_data(); |
+ Object* raw_call_data = fun_data->call_code(); |
+ if (!raw_call_data->IsUndefined()) { |
+ CallHandlerInfo* call_data = CallHandlerInfo::cast(raw_call_data); |
+ Object* callback_obj = call_data->callback(); |
+ Address entry_point = v8::ToCData<Address>(callback_obj); |
+ PROFILE(ISOLATE, CallbackEvent(*func_name, entry_point)); |
+ } |
+ } else { |
+ PROFILE(ISOLATE, |
+ CodeCreateEvent( |
+ Logger::LAZY_COMPILE_TAG, *code, *shared, *func_name)); |
+ } |
+} |
+ |
+ |
void Logger::LogCompiledFunctions() { |
HandleScope scope; |
const int compiled_funcs_count = EnumerateCompiledFunctions(NULL, NULL); |
@@ -1540,48 +1588,7 @@ void Logger::LogCompiledFunctions() { |
if (*code_objects[i] == Isolate::Current()->builtins()->builtin( |
Builtins::kLazyCompile)) |
continue; |
- Handle<SharedFunctionInfo> shared = sfis[i]; |
- Handle<String> func_name(shared->DebugName()); |
- if (shared->script()->IsScript()) { |
- Handle<Script> script(Script::cast(shared->script())); |
- if (script->name()->IsString()) { |
- Handle<String> script_name(String::cast(script->name())); |
- int line_num = GetScriptLineNumber(script, shared->start_position()); |
- if (line_num > 0) { |
- PROFILE(ISOLATE, |
- CodeCreateEvent( |
- Logger::ToNativeByScript(Logger::LAZY_COMPILE_TAG, *script), |
- *code_objects[i], *shared, |
- *script_name, line_num + 1)); |
- } else { |
- // Can't distinguish eval and script here, so always use Script. |
- PROFILE(ISOLATE, |
- CodeCreateEvent( |
- Logger::ToNativeByScript(Logger::SCRIPT_TAG, *script), |
- *code_objects[i], *shared, *script_name)); |
- } |
- } else { |
- PROFILE(ISOLATE, |
- CodeCreateEvent( |
- Logger::ToNativeByScript(Logger::LAZY_COMPILE_TAG, *script), |
- *code_objects[i], *shared, *func_name)); |
- } |
- } else if (shared->IsApiFunction()) { |
- // API function. |
- FunctionTemplateInfo* fun_data = shared->get_api_func_data(); |
- Object* raw_call_data = fun_data->call_code(); |
- if (!raw_call_data->IsUndefined()) { |
- CallHandlerInfo* call_data = CallHandlerInfo::cast(raw_call_data); |
- Object* callback_obj = call_data->callback(); |
- Address entry_point = v8::ToCData<Address>(callback_obj); |
- PROFILE(ISOLATE, CallbackEvent(*func_name, entry_point)); |
- } |
- } else { |
- PROFILE(ISOLATE, |
- CodeCreateEvent( |
- Logger::LAZY_COMPILE_TAG, *code_objects[i], |
- *shared, *func_name)); |
- } |
+ LogExistingFunction(*sfis[i], *code_objects[i]); |
Erik Corry
2011/09/14 10:56:52
This is in handle code and it starts by putting it
mnaganov (inactive)
2011/09/14 11:16:07
Indeed. Fixed, thanks!
|
} |
} |