After applying D51058, D51060 and this change, I measured the number of calls and cycles for three vm_page functions (grab_valid, grab, alloc) on 8 consecutive build-world tests. grab_valid is not invoked after the first iteration, but I left those lines there anyway.
Original Modified calls cycles/call calls cycles/call grab_valid: 27 13252760.037037037 grab_valid: 26 5259784.807692308 grab: 1203 445.81463009143806 grab: 1241 300.23368251410153 alloc: 389816350 1657.3326783163404 alloc: 389826513 1652.4279825779834 grab_valid: 0 grab_valid: 0 grab: 53 739.3018867924528 grab: 20 904.65 alloc: 389532365 1661.762829119475 alloc: 389536833 1644.4145083065869 grab_valid: 0 grab_valid: 0 grab: 31 999.0 grab: 15 1255.5333333333333 alloc: 389526969 1669.22342209892 alloc: 389529817 1646.8923696873248 grab_valid: 0 grab_valid: 0 grab: 15 1100.1333333333334 grab: 14 1324.0714285714287 alloc: 389527565 1653.6664403737384 alloc: 389539089 1670.2566697510554 grab_valid: 0 grab_valid: 0 grab: 19 979.5263157894736 grab: 17 1591.0 alloc: 389526305 1659.5234530771934 alloc: 389519876 1659.1946076276733 grab_valid: 0 grab_valid: 0 grab: 13 1175.4615384615386 grab: 14 1189.2857142857142 alloc: 389524203 1668.6815675173848 alloc: 389483750 1646.5596180841949 grab_valid: 0 grab_valid: 0 grab: 13 1309.2307692307693 grab: 7 946.1428571428571 alloc: 389519500 1658.3565928380992 alloc: 389514905 1652.1173502230936 grab_valid: 0 grab_valid: 0 grab: 13 1018.9230769230769 grab: 11 1268.090909090909 alloc: 389521837 1672.9132200847573 alloc: 389514925 1644.798824612433