Bug 1859954 - Use XP_DARWIN rather than XP_MACOS in PHC r=glandium
[gecko.git] / devtools / shared / wasm-source-map.js
blob716c794db2418c0229ff1915f8046658fe43dfc6
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 "use strict";
7 /**
8  * SourceMapConsumer for WebAssembly source maps. It transposes columns with
9  * lines, which allows mapping data to be used with SpiderMonkey Debugger API.
10  */
11 class WasmRemap {
12   /**
13    * @param map SourceMapConsumer
14    */
15   constructor(map) {
16     this._map = map;
17     this.version = map.version;
18     this.file = map.file;
19     this._computeColumnSpans = false;
20   }
22   get sources() {
23     return this._map.sources;
24   }
26   get sourceRoot() {
27     return this._map.sourceRoot;
28   }
30   /**
31    * @param url string
32    */
33   set sourceRoot(url) {
34     // important, since sources are using this.
35     this._map.sourceRoot = url;
36   }
38   get names() {
39     return this._map.names;
40   }
42   get sourcesContent() {
43     return this._map.sourcesContent;
44   }
46   get mappings() {
47     throw new Error("not supported");
48   }
50   computeColumnSpans() {
51     this._computeColumnSpans = true;
52   }
54   originalPositionFor(generatedPosition) {
55     const result = this._map.originalPositionFor({
56       line: 1,
57       column: generatedPosition.line,
58       bias: generatedPosition.bias,
59     });
60     return result;
61   }
63   _remapGeneratedPosition(position) {
64     const generatedPosition = {
65       line: position.column,
66       column: 0,
67     };
68     if (this._computeColumnSpans) {
69       generatedPosition.lastColumn = Infinity;
70     }
71     return generatedPosition;
72   }
74   generatedPositionFor(originalPosition) {
75     const position = this._map.generatedPositionFor(originalPosition);
76     return this._remapGeneratedPosition(position);
77   }
79   allGeneratedPositionsFor(originalPosition) {
80     const positions = this._map.allGeneratedPositionsFor(originalPosition);
81     return positions.map(position => {
82       return this._remapGeneratedPosition(position);
83     });
84   }
86   hasContentsOfAllSources() {
87     return this._map.hasContentsOfAllSources();
88   }
90   sourceContentFor(source, returnNullOnMissing) {
91     return this._map.sourceContentFor(source, returnNullOnMissing);
92   }
94   eachMapping(callback, context, order) {
95     this._map.eachMapping(
96       entry => {
97         const { source, generatedColumn, originalLine, originalColumn, name } =
98           entry;
99         callback({
100           source,
101           generatedLine: generatedColumn,
102           generatedColumn: 0,
103           originalLine,
104           originalColumn,
105           name,
106         });
107       },
108       context,
109       order
110     );
111   }
114 exports.WasmRemap = WasmRemap;