src: remove static variables from string_search#20541
src: remove static variables from string_search#20541addaleax wants to merge 1 commit intonodejs:masterfrom
Conversation
|
CI: https://ci.nodejs.org/job/node-test-commit/18247/ Edit: CI is green, and benchmark results seem okay to me. |
src/string_search.h
Outdated
There was a problem hiding this comment.
I'd rename them to suffix_table_, etc., and inline their uses (i.e., get rid of the getters); that makes the code a little safer because it won't drop the array boundaries like it does now.
There was a problem hiding this comment.
Done! We’re still doing weird things with the array boundaries because of the - start_ computation which I’m not totally understanding, to be honest, but I don’t see anything speaking against inlining these.
These variables can as well be stack-allocated. This avoids relying on global state that is not protected by mutexes. Thanks to Stephen Belanger for reviewing this change in its original PR. Refs: ayojs/ayo#82
dad3a7c to
d0f65aa
Compare
|
Rebased. One more CI: https://ci.nodejs.org/job/node-test-commit/18338/ |
|
Landed in 945da6d |
These variables can as well be stack-allocated. This avoids relying on global state that is not protected by mutexes. Thanks to Stephen Belanger for reviewing this change in its original PR. Refs: ayojs/ayo#82 PR-URL: #20541 Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
These variables can as well be stack-allocated. This avoids relying on global state that is not protected by mutexes. Thanks to Stephen Belanger for reviewing this change in its original PR. Refs: ayojs/ayo#82 PR-URL: #20541 Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Notable Changes: * **addons**: - Fixed a memory leak for users of `AsyncResource` and N-API. (Michael Dawson) [#20668](#20668) * **assert**: - The `error` parameter of `assert.throws()` can be an object containing regular expressions now. (Ruben Bridgewater) [#20485](#20485) * **crypto**: - The `authTagLength` option has been made more flexible. (Tobias Nießen) [#20235](#20235), [#20039](#20039) * **http**: - Handling of `close` and `aborted` events has been made more consistent. (Robert Nagy) [#20075](#20075), [#20611](#20611) * Embedder support: - Functions for creating V8 `Isolate` and `Context` objects with Node.js-specific behaviour have been added to the API. (helloshuangzi) [#20639](#20639) - Node.js `Environment`s clean up resources before exiting now. (Anna Henningsen) [#19377](#19377) - Support for multi-threaded embedding has been improved. (Anna Henningsen) [#20542](#20542), [#20539](#20539), [#20541](#20541) * **timers**: - `timeout.refresh()` has been added to the public API. (Jeremiah Senkpiel) [#20298](#20298) PR-URL: #20724
Notable Changes: * **addons**: - Fixed a memory leak for users of `AsyncResource` and N-API. (Michael Dawson) [#20668](#20668) * **assert**: - The `error` parameter of `assert.throws()` can be an object containing regular expressions now. (Ruben Bridgewater) [#20485](#20485) * **crypto**: - The `authTagLength` option has been made more flexible. (Tobias Nießen) [#20235](#20235), [#20039](#20039) * **http**: - Handling of `close` and `aborted` events has been made more consistent. (Robert Nagy) [#20075](#20075), [#20611](#20611) * Embedder support: - Functions for creating V8 `Isolate` and `Context` objects with Node.js-specific behaviour have been added to the API. (helloshuangzi) [#20639](#20639) - Node.js `Environment`s clean up resources before exiting now. (Anna Henningsen) [#19377](#19377) - Support for multi-threaded embedding has been improved. (Anna Henningsen) [#20542](#20542), [#20539](#20539), [#20541](#20541) * **esm**: - Builtin modules (e.g. `fs`) now provide named exports in ES6 modules. (Gus Caplan) [#20403](#20403) * **timers**: - `timeout.refresh()` has been added to the public API. (Jeremiah Senkpiel) [#20298](#20298) PR-URL: #20724
Notable Changes: * **addons**: - Fixed a memory leak for users of `AsyncResource` and N-API. (Michael Dawson) [#20668](#20668) * **assert**: - The `error` parameter of `assert.throws()` can be an object containing regular expressions now. (Ruben Bridgewater) [#20485](#20485) * **crypto**: - The `authTagLength` option has been made more flexible. (Tobias Nießen) [#20235](#20235), [#20039](#20039) * **http**: - Handling of `close` and `aborted` events has been made more consistent. (Robert Nagy) [#20075](#20075), [#20611](#20611) * Embedder support: - Functions for creating V8 `Isolate` and `Context` objects with Node.js-specific behaviour have been added to the API. (Allen Yonghuang Wang) [#20639](#20639) - Node.js `Environment`s clean up resources before exiting now. (Anna Henningsen) [#19377](#19377) - Support for multi-threaded embedding has been improved. (Anna Henningsen) [#20542](#20542), [#20539](#20539), [#20541](#20541) * **esm**: - Builtin modules (e.g. `fs`) now provide named exports in ES6 modules. (Gus Caplan) [#20403](#20403) * **timers**: - `timeout.refresh()` has been added to the public API. (Jeremiah Senkpiel) [#20298](#20298) PR-URL: #20724
* addons:
- Fixed a memory leak for users of `AsyncResource` and N-API.
(Michael Dawson)
#20668
* assert:
- The `error` parameter of `assert.throws()` can be an object containing
regular expressions now. (Ruben Bridgewater)
#20485
* crypto:
- The `authTagLength` option has been made more flexible (Tobias Nießen)
#20235)
#20039
* esm:
- Builtin modules (e.g. `fs`) now provide named exports in ES6 modules.
(Gus Caplan)
#20403
* http:
- Handling of `close` and `aborted` events has been made more consistent.
(Robert Nagy)
#20075
#20611
* module:
- add --preserve-symlinks-main (David Goldstein)
#19911
* timers:
- `timeout.refresh()` has been added to the public API.
(Jeremiah Senkpiel)
#20298
* Embedder support:
- Functions for creating V8 `Isolate` and `Context` objects with
Node.js-specific behaviour have been added to the API.
(Allen Yonghuang Wang)
#20639
- Node.js `Environment`s clean up resources before exiting now.
(Anna Henningsen)
#19377
- Support for multi-threaded embedding has been improved.
(Anna Henningsen)
#20542
#20539
#20541
PR-URL: #20724
* addons:
- Fixed a memory leak for users of `AsyncResource` and N-API.
(Michael Dawson)
#20668
* assert:
- The `error` parameter of `assert.throws()` can be an object containing
regular expressions now. (Ruben Bridgewater)
#20485
* crypto:
- The `authTagLength` option has been made more flexible (Tobias Nießen)
#20235)
#20039
* esm:
- Builtin modules (e.g. `fs`) now provide named exports in ES6 modules.
(Gus Caplan)
#20403
* http:
- Handling of `close` and `aborted` events has been made more consistent.
(Robert Nagy)
#20075
#20611
* module:
- add --preserve-symlinks-main (David Goldstein)
#19911
* timers:
- `timeout.refresh()` has been added to the public API.
(Jeremiah Senkpiel)
#20298
* Embedder support:
- Functions for creating V8 `Isolate` and `Context` objects with
Node.js-specific behaviour have been added to the API.
(Allen Yonghuang Wang)
#20639
- Node.js `Environment`s clean up resources before exiting now.
(Anna Henningsen)
#19377
- Support for multi-threaded embedding has been improved.
(Anna Henningsen)
#20542
#20539
#20541
PR-URL: #20724
* addons:
- Fixed a memory leak for users of `AsyncResource` and N-API.
(Michael Dawson)
#20668
* assert:
- The `error` parameter of `assert.throws()` can be an object containing
regular expressions now. (Ruben Bridgewater)
#20485
* crypto:
- The `authTagLength` option has been made more flexible (Tobias Nießen)
#20235)
#20039
* esm:
- Builtin modules (e.g. `fs`) now provide named exports in ES6 modules.
(Gus Caplan)
#20403
* http:
- Handling of `close` and `aborted` events has been made more consistent.
(Robert Nagy)
#20075
#20611
* module:
- add --preserve-symlinks-main (David Goldstein)
#19911
* timers:
- `timeout.refresh()` has been added to the public API.
(Jeremiah Senkpiel)
#20298
* Embedder support:
- Functions for creating V8 `Isolate` and `Context` objects with
Node.js-specific behaviour have been added to the API.
(Allen Yonghuang Wang)
#20639
- Node.js `Environment`s clean up resources before exiting now.
(Anna Henningsen)
#19377
- Support for multi-threaded embedding has been improved.
(Anna Henningsen)
#20542
#20539
#20541
PR-URL: #20724
* addons:
- Fixed a memory leak for users of `AsyncResource` and N-API.
(Michael Dawson)
#20668
* assert:
- The `error` parameter of `assert.throws()` can be an object containing
regular expressions now. (Ruben Bridgewater)
#20485
* crypto:
- The `authTagLength` option has been made more flexible (Tobias Nießen)
#20235)
#20039
* esm:
- Builtin modules (e.g. `fs`) now provide named exports in ES6 modules.
(Gus Caplan)
#20403
* http:
- Handling of `close` and `aborted` events has been made more consistent.
(Robert Nagy)
#20075
#20611
* module:
- add --preserve-symlinks-main (David Goldstein)
#19911
* timers:
- `timeout.refresh()` has been added to the public API.
(Jeremiah Senkpiel)
#20298
* Embedder support:
- Functions for creating V8 `Isolate` and `Context` objects with
Node.js-specific behaviour have been added to the API.
(Allen Yonghuang Wang)
#20639
- Node.js `Environment`s clean up resources before exiting now.
(Anna Henningsen)
#19377
- Support for multi-threaded embedding has been improved.
(Anna Henningsen)
#20542
#20539
#20541
PR-URL: #20724
These variables can as well be stack-allocated. This avoids
relying on global state that is not protected by mutexes.
Thanks to Stephen Belanger for reviewing this change in its original PR.
Refs: ayojs/ayo#82
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes