Open
Bug 1274815
Opened 9 years ago
Updated 2 years ago
Make IPCStreamDestination result nsIInputStream pass IPC string buffers instead of using nsPipe
Categories
(Core :: IPC, defect, P3)
Tracking
()
NEW
People
(Reporter: bkelly, Unassigned)
References
(Blocks 1 open bug)
Details
(Whiteboard: btpp-backlog)
Currently the receiving end of the PSendStream actor simply copies data into an nsPipe. The reading side of the pipe is then passed when "deserialized" back into an nsIInputStream.
In theory we can save a copy here. Instead of using an nsPipe we can instead create a "string list" nsIInputStream. This would provide an API letting nsCString objects be appended to the stream. Each nsCString would then be available as a single segment to ReadSegments(), etc. Since nsCString uses a CoW strategy this would avoid copying.
Updated•9 years ago
|
Whiteboard: btpp-backlog
Reporter | ||
Updated•9 years ago
|
Blocks: ServiceWorkers-streams
![]() |
||
Updated•7 years ago
|
Priority: -- → P3
Comment 1•7 years ago
|
||
Note that bug 1351488's https://hg.mozilla.org/mozilla-central/rev/08d40ce6531e changed PChildToParentStream and PParentToChildStream to use wr:ByteBuffers instead of nsCStrings. I r+'ed that with the knowledge that this might impede CoW efforts like are proposed here, but I didn't realize was actually proposed.
The good news is we can just as easily create a stream that we provide with buffers to adopt as we can create the string variant. (Unfortunately nsPipe uses nsSegmentedBuffer under the hood and that is written to assume a constant segment size, as does nsStorageStream, so it's not trivial to simply reuse existing stream implementations.)
Summary: Make PSendStream result nsIInputStream pass IPC string buffers instead of using nsPipe → Make IPCStreamDestination result nsIInputStream pass IPC string buffers instead of using nsPipe
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•