OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/heap/heap.h" | 5 #include "src/heap/heap.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/api.h" | 8 #include "src/api.h" |
9 #include "src/ast/scopeinfo.h" | 9 #include "src/ast/scopeinfo.h" |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 4430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4441 } else { | 4441 } else { |
4442 ExecutionAccess access(isolate()); | 4442 ExecutionAccess access(isolate()); |
4443 isolate()->stack_guard()->RequestGC(); | 4443 isolate()->stack_guard()->RequestGC(); |
4444 V8::GetCurrentPlatform()->CallOnForegroundThread( | 4444 V8::GetCurrentPlatform()->CallOnForegroundThread( |
4445 reinterpret_cast<v8::Isolate*>(isolate()), | 4445 reinterpret_cast<v8::Isolate*>(isolate()), |
4446 new MemoryPressureInterruptTask(this)); | 4446 new MemoryPressureInterruptTask(this)); |
4447 } | 4447 } |
4448 } | 4448 } |
4449 } | 4449 } |
4450 | 4450 |
| 4451 void Heap::CollectCodeStatistics() { |
| 4452 PagedSpace::ResetCodeAndMetadataStatistics(isolate()); |
| 4453 // We do not look for code in new space, or map space. If code |
| 4454 // somehow ends up in those spaces, we would miss it here. |
| 4455 code_space_->CollectCodeStatistics(); |
| 4456 old_space_->CollectCodeStatistics(); |
| 4457 lo_space_->CollectCodeStatistics(); |
| 4458 } |
| 4459 |
4451 #ifdef DEBUG | 4460 #ifdef DEBUG |
4452 | 4461 |
4453 void Heap::Print() { | 4462 void Heap::Print() { |
4454 if (!HasBeenSetUp()) return; | 4463 if (!HasBeenSetUp()) return; |
4455 isolate()->PrintStack(stdout); | 4464 isolate()->PrintStack(stdout); |
4456 AllSpaces spaces(this); | 4465 AllSpaces spaces(this); |
4457 for (Space* space = spaces.next(); space != NULL; space = spaces.next()) { | 4466 for (Space* space = spaces.next(); space != NULL; space = spaces.next()) { |
4458 space->Print(); | 4467 space->Print(); |
4459 } | 4468 } |
4460 } | 4469 } |
4461 | 4470 |
4462 | 4471 |
4463 void Heap::ReportCodeStatistics(const char* title) { | 4472 void Heap::ReportCodeStatistics(const char* title) { |
4464 PrintF(">>>>>> Code Stats (%s) >>>>>>\n", title); | 4473 PrintF(">>>>>> Code Stats (%s) >>>>>>\n", title); |
4465 PagedSpace::ResetCodeStatistics(isolate()); | 4474 CollectCodeStatistics(); |
4466 // We do not look for code in new space, map space, or old space. If code | |
4467 // somehow ends up in those spaces, we would miss it here. | |
4468 code_space_->CollectCodeStatistics(); | |
4469 lo_space_->CollectCodeStatistics(); | |
4470 PagedSpace::ReportCodeStatistics(isolate()); | 4475 PagedSpace::ReportCodeStatistics(isolate()); |
4471 } | 4476 } |
4472 | 4477 |
4473 | 4478 |
4474 // This function expects that NewSpace's allocated objects histogram is | 4479 // This function expects that NewSpace's allocated objects histogram is |
4475 // populated (via a call to CollectStatistics or else as a side effect of a | 4480 // populated (via a call to CollectStatistics or else as a side effect of a |
4476 // just-completed scavenge collection). | 4481 // just-completed scavenge collection). |
4477 void Heap::ReportHeapStatistics(const char* title) { | 4482 void Heap::ReportHeapStatistics(const char* title) { |
4478 USE(title); | 4483 USE(title); |
4479 PrintF(">>>>>> =============== %s (%d) =============== >>>>>>\n", title, | 4484 PrintF(">>>>>> =============== %s (%d) =============== >>>>>>\n", title, |
(...skipping 1880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6360 } | 6365 } |
6361 | 6366 |
6362 | 6367 |
6363 // static | 6368 // static |
6364 int Heap::GetStaticVisitorIdForMap(Map* map) { | 6369 int Heap::GetStaticVisitorIdForMap(Map* map) { |
6365 return StaticVisitorBase::GetVisitorId(map); | 6370 return StaticVisitorBase::GetVisitorId(map); |
6366 } | 6371 } |
6367 | 6372 |
6368 } // namespace internal | 6373 } // namespace internal |
6369 } // namespace v8 | 6374 } // namespace v8 |
OLD | NEW |