gecko-profiler-demangle

Contains wrapper function for C++ and rust name demangling, which is intended to be used through WASM in the Firefox profiler.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
gecko-profiler-demangle
100.3.32 years ago5 years agoMinified + gzip package size for gecko-profiler-demangle in KB

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

1. 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 your `webpack.config.js`, and it may require the use of the
babel plugin `syntax-dynamic-import` so that the `import()` function is
recognized.
2. Add a dependency to the npm module gecko-profiler-demangle. 3. In your JavaScript code:
```js
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:
1. Update the version number in Cargo.toml. The same version will be used for the npm package. 2. Manually edit pkg/package.json to add a "main": "index.js", entry, see this comment for background. 3. Manually edit pkg/package.json to add an "index_bg.js", entry to the "files" list, see this comment for background. 4. Run wasm-pack publish.