Chromium Code Reviews| 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/api.h" | 5 #include "src/api.h" |
| 6 | 6 |
| 7 #include <string.h> // For memcpy, strlen. | 7 #include <string.h> // For memcpy, strlen. |
| 8 #ifdef V8_USE_ADDRESS_SANITIZER | 8 #ifdef V8_USE_ADDRESS_SANITIZER |
| 9 #include <sanitizer/asan_interface.h> | 9 #include <sanitizer/asan_interface.h> |
| 10 #endif // V8_USE_ADDRESS_SANITIZER | 10 #endif // V8_USE_ADDRESS_SANITIZER |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 23 #include "src/code-stubs.h" | 23 #include "src/code-stubs.h" |
| 24 #include "src/compiler.h" | 24 #include "src/compiler.h" |
| 25 #include "src/contexts.h" | 25 #include "src/contexts.h" |
| 26 #include "src/conversions-inl.h" | 26 #include "src/conversions-inl.h" |
| 27 #include "src/counters.h" | 27 #include "src/counters.h" |
| 28 #include "src/cpu-profiler.h" | 28 #include "src/cpu-profiler.h" |
| 29 #include "src/debug.h" | 29 #include "src/debug.h" |
| 30 #include "src/deoptimizer.h" | 30 #include "src/deoptimizer.h" |
| 31 #include "src/execution.h" | 31 #include "src/execution.h" |
| 32 #include "src/global-handles.h" | 32 #include "src/global-handles.h" |
| 33 #include "src/heap/spaces.h" | |
| 33 #include "src/heap-profiler.h" | 34 #include "src/heap-profiler.h" |
| 34 #include "src/heap-snapshot-generator-inl.h" | 35 #include "src/heap-snapshot-generator-inl.h" |
| 35 #include "src/icu_util.h" | 36 #include "src/icu_util.h" |
| 36 #include "src/json-parser.h" | 37 #include "src/json-parser.h" |
| 37 #include "src/messages.h" | 38 #include "src/messages.h" |
| 38 #include "src/parser.h" | 39 #include "src/parser.h" |
| 39 #include "src/pending-compilation-error-handler.h" | 40 #include "src/pending-compilation-error-handler.h" |
| 40 #include "src/profile-generator-inl.h" | 41 #include "src/profile-generator-inl.h" |
| 41 #include "src/property.h" | 42 #include "src/property.h" |
| 42 #include "src/property-details.h" | 43 #include "src/property-details.h" |
| (...skipping 6907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6950 : isolate_(reinterpret_cast<i::Isolate*>(isolate)) { | 6951 : isolate_(reinterpret_cast<i::Isolate*>(isolate)) { |
| 6951 isolate_->handle_scope_implementer()->IncrementCallDepth(); | 6952 isolate_->handle_scope_implementer()->IncrementCallDepth(); |
| 6952 } | 6953 } |
| 6953 | 6954 |
| 6954 | 6955 |
| 6955 Isolate::SuppressMicrotaskExecutionScope::~SuppressMicrotaskExecutionScope() { | 6956 Isolate::SuppressMicrotaskExecutionScope::~SuppressMicrotaskExecutionScope() { |
| 6956 isolate_->handle_scope_implementer()->DecrementCallDepth(); | 6957 isolate_->handle_scope_implementer()->DecrementCallDepth(); |
| 6957 } | 6958 } |
| 6958 | 6959 |
| 6959 | 6960 |
| 6961 class HeapStatisticsHelper { | |
|
rmcilroy
2015/04/13 12:48:23
I don't think we should have a seperate class just
| |
| 6962 public: | |
| 6963 static void ExtractHeapStatistics(HeapStatistics* heap_statistics, | |
| 6964 i::Heap* heap) { | |
| 6965 heap_statistics->total_heap_size_ = heap->CommittedMemory(); | |
| 6966 heap_statistics->total_heap_size_executable_ = | |
| 6967 heap->CommittedMemoryExecutable(); | |
| 6968 heap_statistics->total_physical_size_ = heap->CommittedPhysicalMemory(); | |
| 6969 heap_statistics->used_heap_size_ = heap->SizeOfObjects(); | |
| 6970 heap_statistics->heap_size_limit_ = heap->MaxReserved(); | |
| 6971 | |
| 6972 heap_statistics->new_space_statistics()->size_of_objects_ = | |
| 6973 heap->new_space()->Size(); | |
| 6974 heap_statistics->new_space_statistics()->available_memory_ = | |
| 6975 heap->new_space()->Available(); | |
| 6976 heap_statistics->new_space_statistics()->committed_memory_ = | |
| 6977 heap->new_space()->CommittedMemory(); | |
| 6978 | |
| 6979 heap_statistics->lo_space_statistics()->size_of_objects_ = | |
| 6980 heap->lo_space()->SizeOfObjects(); | |
| 6981 heap_statistics->lo_space_statistics()->available_memory_ = | |
| 6982 heap->lo_space()->Available(); | |
| 6983 heap_statistics->lo_space_statistics()->committed_memory_ = | |
| 6984 heap->lo_space()->CommittedMemory(); | |
| 6985 | |
| 6986 ExtractSpaceStatisticsFromPagedSpace( | |
| 6987 heap->old_space(), heap_statistics->old_space_statistics()); | |
| 6988 ExtractSpaceStatisticsFromPagedSpace( | |
| 6989 heap->code_space(), heap_statistics->code_space_statistics()); | |
| 6990 ExtractSpaceStatisticsFromPagedSpace( | |
| 6991 heap->map_space(), heap_statistics->map_space_statistics()); | |
| 6992 ExtractSpaceStatisticsFromPagedSpace( | |
| 6993 heap->cell_space(), heap_statistics->cell_space_statistics()); | |
| 6994 } | |
| 6995 | |
| 6996 static void ExtractSpaceStatisticsFromPagedSpace( | |
| 6997 i::PagedSpace* paged_space, | |
| 6998 HeapStatistics::SpaceStatistics* space_stats) { | |
| 6999 space_stats->size_of_objects_ = paged_space->SizeOfObjects(); | |
| 7000 space_stats->committed_memory_ = paged_space->CommittedMemory(); | |
| 7001 space_stats->available_memory_ = paged_space->Available(); | |
| 7002 } | |
| 7003 }; | |
| 7004 | |
| 7005 | |
| 6960 void Isolate::GetHeapStatistics(HeapStatistics* heap_statistics) { | 7006 void Isolate::GetHeapStatistics(HeapStatistics* heap_statistics) { |
| 6961 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); | 7007 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
| 6962 i::Heap* heap = isolate->heap(); | 7008 i::Heap* heap = isolate->heap(); |
| 6963 heap_statistics->total_heap_size_ = heap->CommittedMemory(); | 7009 HeapStatisticsHelper::ExtractHeapStatistics(heap_statistics, heap); |
| 6964 heap_statistics->total_heap_size_executable_ = | |
| 6965 heap->CommittedMemoryExecutable(); | |
| 6966 heap_statistics->total_physical_size_ = heap->CommittedPhysicalMemory(); | |
| 6967 heap_statistics->used_heap_size_ = heap->SizeOfObjects(); | |
| 6968 heap_statistics->heap_size_limit_ = heap->MaxReserved(); | |
| 6969 } | 7010 } |
| 6970 | 7011 |
| 6971 | 7012 |
| 6972 void Isolate::GetStackSample(const RegisterState& state, void** frames, | 7013 void Isolate::GetStackSample(const RegisterState& state, void** frames, |
| 6973 size_t frames_limit, SampleInfo* sample_info) { | 7014 size_t frames_limit, SampleInfo* sample_info) { |
| 6974 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); | 7015 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
| 6975 i::TickSample::GetStackSample(isolate, state, i::TickSample::kSkipCEntryFrame, | 7016 i::TickSample::GetStackSample(isolate, state, i::TickSample::kSkipCEntryFrame, |
| 6976 frames, frames_limit, sample_info); | 7017 frames, frames_limit, sample_info); |
| 6977 } | 7018 } |
| 6978 | 7019 |
| (...skipping 1100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8079 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 8120 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
| 8080 Address callback_address = | 8121 Address callback_address = |
| 8081 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8122 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 8082 VMState<EXTERNAL> state(isolate); | 8123 VMState<EXTERNAL> state(isolate); |
| 8083 ExternalCallbackScope call_scope(isolate, callback_address); | 8124 ExternalCallbackScope call_scope(isolate, callback_address); |
| 8084 callback(info); | 8125 callback(info); |
| 8085 } | 8126 } |
| 8086 | 8127 |
| 8087 | 8128 |
| 8088 } } // namespace v8::internal | 8129 } } // namespace v8::internal |
| OLD | NEW |