gecko-profiler-demangle
v0.4.0
Published
Contains wrapper function for C++ and rust name demangling, which is intended to be used through WASM in the Firefox profiler.
Readme
gecko-profiler-demangle
This crate, or npm package (depending on where you're reading this), contains a wrapper function demangle_any for C++ and rust name demangling. This wrapper function is intended to be used through WASM in the Firefox profiler project.
Usage instructions
- Have your webpack configuration set up to understand .wasm file loading and
async imports. This may require adding
'.wasm'to the list of resolve extensions in yourwebpack.config.js, and it may require the use of the babel pluginsyntax-dynamic-importso that theimport()function is recognized. - Add a dependency to the npm module
gecko-profiler-demangle. - In your JavaScript code:
import('gecko-profiler-demangle').then(demanglerModule => { const mangledNames = [ '_ZN3art10ArenaStack19AllocWithMemoryToolEjNS_14ArenaAllocKindE', 'pthread_setspecific', '_ZN3foo3barE', '_ZN3foo17h05af221e174051e9E' ]; const demangledNames = mangledNames.map(n => demanglerModule.demangle_any(n)); console.log(demangledNames); // ['art::ArenaStack::AllocWithMemoryTool(unsigned int, art::ArenaAllocKind)', // 'pthread_setspecific', 'foo::bar', 'foo'] });
Build instructions
To rebuild this npm module from the original Rust code, clone the repo and proceed as follows:
$ cargo install wasm-pack --force
$ wasm-pack build --out-name index
$ # Now grab the files you need from pkg/ and move them where you want them.Publishing instructions
To publish a new version of this module on npm, do the following:
- Update the version number in
Cargo.toml. The same version will be used for the npm package. - Run
wasm-pack publish.
