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

Side by Side Diff: src/messages.js

Issue 450034: Remove the last context dependent reference from the Script object... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years 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 | Annotate | Revision Log
OLDNEW
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 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 return IS_GLOBAL(this.receiver); 622 return IS_GLOBAL(this.receiver);
623 }; 623 };
624 624
625 CallSite.prototype.isEval = function () { 625 CallSite.prototype.isEval = function () {
626 var script = %FunctionGetScript(this.fun); 626 var script = %FunctionGetScript(this.fun);
627 return script && script.compilation_type == 1; 627 return script && script.compilation_type == 1;
628 }; 628 };
629 629
630 CallSite.prototype.getEvalOrigin = function () { 630 CallSite.prototype.getEvalOrigin = function () {
631 var script = %FunctionGetScript(this.fun); 631 var script = %FunctionGetScript(this.fun);
632 if (!script || script.compilation_type != 1) 632 return FormatEvalOrigin(script);
633 return null;
634 return new CallSite(null, script.eval_from_function,
635 script.eval_from_position);
636 }; 633 };
637 634
638 CallSite.prototype.getFunction = function () { 635 CallSite.prototype.getFunction = function () {
639 return this.fun; 636 return this.fun;
640 }; 637 };
641 638
642 CallSite.prototype.getFunctionName = function () { 639 CallSite.prototype.getFunctionName = function () {
643 // See if the function knows its own name 640 // See if the function knows its own name
644 var name = this.fun.name; 641 var name = this.fun.name;
645 if (name) { 642 if (name) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 }; 690 };
694 691
695 CallSite.prototype.getColumnNumber = function () { 692 CallSite.prototype.getColumnNumber = function () {
696 if (this.pos == -1) 693 if (this.pos == -1)
697 return null; 694 return null;
698 var script = %FunctionGetScript(this.fun); 695 var script = %FunctionGetScript(this.fun);
699 var location = null; 696 var location = null;
700 if (script) { 697 if (script) {
701 location = script.locationFromPosition(this.pos, true); 698 location = script.locationFromPosition(this.pos, true);
702 } 699 }
703 return location ? location.column : null; 700 return location ? location.column + 1: null;
704 }; 701 };
705 702
706 CallSite.prototype.isNative = function () { 703 CallSite.prototype.isNative = function () {
707 var script = %FunctionGetScript(this.fun); 704 var script = %FunctionGetScript(this.fun);
708 return script ? (script.type == 0) : false; 705 return script ? (script.type == 0) : false;
709 }; 706 };
710 707
711 CallSite.prototype.getPosition = function () { 708 CallSite.prototype.getPosition = function () {
712 return this.pos; 709 return this.pos;
713 }; 710 };
714 711
715 CallSite.prototype.isConstructor = function () { 712 CallSite.prototype.isConstructor = function () {
716 var constructor = this.receiver ? this.receiver.constructor : null; 713 var constructor = this.receiver ? this.receiver.constructor : null;
717 if (!constructor) 714 if (!constructor)
718 return false; 715 return false;
719 return this.fun === constructor; 716 return this.fun === constructor;
720 }; 717 };
721 718
719 function FormatEvalOrigin(script) {
720 var eval_origin = "";
721 if (script.eval_from_function_name) {
722 eval_origin += script.eval_from_function_name;
723 } else {
724 eval_origin += "<anonymous>";
725 }
726
727 var eval_from_script = script.eval_from_script;
728 if (eval_from_script) {
729 if (eval_from_script.compilation_type == 1) {
730 // eval script originated from another eval.
731 eval_origin += " (eval at " + FormatEvalOrigin(eval_from_script) + ")";
732 } else {
733 // eval script originated from "real" scource.
734 if (eval_from_script.name) {
735 eval_origin += " (" + eval_from_script.name;
736 var location = eval_from_script.locationFromPosition(script.eval_from_sc ript_position, true);
737 if (location) {
738 eval_origin += ":" + (location.line + 1);
739 eval_origin += ":" + (location.column + 1);
740 }
741 eval_origin += ")"
742 } else {
743 eval_origin += " (unknown source)";
744 }
745 }
746 }
747
748 return eval_origin;
749 };
750
722 function FormatSourcePosition(frame) { 751 function FormatSourcePosition(frame) {
723 var fileLocation = ""; 752 var fileLocation = "";
724 if (frame.isNative()) { 753 if (frame.isNative()) {
725 fileLocation = "native"; 754 fileLocation = "native";
726 } else if (frame.isEval()) { 755 } else if (frame.isEval()) {
727 fileLocation = "eval at " + FormatSourcePosition(frame.getEvalOrigin()); 756 fileLocation = "eval at " + frame.getEvalOrigin();
728 } else { 757 } else {
729 var fileName = frame.getFileName(); 758 var fileName = frame.getFileName();
730 if (fileName) { 759 if (fileName) {
731 fileLocation += fileName; 760 fileLocation += fileName;
732 var lineNumber = frame.getLineNumber(); 761 var lineNumber = frame.getLineNumber();
733 if (lineNumber != null) { 762 if (lineNumber != null) {
734 fileLocation += ":" + lineNumber; 763 fileLocation += ":" + lineNumber;
735 var columnNumber = frame.getColumnNumber(); 764 var columnNumber = frame.getColumnNumber();
736 if (columnNumber) { 765 if (columnNumber) {
737 fileLocation += ":" + columnNumber; 766 fileLocation += ":" + columnNumber;
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 return this.name + ": " + FormatMessage({ type: type, args: this.arguments } ); 921 return this.name + ": " + FormatMessage({ type: type, args: this.arguments } );
893 } 922 }
894 var message = this.message; 923 var message = this.message;
895 return this.name + (message ? (": " + message) : ""); 924 return this.name + (message ? (": " + message) : "");
896 }, DONT_ENUM); 925 }, DONT_ENUM);
897 926
898 927
899 // Boilerplate for exceptions for stack overflows. Used from 928 // Boilerplate for exceptions for stack overflows. Used from
900 // Top::StackOverflow(). 929 // Top::StackOverflow().
901 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []); 930 const kStackOverflowBoilerplate = MakeRangeError('stack_overflow', []);
OLDNEW
« src/compiler.cc ('K') | « src/factory.cc ('k') | src/mirror-delay.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698