| Index: src/v8natives.js
 | 
| ===================================================================
 | 
| --- src/v8natives.js	(revision 9531)
 | 
| +++ src/v8natives.js	(working copy)
 | 
| @@ -193,13 +193,14 @@
 | 
|  function SetUpGlobal() {
 | 
|    %CheckIsBootstrapping();
 | 
|    // ECMA 262 - 15.1.1.1.
 | 
| -  %SetProperty(global, "NaN", $NaN, DONT_ENUM | DONT_DELETE);
 | 
| +  %SetProperty(global, "NaN", $NaN, DONT_ENUM | DONT_DELETE | READ_ONLY);
 | 
|  
 | 
|    // ECMA-262 - 15.1.1.2.
 | 
| -  %SetProperty(global, "Infinity", 1/0, DONT_ENUM | DONT_DELETE);
 | 
| +  %SetProperty(global, "Infinity", 1/0, DONT_ENUM | DONT_DELETE | READ_ONLY);
 | 
|  
 | 
|    // ECMA-262 - 15.1.1.3.
 | 
| -  %SetProperty(global, "undefined", void 0, DONT_ENUM | DONT_DELETE);
 | 
| +  %SetProperty(global, "undefined", void 0,
 | 
| +               DONT_ENUM | DONT_DELETE | READ_ONLY);
 | 
|  
 | 
|    // Set up non-enumerable function on the global object.
 | 
|    InstallFunctions(global, DONT_ENUM, $Array(
 | 
| @@ -1042,12 +1043,21 @@
 | 
|      throw MakeTypeError("handler_returned_undefined", [handler, "fix"]);
 | 
|    }
 | 
|  
 | 
| -  if (IS_SPEC_FUNCTION(obj)) {
 | 
| +  if (%IsJSFunctionProxy(obj)) {
 | 
|      var callTrap = %GetCallTrap(obj);
 | 
|      var constructTrap = %GetConstructTrap(obj);
 | 
|      var code = DelegateCallAndConstruct(callTrap, constructTrap);
 | 
|      %Fix(obj);  // becomes a regular function
 | 
|      %SetCode(obj, code);
 | 
| +    // TODO(rossberg): What about length and other properties? Not specified.
 | 
| +    // We just put in some half-reasonable defaults for now.
 | 
| +    var prototype = new $Object();
 | 
| +    $Object.defineProperty(prototype, "constructor",
 | 
| +      {value: obj, writable: true, enumerable: false, configrable: true});
 | 
| +    $Object.defineProperty(obj, "prototype",
 | 
| +      {value: prototype, writable: true, enumerable: false, configrable: false})
 | 
| +    $Object.defineProperty(obj, "length",
 | 
| +      {value: 0, writable: true, enumerable: false, configrable: false});
 | 
|    } else {
 | 
|      %Fix(obj);
 | 
|    }
 | 
| 
 |