gecko-profiler-demangle
v0.3.3
Published
Contains wrapper function for C++ and rust name demangling, which is intended to be used through WASM in the Firefox profiler.
Downloads
470
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-import
so 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 +nightly 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. - Manually edit
pkg/package.json
to add a"main": "index.js",
entry, see this comment for background. - Manually edit
pkg/package.json
to add an"index_bg.js",
entry to the"files"
list, see this comment for background. - Run
wasm-pack publish
.