Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: src/js/v8natives.js

Issue 1695743003: [builtins] Support SameValue and SameValueZero via runtime functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Address bug in SameValue and SameValueZero for SIMD types. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/js/runtime.js ('k') | src/objects.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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 })
OLDNEW
« no previous file with comments | « src/js/runtime.js ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698