Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2016-12-09 02:17:14 +0300
committerBen Noordhuis <info@bnoordhuis.nl>2016-12-11 16:45:52 +0300
commitaa77b767b6ba3d047ec946df5f65d1f835a9796a (patch)
tree49f899ed3c3923ea80056a907c4a23a1f0b13c8b /src/node_v8.cc
parent7c2dbd13b595a266b63ab02fb7d820c08ecb6eb5 (diff)
lib,src: support values > 4GB in heap statistics
We were transporting the heap statistics as uint32 values to JS land but those wrap around for values > 4 GB. Use 64 bits floats instead, those should last us a while. Fixes: https://github.com/nodejs/node/issues/10185 PR-URL: https://github.com/nodejs/node/pull/10186 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com>
Diffstat (limited to 'src/node_v8.cc')
-rw-r--r--src/node_v8.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/node_v8.cc b/src/node_v8.cc
index a033c48a7c9..70599226070 100644
--- a/src/node_v8.cc
+++ b/src/node_v8.cc
@@ -57,8 +57,8 @@ void UpdateHeapStatisticsArrayBuffer(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
HeapStatistics s;
env->isolate()->GetHeapStatistics(&s);
- uint32_t* const buffer = env->heap_statistics_buffer();
-#define V(index, name, _) buffer[index] = static_cast<uint32_t>(s.name());
+ double* const buffer = env->heap_statistics_buffer();
+#define V(index, name, _) buffer[index] = static_cast<double>(s.name());
HEAP_STATISTICS_PROPERTIES(V)
#undef V
}
@@ -68,13 +68,13 @@ void UpdateHeapSpaceStatisticsBuffer(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
HeapSpaceStatistics s;
Isolate* const isolate = env->isolate();
- uint32_t* buffer = env->heap_space_statistics_buffer();
+ double* buffer = env->heap_space_statistics_buffer();
for (size_t i = 0; i < number_of_heap_spaces; i++) {
isolate->GetHeapSpaceStatistics(&s, i);
size_t const property_offset = i * kHeapSpaceStatisticsPropertiesCount;
#define V(index, name, _) buffer[property_offset + index] = \
- static_cast<uint32_t>(s.name());
+ static_cast<double>(s.name());
HEAP_SPACE_STATISTICS_PROPERTIES(V)
#undef V
}
@@ -103,7 +103,7 @@ void InitializeV8Bindings(Local<Object> target,
"updateHeapStatisticsArrayBuffer",
UpdateHeapStatisticsArrayBuffer);
- env->set_heap_statistics_buffer(new uint32_t[kHeapStatisticsPropertiesCount]);
+ env->set_heap_statistics_buffer(new double[kHeapStatisticsPropertiesCount]);
const size_t heap_statistics_buffer_byte_length =
sizeof(*env->heap_statistics_buffer()) * kHeapStatisticsPropertiesCount;
@@ -149,7 +149,7 @@ void InitializeV8Bindings(Local<Object> target,
UpdateHeapSpaceStatisticsBuffer);
env->set_heap_space_statistics_buffer(
- new uint32_t[kHeapSpaceStatisticsPropertiesCount * number_of_heap_spaces]);
+ new double[kHeapSpaceStatisticsPropertiesCount * number_of_heap_spaces]);
const size_t heap_space_statistics_buffer_byte_length =
sizeof(*env->heap_space_statistics_buffer()) *