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

Side by Side Diff: src/messages.js

Issue 1154743003: Revert of Hook up more import/exports in natives. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 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/math.js ('k') | src/object-observe.js » ('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 // ------------------------------------------------------------------- 5 // -------------------------------------------------------------------
6 6
7 var $errorToString; 7 var $errorToString;
8 var $getStackTraceLine; 8 var $getStackTraceLine;
9 var $messageGetPositionInLine; 9 var $messageGetPositionInLine;
10 var $messageGetLineNumber; 10 var $messageGetLineNumber;
11 var $messageGetSourceLine; 11 var $messageGetSourceLine;
12 var $noSideEffectToString; 12 var $noSideEffectToString;
13 var $stackOverflowBoilerplate; 13 var $stackOverflowBoilerplate;
14 var $stackTraceSymbol; 14 var $stackTraceSymbol;
15 var $toDetailString; 15 var $toDetailString;
16 var $Error; 16 var $Error;
17 var $EvalError; 17 var $EvalError;
18 var $RangeError; 18 var $RangeError;
19 var $ReferenceError; 19 var $ReferenceError;
20 var $SyntaxError; 20 var $SyntaxError;
21 var $TypeError; 21 var $TypeError;
22 var $URIError; 22 var $URIError;
23 var MakeError; 23 var MakeError;
24 var MakeEvalError; 24 var MakeEvalError;
25 var MakeRangeError; 25 var MakeRangeError;
26 var MakeReferenceError; 26 var MakeReferenceError;
27 var MakeSyntaxError; 27 var MakeSyntaxError;
28 var MakeTypeError; 28 var MakeTypeError;
29 var MakeURIError; 29 var MakeURIError;
30 var MakeReferenceErrorEmbedded;
31 var MakeSyntaxErrorEmbedded;
32 var MakeTypeErrorEmbedded;
30 33
31 (function(global, utils) { 34 (function(global, utils) {
32 35
33 %CheckIsBootstrapping(); 36 %CheckIsBootstrapping();
34 37
35 // ------------------------------------------------------------------- 38 // -------------------------------------------------------------------
36 // Imports 39 // Imports
37 40
38 var GlobalObject = global.Object; 41 var GlobalObject = global.Object;
39 var InternalArray = utils.InternalArray; 42 var InternalArray = utils.InternalArray;
40 var ObjectDefineProperty = utils.ObjectDefineProperty;
41 43
42 var ArrayJoin;
43 var ObjectToString;
44 var StringCharAt; 44 var StringCharAt;
45 var StringIndexOf; 45 var StringIndexOf;
46 var StringSubstring; 46 var StringSubstring;
47 47
48 utils.Import(function(from) { 48 utils.Import(function(from) {
49 ArrayJoin = from.ArrayJoin;
50 ObjectToString = from.ObjectToString;
51 StringCharAt = from.StringCharAt; 49 StringCharAt = from.StringCharAt;
52 StringIndexOf = from.StringIndexOf; 50 StringIndexOf = from.StringIndexOf;
53 StringSubstring = from.StringSubstring; 51 StringSubstring = from.StringSubstring;
54 }); 52 });
55 53
56 // ------------------------------------------------------------------- 54 // -------------------------------------------------------------------
57 55
58 var GlobalError; 56 var GlobalError;
59 var GlobalTypeError; 57 var GlobalTypeError;
60 var GlobalRangeError; 58 var GlobalRangeError;
(...skipping 19 matching lines...) Expand all
80 if (IS_FUNCTION(obj)) { 78 if (IS_FUNCTION(obj)) {
81 var str = %_CallFunction(obj, obj, $functionSourceString); 79 var str = %_CallFunction(obj, obj, $functionSourceString);
82 if (str.length > 128) { 80 if (str.length > 128) {
83 str = %_SubString(str, 0, 111) + "...<omitted>..." + 81 str = %_SubString(str, 0, 111) + "...<omitted>..." +
84 %_SubString(str, str.length - 2, str.length); 82 %_SubString(str, str.length - 2, str.length);
85 } 83 }
86 return str; 84 return str;
87 } 85 }
88 if (IS_SYMBOL(obj)) return %_CallFunction(obj, $symbolToString); 86 if (IS_SYMBOL(obj)) return %_CallFunction(obj, $symbolToString);
89 if (IS_OBJECT(obj) 87 if (IS_OBJECT(obj)
90 && %GetDataProperty(obj, "toString") === ObjectToString) { 88 && %GetDataProperty(obj, "toString") === $objectToString) {
91 var constructor = %GetDataProperty(obj, "constructor"); 89 var constructor = %GetDataProperty(obj, "constructor");
92 if (typeof constructor == "function") { 90 if (typeof constructor == "function") {
93 var constructorName = constructor.name; 91 var constructorName = constructor.name;
94 if (IS_STRING(constructorName) && constructorName !== "") { 92 if (IS_STRING(constructorName) && constructorName !== "") {
95 return "#<" + constructorName + ">"; 93 return "#<" + constructorName + ">";
96 } 94 }
97 } 95 }
98 } 96 }
99 if (CanBeSafelyTreatedAsAnErrorObject(obj)) { 97 if (CanBeSafelyTreatedAsAnErrorObject(obj)) {
100 return %_CallFunction(obj, ErrorToString); 98 return %_CallFunction(obj, ErrorToString);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 function ToStringCheckErrorObject(obj) { 130 function ToStringCheckErrorObject(obj) {
133 if (CanBeSafelyTreatedAsAnErrorObject(obj)) { 131 if (CanBeSafelyTreatedAsAnErrorObject(obj)) {
134 return %_CallFunction(obj, ErrorToString); 132 return %_CallFunction(obj, ErrorToString);
135 } else { 133 } else {
136 return $toString(obj); 134 return $toString(obj);
137 } 135 }
138 } 136 }
139 137
140 138
141 function ToDetailString(obj) { 139 function ToDetailString(obj) {
142 if (obj != null && IS_OBJECT(obj) && obj.toString === ObjectToString) { 140 if (obj != null && IS_OBJECT(obj) && obj.toString === $objectToString) {
143 var constructor = obj.constructor; 141 var constructor = obj.constructor;
144 if (typeof constructor == "function") { 142 if (typeof constructor == "function") {
145 var constructorName = constructor.name; 143 var constructorName = constructor.name;
146 if (IS_STRING(constructorName) && constructorName !== "") { 144 if (IS_STRING(constructorName) && constructorName !== "") {
147 return "#<" + constructorName + ">"; 145 return "#<" + constructorName + ">";
148 } 146 }
149 } 147 }
150 } 148 }
151 return ToStringCheckErrorObject(obj); 149 return ToStringCheckErrorObject(obj);
152 } 150 }
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 * 402 *
405 * @return {?string} script name if present, value for //# sourceURL or 403 * @return {?string} script name if present, value for //# sourceURL or
406 * deprecated //@ sourceURL comment otherwise. 404 * deprecated //@ sourceURL comment otherwise.
407 */ 405 */
408 function ScriptNameOrSourceURL() { 406 function ScriptNameOrSourceURL() {
409 if (this.source_url) return this.source_url; 407 if (this.source_url) return this.source_url;
410 return this.name; 408 return this.name;
411 } 409 }
412 410
413 411
414 utils.SetUpLockedPrototype(Script, [ 412 $setUpLockedPrototype(Script, [
415 "source", 413 "source",
416 "name", 414 "name",
417 "source_url", 415 "source_url",
418 "source_mapping_url", 416 "source_mapping_url",
419 "line_ends", 417 "line_ends",
420 "line_offset", 418 "line_offset",
421 "column_offset" 419 "column_offset"
422 ], [ 420 ], [
423 "lineFromPosition", ScriptLineFromPosition, 421 "lineFromPosition", ScriptLineFromPosition,
424 "locationFromPosition", ScriptLocationFromPosition, 422 "locationFromPosition", ScriptLocationFromPosition,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 * Source text for this location. 466 * Source text for this location.
469 */ 467 */
470 function SourceLocationSourceText() { 468 function SourceLocationSourceText() {
471 return %_CallFunction(this.script.source, 469 return %_CallFunction(this.script.source,
472 this.start, 470 this.start,
473 this.end, 471 this.end,
474 StringSubstring); 472 StringSubstring);
475 } 473 }
476 474
477 475
478 utils.SetUpLockedPrototype(SourceLocation, 476 $setUpLockedPrototype(SourceLocation,
479 ["script", "position", "line", "column", "start", "end"], 477 ["script", "position", "line", "column", "start", "end"],
480 ["sourceText", SourceLocationSourceText] 478 ["sourceText", SourceLocationSourceText]
481 ); 479 );
482 480
483 481
484 /** 482 /**
485 * Class for a source slice. A source slice is a part of a script source with 483 * Class for a source slice. A source slice is a part of a script source with
486 * the following properties: 484 * the following properties:
487 * script : script object for the source 485 * script : script object for the source
488 * from_line : line number for the first line in the slice 486 * from_line : line number for the first line in the slice
(...skipping 23 matching lines...) Expand all
512 * @return {String} Source text for this slice. The last line will include 510 * @return {String} Source text for this slice. The last line will include
513 * the line terminating characters (if any) 511 * the line terminating characters (if any)
514 */ 512 */
515 function SourceSliceSourceText() { 513 function SourceSliceSourceText() {
516 return %_CallFunction(this.script.source, 514 return %_CallFunction(this.script.source,
517 this.from_position, 515 this.from_position,
518 this.to_position, 516 this.to_position,
519 StringSubstring); 517 StringSubstring);
520 } 518 }
521 519
522 utils.SetUpLockedPrototype(SourceSlice, 520 $setUpLockedPrototype(SourceSlice,
523 ["script", "from_line", "to_line", "from_position", "to_position"], 521 ["script", "from_line", "to_line", "from_position", "to_position"],
524 ["sourceText", SourceSliceSourceText] 522 ["sourceText", SourceSliceSourceText]
525 ); 523 );
526 524
527 525
528 // Returns the offset of the given position within the containing 526 // Returns the offset of the given position within the containing
529 // line. 527 // line.
530 function GetPositionInLine(message) { 528 function GetPositionInLine(message) {
531 var script = %MessageGetScript(message); 529 var script = %MessageGetScript(message);
532 var start_position = %MessageGetStartPosition(message); 530 var start_position = %MessageGetStartPosition(message);
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 } else { 708 } else {
711 line += fileLocation; 709 line += fileLocation;
712 addSuffix = false; 710 addSuffix = false;
713 } 711 }
714 if (addSuffix) { 712 if (addSuffix) {
715 line += " (" + fileLocation + ")"; 713 line += " (" + fileLocation + ")";
716 } 714 }
717 return line; 715 return line;
718 } 716 }
719 717
720 utils.SetUpLockedPrototype(CallSite, ["receiver", "fun", "pos"], [ 718 $setUpLockedPrototype(CallSite, ["receiver", "fun", "pos"], [
721 "getThis", CallSiteGetThis, 719 "getThis", CallSiteGetThis,
722 "getTypeName", CallSiteGetTypeName, 720 "getTypeName", CallSiteGetTypeName,
723 "isToplevel", CallSiteIsToplevel, 721 "isToplevel", CallSiteIsToplevel,
724 "isEval", CallSiteIsEval, 722 "isEval", CallSiteIsEval,
725 "getEvalOrigin", CallSiteGetEvalOrigin, 723 "getEvalOrigin", CallSiteGetEvalOrigin,
726 "getScriptNameOrSourceURL", CallSiteGetScriptNameOrSourceURL, 724 "getScriptNameOrSourceURL", CallSiteGetScriptNameOrSourceURL,
727 "getFunction", CallSiteGetFunction, 725 "getFunction", CallSiteGetFunction,
728 "getFunctionName", CallSiteGetFunctionName, 726 "getFunctionName", CallSiteGetFunctionName,
729 "getMethodName", CallSiteGetMethodName, 727 "getMethodName", CallSiteGetMethodName,
730 "getFileName", CallSiteGetFileName, 728 "getFileName", CallSiteGetFileName,
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 } catch (e) { 835 } catch (e) {
838 try { 836 try {
839 line = "<error: " + e + ">"; 837 line = "<error: " + e + ">";
840 } catch (ee) { 838 } catch (ee) {
841 // Any code that reaches this point is seriously nasty! 839 // Any code that reaches this point is seriously nasty!
842 line = "<error>"; 840 line = "<error>";
843 } 841 }
844 } 842 }
845 lines.push(" at " + line); 843 lines.push(" at " + line);
846 } 844 }
847 return %_CallFunction(lines, "\n", ArrayJoin); 845 return %_CallFunction(lines, "\n", $arrayJoin);
848 } 846 }
849 847
850 848
851 function GetTypeName(receiver, requireConstructor) { 849 function GetTypeName(receiver, requireConstructor) {
852 var constructor = receiver.constructor; 850 var constructor = receiver.constructor;
853 if (!constructor) { 851 if (!constructor) {
854 return requireConstructor ? null : 852 return requireConstructor ? null :
855 %_CallFunction(receiver, NoSideEffectsObjectToString); 853 %_CallFunction(receiver, NoSideEffectsObjectToString);
856 } 854 }
857 var constructorName = constructor.name; 855 var constructorName = constructor.name;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 var StackTraceSetter = function(v) { 895 var StackTraceSetter = function(v) {
898 if (HAS_PRIVATE(this, $stackTraceSymbol)) { 896 if (HAS_PRIVATE(this, $stackTraceSymbol)) {
899 SET_PRIVATE(this, $stackTraceSymbol, UNDEFINED); 897 SET_PRIVATE(this, $stackTraceSymbol, UNDEFINED);
900 SET_PRIVATE(this, formatted_stack_trace_symbol, v); 898 SET_PRIVATE(this, formatted_stack_trace_symbol, v);
901 } 899 }
902 }; 900 };
903 901
904 902
905 // Use a dummy function since we do not actually want to capture a stack trace 903 // Use a dummy function since we do not actually want to capture a stack trace
906 // when constructing the initial Error prototytpes. 904 // when constructing the initial Error prototytpes.
907 var captureStackTrace = function() {}; 905 var captureStackTrace = function captureStackTrace(obj, cons_opt) {
906 // Define accessors first, as this may fail and throw.
907 $objectDefineProperty(obj, 'stack', { get: StackTraceGetter,
908 set: StackTraceSetter,
909 configurable: true });
910 %CollectStackTrace(obj, cons_opt ? cons_opt : captureStackTrace);
911 }
908 912
909 913
910 // Define special error type constructors. 914 // Define special error type constructors.
911 function DefineError(global, f) { 915 function DefineError(global, f) {
912 // Store the error function in both the global object 916 // Store the error function in both the global object
913 // and the runtime object. The function is fetched 917 // and the runtime object. The function is fetched
914 // from the runtime object when throwing errors from 918 // from the runtime object when throwing errors from
915 // within the runtime system to avoid strange side 919 // within the runtime system to avoid strange side
916 // effects when overwriting the error functions from 920 // effects when overwriting the error functions from
917 // user code. 921 // user code.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
952 }; 956 };
953 957
954 GlobalError = DefineError(global, function Error() { }); 958 GlobalError = DefineError(global, function Error() { });
955 GlobalEvalError = DefineError(global, function EvalError() { }); 959 GlobalEvalError = DefineError(global, function EvalError() { });
956 GlobalRangeError = DefineError(global, function RangeError() { }); 960 GlobalRangeError = DefineError(global, function RangeError() { });
957 GlobalReferenceError = DefineError(global, function ReferenceError() { }); 961 GlobalReferenceError = DefineError(global, function ReferenceError() { });
958 GlobalSyntaxError = DefineError(global, function SyntaxError() { }); 962 GlobalSyntaxError = DefineError(global, function SyntaxError() { });
959 GlobalTypeError = DefineError(global, function TypeError() { }); 963 GlobalTypeError = DefineError(global, function TypeError() { });
960 GlobalURIError = DefineError(global, function URIError() { }); 964 GlobalURIError = DefineError(global, function URIError() { });
961 965
966
967 GlobalError.captureStackTrace = captureStackTrace;
968
962 %AddNamedProperty(GlobalError.prototype, 'message', '', DONT_ENUM); 969 %AddNamedProperty(GlobalError.prototype, 'message', '', DONT_ENUM);
963 970
964 // Global list of error objects visited during ErrorToString. This is 971 // Global list of error objects visited during ErrorToString. This is
965 // used to detect cycles in error toString formatting. 972 // used to detect cycles in error toString formatting.
966 var visited_errors = new InternalArray(); 973 var visited_errors = new InternalArray();
967 var cyclic_error_marker = new GlobalObject(); 974 var cyclic_error_marker = new GlobalObject();
968 975
969 function GetPropertyWithoutInvokingMonkeyGetters(error, name) { 976 function GetPropertyWithoutInvokingMonkeyGetters(error, name) {
970 var current = error; 977 var current = error;
971 // Climb the prototype chain until we find the holder. 978 // Climb the prototype chain until we find the holder.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 } catch(e) { 1023 } catch(e) {
1017 // If this error message was encountered already return the empty 1024 // If this error message was encountered already return the empty
1018 // string for it instead of recursively formatting it. 1025 // string for it instead of recursively formatting it.
1019 if (e === cyclic_error_marker) { 1026 if (e === cyclic_error_marker) {
1020 return ''; 1027 return '';
1021 } 1028 }
1022 throw e; 1029 throw e;
1023 } 1030 }
1024 } 1031 }
1025 1032
1026 utils.InstallFunctions(GlobalError.prototype, DONT_ENUM, 1033 $installFunctions(GlobalError.prototype, DONT_ENUM,
1027 ['toString', ErrorToString]); 1034 ['toString', ErrorToString]);
1028 1035
1029 $errorToString = ErrorToString; 1036 $errorToString = ErrorToString;
1030 $getStackTraceLine = GetStackTraceLine; 1037 $getStackTraceLine = GetStackTraceLine;
1031 $messageGetPositionInLine = GetPositionInLine; 1038 $messageGetPositionInLine = GetPositionInLine;
1032 $messageGetLineNumber = GetLineNumber; 1039 $messageGetLineNumber = GetLineNumber;
1033 $messageGetSourceLine = GetSourceLine; 1040 $messageGetSourceLine = GetSourceLine;
1034 $noSideEffectToString = NoSideEffectToString; 1041 $noSideEffectToString = NoSideEffectToString;
1035 $toDetailString = ToDetailString; 1042 $toDetailString = ToDetailString;
1036 1043
1037 $Error = GlobalError; 1044 $Error = GlobalError;
(...skipping 25 matching lines...) Expand all
1063 } 1070 }
1064 1071
1065 MakeTypeError = function(type, arg0, arg1, arg2) { 1072 MakeTypeError = function(type, arg0, arg1, arg2) {
1066 return MakeGenericError(GlobalTypeError, type, arg0, arg1, arg2); 1073 return MakeGenericError(GlobalTypeError, type, arg0, arg1, arg2);
1067 } 1074 }
1068 1075
1069 MakeURIError = function() { 1076 MakeURIError = function() {
1070 return MakeGenericError(GlobalURIError, kURIMalformed); 1077 return MakeGenericError(GlobalURIError, kURIMalformed);
1071 } 1078 }
1072 1079
1073 // Boilerplate for exceptions for stack overflows. Used from 1080 //Boilerplate for exceptions for stack overflows. Used from
1074 // Isolate::StackOverflow(). 1081 //Isolate::StackOverflow().
1075 $stackOverflowBoilerplate = MakeRangeError(kStackOverflow); 1082 $stackOverflowBoilerplate = MakeRangeError(kStackOverflow);
1076 %DefineAccessorPropertyUnchecked($stackOverflowBoilerplate, 'stack', 1083 %DefineAccessorPropertyUnchecked($stackOverflowBoilerplate, 'stack',
1077 StackTraceGetter, StackTraceSetter, 1084 StackTraceGetter, StackTraceSetter, DONT_ENUM);
1078 DONT_ENUM);
1079 1085
1080 // Define actual captureStackTrace function after everything has been set up. 1086 })
1081 captureStackTrace = function captureStackTrace(obj, cons_opt) {
1082 // Define accessors first, as this may fail and throw.
1083 ObjectDefineProperty(obj, 'stack', { get: StackTraceGetter,
1084 set: StackTraceSetter,
1085 configurable: true });
1086 %CollectStackTrace(obj, cons_opt ? cons_opt : captureStackTrace);
1087 };
1088
1089 GlobalError.captureStackTrace = captureStackTrace;
1090
1091 });
OLDNEW
« no previous file with comments | « src/math.js ('k') | src/object-observe.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698