Skip to content

Commit 57e48a1

Browse files
authored
Inline r_pairlist_find() (#2039)
1 parent e8a6d35 commit 57e48a1

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

src/rlang/node.c

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,6 @@ r_obj* r_node_tree_clone(r_obj* x) {
5252
return x;
5353
}
5454

55-
r_obj* r_pairlist_find(r_obj* node, r_obj* tag) {
56-
while (node != r_null) {
57-
if (r_node_tag(node) == tag) {
58-
return node;
59-
}
60-
node = r_node_cdr(node);
61-
}
62-
63-
return r_null;
64-
}
65-
6655
r_obj* r_pairlist_rev(r_obj* node) {
6756
if (node == r_null) {
6857
return node;

src/rlang/node.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,21 @@ r_obj* r_new_pairlist(const struct r_pair* args, int n, r_obj** tail);
3737
#define r_pairlist4 Rf_list4
3838
#define r_pairlist5 Rf_list5
3939

40-
r_obj* r_pairlist_find(r_obj* node, r_obj* tag);
4140
r_obj* r_pairlist_rev(r_obj* node);
4241

42+
// Used by `r_attrib_get()` via `r_pairlist_get()`,
43+
// so we want it to be fully inlined
44+
static inline
45+
r_obj* r_pairlist_find(r_obj* node, r_obj* tag) {
46+
while (node != r_null) {
47+
if (r_node_tag(node) == tag) {
48+
return node;
49+
}
50+
node = r_node_cdr(node);
51+
}
52+
return r_null;
53+
}
54+
4355
static inline
4456
r_obj* r_pairlist_get(r_obj* node, r_obj* tag) {
4557
return r_node_car(r_pairlist_find(node, tag));

0 commit comments

Comments
 (0)