Skip to content

Commit b19eba9

Browse files
authored
Inline r_pairlist_find() (#1830)
1 parent 3057c42 commit b19eba9

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
@@ -40,9 +40,21 @@ r_obj* r_new_pairlist(const struct r_pair* args, int n, r_obj** tail);
4040
#define r_pairlist4 Rf_list4
4141
#define r_pairlist5 Rf_list5
4242

43-
r_obj* r_pairlist_find(r_obj* node, r_obj* tag);
4443
r_obj* r_pairlist_rev(r_obj* node);
4544

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

0 commit comments

Comments
 (0)