mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-17 16:02:33 +01:00
c6fb70b1f0
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. |
||
---|---|---|
.. | ||
biditrie.wasm | ||
biditrie.wat | ||
hntrie.wasm | ||
hntrie.wat | ||
README.md |
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.