| Index: src/v8natives.js
 | 
| diff --git a/src/v8natives.js b/src/v8natives.js
 | 
| index a5627c8cf35fd93a93eb549a3fe7ad4cad10aeef..469059ba21a3981a8e1c6b9d5e9db057f74f098d 100644
 | 
| --- a/src/v8natives.js
 | 
| +++ b/src/v8natives.js
 | 
| @@ -336,7 +336,6 @@ function IsInconsistentDescriptor(desc) {
 | 
|    return IsAccessorDescriptor(desc) && IsDataDescriptor(desc);
 | 
|  }
 | 
|  
 | 
| -
 | 
|  // ES5 8.10.4
 | 
|  function FromPropertyDescriptor(desc) {
 | 
|    if (IS_UNDEFINED(desc)) return desc;
 | 
| @@ -400,23 +399,6 @@ function ToPropertyDescriptor(obj) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -// For Harmony proxies.
 | 
| -function ToCompletePropertyDescriptor(obj) {
 | 
| -  var desc = ToPropertyDescriptor(obj)
 | 
| -  if (IsGenericDescriptor(desc) || IsDataDescriptor(desc)) {
 | 
| -    if (!("value" in desc)) desc.value = void 0;
 | 
| -    if (!("writable" in desc)) desc.writable = false;
 | 
| -  } else {
 | 
| -    // Is accessor descriptor.
 | 
| -    if (!("get" in desc)) desc.get = void 0;
 | 
| -    if (!("set" in desc)) desc.set = void 0;
 | 
| -  }
 | 
| -  if (!("enumerable" in desc)) desc.enumerable = false;
 | 
| -  if (!("configurable" in desc)) desc.configurable = false;
 | 
| -  return desc;
 | 
| -}
 | 
| -
 | 
| -
 | 
|  function PropertyDescriptor() {
 | 
|    // Initialize here so they are all in-object and have the same map.
 | 
|    // Default values from ES5 8.6.1.
 | 
| @@ -565,25 +547,9 @@ function ConvertDescriptorArrayToDescriptor(desc_array) {
 | 
|  
 | 
|  // ES5 section 8.12.2.
 | 
|  function GetProperty(obj, p) {
 | 
| -  if (%IsJSProxy(obj)) {
 | 
| -    var handler = %GetHandler(obj);
 | 
| -    var getProperty = handler.getPropertyDescriptor;
 | 
| -    if (IS_UNDEFINED(getProperty)) {
 | 
| -      throw MakeTypeError("handler_trap_missing",
 | 
| -                          [handler, "getPropertyDescriptor"]);
 | 
| -    }
 | 
| -    var descriptor = getProperty.call(handler, p);
 | 
| -    if (IS_UNDEFINED(descriptor)) return descriptor;
 | 
| -    var desc = ToCompletePropertyDescriptor(descriptor);
 | 
| -    if (!desc.configurable) {
 | 
| -      throw MakeTypeError("proxy_prop_not_configurable",
 | 
| -                          [handler, "getPropertyDescriptor", p, descriptor]);
 | 
| -    }
 | 
| -    return desc;
 | 
| -  }
 | 
|    var prop = GetOwnProperty(obj);
 | 
|    if (!IS_UNDEFINED(prop)) return prop;
 | 
| -  var proto = %GetPrototype(obj);
 | 
| +  var proto = obj.__proto__;
 | 
|    if (IS_NULL(proto)) return void 0;
 | 
|    return GetProperty(proto, p);
 | 
|  }
 | 
| @@ -591,12 +557,6 @@ function GetProperty(obj, p) {
 | 
|  
 | 
|  // ES5 section 8.12.6
 | 
|  function HasProperty(obj, p) {
 | 
| -  if (%IsJSProxy(obj)) {
 | 
| -    var handler = %GetHandler(obj)
 | 
| -    var has = handler.has
 | 
| -    if (IS_UNDEFINED(has)) has = DerivedHasTrap
 | 
| -    return ToBoolean(has.call(handler, obj, p))
 | 
| -  }
 | 
|    var desc = GetProperty(obj, p);
 | 
|    return IS_UNDEFINED(desc) ? false : true;
 | 
|  }
 | 
| @@ -785,7 +745,7 @@ function DefineOwnProperty(obj, p, desc, should_throw) {
 | 
|  function ObjectGetPrototypeOf(obj) {
 | 
|    if (!IS_SPEC_OBJECT(obj))
 | 
|      throw MakeTypeError("obj_ctor_property_non_object", ["getPrototypeOf"]);
 | 
| -  return %GetPrototype(obj);
 | 
| +  return obj.__proto__;
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -798,43 +758,11 @@ function ObjectGetOwnPropertyDescriptor(obj, p) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -// For Harmony proxies
 | 
| -function ToStringArray(obj, trap) {
 | 
| -  if (!IS_SPEC_OBJECT(obj)) {
 | 
| -    throw MakeTypeError("proxy_non_object_prop_names", [obj, trap]);
 | 
| -  }
 | 
| -  var n = ToUint32(obj.length);
 | 
| -  var array = new $Array(n);
 | 
| -  var names = {}
 | 
| -  for (var index = 0; index < n; index++) {
 | 
| -    var s = ToString(obj[index]);
 | 
| -    if (s in names) {
 | 
| -      throw MakeTypeError("proxy_repeated_prop_name", [obj, trap, s])
 | 
| -    }
 | 
| -    array[index] = s;
 | 
| -    names.s = 0;
 | 
| -  }
 | 
| -  return array;
 | 
| -}
 | 
| -
 | 
| -
 | 
|  // ES5 section 15.2.3.4.
 | 
|  function ObjectGetOwnPropertyNames(obj) {
 | 
|    if (!IS_SPEC_OBJECT(obj))
 | 
|      throw MakeTypeError("obj_ctor_property_non_object", ["getOwnPropertyNames"]);
 | 
|  
 | 
| -  // Special handling for proxies.
 | 
| -  if (%IsJSProxy(obj)) {
 | 
| -    var handler = %GetHandler(obj);
 | 
| -    var getOwnPropertyNames = handler.getOwnPropertyNames;
 | 
| -    if (IS_UNDEFINED(getOwnPropertyNames)) {
 | 
| -      throw MakeTypeError("handler_trap_missing",
 | 
| -                          [handler, "getOwnPropertyNames"]);
 | 
| -    }
 | 
| -    var names = getOwnPropertyNames.call(handler);
 | 
| -    return ToStringArray(names, "getOwnPropertyNames");
 | 
| -  }
 | 
| -
 | 
|    // Find all the indexed properties.
 | 
|  
 | 
|    // Get the local element names.
 | 
| 
 |