Index: src/js/v8natives.js |
diff --git a/src/js/v8natives.js b/src/js/v8natives.js |
index f6b394c2e73797f9ab1e8c1fd959249c3b6e000d..8af359a9d5d4fc69d77941b4a4b639be21518b52 100644 |
--- a/src/js/v8natives.js |
+++ b/src/js/v8natives.js |
@@ -1116,43 +1116,12 @@ function ObjectDefineProperties(obj, properties) { |
} |
-// Harmony proxies. |
-function ProxyFix(obj) { |
- var handler = %GetHandler(obj); |
- var props = CallTrap0(handler, "fix", UNDEFINED); |
- if (IS_UNDEFINED(props)) { |
- throw MakeTypeError(kProxyHandlerReturned, handler, "undefined", "fix"); |
- } |
- |
- if (%IsJSFunctionProxy(obj)) { |
- var callTrap = %GetCallTrap(obj); |
- var constructTrap = %GetConstructTrap(obj); |
- var code = ProxyDelegateCallAndConstruct(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 GlobalObject(); |
- ObjectDefineProperty(prototype, "constructor", |
- {value: obj, writable: true, enumerable: false, configurable: true}); |
- // TODO(v8:1530): defineProperty does not handle prototype and length. |
- %FunctionSetPrototype(obj, prototype); |
- obj.length = 0; |
- } else { |
- %Fix(obj); |
- } |
- ObjectDefineProperties(obj, props); |
-} |
- |
- |
// ES5 section 15.2.3.8. |
function ObjectSealJS(obj) { |
if (!IS_SPEC_OBJECT(obj)) return obj; |
var isProxy = %_IsJSProxy(obj); |
if (isProxy || %HasSloppyArgumentsElements(obj) || %IsObserved(obj)) { |
- if (isProxy) { |
- ProxyFix(obj); |
- } |
+ // TODO(neis): For proxies, must call preventExtensions trap first. |
var names = OwnPropertyKeys(obj); |
for (var i = 0; i < names.length; i++) { |
var name = names[i]; |
@@ -1180,9 +1149,7 @@ function ObjectFreezeJS(obj) { |
// objects. |
if (isProxy || %HasSloppyArgumentsElements(obj) || %IsObserved(obj) || |
IS_STRONG(obj)) { |
- if (isProxy) { |
- ProxyFix(obj); |
- } |
+ // TODO(neis): For proxies, must call preventExtensions trap first. |
var names = OwnPropertyKeys(obj); |
for (var i = 0; i < names.length; i++) { |
var name = names[i]; |
@@ -1206,11 +1173,7 @@ function ObjectFreezeJS(obj) { |
// ES5 section 15.2.3.10 |
function ObjectPreventExtension(obj) { |
if (!IS_SPEC_OBJECT(obj)) return obj; |
- if (%_IsJSProxy(obj)) { |
- ProxyFix(obj); |
- } |
- %PreventExtensions(obj); |
- return obj; |
+ return %PreventExtensions(obj); |
} |
@@ -1218,7 +1181,7 @@ function ObjectPreventExtension(obj) { |
function ObjectIsSealed(obj) { |
if (!IS_SPEC_OBJECT(obj)) return true; |
if (%_IsJSProxy(obj)) { |
- return false; |
+ return false; // TODO(neis): Must call isExtensible trap and ownKeys trap. |
} |
if (%IsExtensible(obj)) { |
return false; |
@@ -1239,7 +1202,7 @@ function ObjectIsSealed(obj) { |
function ObjectIsFrozen(obj) { |
if (!IS_SPEC_OBJECT(obj)) return true; |
if (%_IsJSProxy(obj)) { |
- return false; |
+ return false; // TODO(neis): Must call isExtensible trap and ownKeys trap. |
} |
if (%IsExtensible(obj)) { |
return false; |