diff options
author | alc <alc@FreeBSD.org> | 2002-11-09 08:27:42 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2002-11-09 08:27:42 +0000 |
commit | 5f7be03df24235587236ded1a841bac36d4521a5 (patch) | |
tree | cc662d5796161adf837257bb6c4421449bff4d01 /sys/vm/vm_page.c | |
parent | ce0874622d8b5ea6b29fe53a6b9423c1bd8c5125 (diff) | |
download | FreeBSD-src-5f7be03df24235587236ded1a841bac36d4521a5.zip FreeBSD-src-5f7be03df24235587236ded1a841bac36d4521a5.tar.gz |
In vm_page_remove(), avoid calling vm_page_splay() if the object's memq
is empty.
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r-- | sys/vm/vm_page.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 2559a9f..a8052f3 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -589,21 +589,24 @@ vm_page_insert(vm_page_t m, vm_object_t object, vm_pindex_t pindex) /* * Now link into the object's ordered list of backed pages. */ - root = vm_page_splay(pindex, object->root); + root = object->root; if (root == NULL) { m->left = NULL; m->right = NULL; TAILQ_INSERT_TAIL(&object->memq, m, listq); - } else if (pindex < root->pindex) { - m->left = root->left; - m->right = root; - root->left = NULL; - TAILQ_INSERT_BEFORE(root, m, listq); } else { - m->right = root->right; - m->left = root; - root->right = NULL; - TAILQ_INSERT_AFTER(&object->memq, root, m, listq); + root = vm_page_splay(pindex, root); + if (pindex < root->pindex) { + m->left = root->left; + m->right = root; + root->left = NULL; + TAILQ_INSERT_BEFORE(root, m, listq); + } else { + m->right = root->right; + m->left = root; + root->right = NULL; + TAILQ_INSERT_AFTER(&object->memq, root, m, listq); + } } object->root = m; object->generation++; |