| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 // Process remaining tick events. | 149 // Process remaining tick events. |
| 150 do { | 150 do { |
| 151 SampleProcessingResult result; | 151 SampleProcessingResult result; |
| 152 do { | 152 do { |
| 153 result = ProcessOneSample(); | 153 result = ProcessOneSample(); |
| 154 } while (result == OneSampleProcessed); | 154 } while (result == OneSampleProcessed); |
| 155 } while (ProcessCodeEvent()); | 155 } while (ProcessCodeEvent()); |
| 156 } | 156 } |
| 157 | 157 |
| 158 | 158 |
| 159 void* ProfilerEventsProcessor::operator new(size_t size) { |
| 160 return AlignedAlloc(size, V8_ALIGNOF(ProfilerEventsProcessor)); |
| 161 } |
| 162 |
| 163 |
| 164 void ProfilerEventsProcessor::operator delete(void* ptr) { |
| 165 AlignedFree(ptr); |
| 166 } |
| 167 |
| 168 |
| 159 int CpuProfiler::GetProfilesCount() { | 169 int CpuProfiler::GetProfilesCount() { |
| 160 // The count of profiles doesn't depend on a security token. | 170 // The count of profiles doesn't depend on a security token. |
| 161 return profiles_->profiles()->length(); | 171 return profiles_->profiles()->length(); |
| 162 } | 172 } |
| 163 | 173 |
| 164 | 174 |
| 165 CpuProfile* CpuProfiler::GetProfile(int index) { | 175 CpuProfile* CpuProfiler::GetProfile(int index) { |
| 166 return profiles_->profiles()->at(index); | 176 return profiles_->profiles()->at(index); |
| 167 } | 177 } |
| 168 | 178 |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 | 442 |
| 433 | 443 |
| 434 void CpuProfiler::StartProcessorIfNotStarted() { | 444 void CpuProfiler::StartProcessorIfNotStarted() { |
| 435 if (processor_ == NULL) { | 445 if (processor_ == NULL) { |
| 436 Logger* logger = isolate_->logger(); | 446 Logger* logger = isolate_->logger(); |
| 437 // Disable logging when using the new implementation. | 447 // Disable logging when using the new implementation. |
| 438 saved_is_logging_ = logger->is_logging_; | 448 saved_is_logging_ = logger->is_logging_; |
| 439 logger->is_logging_ = false; | 449 logger->is_logging_ = false; |
| 440 generator_ = new ProfileGenerator(profiles_); | 450 generator_ = new ProfileGenerator(profiles_); |
| 441 Sampler* sampler = logger->sampler(); | 451 Sampler* sampler = logger->sampler(); |
| 442 #if V8_CC_MSVC && (_MSC_VER >= 1800) | |
| 443 // VS2013 reports "warning C4316: 'v8::internal::ProfilerEventsProcessor' | |
| 444 // : object allocated on the heap may not be aligned 64". We need to | |
| 445 // figure out if this is a legitimate warning or a compiler bug. | |
| 446 #pragma warning(push) | |
| 447 #pragma warning(disable:4316) | |
| 448 #endif | |
| 449 processor_ = new ProfilerEventsProcessor( | 452 processor_ = new ProfilerEventsProcessor( |
| 450 generator_, sampler, sampling_interval_); | 453 generator_, sampler, sampling_interval_); |
| 451 #if V8_CC_MSVC && (_MSC_VER >= 1800) | |
| 452 #pragma warning(pop) | |
| 453 #endif | |
| 454 is_profiling_ = true; | 454 is_profiling_ = true; |
| 455 // Enumerate stuff we already have in the heap. | 455 // Enumerate stuff we already have in the heap. |
| 456 ASSERT(isolate_->heap()->HasBeenSetUp()); | 456 ASSERT(isolate_->heap()->HasBeenSetUp()); |
| 457 if (!FLAG_prof_browser_mode) { | 457 if (!FLAG_prof_browser_mode) { |
| 458 logger->LogCodeObjects(); | 458 logger->LogCodeObjects(); |
| 459 } | 459 } |
| 460 logger->LogCompiledFunctions(); | 460 logger->LogCompiledFunctions(); |
| 461 logger->LogAccessorCallbacks(); | 461 logger->LogAccessorCallbacks(); |
| 462 LogBuiltins(); | 462 LogBuiltins(); |
| 463 // Enable stack sampling. | 463 // Enable stack sampling. |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 ReportBuiltinEventRecord* rec = &evt_rec.ReportBuiltinEventRecord_; | 515 ReportBuiltinEventRecord* rec = &evt_rec.ReportBuiltinEventRecord_; |
| 516 Builtins::Name id = static_cast<Builtins::Name>(i); | 516 Builtins::Name id = static_cast<Builtins::Name>(i); |
| 517 rec->start = builtins->builtin(id)->address(); | 517 rec->start = builtins->builtin(id)->address(); |
| 518 rec->builtin_id = id; | 518 rec->builtin_id = id; |
| 519 processor_->Enqueue(evt_rec); | 519 processor_->Enqueue(evt_rec); |
| 520 } | 520 } |
| 521 } | 521 } |
| 522 | 522 |
| 523 | 523 |
| 524 } } // namespace v8::internal | 524 } } // namespace v8::internal |
| OLD | NEW |