1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-23 15:05:07 +00:00
Commit graph

148 commits

Author SHA1 Message Date
Andreas Kling
bfd354492e LibWeb: Put most LibWeb GC objects in type-specific heap blocks
With this change, we now have ~1200 CellAllocators across both LibJS and
LibWeb in a normal WebContent instance.

This gives us a minimum heap size of 4.7 MiB in the scenario where we
only have one cell allocated per type. Of course, in practice there will
be many more of each type, so the effective overhead is quite a bit
smaller than that in practice.

I left a few types unconverted to this mechanism because I got tired of
doing this. :^)
2023-11-19 22:00:48 +01:00
Shannon Booth
1daded768d LibWeb: Implement ReadableStreamBYOBReader::read
Similiarly to the underlying AO's, currently only TypedArrays are
supported.
2023-11-19 18:53:17 +01:00
Shannon Booth
dcb7bb4a92 LibWeb: Support BYOB readers in ReadableByteStreamControllerEnqueue 2023-11-19 18:53:17 +01:00
Shannon Booth
9662872b20 LibWeb: Implement AO ReadableStreamByobReaderRead
We've finally implemented enough of the Streams AOs so that we are close
to actually performing read operations with BYOB readers.
2023-11-19 18:53:17 +01:00
Shannon Booth
3d37cb0753 LibWeb: Partially implement ReadableByteStreamControllerPullInto
This implementation does not handle DataViews at the moment, but should
handle all of the typed arrays.
2023-11-19 18:53:17 +01:00
Shannon Booth
1443715775 LibWeb: Add ReadableBSControllerProcessPullIntoDescriptorsUsingQueue 2023-11-19 18:53:17 +01:00
Shannon Booth
737dc6ce4e LibWeb: Add ReadableByteStreamControllerFillPullIntoDescriptorFromQueue 2023-11-19 18:53:17 +01:00
Shannon Booth
aca63fd947 LibWeb: Implement ReadableByteStreamControllerCommitPullIntoDescriptor 2023-11-19 18:53:17 +01:00
Shannon Booth
cdcc1ebbba LibWeb: Implement ReadableByteStreamControllerFillHeadPullIntoDescriptor 2023-11-19 18:53:17 +01:00
Shannon Booth
8d4095d00e LibWeb: Add some const overloads in ReadableByteStreamController 2023-11-19 18:53:17 +01:00
Shannon Booth
26e393fbbc LibWeb: Implement ReadableByteStreamControllerConvertPullIntoDescriptor 2023-11-19 18:53:17 +01:00
Shannon Booth
25f8b80eab LibWeb: Use move on ByteBuffer in TransferArrayBuffer 2023-11-19 18:53:17 +01:00
Shannon Booth
446a78f30e LibWeb: Implement Streams AO ReadableStreamAddReadIntoRequest
This is effectively identical to ReadableStreamAddReadRequest besides
from the fact that it takes a ReadIntoRequest instead of a ReadRequest,
and is instead intended to be used for BYOB readers.
2023-11-19 18:53:17 +01:00
Shannon Booth
f27e76b0b7 LibWeb: Make ReadableStreamAddReadRequest take a NonnullGCPtr
Make it more obvious in the function signature that this function will
be taking a GC ref to a ReadRequest by appending it to the
ReadableStreams pending read requests.
2023-11-19 18:53:17 +01:00
Shannon Booth
5ef41dca53 LibWeb: Implement Streams AO ReadableStreamFulfillReadIntoRequest 2023-11-19 18:53:17 +01:00
Shannon Booth
0880ea3e1c LibWeb: Add missing initialize override for ReadableStreamBYOBReader
This hasn't really come up as of yet because not enough of this class
has been implemented yet to actually do anything with it.
2023-11-19 18:53:17 +01:00
Matthew Olsson
3ff481938e IDL: Fix syntax errors
All attributes must have an "attribute" keyword, and "any?" is invalid
(as "any" includes "null" as well).
2023-11-11 08:51:51 +01:00
Bastiaan van der Plaat
169d24ae2e LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
Shannon Booth
d81b0e3c86 LibWeb/Streams: Make ReadIntoRequest GC-allocated
This ports the same change which was made in 9c3e9e8981 to
ReadRequest, although nothing actually implements this interface yet.
2023-09-24 20:10:50 -06:00
Shannon Booth
acda17ccc4 LibWeb/Streams: Handle BYOB reader in ReadableStreamError 2023-09-24 20:10:50 -06:00
Timothy Flynn
54d1f4e234 LibJS: Stop propagating small OOM errors from the Error object 2023-09-09 13:03:25 -04:00
Timothy Flynn
df915f8a98 LibWeb: Add missing return statement to bail from a stream read request
As the spec states, we should invoke the failureSteps and abort.
2023-09-09 13:03:25 -04:00
Shannon Booth
6e9aeccf90 LibWeb: Implement releaseLock interface for ReadableStreamBYOBReader 2023-08-31 19:28:56 +02:00
Shannon Booth
b06d80e6fd LibWeb: Implement ReadableStreamBYOBReaderRelease Streams AO 2023-08-31 19:28:56 +02:00
Shannon Booth
8ce4f5597c LibWeb: Implement ReadableStreamBYOBReaderErrorReadIntoRequests AO 2023-08-31 19:28:56 +02:00
Shannon Booth
e08072ac2b LibWeb: Explicitly clear read requests for default stream reader
Expecting the list to be cleared from the move() is quite strange and
not particularly clear. Explicitly clear the requests instead.
2023-08-31 19:28:56 +02:00
Shannon Booth
c279d514e9 LibWeb: Implement ReadableStreamBYOBReader constructor 2023-08-31 19:28:56 +02:00
Andreas Kling
72c9f56c66 LibJS: Make Heap::allocate<T>() infallible
Stop worrying about tiny OOMs. Work towards #20449.

