source sync from Dart SDK

https://code.google.com/p/dart/source/detail?r=35294