Skip to content

Commit f0b8472

Browse files
committed
optimize HandleScope usage in JSGraph edge processing
1 parent 409ff8e commit f0b8472

File tree

1 file changed

+25
-28
lines changed

1 file changed

+25
-28
lines changed

src/heap_utils.cc

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -169,37 +169,34 @@ class JSGraph : public EmbedderGraph {
169169
return MaybeLocal<Array>();
170170
}
171171

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

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

0 commit comments

Comments
 (0)