diff options
Diffstat (limited to 'src/preamble.js')
-rw-r--r-- | src/preamble.js | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/preamble.js b/src/preamble.js index 63fab34e..a85cf2f5 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -644,7 +644,7 @@ function demangle(func) { try { if (typeof func === 'number') func = Pointer_stringify(func); if (func[0] !== '_') return func; - if (func[1] !== '_') return func.substr(1); // C function + if (func[1] !== '_') return func; // C function if (func[2] !== 'Z') return func; var i = 3; // params, etc. @@ -747,10 +747,18 @@ function demangle(func) { } return parse(); } catch(e) { - return func + '<demangle-err>' + e; + return func; } } +function demangleAll(text) { + return text.replace(/__Z[\w\d_]+/, function(x) { var y = demangle(x); return x === y ? x : (x + ' (' + y + ')') }); +} + +function stackTrace() { + return demangleAll(new Error().stack); +} + // Memory management var PAGE_SIZE = 4096; |