small optimization on the PM dirty checker: update the pm dirtyness directly when attributes change, not via the event system