re-commit r109220, the compile error has already been fixed