While going through these, I also changed the function signature in many
places where returning ThrowCompletionOr<T> is no longer necessary.
2023-08-13 15:38:42 +02:00
Andreas Kling
9c3e9e8981 LibWeb/Streams: Make ReadRequest GC-allocated
This allows it to keep its edges alive. Fixes an intermittent crash seen
by UBSAN on CI. :^)
2023-08-09 19:16:07 +02:00
Andreas Kling
40bdcdf966 LibWeb/Streams: Add WritableStreamDefaultController::visit_edges() 2023-08-09 19:16:07 +02:00
Andreas Kling
26d5d86682 LibWeb/Streams: Mark ReadableStreamGenericReaderMixin::m_realm 2023-08-09 19:16:07 +02:00
Andreas Kling
97ebfd9f0f LibJS: Make Value::to_string_without_side_effects() infallible
Work towards #20449.
2023-08-09 17:09:16 +02:00
Andreas Kling
c084269e5f LibJS: Make PrimitiveString::utf8_string() infallible
Work towards #20449.
2023-08-09 17:09:16 +02:00
Andreas Kling
18c54d8d40 LibJS: Make Cell::initialize() return void
Stop worrying about tiny OOMs.

Work towards #20405
2023-08-08 07:39:11 +02:00
Daniel Bertalan
9feb1ce39f LibJS+LibWeb: Apply the Rule of Zero to {Nonnull,}GCPtr<T>
The compiler-generated copy constructor and copy assignment operator
already do the right thing (which is to simply copy the underlying
pointer).

The [Itanium C++ ABI][1] treats any class with non-trivial copy/move
constructors and destructors as non-trivial for the purposes of calls --
even if they are functionally identical to the compiler-generated ones.
If a class is non-trivial, it cannot be passed or returned in registers,
only via an invisible reference, which is worse for codegen. This commit
makes `{Nonnull,}GCPtr` trivial.

As the compiler can be sure that capturing a `GCPtr` by value has no
side effects, a few `-Wunused-lambda-capture` warnings had to be
addressed in LibWeb.

GCC seems to have a bug that prevents `ExceptionOr<Variant<GCPtr<T>>>`
from being implicitly constructed from `GCPtr<T>` after this change. A
non-invasive workaround is to explicitly construct the inner Variant
type.

[1]: https://itanium-cxx-abi.github.io/cxx-abi/abi.html#non-trivial
2023-08-07 22:20:03 -04:00
Timothy Flynn
9d7215c636 LibJS+LibWeb: Move IteratorOperations.h AOs to Iterator.h
Rather than splitting the Iterator type and its AOs into two files,
let's combine them into one file to match every other JS runtime object
that we have.
2023-07-19 14:11:43 +01:00
Shannon Booth
2b46e6f664 Everywhere: Update copyrights with my new serenityos.org e-mail :^) 2023-07-15 16:21:29 +02:00
Kenneth Myhra
d4f729a6d3 LibWeb: Implement TransforStream's constructor 2023-07-15 11:59:39 +02:00
Kenneth Myhra
7117cb7a35 LibWeb: Add set_up_transform_stream_default_controller_from_transformer 2023-07-15 11:59:39 +02:00
Kenneth Myhra
f7c532d093 LibWeb: Add AO set_up_transform_stream_default_controller() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
86455bbb74 LibWeb: Add AO initialize_transform_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
a52f9970bc LibWeb: Add AO create_readable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
8e6b386ff7 LibWeb: Add AO initialize_readable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
f91c150cfc LibWeb: Add AO transform_stream_default_source_pull_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
894f1e9d62 LibWeb: Add AO create_writable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
7d8f24c227 LibWeb: Add AO initialize_writable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
641b9edd89 LibWeb: Add AO transform_stream_default_sink_close_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
48921add86 LibWeb: Add AO transform_stream_default_sink_abort_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
18aa588968 LibWeb: Add AO transform_stream_default_sink_write_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
11c0600729 LibWeb: Add AO transform_stream_default_controller_perform_transform() 2023-07-15 11:59:39 +02:00