Skip to content

Commit 807ddae

Browse files
authored
chore: address follow-up comments to #69 (#73)
1 parent b3c3433 commit 807ddae

File tree

2 files changed

+91
-104
lines changed

2 files changed

+91
-104
lines changed

bindings/profiler.cc

Lines changed: 90 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -14,44 +14,42 @@
1414
* limitations under the License.
1515
*/
1616

17-
#include "v8-profiler.h"
18-
#include "nan.h"
1917
#include <memory>
2018

19+
#include "nan.h"
20+
#include "v8-profiler.h"
21+
2122
using namespace v8;
2223

2324
// Sampling Heap Profiler
2425

2526
Local<Value> TranslateAllocationProfile(AllocationProfile::Node* node) {
2627
Local<Object> js_node = Nan::New<Object>();
27-
js_node->Set(Nan::New<String>("name").ToLocalChecked(),
28-
node->name);
28+
js_node->Set(Nan::New<String>("name").ToLocalChecked(), node->name);
2929
js_node->Set(Nan::New<String>("scriptName").ToLocalChecked(),
30-
node->script_name);
30+
node->script_name);
3131
js_node->Set(Nan::New<String>("scriptId").ToLocalChecked(),
32-
Nan::New<Integer>(node->script_id));
32+
Nan::New<Integer>(node->script_id));
3333
js_node->Set(Nan::New<String>("lineNumber").ToLocalChecked(),
34-
Nan::New<Integer>(node->line_number));
34+
Nan::New<Integer>(node->line_number));
3535
js_node->Set(Nan::New<String>("columnNumber").ToLocalChecked(),
36-
Nan::New<Integer>(node->column_number));
36+
Nan::New<Integer>(node->column_number));
3737
Local<Array> children = Nan::New<Array>(node->children.size());
3838
for (size_t i = 0; i < node->children.size(); i++) {
3939
children->Set(i, TranslateAllocationProfile(node->children[i]));
4040
}
41-
js_node->Set(Nan::New<String>("children").ToLocalChecked(),
42-
children);
41+
js_node->Set(Nan::New<String>("children").ToLocalChecked(), children);
4342
Local<Array> allocations = Nan::New<Array>(node->allocations.size());
4443
for (size_t i = 0; i < node->allocations.size(); i++) {
4544
AllocationProfile::Allocation alloc = node->allocations[i];
4645
Local<Object> js_alloc = Nan::New<Object>();
4746
js_alloc->Set(Nan::New<String>("sizeBytes").ToLocalChecked(),
48-
Nan::New<Number>(alloc.size));
47+
Nan::New<Number>(alloc.size));
4948
js_alloc->Set(Nan::New<String>("count").ToLocalChecked(),
50-
Nan::New<Number>(alloc.count));
49+
Nan::New<Number>(alloc.count));
5150
allocations->Set(i, js_alloc);
5251
}
53-
js_node->Set(Nan::New<String>("allocations").ToLocalChecked(),
54-
allocations);
52+
js_node->Set(Nan::New<String>("allocations").ToLocalChecked(), allocations);
5553
return js_node;
5654
}
5755

@@ -72,8 +70,8 @@ NAN_METHOD(StartSamplingHeapProfiler) {
7270
int stack_depth = info[1].As<Integer>()->IntegerValue();
7371
#endif
7472

75-
info.GetIsolate()->GetHeapProfiler()->
76-
StartSamplingHeapProfiler(sample_interval, stack_depth);
73+
info.GetIsolate()->GetHeapProfiler()->StartSamplingHeapProfiler(
74+
sample_interval, stack_depth);
7775
} else {
7876
info.GetIsolate()->GetHeapProfiler()->StartSamplingHeapProfiler();
7977
}
@@ -89,26 +87,25 @@ NAN_METHOD(StopSamplingHeapProfiler) {
8987
// getAllocationProfile(): AllocationProfileNode
9088
NAN_METHOD(GetAllocationProfile) {
9189
std::unique_ptr<v8::AllocationProfile> profile(
92-
info.GetIsolate()->GetHeapProfiler()->GetAllocationProfile());
90+
info.GetIsolate()->GetHeapProfiler()->GetAllocationProfile());
9391
AllocationProfile::Node* root = profile->GetRootNode();
9492
info.GetReturnValue().Set(TranslateAllocationProfile(root));
9593
}
9694

97-
9895
// Time profiler
9996

10097
#if NODE_MODULE_VERSION > NODE_8_0_MODULE_VERSION
101-
// This profiler exists for the lifetime of the program. Not calling
98+
// This profiler exists for the lifetime of the program. Not calling
10299
// CpuProfiler::Dispose() is intentional.
103100
CpuProfiler* cpuProfiler = CpuProfiler::New(v8::Isolate::GetCurrent());
104101
#else
105102
CpuProfiler* cpuProfiler = v8::Isolate::GetCurrent()->GetCpuProfiler();
106103
#endif
107104

108105
Local<Object> CreateTimeNode(Local<String> name, Local<String> scriptName,
109-
Local<Integer> scriptId, Local<Integer> lineNumber,
110-
Local<Integer> columnNumber, Local<Integer> hitCount,
111-
Local<Array> children) {
106+
Local<Integer> scriptId, Local<Integer> lineNumber,
107+
Local<Integer> columnNumber,
108+
Local<Integer> hitCount, Local<Array> children) {
112109
Local<Object> js_node = Nan::New<Object>();
113110
js_node->Set(Nan::New<String>("name").ToLocalChecked(), name);
114111
js_node->Set(Nan::New<String>("scriptName").ToLocalChecked(), scriptName);
@@ -120,13 +117,12 @@ Local<Object> CreateTimeNode(Local<String> name, Local<String> scriptName,
120117
return js_node;
121118
}
122119

123-
124120
#if NODE_MODULE_VERSION > NODE_11_0_MODULE_VERSION
125121
Local<Object> TranslateLineNumbersTimeProfileNode(const CpuProfileNode* parent,
126-
const CpuProfileNode* node);
122+
const CpuProfileNode* node);
127123

128124
Local<Array> GetLineNumberTimeProfileChildren(const CpuProfileNode* parent,
129-
const CpuProfileNode* node) {
125+
const CpuProfileNode* node) {
130126
unsigned int index = 0;
131127
Local<Array> children;
132128
int32_t count = node->GetChildrenCount();
@@ -138,53 +134,47 @@ Local<Array> GetLineNumberTimeProfileChildren(const CpuProfileNode* parent,
138134
node->GetLineTicks(&entries[0], hitLineCount);
139135
children = Nan::New<Array>(count + hitLineCount);
140136
for (const CpuProfileNode::LineTick entry : entries) {
141-
children->Set(index++, CreateTimeNode(
142-
node->GetFunctionName(),
143-
node->GetScriptResourceName(),
144-
Nan::New<Integer>(node->GetScriptId()),
145-
Nan::New<Integer>(entry.line),
146-
Nan::New<Integer>(0),
147-
Nan::New<Integer>(entry.hit_count),
148-
Nan::New<Array>(0)
149-
));
137+
children->Set(
138+
index++, CreateTimeNode(
139+
node->GetFunctionName(), node->GetScriptResourceName(),
140+
Nan::New<Integer>(node->GetScriptId()),
141+
Nan::New<Integer>(entry.line), Nan::New<Integer>(0),
142+
Nan::New<Integer>(entry.hit_count), Nan::New<Array>(0)));
150143
}
151144
} else if (hitCount > 0) {
152145
// Handle nodes for pseudo-functions like "process" and "garbage collection"
153146
// which do not have hit line counts.
154147
children = Nan::New<Array>(count + 1);
155-
children->Set(index++, CreateTimeNode(
156-
node->GetFunctionName(),
157-
node->GetScriptResourceName(),
158-
Nan::New<Integer>(node->GetScriptId()),
159-
Nan::New<Integer>(node->GetLineNumber()),
160-
Nan::New<Integer>(node->GetColumnNumber()),
161-
Nan::New<Integer>(hitCount),
162-
Nan::New<Array>(0)
163-
));
148+
children->Set(
149+
index++,
150+
CreateTimeNode(node->GetFunctionName(), node->GetScriptResourceName(),
151+
Nan::New<Integer>(node->GetScriptId()),
152+
Nan::New<Integer>(node->GetLineNumber()),
153+
Nan::New<Integer>(node->GetColumnNumber()),
154+
Nan::New<Integer>(hitCount), Nan::New<Array>(0)));
164155
} else {
165156
children = Nan::New<Array>(count);
166157
}
167158

168159
for (int32_t i = 0; i < count; i++) {
169-
children->Set(index++, TranslateLineNumbersTimeProfileNode(node,
170-
node->GetChild(i)));
160+
children->Set(index++,
161+
TranslateLineNumbersTimeProfileNode(node, node->GetChild(i)));
171162
};
172163

173164
return children;
174165
}
175166

176167
Local<Object> TranslateLineNumbersTimeProfileNode(const CpuProfileNode* parent,
177-
const CpuProfileNode* node) {
178-
return CreateTimeNode(parent->GetFunctionName(),
179-
parent->GetScriptResourceName(),
180-
Nan::New<Integer>(parent->GetScriptId()),
181-
Nan::New<Integer>(node->GetLineNumber()),
182-
Nan::New<Integer>(node->GetColumnNumber()),
183-
Nan::New<Integer>(0),
184-
GetLineNumberTimeProfileChildren(parent, node));
168+
const CpuProfileNode* node) {
169+
return CreateTimeNode(
170+
parent->GetFunctionName(), parent->GetScriptResourceName(),
171+
Nan::New<Integer>(parent->GetScriptId()),
172+
Nan::New<Integer>(node->GetLineNumber()),
173+
Nan::New<Integer>(node->GetColumnNumber()), Nan::New<Integer>(0),
174+
GetLineNumberTimeProfileChildren(parent, node));
185175
}
186176

187-
// In profiles with line-level accurate line numbers, a node's line number
177+
// In profiles with line level accurate line numbers, a node's line number
188178
// and column number refer to the line/column from which the function was
189179
// called.
190180
Local<Value> TranslateLineNumbersTimeProfileRoot(const CpuProfileNode* node) {
@@ -207,15 +197,11 @@ Local<Value> TranslateLineNumbersTimeProfileRoot(const CpuProfileNode* node) {
207197
}
208198
}
209199

210-
return CreateTimeNode(
211-
node->GetFunctionName(),
212-
node->GetScriptResourceName(),
213-
Nan::New<Integer>(node->GetScriptId()),
214-
Nan::New<Integer>(node->GetLineNumber()),
215-
Nan::New<Integer>(node->GetColumnNumber()),
216-
Nan::New<Integer>(0),
217-
children
218-
);
200+
return CreateTimeNode(node->GetFunctionName(), node->GetScriptResourceName(),
201+
Nan::New<Integer>(node->GetScriptId()),
202+
Nan::New<Integer>(node->GetLineNumber()),
203+
Nan::New<Integer>(node->GetColumnNumber()),
204+
Nan::New<Integer>(0), children);
219205
}
220206
#endif
221207

@@ -226,49 +212,44 @@ Local<Value> TranslateTimeProfileNode(const CpuProfileNode* node) {
226212
children->Set(i, TranslateTimeProfileNode(node->GetChild(i)));
227213
}
228214

229-
return CreateTimeNode(
230-
node->GetFunctionName(),
231-
node->GetScriptResourceName(),
232-
Nan::New<Integer>(node->GetScriptId()),
233-
Nan::New<Integer>(node->GetLineNumber()),
234-
Nan::New<Integer>(node->GetColumnNumber()),
235-
Nan::New<Integer>(node->GetHitCount()),
236-
children
237-
);
215+
return CreateTimeNode(node->GetFunctionName(), node->GetScriptResourceName(),
216+
Nan::New<Integer>(node->GetScriptId()),
217+
Nan::New<Integer>(node->GetLineNumber()),
218+
Nan::New<Integer>(node->GetColumnNumber()),
219+
Nan::New<Integer>(node->GetHitCount()), children);
238220
}
239221

240-
Local<Value> TranslateTimeProfile(const CpuProfile* profile, bool hasDetailedLines) {
222+
Local<Value> TranslateTimeProfile(const CpuProfile* profile,
223+
bool includeLineInfo) {
241224
Local<Object> js_profile = Nan::New<Object>();
242225
js_profile->Set(Nan::New<String>("title").ToLocalChecked(),
243-
profile->GetTitle());
226+
profile->GetTitle());
244227

245228
#if NODE_MODULE_VERSION > NODE_11_0_MODULE_VERSION
246-
if (hasDetailedLines) {
229+
if (includeLineInfo) {
247230
js_profile->Set(
248-
Nan::New<String>("topDownRoot").ToLocalChecked(),
249-
TranslateLineNumbersTimeProfileRoot(profile->GetTopDownRoot()));
231+
Nan::New<String>("topDownRoot").ToLocalChecked(),
232+
TranslateLineNumbersTimeProfileRoot(profile->GetTopDownRoot()));
250233
} else {
251-
js_profile->Set(
252-
Nan::New<String>("topDownRoot").ToLocalChecked(),
253-
TranslateTimeProfileNode(profile->GetTopDownRoot()));
234+
js_profile->Set(Nan::New<String>("topDownRoot").ToLocalChecked(),
235+
TranslateTimeProfileNode(profile->GetTopDownRoot()));
254236
}
255237
#else
256-
js_profile->Set(
257-
Nan::New<String>("topDownRoot").ToLocalChecked(),
258-
TranslateTimeProfileNode(profile->GetTopDownRoot()));
238+
js_profile->Set(Nan::New<String>("topDownRoot").ToLocalChecked(),
239+
TranslateTimeProfileNode(profile->GetTopDownRoot()));
259240
#endif
260241
js_profile->Set(Nan::New<String>("startTime").ToLocalChecked(),
261-
Nan::New<Number>(profile->GetStartTime()));
242+
Nan::New<Number>(profile->GetStartTime()));
262243
js_profile->Set(Nan::New<String>("endTime").ToLocalChecked(),
263-
Nan::New<Number>(profile->GetEndTime()));
244+
Nan::New<Number>(profile->GetEndTime()));
264245
return js_profile;
265246
}
266247

267248
// Signature:
268249
// startProfiling(runName: string, includeLineInfo: boolean)
269250
NAN_METHOD(StartProfiling) {
270251
if (info.Length() != 2) {
271-
return Nan::ThrowTypeError("StartProfling must have two arguments.");
252+
return Nan::ThrowTypeError("StartProfiling must have two arguments.");
272253
}
273254
if (!info[0]->IsString()) {
274255
return Nan::ThrowTypeError("First argument must be a string.");
@@ -280,11 +261,11 @@ NAN_METHOD(StartProfiling) {
280261
Local<String> name =
281262
Nan::MaybeLocal<String>(info[0].As<String>()).ToLocalChecked();
282263

283-
// Sample counts and timestamps are not used, so we do not need to record
284-
// samples.
285-
bool recordSamples = false;
264+
// Sample counts and timestamps are not used, so we do not need to record
265+
// samples.
266+
const bool recordSamples = false;
286267

287-
// Line-level accurate line information is not available in Node 11 or earlier.
268+
// Line level accurate line information is not available in Node 11 or earlier.
288269
#if NODE_MODULE_VERSION > NODE_11_0_MODULE_VERSION
289270
bool includeLineInfo =
290271
Nan::MaybeLocal<Boolean>(info[1].As<Boolean>()).ToLocalChecked()->Value();
@@ -300,7 +281,7 @@ bool recordSamples = false;
300281
}
301282

302283
// Signature:
303-
// stopProfiling(runName: string, includedLineInfo: boolean): TimeProfile
284+
// stopProfiling(runName: string, includeLineInfo: boolean): TimeProfile
304285
NAN_METHOD(StopProfiling) {
305286
if (info.Length() != 2) {
306287
return Nan::ThrowTypeError("StopProfling must have two arguments.");
@@ -313,12 +294,12 @@ NAN_METHOD(StopProfiling) {
313294
}
314295
Local<String> name =
315296
Nan::MaybeLocal<String>(info[0].As<String>()).ToLocalChecked();
316-
bool includedLineInfo =
297+
bool includeLineInfo =
317298
Nan::MaybeLocal<Boolean>(info[1].As<Boolean>()).ToLocalChecked()->Value();
318299

319300
CpuProfile* profile = cpuProfiler->StopProfiling(name);
320301
Local<Value> translated_profile =
321-
TranslateTimeProfile(profile, includedLineInfo);
302+
TranslateTimeProfile(profile, includeLineInfo);
322303
profile->Delete();
323304
info.GetReturnValue().Set(translated_profile);
324305
}
@@ -334,26 +315,32 @@ NAN_METHOD(SetSamplingInterval) {
334315
cpuProfiler->SetSamplingInterval(us);
335316
}
336317

337-
338318
NAN_MODULE_INIT(InitAll) {
339319
Local<Object> timeProfiler = Nan::New<Object>();
340320
Nan::Set(timeProfiler, Nan::New("startProfiling").ToLocalChecked(),
341-
Nan::GetFunction(Nan::New<FunctionTemplate>(StartProfiling)).ToLocalChecked());
321+
Nan::GetFunction(Nan::New<FunctionTemplate>(StartProfiling))
322+
.ToLocalChecked());
342323
Nan::Set(timeProfiler, Nan::New("stopProfiling").ToLocalChecked(),
343-
Nan::GetFunction(Nan::New<FunctionTemplate>(StopProfiling)).ToLocalChecked());
324+
Nan::GetFunction(Nan::New<FunctionTemplate>(StopProfiling))
325+
.ToLocalChecked());
344326
Nan::Set(timeProfiler, Nan::New("setSamplingInterval").ToLocalChecked(),
345-
Nan::GetFunction(Nan::New<FunctionTemplate>(SetSamplingInterval)).ToLocalChecked());
327+
Nan::GetFunction(Nan::New<FunctionTemplate>(SetSamplingInterval))
328+
.ToLocalChecked());
346329
target->Set(Nan::New<String>("timeProfiler").ToLocalChecked(), timeProfiler);
347330

348331
Local<Object> heapProfiler = Nan::New<Object>();
349-
Nan::Set(heapProfiler, Nan::New("startSamplingHeapProfiler").ToLocalChecked(),
350-
Nan::GetFunction(Nan::New<FunctionTemplate>(StartSamplingHeapProfiler)).ToLocalChecked());
351-
Nan::Set(heapProfiler, Nan::New("stopSamplingHeapProfiler").ToLocalChecked(),
352-
Nan::GetFunction(Nan::New<FunctionTemplate>(StopSamplingHeapProfiler)).ToLocalChecked());
332+
Nan::Set(
333+
heapProfiler, Nan::New("startSamplingHeapProfiler").ToLocalChecked(),
334+
Nan::GetFunction(Nan::New<FunctionTemplate>(StartSamplingHeapProfiler))
335+
.ToLocalChecked());
336+
Nan::Set(
337+
heapProfiler, Nan::New("stopSamplingHeapProfiler").ToLocalChecked(),
338+
Nan::GetFunction(Nan::New<FunctionTemplate>(StopSamplingHeapProfiler))
339+
.ToLocalChecked());
353340
Nan::Set(heapProfiler, Nan::New("getAllocationProfile").ToLocalChecked(),
354-
Nan::GetFunction(Nan::New<FunctionTemplate>(GetAllocationProfile)).ToLocalChecked());
341+
Nan::GetFunction(Nan::New<FunctionTemplate>(GetAllocationProfile))
342+
.ToLocalChecked());
355343
target->Set(Nan::New<String>("heapProfiler").ToLocalChecked(), heapProfiler);
356344
}
357345

358346
NODE_MODULE(google_cloud_profiler, InitAll);
359-

ts/src/time-profiler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export interface TimeProfilerOptions {
3737

3838
/**
3939
* This configuration option is experimental.
40-
* When set to true, functions will be aggregated at the line-level, rather
40+
* When set to true, functions will be aggregated at the line level, rather
4141
* than at the function level.
4242
* This defaults to false.
4343
*/

0 commit comments

Comments
 (0)