Commit ba6a523
committed
stream: create write request objects lazily
Every stream write created a WriteWrap JS object up front, even though
most writes complete synchronously via uv_try_write() and never use it.
Let stream_base_commons pass null instead of a request object.
StreamBase::Write() already creates the wrap object only when the write
does not complete synchronously; return that object to JS (which
attaches oncomplete/callback to it) and a plain error code otherwise.
Writes that complete synchronously now cross the JS/C++ boundary once
and allocate nothing. Callers that pass in a request object
(child_process IPC, webstreams adapters) behave as before.
Since Http2Stream::DoWrite() can invoke the completion callback
synchronously - before JS has attached oncomplete - such completions
are now recorded on the request object's writeStatus field and replayed
by stream_base_commons after dispatch. This also replaces a Has() plus
name-based MakeCallback() pair with a single Get().
Also pre-create the JS fields of WriteWrap instances in the object
template, as was already done for ShutdownWrap, so that they are
in-object properties.
Signed-off-by: Matteo Collina <hello@matteocollina.com>1 parent e6736e6 commit ba6a523
5 files changed
Lines changed: 185 additions & 87 deletions
File tree
- lib/internal
- src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
12 | 11 | | |
13 | 12 | | |
14 | 13 | | |
15 | | - | |
| 14 | + | |
16 | 15 | | |
17 | 16 | | |
18 | 17 | | |
| |||
43 | 42 | | |
44 | 43 | | |
45 | 44 | | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | 45 | | |
82 | 46 | | |
83 | 47 | | |
| |||
105 | 69 | | |
106 | 70 | | |
107 | 71 | | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | 72 | | |
122 | | - | |
| 73 | + | |
123 | 74 | | |
124 | 75 | | |
125 | 76 | | |
| |||
134 | 85 | | |
135 | 86 | | |
136 | 87 | | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
| 88 | + | |
141 | 89 | | |
142 | | - | |
143 | | - | |
| 90 | + | |
144 | 91 | | |
145 | 92 | | |
146 | 93 | | |
147 | | - | |
148 | | - | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
149 | 97 | | |
150 | | - | |
151 | | - | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
152 | 127 | | |
153 | 128 | | |
154 | | - | |
155 | | - | |
156 | | - | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
157 | 143 | | |
158 | | - | |
159 | | - | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
160 | 150 | | |
161 | | - | |
162 | | - | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
163 | 166 | | |
| 167 | + | |
| 168 | + | |
164 | 169 | | |
165 | 170 | | |
166 | 171 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
404 | 404 | | |
405 | 405 | | |
406 | 406 | | |
| 407 | + | |
407 | 408 | | |
408 | 409 | | |
409 | 410 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
178 | 195 | | |
179 | 196 | | |
180 | 197 | | |
181 | 198 | | |
182 | 199 | | |
183 | 200 | | |
184 | 201 | | |
185 | | - | |
186 | 202 | | |
187 | 203 | | |
188 | | - | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
189 | 209 | | |
190 | 210 | | |
191 | 211 | | |
| |||
287 | 307 | | |
288 | 308 | | |
289 | 309 | | |
290 | | - | |
291 | 310 | | |
292 | 311 | | |
293 | | - | |
| 312 | + | |
294 | 313 | | |
295 | 314 | | |
296 | | - | |
297 | 315 | | |
298 | | - | |
299 | 316 | | |
300 | 317 | | |
301 | 318 | | |
302 | 319 | | |
303 | | - | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
304 | 323 | | |
305 | 324 | | |
306 | 325 | | |
| |||
310 | 329 | | |
311 | 330 | | |
312 | 331 | | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
313 | 342 | | |
314 | 343 | | |
315 | 344 | | |
| |||
323 | 352 | | |
324 | 353 | | |
325 | 354 | | |
326 | | - | |
327 | | - | |
328 | | - | |
| 355 | + | |
329 | 356 | | |
330 | 357 | | |
331 | | - | |
332 | 358 | | |
333 | 359 | | |
334 | 360 | | |
335 | 361 | | |
336 | | - | |
337 | 362 | | |
338 | 363 | | |
339 | | - | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
340 | 367 | | |
341 | 368 | | |
342 | 369 | | |
| |||
417 | 444 | | |
418 | 445 | | |
419 | 446 | | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
420 | 457 | | |
421 | 458 | | |
422 | 459 | | |
| |||
432 | 469 | | |
433 | 470 | | |
434 | 471 | | |
435 | | - | |
436 | 472 | | |
437 | 473 | | |
438 | 474 | | |
439 | | - | |
| 475 | + | |
440 | 476 | | |
441 | 477 | | |
442 | 478 | | |
| |||
662 | 698 | | |
663 | 699 | | |
664 | 700 | | |
665 | | - | |
| 701 | + | |
| 702 | + | |
666 | 703 | | |
667 | 704 | | |
668 | 705 | | |
| |||
773 | 810 | | |
774 | 811 | | |
775 | 812 | | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
776 | 845 | | |
777 | 846 | | |
778 | 847 | | |
779 | 848 | | |
780 | 849 | | |
781 | 850 | | |
782 | | - | |
783 | 851 | | |
784 | 852 | | |
785 | 853 | | |
786 | 854 | | |
787 | 855 | | |
788 | | - | |
789 | | - | |
| 856 | + | |
790 | 857 | | |
791 | 858 | | |
792 | 859 | | |
| |||
0 commit comments