+#define VM_PAGE_REMOVE(page) \
+ MACRO_BEGIN \
+ vm_page_t __page = (page); \
+ vm_object_t __object = __page->object; \
+ if (__page == __object->memq_hint) { \
+ vm_page_t __new_hint; \
+ queue_entry_t __qe; \
+ __qe = queue_next(&__page->listq); \
+ if (queue_end(&__object->memq, __qe)) { \
+ __qe = queue_prev(&__page->listq); \
+ if (queue_end(&__object->memq, __qe)) { \
+ __qe = NULL; \
+ } \
+ } \
+ __new_hint = (vm_page_t) __qe; \
+ __object->memq_hint = __new_hint; \
+ } \
+ queue_remove(&__object->memq, __page, vm_page_t, listq); \
+ MACRO_END
+
+#define VM_PAGE_INSERT(page, object) \
+ MACRO_BEGIN \
+ vm_page_t __page = (page); \
+ vm_object_t __object = (object); \
+ queue_enter(&__object->memq, __page, vm_page_t, listq); \
+ __object->memq_hint = __page; \
+ MACRO_END
+