OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 (function(global, utils) { | 5 (function(global, utils) { |
6 | 6 |
7 %CheckIsBootstrapping(); | 7 %CheckIsBootstrapping(); |
8 | 8 |
9 // ---------------------------------------------------------------------------- | 9 // ---------------------------------------------------------------------------- |
10 // Imports | 10 // Imports |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 | 200 |
201 | 201 |
202 // ECMA-262 - 15.2.4.6 | 202 // ECMA-262 - 15.2.4.6 |
203 function ObjectIsPrototypeOf(V) { | 203 function ObjectIsPrototypeOf(V) { |
204 if (!IS_SPEC_OBJECT(V)) return false; | 204 if (!IS_SPEC_OBJECT(V)) return false; |
205 var O = TO_OBJECT(this); | 205 var O = TO_OBJECT(this); |
206 return %_HasInPrototypeChain(V, O); | 206 return %_HasInPrototypeChain(V, O); |
207 } | 207 } |
208 | 208 |
209 | 209 |
210 // ECMA-262 - 15.2.4.6 | 210 // ES6 19.1.3.4 |
211 function ObjectPropertyIsEnumerable(V) { | 211 function ObjectPropertyIsEnumerable(V) { |
212 var P = TO_NAME(V); | 212 var P = TO_NAME(V); |
213 if (%_IsJSProxy(this)) { | |
214 // TODO(rossberg): adjust once there is a story for symbols vs proxies. | |
215 if (IS_SYMBOL(V)) return false; | |
216 | |
217 var desc = GetOwnPropertyJS(this, P); | |
218 return IS_UNDEFINED(desc) ? false : desc.isEnumerable(); | |
219 } | |
220 return %IsPropertyEnumerable(TO_OBJECT(this), P); | 213 return %IsPropertyEnumerable(TO_OBJECT(this), P); |
221 } | 214 } |
222 | 215 |
223 | 216 |
224 // Extensions for providing property getters and setters. | 217 // Extensions for providing property getters and setters. |
225 function ObjectDefineGetter(name, fun) { | 218 function ObjectDefineGetter(name, fun) { |
226 var receiver = this; | 219 var receiver = this; |
227 if (IS_NULL(receiver) || IS_UNDEFINED(receiver)) { | 220 if (IS_NULL(receiver) || IS_UNDEFINED(receiver)) { |
228 receiver = %GlobalProxy(ObjectDefineGetter); | 221 receiver = %GlobalProxy(ObjectDefineGetter); |
229 } | 222 } |
(...skipping 1532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1762 | 1755 |
1763 %InstallToContext([ | 1756 %InstallToContext([ |
1764 "global_eval_fun", GlobalEval, | 1757 "global_eval_fun", GlobalEval, |
1765 "object_value_of", ObjectValueOf, | 1758 "object_value_of", ObjectValueOf, |
1766 "object_to_string", ObjectToString, | 1759 "object_to_string", ObjectToString, |
1767 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, | 1760 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, |
1768 "to_complete_property_descriptor", ToCompletePropertyDescriptor, | 1761 "to_complete_property_descriptor", ToCompletePropertyDescriptor, |
1769 ]); | 1762 ]); |
1770 | 1763 |
1771 }) | 1764 }) |
OLD | NEW |