Skip to content

Commit c03e722

Browse files
committed
optimize HandleScope usage in heap_utils loops
1 parent d2bc0c1 commit c03e722

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

src/heap_utils.cc

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,8 @@ class JSGraph : public EmbedderGraph {
117117
Local<String> wraps_string = FIXED_ONE_BYTE_STRING(isolate_, "wraps");
118118
Local<String> to_string = FIXED_ONE_BYTE_STRING(isolate_, "to");
119119

120-
for (const std::unique_ptr<Node>& n : nodes_) {
121-
HandleScope handle_scope(isolate_);
120+
for (const std::unique_ptr<Node>& n : nodes_)
122121
info_objects[n.get()] = Object::New(isolate_);
123-
}
124122

125123
{
126124
HandleScope handle_scope(isolate_);
@@ -171,34 +169,36 @@ class JSGraph : public EmbedderGraph {
171169
return MaybeLocal<Array>();
172170
}
173171

174-
for (const auto& edge_info : edges_) {
175-
Node* source = edge_info.first;
176-
Local<Value> edges;
177-
if (!info_objects[source]->Get(context, edges_string).ToLocal(&edges) ||
178-
!edges->IsArray()) {
179-
return MaybeLocal<Array>();
180-
}
172+
{
173+
HandleScope handle_scope(isolate_);
174+
for (const auto& edge_info : edges_) {
175+
Node* source = edge_info.first;
176+
Local<Value> edges;
177+
if (!info_objects[source]->Get(context, edges_string).ToLocal(&edges) ||
178+
!edges->IsArray()) {
179+
return MaybeLocal<Array>();
180+
}
181181

182-
size_t i = 0;
183-
size_t j = 0;
184-
for (const auto& edge : edge_info.second) {
185-
HandleScope handle_scope(isolate_);
186-
Local<Object> to_object = info_objects[edge.second];
187-
Local<Object> edge_obj = Object::New(isolate_);
188-
Local<Value> edge_name_value;
189-
const char* edge_name = edge.first;
190-
if (edge_name != nullptr) {
191-
if (!String::NewFromUtf8(isolate_, edge_name)
192-
.ToLocal(&edge_name_value)) {
182+
size_t i = 0;
183+
size_t j = 0;
184+
for (const auto& edge : edge_info.second) {
185+
Local<Object> to_object = info_objects[edge.second];
186+
Local<Object> edge_obj = Object::New(isolate_);
187+
Local<Value> edge_name_value;
188+
const char* edge_name = edge.first;
189+
if (edge_name != nullptr) {
190+
if (!String::NewFromUtf8(isolate_, edge_name)
191+
.ToLocal(&edge_name_value)) {
192+
return MaybeLocal<Array>();
193+
}
194+
} else {
195+
edge_name_value = Number::New(isolate_, static_cast<double>(j++));
196+
}
197+
if (edge_obj->Set(context, name_string, edge_name_value).IsNothing() ||
198+
edge_obj->Set(context, to_string, to_object).IsNothing() ||
199+
edges.As<Array>()->Set(context, i++, edge_obj).IsNothing()) {
193200
return MaybeLocal<Array>();
194201
}
195-
} else {
196-
edge_name_value = Number::New(isolate_, static_cast<double>(j++));
197-
}
198-
if (edge_obj->Set(context, name_string, edge_name_value).IsNothing() ||
199-
edge_obj->Set(context, to_string, to_object).IsNothing() ||
200-
edges.As<Array>()->Set(context, i++, edge_obj).IsNothing()) {
201-
return MaybeLocal<Array>();
202202
}
203203
}
204204
}

0 commit comments

Comments
 (0)