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

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

Issue 1698343002: [builtins] Move the Boolean constructor to C++. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Also remove it from ia32 of course. 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/full-codegen/x87/full-codegen-x87.cc ('k') | src/runtime/runtime.h » ('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
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 // getOwnPropertySymbols is added in symbol.js. 874 // getOwnPropertySymbols is added in symbol.js.
875 "is", SameValue, // ECMA-262, Edition 6, section 19.1.2.10 875 "is", SameValue, // ECMA-262, Edition 6, section 19.1.2.10
876 // deliverChangeRecords, getNotifier, observe and unobserve are added 876 // deliverChangeRecords, getNotifier, observe and unobserve are added
877 // in object-observe.js. 877 // in object-observe.js.
878 ]); 878 ]);
879 879
880 880
881 // ---------------------------------------------------------------------------- 881 // ----------------------------------------------------------------------------
882 // Boolean 882 // Boolean
883 883
884 function BooleanConstructor(x) {
885 // TODO(bmeurer): Move this to toplevel.
886 "use strict";
887 if (!IS_UNDEFINED(new.target)) {
888 %_SetValueOf(this, TO_BOOLEAN(x));
889 } else {
890 return TO_BOOLEAN(x);
891 }
892 }
893
894
895 function BooleanToString() { 884 function BooleanToString() {
896 // NOTE: Both Boolean objects and values can enter here as 885 // NOTE: Both Boolean objects and values can enter here as
897 // 'this'. This is not as dictated by ECMA-262. 886 // 'this'. This is not as dictated by ECMA-262.
898 var b = this; 887 var b = this;
899 if (!IS_BOOLEAN(b)) { 888 if (!IS_BOOLEAN(b)) {
900 if (!IS_BOOLEAN_WRAPPER(b)) { 889 if (!IS_BOOLEAN_WRAPPER(b)) {
901 throw MakeTypeError(kNotGeneric, 'Boolean.prototype.toString'); 890 throw MakeTypeError(kNotGeneric, 'Boolean.prototype.toString');
902 } 891 }
903 b = %_ValueOf(b); 892 b = %_ValueOf(b);
904 } 893 }
905 return b ? 'true' : 'false'; 894 return b ? 'true' : 'false';
906 } 895 }
907 896
908 897
909 function BooleanValueOf() { 898 function BooleanValueOf() {
910 // NOTE: Both Boolean objects and values can enter here as 899 // NOTE: Both Boolean objects and values can enter here as
911 // 'this'. This is not as dictated by ECMA-262. 900 // 'this'. This is not as dictated by ECMA-262.
912 if (!IS_BOOLEAN(this) && !IS_BOOLEAN_WRAPPER(this)) { 901 if (!IS_BOOLEAN(this) && !IS_BOOLEAN_WRAPPER(this)) {
913 throw MakeTypeError(kNotGeneric, 'Boolean.prototype.valueOf'); 902 throw MakeTypeError(kNotGeneric, 'Boolean.prototype.valueOf');
914 } 903 }
915 return %_ValueOf(this); 904 return %_ValueOf(this);
916 } 905 }
917 906
918 907
919 // ---------------------------------------------------------------------------- 908 // ----------------------------------------------------------------------------
920 909
921 %SetCode(GlobalBoolean, BooleanConstructor);
922 %FunctionSetPrototype(GlobalBoolean, new GlobalBoolean(false)); 910 %FunctionSetPrototype(GlobalBoolean, new GlobalBoolean(false));
923 %AddNamedProperty(GlobalBoolean.prototype, "constructor", GlobalBoolean, 911 %AddNamedProperty(GlobalBoolean.prototype, "constructor", GlobalBoolean,
924 DONT_ENUM); 912 DONT_ENUM);
925 913
926 utils.InstallFunctions(GlobalBoolean.prototype, DONT_ENUM, [ 914 utils.InstallFunctions(GlobalBoolean.prototype, DONT_ENUM, [
927 "toString", BooleanToString, 915 "toString", BooleanToString,
928 "valueOf", BooleanValueOf 916 "valueOf", BooleanValueOf
929 ]); 917 ]);
930 918
931 919
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 to.ObjectDefineProperties = ObjectDefineProperties; 1149 to.ObjectDefineProperties = ObjectDefineProperties;
1162 to.ObjectDefineProperty = ObjectDefineProperty; 1150 to.ObjectDefineProperty = ObjectDefineProperty;
1163 to.ObjectHasOwnProperty = ObjectHasOwnProperty; 1151 to.ObjectHasOwnProperty = ObjectHasOwnProperty;
1164 }); 1152 });
1165 1153
1166 %InstallToContext([ 1154 %InstallToContext([
1167 "object_value_of", ObjectValueOf, 1155 "object_value_of", ObjectValueOf,
1168 ]); 1156 ]);
1169 1157
1170 }) 1158 })
OLDNEW
« no previous file with comments | « src/full-codegen/x87/full-codegen-x87.cc ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698