| 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 |
| 11 | 11 |
| 12 var GlobalArray = global.Array; | 12 var GlobalArray = global.Array; |
| 13 var GlobalBoolean = global.Boolean; | 13 var GlobalBoolean = global.Boolean; |
| 14 var GlobalNumber = global.Number; | 14 var GlobalNumber = global.Number; |
| 15 var GlobalObject = global.Object; | 15 var GlobalObject = global.Object; |
| 16 var InternalArray = utils.InternalArray; | 16 var InternalArray = utils.InternalArray; |
| 17 var iteratorSymbol = utils.ImportNow("iterator_symbol"); | 17 var iteratorSymbol = utils.ImportNow("iterator_symbol"); |
| 18 var MakeRangeError; | 18 var MakeRangeError; |
| 19 var MakeSyntaxError; | 19 var MakeSyntaxError; |
| 20 var MakeTypeError; | 20 var MakeTypeError; |
| 21 var MathAbs; | 21 var MathAbs; |
| 22 var NaN = %GetRootNaN(); | 22 var NaN = %GetRootNaN(); |
| 23 var ObjectToString = utils.ImportNow("object_to_string"); | 23 var ObjectToString = utils.ImportNow("object_to_string"); |
| 24 var ObserveBeginPerformSplice; | 24 var ObserveBeginPerformSplice; |
| 25 var ObserveEndPerformSplice; | 25 var ObserveEndPerformSplice; |
| 26 var ObserveEnqueueSpliceRecord; | 26 var ObserveEnqueueSpliceRecord; |
| 27 var SameValue = utils.ImportNow("SameValue"); | |
| 28 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 27 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
| 29 | 28 |
| 30 utils.Import(function(from) { | 29 utils.Import(function(from) { |
| 31 MakeRangeError = from.MakeRangeError; | 30 MakeRangeError = from.MakeRangeError; |
| 32 MakeSyntaxError = from.MakeSyntaxError; | 31 MakeSyntaxError = from.MakeSyntaxError; |
| 33 MakeTypeError = from.MakeTypeError; | 32 MakeTypeError = from.MakeTypeError; |
| 34 MathAbs = from.MathAbs; | 33 MathAbs = from.MathAbs; |
| 35 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; | 34 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; |
| 36 ObserveEndPerformSplice = from.ObserveEndPerformSplice; | 35 ObserveEndPerformSplice = from.ObserveEndPerformSplice; |
| 37 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; | 36 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 538 throw MakeTypeError(kDefineDisallowed, p); | 537 throw MakeTypeError(kDefineDisallowed, p); |
| 539 } else { | 538 } else { |
| 540 return false; | 539 return false; |
| 541 } | 540 } |
| 542 } | 541 } |
| 543 | 542 |
| 544 if (!IS_UNDEFINED(current)) { | 543 if (!IS_UNDEFINED(current)) { |
| 545 if ((IsGenericDescriptor(desc) || | 544 if ((IsGenericDescriptor(desc) || |
| 546 IsDataDescriptor(desc) == IsDataDescriptor(current)) && | 545 IsDataDescriptor(desc) == IsDataDescriptor(current)) && |
| 547 (!desc.hasEnumerable() || | 546 (!desc.hasEnumerable() || |
| 548 SameValue(desc.isEnumerable(), current.isEnumerable())) && | 547 %SameValue(desc.isEnumerable(), current.isEnumerable())) && |
| 549 (!desc.hasConfigurable() || | 548 (!desc.hasConfigurable() || |
| 550 SameValue(desc.isConfigurable(), current.isConfigurable())) && | 549 %SameValue(desc.isConfigurable(), current.isConfigurable())) && |
| 551 (!desc.hasWritable() || | 550 (!desc.hasWritable() || |
| 552 SameValue(desc.isWritable(), current.isWritable())) && | 551 %SameValue(desc.isWritable(), current.isWritable())) && |
| 553 (!desc.hasValue() || | 552 (!desc.hasValue() || |
| 554 SameValue(desc.getValue(), current.getValue())) && | 553 %SameValue(desc.getValue(), current.getValue())) && |
| 555 (!desc.hasGetter() || | 554 (!desc.hasGetter() || |
| 556 SameValue(desc.getGet(), current.getGet())) && | 555 %SameValue(desc.getGet(), current.getGet())) && |
| 557 (!desc.hasSetter() || | 556 (!desc.hasSetter() || |
| 558 SameValue(desc.getSet(), current.getSet()))) { | 557 %SameValue(desc.getSet(), current.getSet()))) { |
| 559 return true; | 558 return true; |
| 560 } | 559 } |
| 561 if (!current.isConfigurable()) { | 560 if (!current.isConfigurable()) { |
| 562 // Step 7 | 561 // Step 7 |
| 563 if (desc.isConfigurable() || | 562 if (desc.isConfigurable() || |
| 564 (desc.hasEnumerable() && | 563 (desc.hasEnumerable() && |
| 565 desc.isEnumerable() != current.isEnumerable())) { | 564 desc.isEnumerable() != current.isEnumerable())) { |
| 566 if (should_throw) { | 565 if (should_throw) { |
| 567 throw MakeTypeError(kRedefineDisallowed, p); | 566 throw MakeTypeError(kRedefineDisallowed, p); |
| 568 } else { | 567 } else { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 587 if (should_throw) { | 586 if (should_throw) { |
| 588 throw currentIsWritable | 587 throw currentIsWritable |
| 589 ? MakeTypeError(kStrongRedefineDisallowed, obj, p) | 588 ? MakeTypeError(kStrongRedefineDisallowed, obj, p) |
| 590 : MakeTypeError(kRedefineDisallowed, p); | 589 : MakeTypeError(kRedefineDisallowed, p); |
| 591 } else { | 590 } else { |
| 592 return false; | 591 return false; |
| 593 } | 592 } |
| 594 } | 593 } |
| 595 } | 594 } |
| 596 if (!currentIsWritable && desc.hasValue() && | 595 if (!currentIsWritable && desc.hasValue() && |
| 597 !SameValue(desc.getValue(), current.getValue())) { | 596 !%SameValue(desc.getValue(), current.getValue())) { |
| 598 if (should_throw) { | 597 if (should_throw) { |
| 599 throw MakeTypeError(kRedefineDisallowed, p); | 598 throw MakeTypeError(kRedefineDisallowed, p); |
| 600 } else { | 599 } else { |
| 601 return false; | 600 return false; |
| 602 } | 601 } |
| 603 } | 602 } |
| 604 } | 603 } |
| 605 // Step 11 | 604 // Step 11 |
| 606 if (IsAccessorDescriptor(desc) && IsAccessorDescriptor(current)) { | 605 if (IsAccessorDescriptor(desc) && IsAccessorDescriptor(current)) { |
| 607 if (desc.hasSetter() && | 606 if (desc.hasSetter() && |
| 608 !SameValue(desc.getSet(), current.getSet())) { | 607 !%SameValue(desc.getSet(), current.getSet())) { |
| 609 if (should_throw) { | 608 if (should_throw) { |
| 610 throw MakeTypeError(kRedefineDisallowed, p); | 609 throw MakeTypeError(kRedefineDisallowed, p); |
| 611 } else { | 610 } else { |
| 612 return false; | 611 return false; |
| 613 } | 612 } |
| 614 } | 613 } |
| 615 if (desc.hasGetter() && !SameValue(desc.getGet(),current.getGet())) { | 614 if (desc.hasGetter() && !%SameValue(desc.getGet(),current.getGet())) { |
| 616 if (should_throw) { | 615 if (should_throw) { |
| 617 throw MakeTypeError(kRedefineDisallowed, p); | 616 throw MakeTypeError(kRedefineDisallowed, p); |
| 618 } else { | 617 } else { |
| 619 return false; | 618 return false; |
| 620 } | 619 } |
| 621 } | 620 } |
| 622 } | 621 } |
| 623 } | 622 } |
| 624 } | 623 } |
| 625 } | 624 } |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 865 | 864 |
| 866 // Set up non-enumerable functions in the Object object. | 865 // Set up non-enumerable functions in the Object object. |
| 867 utils.InstallFunctions(GlobalObject, DONT_ENUM, [ | 866 utils.InstallFunctions(GlobalObject, DONT_ENUM, [ |
| 868 // assign is added in bootstrapper.cc. | 867 // assign is added in bootstrapper.cc. |
| 869 // keys is added in bootstrapper.cc. | 868 // keys is added in bootstrapper.cc. |
| 870 "defineProperty", ObjectDefineProperty, | 869 "defineProperty", ObjectDefineProperty, |
| 871 "defineProperties", ObjectDefineProperties, | 870 "defineProperties", ObjectDefineProperties, |
| 872 "getPrototypeOf", ObjectGetPrototypeOf, | 871 "getPrototypeOf", ObjectGetPrototypeOf, |
| 873 "setPrototypeOf", ObjectSetPrototypeOf, | 872 "setPrototypeOf", ObjectSetPrototypeOf, |
| 874 // getOwnPropertySymbols is added in symbol.js. | 873 // getOwnPropertySymbols is added in symbol.js. |
| 875 "is", SameValue, // ECMA-262, Edition 6, section 19.1.2.10 | 874 // is is added in bootstrapper.cc. |
| 876 // deliverChangeRecords, getNotifier, observe and unobserve are added | 875 // deliverChangeRecords, getNotifier, observe and unobserve are added |
| 877 // in object-observe.js. | 876 // in object-observe.js. |
| 878 ]); | 877 ]); |
| 879 | 878 |
| 880 | 879 |
| 881 // ---------------------------------------------------------------------------- | 880 // ---------------------------------------------------------------------------- |
| 882 // Boolean | 881 // Boolean |
| 883 | 882 |
| 884 function BooleanToString() { | 883 function BooleanToString() { |
| 885 // NOTE: Both Boolean objects and values can enter here as | 884 // NOTE: Both Boolean objects and values can enter here as |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 to.ObjectDefineProperties = ObjectDefineProperties; | 1148 to.ObjectDefineProperties = ObjectDefineProperties; |
| 1150 to.ObjectDefineProperty = ObjectDefineProperty; | 1149 to.ObjectDefineProperty = ObjectDefineProperty; |
| 1151 to.ObjectHasOwnProperty = ObjectHasOwnProperty; | 1150 to.ObjectHasOwnProperty = ObjectHasOwnProperty; |
| 1152 }); | 1151 }); |
| 1153 | 1152 |
| 1154 %InstallToContext([ | 1153 %InstallToContext([ |
| 1155 "object_value_of", ObjectValueOf, | 1154 "object_value_of", ObjectValueOf, |
| 1156 ]); | 1155 ]); |
| 1157 | 1156 |
| 1158 }) | 1157 }) |
| OLD | NEW |