Chromium Code Reviews| Index: src/cpu-profiler.cc |
| diff --git a/src/cpu-profiler.cc b/src/cpu-profiler.cc |
| index acf3349be4fe8bfe901d7a1f77376fbf1caf84b7..e53aa4c8eb9f1a6558dfa63f5fff7b2ffdac7e2a 100644 |
| --- a/src/cpu-profiler.cc |
| +++ b/src/cpu-profiler.cc |
| @@ -188,6 +188,20 @@ bool ProfilerEventsProcessor::IsKnownFunction(Address start) { |
| } |
| +void ProfilerEventsProcessor::RegisterMovedFunctions() { |
| + for (int i = 0; i < moved_functions_.length(); ++i) { |
| + JSFunction* function = moved_functions_[i]; |
| + CpuProfiler::FunctionCreateEvent(function); |
| + } |
| + moved_functions_.Clear(); |
| +} |
| + |
| + |
| +void ProfilerEventsProcessor::RememberMovedFunction(JSFunction* function) { |
| + moved_functions_.Add(function); |
| +} |
| + |
| + |
| void ProfilerEventsProcessor::RegExpCodeCreateEvent( |
| Logger::LogEventsAndTags tag, |
| const char* prefix, |
| @@ -426,8 +440,12 @@ void CpuProfiler::FunctionCreateEvent(JSFunction* function) { |
| } |
| -void CpuProfiler::FunctionCreateEventFromMove(JSFunction* function, |
| - HeapObject* source) { |
| +void CpuProfiler::RegisterMovedFunctions() { |
|
Søren Thygesen Gjesse
2010/10/20 07:08:22
Register -> Process?
mnaganov (inactive)
2010/10/20 08:29:05
Done.
|
| + singleton_->processor_->RegisterMovedFunctions(); |
| +} |
| + |
| + |
| +void CpuProfiler::FunctionCreateEventFromMove(JSFunction* function) { |
| // This function is called from GC iterators (during Scavenge, |
| // MC, and MS), so marking bits can be set on objects. That's |
| // why unchecked accessors are used here. |
| @@ -436,27 +454,7 @@ void CpuProfiler::FunctionCreateEventFromMove(JSFunction* function, |
| if (function->unchecked_code() == Builtins::builtin(Builtins::LazyCompile) |
| || singleton_->processor_->IsKnownFunction(function->address())) return; |
| - int security_token_id = TokenEnumerator::kNoSecurityToken; |
| - // In debug mode, assertions may fail for contexts, |
| - // and we can live without security tokens in debug mode. |
| -#ifndef DEBUG |
| - if (function->unchecked_context()->IsContext()) { |
| - security_token_id = singleton_->token_enumerator_->GetTokenId( |
| - function->context()->global_context()->security_token()); |
| - } |
| - // Security token may not be moved yet. |
| - if (security_token_id == TokenEnumerator::kNoSecurityToken) { |
| - JSFunction* old_function = reinterpret_cast<JSFunction*>(source); |
| - if (old_function->unchecked_context()->IsContext()) { |
| - security_token_id = singleton_->token_enumerator_->GetTokenId( |
| - old_function->context()->global_context()->security_token()); |
| - } |
| - } |
| -#endif |
| - singleton_->processor_->FunctionCreateEvent( |
| - function->address(), |
| - function->unchecked_code()->address(), |
| - security_token_id); |
| + singleton_->processor_->RememberMovedFunction(function); |
| } |