| Index: sdk/lib/core/int.dart | 
| diff --git a/sdk/lib/core/int.dart b/sdk/lib/core/int.dart | 
| index 96a6d40e6dc5654b8e2e3d5d130d52dfbf25365b..2b1b70c0737e9449bc2616c7d232bbbb1af5e428 100644 | 
| --- a/sdk/lib/core/int.dart | 
| +++ b/sdk/lib/core/int.dart | 
| @@ -99,6 +99,78 @@ abstract class int extends num { | 
| bool get isOdd; | 
|  | 
| /** | 
| +   * Returns the minimum number of bits required to store this integer. | 
| +   * | 
| +   * The number of bits excludes the sign bit, which gives the natural length | 
| +   * for non-negative (unsigned) values.  Negative values are complemented to | 
| +   * return the bit position of the first bit that differs from the sign bit. | 
| +   * | 
| +   * To find the the number of bits needed to store the value as a signed value, | 
| +   * add one, i.e. use `x.bitLength + 1`. | 
| +   * | 
| +   *      x.bitLength == (-x-1).bitLength | 
| +   * | 
| +   *      3.bitLength == 2;     // 00000011 | 
| +   *      2.bitLength == 2;     // 00000010 | 
| +   *      1.bitLength == 1;     // 00000001 | 
| +   *      0.bitLength == 0;     // 00000000 | 
| +   *      (-1).bitLength == 0;  // 11111111 | 
| +   *      (-2).bitLength == 1;  // 11111110 | 
| +   *      (-3).bitLength == 2;  // 11111101 | 
| +   *      (-4).bitLength == 2;  // 11111100 | 
| +   */ | 
| +  int get bitLength; | 
| + | 
| +  /** | 
| +   * Returns the least significant [width] bits of this integer as a | 
| +   * non-negative number (i.e. unsigned representation).  The returned value has | 
| +   * zeros in all bit positions higher than [width]. | 
| +   * | 
| +   *     (-1).toUnsigned(5) == 32   // 11111111  ->  00011111 | 
| +   * | 
| +   * This operation can be used to simulate arithmetic from low level languages. | 
| +   * For example, to increment an 8 bit quantity: | 
| +   * | 
| +   *     q = (q + 1).toUnsigned(8); | 
| +   * | 
| +   * `q` will count from `0` up to `255` and then wrap around to `0`. | 
| +   * | 
| +   * If the input fits in [width] bits without truncation, the result is the | 
| +   * same as the input.  The minimum width needed to avoid truncation of `x` is | 
| +   * given by `x.bitLength`, i.e. | 
| +   * | 
| +   *     x == x.toUnsigned(x.bitLength); | 
| +   */ | 
| +  int toUnsigned(int width); | 
| + | 
| +  /** | 
| +   * Returns the least significant [width] bits of this integer, extending the | 
| +   * highest retained bit to the sign.  This is the same as truncating the value | 
| +   * to fit in [width] bits using an signed 2-s complement representation.  The | 
| +   * returned value has the same bit value in all positions higher than [width]. | 
| +   * | 
| +   *                                    V--sign bit-V | 
| +   *     16.toSigned(5) == -16   //  00010000 -> 11110000 | 
| +   *     239.toSigned(5) == 15   //  11101111 -> 00001111 | 
| +   *                                    ^           ^ | 
| +   * | 
| +   * This operation can be used to simulate arithmetic from low level languages. | 
| +   * For example, to increment an 8 bit signed quantity: | 
| +   * | 
| +   *     q = (q + 1).toSigned(8); | 
| +   * | 
| +   * `q` will count from `0` up to `127`, wrap to `-128` and count back up to | 
| +   * `127`. | 
| +   * | 
| +   * If the input value fits in [width] bits without truncation, the result is | 
| +   * the same as the input.  The minimum width needed to avoid truncation of `x` | 
| +   * is `x.bitLength + 1`, i.e. | 
| +   * | 
| +   *     x == x.toSigned(x.bitLength + 1); | 
| +   */ | 
| +  int toSigned(int width); | 
| + | 
| +  /** | 
| * Return the negative value of this integer. | 
| * | 
| * The result of negating an integer always has the opposite sign, except | 
|  |