From ccf12df4f3b94a07c6b9c51cedba9b237f50d3ef Mon Sep 17 00:00:00 2001 From: Roman Klauke Date: Tue, 11 Aug 2015 20:06:41 +0200 Subject: [PATCH] src: add total_available_size to v8 statistics v8 introduced the new flag `total_available_size` in version 4.4 and upwards. This flag is now available on `v8.getHeapStatistics` with the name `total_available_size`. It contains the total available heap size of v8. Introduced with commit: v8/v8-git-mirror@0a1352a7 PR-URL: https://github.com/nodejs/io.js/pull/2348 Reviewed-By: Ben Noordhuis --- doc/api/v8.markdown | 1 + lib/v8.js | 2 ++ src/node_v8.cc | 5 +++-- test/parallel/test-v8-stats.js | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/api/v8.markdown b/doc/api/v8.markdown index cedd5c86d9b008..4caf6ebcd4437a 100644 --- a/doc/api/v8.markdown +++ b/doc/api/v8.markdown @@ -15,6 +15,7 @@ Returns an object with the following properties total_heap_size: 7326976, total_heap_size_executable: 4194304, total_physical_size: 7326976, + total_available_size: 1152656, used_heap_size: 3476208, heap_size_limit: 1535115264 } diff --git a/lib/v8.js b/lib/v8.js index f25814bab31a95..acadfa64e0650e 100644 --- a/lib/v8.js +++ b/lib/v8.js @@ -22,6 +22,7 @@ const heapStatisticsBuffer = const kTotalHeapSizeIndex = v8binding.kTotalHeapSizeIndex; const kTotalHeapSizeExecutableIndex = v8binding.kTotalHeapSizeExecutableIndex; const kTotalPhysicalSizeIndex = v8binding.kTotalPhysicalSizeIndex; +const kTotalAvailableSize = v8binding.kTotalAvailableSize; const kUsedHeapSizeIndex = v8binding.kUsedHeapSizeIndex; const kHeapSizeLimitIndex = v8binding.kHeapSizeLimitIndex; @@ -34,6 +35,7 @@ exports.getHeapStatistics = function() { 'total_heap_size': buffer[kTotalHeapSizeIndex], 'total_heap_size_executable': buffer[kTotalHeapSizeExecutableIndex], 'total_physical_size': buffer[kTotalPhysicalSizeIndex], + 'total_available_size': buffer[kTotalAvailableSize], 'used_heap_size': buffer[kUsedHeapSizeIndex], 'heap_size_limit': buffer[kHeapSizeLimitIndex] }; diff --git a/src/node_v8.cc b/src/node_v8.cc index 0a3e6e76338752..db492e3d1a537c 100644 --- a/src/node_v8.cc +++ b/src/node_v8.cc @@ -26,8 +26,9 @@ using v8::Value; V(0, total_heap_size, kTotalHeapSizeIndex) \ V(1, total_heap_size_executable, kTotalHeapSizeExecutableIndex) \ V(2, total_physical_size, kTotalPhysicalSizeIndex) \ - V(3, used_heap_size, kUsedHeapSizeIndex) \ - V(4, heap_size_limit, kHeapSizeLimitIndex) + V(3, total_available_size, kTotalAvailableSize) \ + V(4, used_heap_size, kUsedHeapSizeIndex) \ + V(5, heap_size_limit, kHeapSizeLimitIndex) #define V(a, b, c) +1 static const size_t kHeapStatisticsPropertiesCount = diff --git a/test/parallel/test-v8-stats.js b/test/parallel/test-v8-stats.js index e48c1d70365073..fc4a6df30f8ed8 100644 --- a/test/parallel/test-v8-stats.js +++ b/test/parallel/test-v8-stats.js @@ -6,6 +6,7 @@ var v8 = require('v8'); var s = v8.getHeapStatistics(); var keys = [ 'heap_size_limit', + 'total_available_size', 'total_heap_size', 'total_heap_size_executable', 'total_physical_size',