| Index: test/mjsunit/value-wrapper.js | 
| =================================================================== | 
| --- test/mjsunit/value-wrapper.js	(revision 3644) | 
| +++ test/mjsunit/value-wrapper.js	(working copy) | 
| @@ -28,6 +28,9 @@ | 
| // When calling user-defined functions on strings, booleans or | 
| // numbers, we should create a wrapper object. | 
|  | 
| +// When running the tests use loops to ensure that the call site moves through | 
| +// the different IC states and that both the runtime system and the generated | 
| +// IC code is tested. | 
| function RunTests() { | 
| for (var i = 0; i < 10; i++) { | 
| assertEquals('object', 'xxx'.TypeOfThis()); | 
| @@ -77,6 +80,22 @@ | 
| assertEquals('object', (42)[7]()); | 
| assertEquals('object', (3.14)[7]()); | 
| } | 
| + | 
| +  for (var i = 0; i < 10; i++) { | 
| +    assertEquals('object', typeof 'xxx'.ObjectValueOf()); | 
| +    assertEquals('object', typeof true.ObjectValueOf()); | 
| +    assertEquals('object', typeof false.ObjectValueOf()); | 
| +    assertEquals('object', typeof (42).ObjectValueOf()); | 
| +    assertEquals('object', typeof (3.14).ObjectValueOf()); | 
| +  } | 
| + | 
| +  for (var i = 0; i < 10; i++) { | 
| +    assertEquals('[object String]', 'xxx'.ObjectToString()); | 
| +    assertEquals('[object Boolean]', true.ObjectToString()); | 
| +    assertEquals('[object Boolean]', false.ObjectToString()); | 
| +    assertEquals('[object Number]', (42).ObjectToString()); | 
| +    assertEquals('[object Number]', (3.14).ObjectToString()); | 
| +  } | 
| } | 
|  | 
| function TypeOfThis() { return typeof this; } | 
| @@ -87,8 +106,15 @@ | 
| Number.prototype.TypeOfThis = TypeOfThis; | 
| Boolean.prototype[7] = TypeOfThis; | 
| Number.prototype[7] = TypeOfThis; | 
| - | 
|  | 
| +String.prototype.ObjectValueOf = Object.prototype.valueOf; | 
| +Boolean.prototype.ObjectValueOf = Object.prototype.valueOf; | 
| +Number.prototype.ObjectValueOf = Object.prototype.valueOf; | 
| + | 
| +String.prototype.ObjectToString = Object.prototype.toString; | 
| +Boolean.prototype.ObjectToString = Object.prototype.toString; | 
| +Number.prototype.ObjectToString = Object.prototype.toString; | 
| + | 
| RunTests(); | 
|  | 
| // Run test after properties have been set to a different value. | 
|  |