GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — src: remove duplicate logic for getting buffer · nodejs/node@2770cd9

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • src
    • node_process_methods.cc
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/node_process_methods.cc‎

Copy file name to clipboardExpand all lines: src/node_process_methods.cc
+13-12Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,16 @@ static void Chdir(const FunctionCallbackInfo<Value>& args) {
8787
}
8888
}
8989

90+
inline Local<ArrayBuffer> get_fields_array_buffer(
91+
const FunctionCallbackInfo<Value>& args,
92+
size_t index,
93+
size_t array_length) {
94+
CHECK(args[index]->IsFloat64Array());
95+
Local<Float64Array> arr = args[index].As<Float64Array>();
96+
CHECK_EQ(arr->Length(), array_length);
97+
return arr->Buffer();
98+
}
99+
90100
// CPUUsage use libuv's uv_getrusage() this-process resource usage accessor,
91101
// to access ru_utime (user CPU time used) and ru_stime (system CPU time used),
92102
// which are uv_timeval_t structs (long tv_sec, long tv_usec).
@@ -104,10 +114,7 @@ static void CPUUsage(const FunctionCallbackInfo<Value>& args) {
104114
}
105115

106116
// Get the double array pointer from the Float64Array argument.
107-
CHECK(args[0]->IsFloat64Array());
108-
Local<Float64Array> array = args[0].As<Float64Array>();
109-
CHECK_EQ(array->Length(), 2);
110-
Local<ArrayBuffer> ab = array->Buffer();
117+
Local<ArrayBuffer> ab = get_fields_array_buffer(args, 0, 2);
111118
double* fields = static_cast<double*>(ab->GetBackingStore()->Data());
112119

113120
// Set the Float64Array elements to be user / system values in microseconds.
@@ -203,10 +210,7 @@ static void MemoryUsage(const FunctionCallbackInfo<Value>& args) {
203210
env->isolate_data()->node_allocator();
204211

205212
// Get the double array pointer from the Float64Array argument.
206-
CHECK(args[0]->IsFloat64Array());
207-
Local<Float64Array> array = args[0].As<Float64Array>();
208-
CHECK_EQ(array->Length(), 5);
209-
Local<ArrayBuffer> ab = array->Buffer();
213+
Local<ArrayBuffer> ab = get_fields_array_buffer(args, 0, 5);
210214
double* fields = static_cast<double*>(ab->GetBackingStore()->Data());
211215

212216
fields[0] = rss;
@@ -292,10 +296,7 @@ static void ResourceUsage(const FunctionCallbackInfo<Value>& args) {
292296
if (err)
293297
return env->ThrowUVException(err, "uv_getrusage");
294298

295-
CHECK(args[0]->IsFloat64Array());
296-
Local<Float64Array> array = args[0].As<Float64Array>();
297-
CHECK_EQ(array->Length(), 16);
298-
Local<ArrayBuffer> ab = array->Buffer();
299+
Local<ArrayBuffer> ab = get_fields_array_buffer(args, 0, 16);
299300
double* fields = static_cast<double*>(ab->GetBackingStore()->Data());
300301

301302
fields[0] = MICROS_PER_SEC * rusage.ru_utime.tv_sec + rusage.ru_utime.tv_usec;

0 commit comments

Comments
0 (0)
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.