summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_page.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-11-09 08:27:42 +0000
committeralc <alc@FreeBSD.org>2002-11-09 08:27:42 +0000
commit5f7be03df24235587236ded1a841bac36d4521a5 (patch)
treecc662d5796161adf837257bb6c4421449bff4d01 /sys/vm/vm_page.c
parentce0874622d8b5ea6b29fe53a6b9423c1bd8c5125 (diff)
downloadFreeBSD-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.c23
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++;
OpenPOWER on IntegriCloud