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

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

Issue 1909353002: [wasm] Make wasm info available on the stack trace (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@wasm-offset-table-3
Patch Set: more gcmole problems Created 4 years, 8 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
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 (function(global, utils) { 7 (function(global, utils) {
8 8
9 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
10 10
11 // ------------------------------------------------------------------- 11 // -------------------------------------------------------------------
12 // Imports 12 // Imports
13 13
14 var ArrayJoin; 14 var ArrayJoin;
15 var Bool16x8ToString; 15 var Bool16x8ToString;
16 var Bool32x4ToString; 16 var Bool32x4ToString;
17 var Bool8x16ToString; 17 var Bool8x16ToString;
18 var callSiteReceiverSymbol = 18 var callSiteReceiverSymbol =
19 utils.ImportNow("call_site_receiver_symbol"); 19 utils.ImportNow("call_site_receiver_symbol");
20 var callSiteFunctionSymbol = 20 var callSiteFunctionSymbol =
21 utils.ImportNow("call_site_function_symbol"); 21 utils.ImportNow("call_site_function_symbol");
22 var callSitePositionSymbol = 22 var callSitePositionSymbol =
23 utils.ImportNow("call_site_position_symbol"); 23 utils.ImportNow("call_site_position_symbol");
24 var callSiteStrictSymbol = 24 var callSiteStrictSymbol =
25 utils.ImportNow("call_site_strict_symbol"); 25 utils.ImportNow("call_site_strict_symbol");
26 var callSiteWasmObjectSymbol =
27 utils.ImportNow("call_site_wasm_obj_symbol");
28 var callSiteWasmFunctionIndexSymbol =
29 utils.ImportNow("call_site_wasm_func_index_symbol");
26 var Float32x4ToString; 30 var Float32x4ToString;
27 var formattedStackTraceSymbol = 31 var formattedStackTraceSymbol =
28 utils.ImportNow("formatted_stack_trace_symbol"); 32 utils.ImportNow("formatted_stack_trace_symbol");
29 var GlobalObject = global.Object; 33 var GlobalObject = global.Object;
30 var Int16x8ToString; 34 var Int16x8ToString;
31 var Int32x4ToString; 35 var Int32x4ToString;
32 var Int8x16ToString; 36 var Int8x16ToString;
33 var InternalArray = utils.InternalArray; 37 var InternalArray = utils.InternalArray;
34 var internalErrorSymbol = utils.ImportNow("internal_error_symbol"); 38 var internalErrorSymbol = utils.ImportNow("internal_error_symbol");
35 var ObjectDefineProperty; 39 var ObjectDefineProperty;
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 552
549 553
550 function GetStackTraceLine(recv, fun, pos, isGlobal) { 554 function GetStackTraceLine(recv, fun, pos, isGlobal) {
551 return new CallSite(recv, fun, pos, false).toString(); 555 return new CallSite(recv, fun, pos, false).toString();
552 } 556 }
553 557
554 // ---------------------------------------------------------------------------- 558 // ----------------------------------------------------------------------------
555 // Error implementation 559 // Error implementation
556 560
557 function CallSite(receiver, fun, pos, strict_mode) { 561 function CallSite(receiver, fun, pos, strict_mode) {
558 if (!IS_FUNCTION(fun)) { 562 if (!IS_FUNCTION(fun) && !IS_NUMBER(fun)) {
559 throw MakeTypeError(kCallSiteExpectsFunction, typeof fun); 563 throw MakeTypeError(kCallSiteExpectsFunction, typeof fun);
560 } 564 }
561 565
562 if (IS_UNDEFINED(new.target)) { 566 if (IS_UNDEFINED(new.target)) {
563 return new CallSite(receiver, fun, pos, strict_mode); 567 return new CallSite(receiver, fun, pos, strict_mode);
564 } 568 }
565 569
566 SET_PRIVATE(this, callSiteReceiverSymbol, receiver); 570 if (IS_FUNCTION(fun)) {
567 SET_PRIVATE(this, callSiteFunctionSymbol, fun); 571 SET_PRIVATE(this, callSiteReceiverSymbol, receiver);
572 SET_PRIVATE(this, callSiteFunctionSymbol, fun);
573 } else {
574 SET_PRIVATE(this, callSiteWasmObjectSymbol, receiver);
575 SET_PRIVATE(this, callSiteWasmFunctionIndexSymbol, TO_UINT32(fun));
576 }
568 SET_PRIVATE(this, callSitePositionSymbol, TO_INT32(pos)); 577 SET_PRIVATE(this, callSitePositionSymbol, TO_INT32(pos));
569 SET_PRIVATE(this, callSiteStrictSymbol, TO_BOOLEAN(strict_mode)); 578 SET_PRIVATE(this, callSiteStrictSymbol, TO_BOOLEAN(strict_mode));
570 } 579 }
571 580
572 function CheckCallSite(obj, name) { 581 function CheckCallSite(obj, name) {
573 if (!IS_RECEIVER(obj) || !HAS_PRIVATE(obj, callSiteFunctionSymbol)) { 582 if (!IS_RECEIVER(obj) || !HAS_PRIVATE(obj, callSitePositionSymbol)) {
574 throw MakeTypeError(kCallSiteMethod, name); 583 throw MakeTypeError(kCallSiteMethod, name);
575 } 584 }
576 } 585 }
577 586
578 function CallSiteGetThis() { 587 function CallSiteGetThis() {
579 CheckCallSite(this, "getThis"); 588 CheckCallSite(this, "getThis");
580 return GET_PRIVATE(this, callSiteStrictSymbol) 589 return GET_PRIVATE(this, callSiteStrictSymbol)
581 ? UNDEFINED : GET_PRIVATE(this, callSiteReceiverSymbol); 590 ? UNDEFINED : GET_PRIVATE(this, callSiteReceiverSymbol);
582 } 591 }
583 592
(...skipping 30 matching lines...) Expand all
614 } 623 }
615 624
616 function CallSiteGetScriptNameOrSourceURL() { 625 function CallSiteGetScriptNameOrSourceURL() {
617 CheckCallSite(this, "getScriptNameOrSourceURL"); 626 CheckCallSite(this, "getScriptNameOrSourceURL");
618 return %CallSiteGetScriptNameOrSourceUrlRT(this); 627 return %CallSiteGetScriptNameOrSourceUrlRT(this);
619 } 628 }
620 629
621 function CallSiteGetFunctionName() { 630 function CallSiteGetFunctionName() {
622 // See if the function knows its own name 631 // See if the function knows its own name
623 CheckCallSite(this, "getFunctionName"); 632 CheckCallSite(this, "getFunctionName");
633 if (HAS_PRIVATE(this, callSiteWasmObjectSymbol)) {
634 var wasm = GET_PRIVATE(this, callSiteWasmObjectSymbol);
635 var func_index = GET_PRIVATE(this, callSiteWasmFunctionIndexSymbol);
636 return IS_UNDEFINED(wasm) ? "<WASM>" :
637 IS_STRING(wasm) ? wasm : %WasmGetFunctionName(wasm, func_index);
638 }
624 return %CallSiteGetFunctionNameRT(this); 639 return %CallSiteGetFunctionNameRT(this);
625 } 640 }
626 641
627 function CallSiteGetMethodName() { 642 function CallSiteGetMethodName() {
628 // See if we can find a unique property on the receiver that holds 643 // See if we can find a unique property on the receiver that holds
629 // this function. 644 // this function.
630 CheckCallSite(this, "getMethodName"); 645 CheckCallSite(this, "getMethodName");
631 return %CallSiteGetMethodNameRT(this); 646 return %CallSiteGetMethodNameRT(this);
632 } 647 }
633 648
(...skipping 15 matching lines...) Expand all
649 function CallSiteIsNative() { 664 function CallSiteIsNative() {
650 CheckCallSite(this, "isNative"); 665 CheckCallSite(this, "isNative");
651 return %CallSiteIsNativeRT(this); 666 return %CallSiteIsNativeRT(this);
652 } 667 }
653 668
654 function CallSiteIsConstructor() { 669 function CallSiteIsConstructor() {
655 CheckCallSite(this, "isConstructor"); 670 CheckCallSite(this, "isConstructor");
656 return %CallSiteIsConstructorRT(this); 671 return %CallSiteIsConstructorRT(this);
657 } 672 }
658 673
674 function CallSiteIsWasm() {
675 CheckCallSite(this, "isWasm");
676 return HAS_PRIVATE(this, callSiteWasmObjectSymbol);
677 }
678
679 function CallSiteGetWasmObject() {
680 CheckCallSite(this, "getWasmObject");
681 return GET_PRIVATE(this, callSiteWasmObjectSymbol);
682 }
683
684 function CallSiteGetWasmFunctionIndex() {
685 CheckCallSite(this, "getWasmFunctionIndex");
686 return GET_PRIVATE(this, callSiteWasmFunctionIndexSymbol);
687 }
688
659 function CallSiteToString() { 689 function CallSiteToString() {
690 if (this.isWasm()) {
691 return this.getFunctionName() + " (<WASM>:" + this.getPosition() + ")";
692 }
693
660 var fileName; 694 var fileName;
661 var fileLocation = ""; 695 var fileLocation = "";
662 if (this.isNative()) { 696 if (this.isNative()) {
663 fileLocation = "native"; 697 fileLocation = "native";
664 } else { 698 } else {
665 fileName = this.getScriptNameOrSourceURL(); 699 fileName = this.getScriptNameOrSourceURL();
666 if (!fileName && this.isEval()) { 700 if (!fileName && this.isEval()) {
667 fileLocation = this.getEvalOrigin(); 701 fileLocation = this.getEvalOrigin();
668 fileLocation += ", "; // Expecting source position to follow. 702 fileLocation += ", "; // Expecting source position to follow.
669 } 703 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 "getScriptNameOrSourceURL", CallSiteGetScriptNameOrSourceURL, 764 "getScriptNameOrSourceURL", CallSiteGetScriptNameOrSourceURL,
731 "getFunction", CallSiteGetFunction, 765 "getFunction", CallSiteGetFunction,
732 "getFunctionName", CallSiteGetFunctionName, 766 "getFunctionName", CallSiteGetFunctionName,
733 "getMethodName", CallSiteGetMethodName, 767 "getMethodName", CallSiteGetMethodName,
734 "getFileName", CallSiteGetFileName, 768 "getFileName", CallSiteGetFileName,
735 "getLineNumber", CallSiteGetLineNumber, 769 "getLineNumber", CallSiteGetLineNumber,
736 "getColumnNumber", CallSiteGetColumnNumber, 770 "getColumnNumber", CallSiteGetColumnNumber,
737 "isNative", CallSiteIsNative, 771 "isNative", CallSiteIsNative,
738 "getPosition", CallSiteGetPosition, 772 "getPosition", CallSiteGetPosition,
739 "isConstructor", CallSiteIsConstructor, 773 "isConstructor", CallSiteIsConstructor,
774 "isWasm", CallSiteIsWasm,
775 "getWasmObject", CallSiteGetWasmObject,
776 "getWasmFunctionIndex", CallSiteGetWasmFunctionIndex,
740 "toString", CallSiteToString 777 "toString", CallSiteToString
741 ]); 778 ]);
742 779
743 780
744 function FormatEvalOrigin(script) { 781 function FormatEvalOrigin(script) {
745 var sourceURL = script.nameOrSourceURL(); 782 var sourceURL = script.nameOrSourceURL();
746 if (sourceURL) { 783 if (sourceURL) {
747 return sourceURL; 784 return sourceURL;
748 } 785 }
749 786
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 831
795 832
796 function GetStackFrames(raw_stack) { 833 function GetStackFrames(raw_stack) {
797 var frames = new InternalArray(); 834 var frames = new InternalArray();
798 var sloppy_frames = raw_stack[0]; 835 var sloppy_frames = raw_stack[0];
799 for (var i = 1; i < raw_stack.length; i += 4) { 836 for (var i = 1; i < raw_stack.length; i += 4) {
800 var recv = raw_stack[i]; 837 var recv = raw_stack[i];
801 var fun = raw_stack[i + 1]; 838 var fun = raw_stack[i + 1];
802 var code = raw_stack[i + 2]; 839 var code = raw_stack[i + 2];
803 var pc = raw_stack[i + 3]; 840 var pc = raw_stack[i + 3];
804 var pos = %_IsSmi(code) ? code : %FunctionGetPositionForOffset(code, pc); 841 var pos = %FunctionGetPositionForOffset(code, pc);
805 sloppy_frames--; 842 sloppy_frames--;
806 frames.push(new CallSite(recv, fun, pos, (sloppy_frames < 0))); 843 frames.push(new CallSite(recv, fun, pos, (sloppy_frames < 0)));
807 } 844 }
808 return frames; 845 return frames;
809 } 846 }
810 847
811 848
812 // Flag to prevent recursive call of Error.prepareStackTrace. 849 // Flag to prevent recursive call of Error.prepareStackTrace.
813 var formatting_custom_stack_trace = false; 850 var formatting_custom_stack_trace = false;
814 851
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 utils.Export(function(to) { 1054 utils.Export(function(to) {
1018 to.ErrorToString = ErrorToString; 1055 to.ErrorToString = ErrorToString;
1019 to.MakeError = MakeError; 1056 to.MakeError = MakeError;
1020 to.MakeRangeError = MakeRangeError; 1057 to.MakeRangeError = MakeRangeError;
1021 to.MakeSyntaxError = MakeSyntaxError; 1058 to.MakeSyntaxError = MakeSyntaxError;
1022 to.MakeTypeError = MakeTypeError; 1059 to.MakeTypeError = MakeTypeError;
1023 to.MakeURIError = MakeURIError; 1060 to.MakeURIError = MakeURIError;
1024 }); 1061 });
1025 1062
1026 }); 1063 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698