1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-11-17 16:02:33 +01:00
uBlock/src/js/wasm
Raymond Hill c6fb70b1f0
Refactor hntrie to avoid the need for boundary cells
Whereas before the string segment was encoded as:

LL OOOOOOOOOOOO

where L are the upper 8 bits and used to encode the length
of the segment, and O are the lower 24 bits and used to
encode the offset of the string data in the character
buffer, the new code encode as follow:

OOOOOOOOOOOO LL

And furthermore the most significant bit of the length
LL is now used to mark whether the current string segment
is a label boundary.

This means a cell can't reference a segment longer then
127 characters. To work around this limitation for when a
segment is longer than 127 characters (a rare occurrence),
the algorithm will simply split the segment into multiple
adjacent cells.

As a result, there is no longer a need to encode
"boundariness" into special cells, which simplifies
both the storing and matching algorithms.

Additionally, added minimal documentation for the NPM
package on how to import and use HNTrieContainer as a
standalone API.
2021-08-10 09:27:59 -04:00
..
biditrie.wasm Fix edge case involving filter with a single wildcard 2020-06-27 07:58:46 -04:00
biditrie.wat Fix edge case involving filter with a single wildcard 2020-06-27 07:58:46 -04:00
hntrie.wasm Refactor hntrie to avoid the need for boundary cells 2021-08-10 09:27:59 -04:00
hntrie.wat Refactor hntrie to avoid the need for boundary cells 2021-08-10 09:27:59 -04:00
README.md Squashed commit of the following: 2018-11-03 08:58:46 -03:00

For code reviewers

All wasm files in that directory where created by compiling the corresponding wat file using the command (using hntrie.wat/hntrie.wasm as example):

wat2wasm hntrie.wat -o hntrie.wasm

Assuming:

  • The command is executed from within the present directory.

wat2wasm tool

The wat2wasm tool can be downloaded from an official WebAssembly project: https://github.com/WebAssembly/wabt/releases.

wat2wasm tool online

You can also use the following online wat2wasm tool: https://webassembly.github.io/wabt/demo/wat2wasm/.

Just paste the whole content of the wat file to compile into the WAT pane. Click "Download" button to retrieve the resulting wasm file.