Commit graph

1002 commits

Author SHA1 Message Date
Linus Groh
aff1ec6014 LibJS: Port iterator_step() to GCPtr 2023-04-15 16:23:03 +02:00
Linus Groh
a23dd88f61 LibJS: Port PrototypeObject::typed_this_object() to NonnullGCPtr 2023-04-14 09:59:29 +02:00
Linus Groh
b33b0d60e6 LibJS: Port Value::get_method() to GCPtr 2023-04-14 09:59:29 +02:00
Linus Groh
9279b0780d LibJS: Port Value::to_bigint() to NonnullGCPtr 2023-04-14 09:59:29 +02:00
Linus Groh
f345f72b55 LibJS: Port Value::to_object() to NonnullGCPtr 2023-04-14 09:59:29 +02:00
Linus Groh
2555d7a36a LibJS: Make well-known symbol getters return NonnullGCPtr
None of these are ever null after the VM has been initialized, as proved
by virtually every caller immediately dereferencing the raw pointer.
2023-04-13 14:29:42 +02:00
Linus Groh
b84f8fb55b LibJS: Make intrinsics getters return NonnullGCPtr
Some of these are allocated upon initialization of the intrinsics, and
some lazily, but in neither case the getters actually return a nullptr.

This saves us a whole bunch of pointer dereferences (as NonnullGCPtr has
an `operator T&()`), and also has the interesting side effect of forcing
us to explicitly use the FunctionObject& overload of call(), as passing
a NonnullGCPtr is ambigous - it could implicitly be turned into a Value
_or_ a FunctionObject& (so we have to dereference manually).
2023-04-13 14:29:42 +02:00
Timothy Flynn
6d49eab8a6 LibJS+LibTimeZone: Explicitly canonicalize "GMT" to "UTC"
This is a normative change in the ECMA-402 spec. See:
50eb413

Note that this canonicalization already occurred. As the above commit
alludes to, we parse the rearguard format of the TZDB, so GMT is already
an alias to Etc/GMT. But it doesn't hurt to be explicit here.
2023-03-23 15:30:21 +00:00
Matthew Olsson
7c0c1c8f49 LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
Andreas Kling
a504ac3e2a Everywhere: Rename equals_ignoring_case => equals_ignoring_ascii_case
Let's make it clear that these functions deal with ASCII case only.
2023-03-10 13:15:44 +01:00
Linus Groh
8f1d13e73b LibJS: Use a Variant instead of two Optionals for ThrowCompletionOr
Comes with the usual benefit of saving some space on the stack, as well
as making a situation where both or neither Optionals hold a value
impossible.

The various unwrapping additions are required as we can no longer
construct a ThrowCompletionOr<T> from an Optional<T> - rightfully so.
2023-03-01 17:55:42 +00:00
Linus Groh
09d40bfbb2 Everywhere: Use _{short_,}string to create Strings from literals 2023-02-25 20:51:49 +01:00
Timothy Flynn
a73b8292ed LbJS: Convert exception-related usages of Value::TDSWOSE to String
TDSWOSE being to_deprecated_string_without_side_effects.
2023-02-16 14:32:22 +01:00
Timothy Flynn
b245300ba1 LibJS+Everywhere: Deprecate Value::to_string_without_side_effects 2023-02-16 14:32:22 +01:00
Luke Wilde
588dae8aa6 LibJS/Temporal: Allow annotations after YYYY-MM and MM-DD
This is a normative change in the Temporal spec.

See: 160e836
2023-02-11 18:42:32 +00:00
Luke Wilde
f09d2ae395 LibJS: Add missing assignment to offset_string in ZDT conversion 2023-02-11 00:57:59 +00:00
Timothy Flynn
c3abb1396c LibJS+LibWeb: Convert string view PrimitiveString instances to String
First, this adds an overload of PrimitiveString::create for StringView.
This overload will throw an OOM completion if creating a String fails.
This is not only a bit more convenient, but it also ensures at compile
time that all PrimitiveString::create(string_view) invocations will be
handled as String and OOM-aware.

Next, this wraps all invocations to PrimitiveString::create(string_view)
with MUST_OR_THROW_OOM.

