OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 14 matching lines...) Expand all Loading... |
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | 27 |
28 | 28 |
29 // ------------------------------------------------------------------- | 29 // ------------------------------------------------------------------- |
30 | 30 |
31 // Lazily initialized. | 31 // Lazily initialized. |
32 var kVowelSounds = 0; | 32 var kVowelSounds = 0; |
33 var kCapitalVowelSounds = 0; | 33 var kCapitalVowelSounds = 0; |
34 | 34 |
| 35 // If this object gets passed to an error constructor the error will |
| 36 // get an accessor for .message that constructs a descriptive error |
| 37 // message on access. |
| 38 var kAddMessageAccessorsMarker = { }; |
| 39 |
35 | 40 |
36 function GetInstanceName(cons) { | 41 function GetInstanceName(cons) { |
37 if (cons.length == 0) { | 42 if (cons.length == 0) { |
38 return ""; | 43 return ""; |
39 } | 44 } |
40 var first = %StringToLowerCase(StringCharAt.call(cons, 0)); | 45 var first = %StringToLowerCase(StringCharAt.call(cons, 0)); |
41 if (kVowelSounds === 0) { | 46 if (kVowelSounds === 0) { |
42 kVowelSounds = {a: true, e: true, i: true, o: true, u: true, y: true}; | 47 kVowelSounds = {a: true, e: true, i: true, o: true, u: true, y: true}; |
43 kCapitalVowelSounds = {a: true, e: true, i: true, o: true, u: true, h: true, | 48 kCapitalVowelSounds = {a: true, e: true, i: true, o: true, u: true, h: true, |
44 f: true, l: true, m: true, n: true, r: true, s: true, x: true, y: true}; | 49 f: true, l: true, m: true, n: true, r: true, s: true, x: true, y: true}; |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
558 } | 563 } |
559 | 564 |
560 | 565 |
561 function GetStackTraceLine(recv, fun, pos, isGlobal) { | 566 function GetStackTraceLine(recv, fun, pos, isGlobal) { |
562 return FormatSourcePosition(new CallSite(recv, fun, pos)); | 567 return FormatSourcePosition(new CallSite(recv, fun, pos)); |
563 } | 568 } |
564 | 569 |
565 // ---------------------------------------------------------------------------- | 570 // ---------------------------------------------------------------------------- |
566 // Error implementation | 571 // Error implementation |
567 | 572 |
568 // If this object gets passed to an error constructor the error will | |
569 // get an accessor for .message that constructs a descriptive error | |
570 // message on access. | |
571 var kAddMessageAccessorsMarker = { }; | |
572 | |
573 // Defines accessors for a property that is calculated the first time | 573 // Defines accessors for a property that is calculated the first time |
574 // the property is read. | 574 // the property is read. |
575 function DefineOneShotAccessor(obj, name, fun) { | 575 function DefineOneShotAccessor(obj, name, fun) { |
576 // Note that the accessors consistently operate on 'obj', not 'this'. | 576 // Note that the accessors consistently operate on 'obj', not 'this'. |
577 // Since the object may occur in someone else's prototype chain we | 577 // Since the object may occur in someone else's prototype chain we |
578 // can't rely on 'this' being the same as 'obj'. | 578 // can't rely on 'this' being the same as 'obj'. |
579 var hasBeenSet = false; | 579 var hasBeenSet = false; |
580 var value; | 580 var value; |
581 obj.__defineGetter__(name, function () { | 581 obj.__defineGetter__(name, function () { |
582 if (hasBeenSet) { | 582 if (hasBeenSet) { |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 lines.push(error.toString()); | 774 lines.push(error.toString()); |
775 } catch (e) { | 775 } catch (e) { |
776 try { | 776 try { |
777 lines.push("<error: " + e + ">"); | 777 lines.push("<error: " + e + ">"); |
778 } catch (ee) { | 778 } catch (ee) { |
779 lines.push("<error>"); | 779 lines.push("<error>"); |
780 } | 780 } |
781 } | 781 } |
782 for (var i = 0; i < frames.length; i++) { | 782 for (var i = 0; i < frames.length; i++) { |
783 var frame = frames[i]; | 783 var frame = frames[i]; |
| 784 var line; |
784 try { | 785 try { |
785 var line = FormatSourcePosition(frame); | 786 line = FormatSourcePosition(frame); |
786 } catch (e) { | 787 } catch (e) { |
787 try { | 788 try { |
788 var line = "<error: " + e + ">"; | 789 line = "<error: " + e + ">"; |
789 } catch (ee) { | 790 } catch (ee) { |
790 // Any code that reaches this point is seriously nasty! | 791 // Any code that reaches this point is seriously nasty! |
791 var line = "<error>"; | 792 line = "<error>"; |
792 } | 793 } |
793 } | 794 } |
794 lines.push(" at " + line); | 795 lines.push(" at " + line); |
795 } | 796 } |
796 return lines.join("\n"); | 797 return lines.join("\n"); |
797 } | 798 } |
798 | 799 |
799 function FormatRawStackTrace(error, raw_stack) { | 800 function FormatRawStackTrace(error, raw_stack) { |
800 var frames = [ ]; | 801 var frames = [ ]; |
801 for (var i = 0; i < raw_stack.length; i += 3) { | 802 for (var i = 0; i < raw_stack.length; i += 3) { |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
887 return this.name + ": " + FormatMessage({ type: type, args: this.arguments }
); | 888 return this.name + ": " + FormatMessage({ type: type, args: this.arguments }
); |
888 } | 889 } |
889 var message = this.message; | 890 var message = this.message; |
890 return this.name + (message ? (": " + message) : ""); | 891 return this.name + (message ? (": " + message) : ""); |
891 }, DONT_ENUM); | 892 }, DONT_ENUM); |
892 | 893 |
893 | 894 |
894 // Boilerplate for exceptions for stack overflows. Used from | 895 // Boilerplate for exceptions for stack overflows. Used from |
895 // Top::StackOverflow(). | 896 // Top::StackOverflow(). |
896 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); | 897 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); |
OLD | NEW |