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 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 var script = %FunctionGetScript(this.fun); | 700 var script = %FunctionGetScript(this.fun); |
701 if (script && script.compilation_type == COMPILATION_TYPE_EVAL) | 701 if (script && script.compilation_type == COMPILATION_TYPE_EVAL) |
702 return "eval"; | 702 return "eval"; |
703 return null; | 703 return null; |
704 }; | 704 }; |
705 | 705 |
706 CallSite.prototype.getMethodName = function () { | 706 CallSite.prototype.getMethodName = function () { |
707 // See if we can find a unique property on the receiver that holds | 707 // See if we can find a unique property on the receiver that holds |
708 // this function. | 708 // this function. |
709 var ownName = this.fun.name; | 709 var ownName = this.fun.name; |
710 if (ownName && this.receiver && this.receiver[ownName] === this.fun) | 710 if (ownName && this.receiver && |
| 711 (ObjectLookupGetter.call(this.receiver, ownName) === this.fun || |
| 712 ObjectLookupSetter.call(this.receiver, ownName) === this.fun || |
| 713 this.receiver[ownName] === this.fun)) { |
711 // To handle DontEnum properties we guess that the method has | 714 // To handle DontEnum properties we guess that the method has |
712 // the same name as the function. | 715 // the same name as the function. |
713 return ownName; | 716 return ownName; |
| 717 } |
714 var name = null; | 718 var name = null; |
715 for (var prop in this.receiver) { | 719 for (var prop in this.receiver) { |
716 if (this.receiver[prop] === this.fun) { | 720 if (this.receiver.__lookupGetter__(prop) === this.fun || |
717 // If we find more than one match bail out to avoid confusion | 721 this.receiver.__lookupSetter__(prop) === this.fun || |
| 722 (!this.receiver.__lookupGetter__(prop) && this.receiver[prop] === this.f
un)) { |
| 723 // If we find more than one match bail out to avoid confusion. |
718 if (name) | 724 if (name) |
719 return null; | 725 return null; |
720 name = prop; | 726 name = prop; |
721 } | 727 } |
722 } | 728 } |
723 if (name) | 729 if (name) |
724 return name; | 730 return name; |
725 return null; | 731 return null; |
726 }; | 732 }; |
727 | 733 |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
973 return this.name + ": " + FormatMessage({ type: type, args: this.arguments }
); | 979 return this.name + ": " + FormatMessage({ type: type, args: this.arguments }
); |
974 } | 980 } |
975 var message = this.message; | 981 var message = this.message; |
976 return this.name + (message ? (": " + message) : ""); | 982 return this.name + (message ? (": " + message) : ""); |
977 }, DONT_ENUM); | 983 }, DONT_ENUM); |
978 | 984 |
979 | 985 |
980 // Boilerplate for exceptions for stack overflows. Used from | 986 // Boilerplate for exceptions for stack overflows. Used from |
981 // Top::StackOverflow(). | 987 // Top::StackOverflow(). |
982 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); | 988 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); |
OLD | NEW |