makecode-core
Version:
MakeCode (PXT) - web-cached build tool
39 lines • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.expandStackTrace = exports.resolveAddr = void 0;
function resolveAddr(sourceMap, addr) {
const offsets = [-2, -4, 0];
let hit = "";
let bestOffset = undefined;
if (addr == 2)
return "<bottom>";
for (const fn of Object.keys(sourceMap)) {
const vals = sourceMap[fn];
for (let i = 0; i < vals.length; i += 3) {
const lineNo = vals[i];
const startA = vals[i + 1];
const endA = startA + vals[i + 2];
if (addr + 10 >= startA && addr - 10 <= endA) {
for (const off of offsets) {
if (startA <= addr + off && addr + off <= endA) {
if (!hit ||
offsets.indexOf(off) < offsets.indexOf(bestOffset)) {
hit = fn + "(" + lineNo + ")";
bestOffset = off;
}
}
}
}
}
}
return hit;
}
exports.resolveAddr = resolveAddr;
function expandStackTrace(sourceMap, stackTrace) {
return stackTrace.replace(/(^| )PC:0x([A-F0-9]+)/g, (full, space, num) => {
const n = resolveAddr(sourceMap, parseInt(num, 16)) || "???";
return " " + n + " (0x" + num + ")";
});
}
exports.expandStackTrace = expandStackTrace;
//# sourceMappingURL=stackresolver.js.map