A small PrimitiveString::create(DeprecatedFlyString) overload also had
to be added to disambiguate between the StringView and DeprecatedString
overloads.
2023-02-09 17:13:33 +00:00
MacDue
63b11030f0 Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
Timothy Flynn
b75b7f0c0d LibJS+Everywhere: Propagate Cell::initialize errors from Heap::allocate
Callers that are already in a fallible context will now TRY to allocate
cells. Callers in infallible contexts get a FIXME.
2023-01-29 00:02:45 +00:00
Timothy Flynn
2692db8699 LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors
Note that as of this commit, there aren't any such throwers, and the
call site in Heap::allocate will drop exceptions on the floor. This
commit only serves to change the declaration of the overrides, make sure
they return an empty value, and to propagate OOM errors frm their base
initialize invocations.
2023-01-29 00:02:45 +00:00
Timothy Flynn
1c1b902a6a LibJS+LibWeb: Move headers around to allow including Value from Cell
The goal here is to allow Cell::initialize to return a ThrowCompletion,
to handle OOM for example. Cell.h will then need to include Completion.h
which must include Value.h. This currently can't happen because Value.h
includes BigInt.h, which in turn includes Cell.h. So we would have an
include cycle.

This removes BigInt.h from Value.h, as it is forward-declarable (it is
only referred to with a reference or pointer). Then the Value overload
for Cell::Visitor::visit is moved to Cell.h, and missing BigInt.h
includes as peppered as needed.
2023-01-29 00:02:45 +00:00
Linus Groh
e4158d8555 LibJS: Replace some deprecated_string() with utf8_string() in Temporal
The remaining ones are needed for PropertyKey, which is not yet String
compatible.
2023-01-28 22:58:03 +00:00
Linus Groh
b41e7b7e86 LibJS: Replace to_deprecated_string() with to_string() in Temporal
Turns out all of these can already be replaced with no further changes!
2023-01-28 22:54:44 +00:00
Timothy Flynn
9e4dbea0ee LibJS: Use String::join and String::trim in Temporal AOs 2023-01-28 00:13:46 +00:00
Sam Atkins
df07c5be3a AK: Remove unused DateTimeLexer class 2023-01-27 20:33:18 +00:00
Linus Groh
959a891df0 LibJS: Port parse_iso_date_time() to String 2023-01-26 20:20:54 +00:00
Linus Groh
6c8c650a55 LibJS: Port temporal_zoned_date_time_to_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
70e8a9bc8b LibJS: Remove unused is_valid_time_zone_numeric_utc_offset_syntax()
...as well as the underlying function:
parse_time_zone_numeric_utc_offset_syntax()
2023-01-26 20:20:54 +00:00
Linus Groh
bb0362ec3b LibJS: Port builtin_time_zone_get_offset_string_for() to String 2023-01-26 20:20:54 +00:00
Linus Groh
95becb22ef LibJS: Port format_iso_time_zone_offset_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
c2656f4ee7 LibJS: Port format_time_zone_offset_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
5a2dfc52f8 LibJS: Port create_temporal_time_zone() to String 2023-01-26 20:20:54 +00:00
Linus Groh
ae98eddc9f LibJS: Port temporal_year_month_to_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
cfb4b44691 LibJS: Port temporal_time_to_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
b6e13f451f LibJS: Port temporal_date_time_to_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
921ef7273e LibJS: Port temporal_date_to_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
453d3063f5 LibJS: Port pad_iso_year() to String 2023-01-26 20:20:54 +00:00
Linus Groh
2aa4fcc318 LibJS: Port temporal_month_day_to_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
d2c10f6bea LibJS: Port temporal_instant_to_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
28ee331a93 LibJS: Make parse_temporal_instant() take a StringView
The underlying parse_temporal_instant_string() function already does
this as well.
2023-01-26 20:20:54 +00:00
Linus Groh
f669d2e558 LibJS: Port temporal_duration_to_string() to String 2023-01-26 20:20:54 +00:00
Linus Groh
49b5d55b95 LibJS: Make {un,}balance_duration_relative() take a StringView
This is only used for equality checks.
2023-01-26 20:20:54 +00:00
Linus Groh
b09522312c LibJS: Port iso_month_code() to String 2023-01-26 20:20:54 +00:00
Linus Groh
bcca5efd5a LibJS: Port format_calendar_annotation() to String 2023-01-26 20:20:54 +00:00
Linus Groh
269f3c4105 LibJS: Port maybe_format_calendar_annotation() to String 2023-01-26 20:20:54 +00:00
Linus Groh
627291b075 LibJS: Port calendar_month_code() to String 2023-01-26 20:20:54 +00:00
Linus Groh
46cff34baf LibJS: Port get_builtin_calendar() to String 2023-01-26 20:20:54 +00:00
Linus Groh
a101b15ad0 LibJS: Port create_temporal_calendar() to String 2023-01-26 20:20:54 +00:00
Linus Groh
0f5f9acc9c LibJS: Port canonicalize_time_zone_name() to String 2023-01-26 20:20:54 +00:00
Linus Groh
96855d53c4 LibJS: Use StringView for SecondsStringPrecision::unit
This is exclusively used with sv literals, and can be a StringView like
precision above it.
This removes the last use of DeprecatedString in Temporal's
AbstractOperations.h :^)
2023-01-26 20:20:54 +00:00