Yedaya Katsman
dcad8494d6
LibJS: Accept calendar names case-insensitively
...
This is a normative change in the Temporal spec
See tc39/proposal-temporal@03101c6
2022-10-24 23:00:19 +01:00
Andreas Kling
0e232b1c8d
LibJS: Only use 1 bit for Cell boolean flag
2022-10-24 19:37:36 +02:00
Andreas Kling
51579810bd
LibJS: Add Cell::must_survive_garbage_collection() mechanism
...
This allows cells to prevent themselves from being garbage collected,
even when there are no references to them.
2022-10-24 18:06:55 +02:00
davidot
62fc3e50f3
LibJS: Make parseFloat use the new double parser
...
This means it no longer is locale dependent and doesn't incorrectly
accept hex floats anymore.
2022-10-23 15:48:45 +02:00
davidot
783b1a479d
LibJS: Make string_to_double use the new double parser
2022-10-23 15:48:45 +02:00
davidot
6805ded21d
LibJS: Make canonical_numeric_index_string use the new double parser
2022-10-23 15:48:45 +02:00
davidot
3dc99af3dc
LibJS: Make parse_temporal_duration use the new double parser
2022-10-23 15:48:45 +02:00
davidot
d66bfcc3f4
LibJS: Make PluralRules use the new double parser
2022-10-23 15:48:45 +02:00
davidot
7db59124e8
LibJS: Make Token use the new double parser
2022-10-23 15:48:45 +02:00
davidot
9921f80817
LibJS: Fix that non-double numbers from JSON were truncated to i32
2022-10-23 15:48:45 +02:00
davidot
66d07a452f
LibJS: Make a TypedArray test actually run on all different types
2022-10-23 15:48:45 +02:00
davidot
80f23abd0a
LibJS: Add descriptive output to test-commons expect().toThrow()
...
This (and still some other methods) just say Expectation error leaving
the user completely in the dark whether the method threw at all.
And since we have nice function printing now we can just toString the
function since most are lambda's.
2022-10-23 15:48:45 +02:00
Moustafa Raafat
5edd4bd512
LibJS: Require NanosecondsToDays remainder less than dayLength
...
This is an normative change in the Temporal spec.
See: ac69b63
2022-10-22 19:14:14 +02:00
Moustafa Raafat
b1c8029c2b
LibJS: Require that NanosecondsToDays doesn't flip sign
...
This is an normative change in the Temporal spec.
See: e13c52d
2022-10-22 19:14:14 +02:00
Andreas Kling
07a36c8f80
LibJS: Add a finalization pass to the garbage collector
...
Doing things in the destructor of a GC-allocated object isn't always
safe, in case it involves accessing other GC-allocated objects.
If they were already swept by GC, we'd be poking into freed memory.
This patch adds a separate finalization pass where GC calls finalize()
on every unmarked cell that's about to be deleted.
It's safe to access other GC objects in finalize(), even if they're
also unmarked.
2022-10-20 19:36:59 +02:00
Andreas Kling
e23fe8cf87
LibJS: Make define_native_foo() take SafeFunctions
...
We were taking AK::Function and then passing them along to
NativeFunction, which takes a SafeFunction. This works, since
SafeFunction will transparently wrap AK::Function in a CallableWrapper
when assigned, but it was causing us to accumulate thousands of
pointless wrappers around direct function pointers.
By using SafeFunction at every step of the setup call chain, we no
longer create any CallableWrappers for the majority of native functions
in LibJS. Also, the number of heap-registered SafeFunctions in a new
realm goes down from ~5000 to 5. :^)
2022-10-20 15:16:23 +02:00
Andreas Kling
202cc025e5
LibJS: Don't register SafeFunction-to-function-pointer with JS::Heap
...
Direct function pointers don't have captures, so we don't need to
register the SafeFunction with the Heap when it's just wrapping a
function pointer.
2022-10-20 15:16:23 +02:00
Andreas Kling
738e770fce
LibJS: Remove unnecessary operator==() for ({Nonnull,}GCPtr<T>, T*)
...
These aren't necessary in the first place since {Nonnull,}GCPtr has
operator T*()
2022-10-20 15:16:23 +02:00
Moustafa Raafat
8f964604f0
LibJS: Refactor CalendarFields for better linearity
...
This is a normative change in the Temporal spec.
See: 9b139a1
2022-10-20 00:53:44 +02:00
Idan Horowitz
d38aeddd77
LibJS: Simplify ParseTemporalTimeZoneString
...
This is an editorial change in the Temporal spec.
See: eec8efab
2022-10-20 00:47:42 +02:00
Idan Horowitz
0c61552b81
LibJS: Refactor ToRelativeTemporalObject
...
This is an editorial change in the Temporal spec.
See: 895854d9
2022-10-20 00:47:42 +02:00
Moustafa Raafat
092b33c96e
LibJS: Remove trivial operations ISO{Year,Month,Day}
...
This is an editorial change in the Temporal spec.
See: 606d8a2
2022-10-19 22:39:33 +02:00
Moustafa Raafat
69d5368b2a
LibJS: Remove trivial operation IsValidISOMonth
...
This is an editorial change in the Temporal spec.
See: a08330a
2022-10-19 22:39:33 +02:00
Moustafa Raafat
48cc557dfa
LibJS: Merge ISOMonthCode and BuildISOMonthCode
...
This is an editorial change in the Temporal spec.
See: a4d17b1
2022-10-19 22:39:33 +02:00
Moustafa Raafat
b69ceae10c
LibJS: Improve alias names in ResolveISOMonth
...
This is an editorial change in the Temporal spec.
See: 01d5fbe
2022-10-19 22:39:33 +02:00
Moustafa Raafat
d758566996
LibJS: Simplify ResolveISOMonth
...
This is an editorial change in the Temporal spec.
See: 1b83226
2022-10-19 22:39:33 +02:00
Andreas Kling
178f0b9971
LibJS: Support non-base-10 BigInt literals in bytecode VM
...
Fixes 39 tests in test262 and a handful in test-js. :^)
2022-10-19 19:58:15 +02:00
Andreas Kling
29935fe943
LibJS: Support for (x in obj)
iteration in bytecode VM
...
We were mistakenly treating these as `for (x of obj)`. By reorganizing
the code a little bit, we actually support both kinds of iteration with
less duplication. :^)
Fixes 17 tests in test262.
2022-10-19 19:03:57 +02:00
Andreas Kling
f39b6ae3c6
LibJS: Avoid expensive UTF-8/16 conversion in legacy RegExp properties
...
Let's not incur the cost of a synchronous conversion to UTF-8 for all
the legacy static properties after running a regular expression.
The SunSpider subtest regexp-dna goes from taking ~25 sec to ~0.7 sec
on my machine.
2022-10-19 16:10:42 +02:00
Andreas Kling
d9b543da68
LibJS: Disable bytecode optimizations by default
...
The optimization passes are not stable, which makes test262 flaky.
Address this by introducing a new OptimizationLevel::None and making it
the default.
This removes all the flakiness from test262 in my testing.
We can enable optimizations by default again once they have been made
stable. :^)
2022-10-19 14:37:57 +02:00
Timothy Flynn
27737f613c
LibTimeZone+LibJS: Update to TZDB version 2022e
...
https://mm.icann.org/pipermail/tz-announce/2022-October/000074.html
This version changes America/Chicago's transtion from LMT to CST from
1883 Nov 18 12:09:24 to 1883 Nov 18 18:00.
2022-10-18 16:01:44 +02:00
leeight
0d96468e9b
LibJS: Implement RegExp legacy static properties
...
RegExp legacy static properties Spec url is https://github.com/tc39/proposal-regexp-legacy-features
2022-10-17 17:08:33 +02:00
Linus Groh
b79b78a5cc
LibJS: Sync the set of rounding modes
...
This is a normative change in the Temporal spec.
See:
- 9613358
- 4c45464
2022-10-17 13:31:22 +02:00
Linus Groh
3d4ce3cc6d
LibJS: Add missing validation to remaining Calendar operations
...
This is a normative change in the Temporal spec.
See: c2a0cea
2022-10-17 12:56:05 +02:00
Linus Groh
4567ded8e4
LibJS: Reject relativeTo string such as "2022-08-18T17:01Z"
...
This is a normative change in the Temporal spec.
See: 2dc20bf
2022-10-17 12:56:05 +02:00
Linus Groh
57162ad510
LibJS: Rename IsValidTimeZoneName to IsAvailableTimeZoneName
...
This is an editorial change in the Temporal spec.
See: 873313b
2022-10-17 12:56:05 +02:00
Linus Groh
72997c6b77
LibJS: Define IsValidTimeZoneName in terms of AvailableTimeZones
...
This is an editorial change in the Temporal spec.
See: d83dcf0
Note that even though we already implement AvailableTimeZones for Intl,
I kept the existing implementation calling into LibTimeZone directly.
2022-10-17 12:56:05 +02:00
Hendiadyoin1
490c097bc4
LibJS: Forward a string aproximation of the CallExpression to Call Ops
...
This gives us better debug output when analysing calls to `undefined`
and also fixes multiple test-js cases expecting an
`(evaluated from $Expression)` in the error message.
This also refactors out the generation of that string, to avoid code
duplication with the AST interpreter.
2022-10-17 01:36:41 +02:00
Linus Groh
9e6475d76d
LibJS: Add spec comments to RegExpObject
...
Also fix the evaluation order of ToString for pattern and flags while
we're here, and improve some of the variable names.
2022-10-16 17:32:02 +02:00
Linus Groh
eb5be649a5
LibJS: Add spec comments to RegExpConstructor
2022-10-16 17:32:02 +02:00
Linus Groh
1da66b5879
LibJS: Implement the RegExpAlloc AO
2022-10-16 17:32:02 +02:00
Linus Groh
b6f101f1c0
LibJS: Fix TemporalCalendarString ambiguity
...
This is a normative change in the Temporal spec.
See:
- 278d238
- b73aea7
2022-10-16 15:20:23 +02:00
Linus Groh
484c66125d
LibJS: Rename Get{IANA => Named}TimeZonePreviousTransition
...
This is an editorial change in the Temporal spec.
See: 6b759d1
2022-10-16 14:45:09 +02:00
Linus Groh
8cc260107d
LibJS: Rename Get{IANA => Named}TimeZoneNextTransition
...
This is an editorial change in the Temporal spec.
See: 4b0246a
2022-10-16 14:45:09 +02:00
Idan Horowitz
d795f9c6cf
LibJS: Change dateAdd to a required parameter of MoveRelativeDate
...
This is an editorial change in the Temporal spec.
See: 45d9079
2022-10-16 13:45:56 +02:00
Idan Horowitz
3c55643283
LibJS: Add dateAdd to all remaining MoveRelativeDate calls
...
This is a normative change in the Temporal spec.
See: a48838a
2022-10-16 13:45:56 +02:00
Idan Horowitz
4e79ce4e7a
LibJS: Add optional dateAdd parameter to MoveRelativeDate
...
This is a normative change in the Temporal spec.
See: 891060f
2022-10-16 13:45:56 +02:00
Luke Wilde
35c9e324b4
LibJS: Add fast path TimeZone conversion to PlainDate#toZonedDateTime
...
This is a normative chane in the Temporal spec.
See: fcab1af
2022-10-16 13:40:21 +02:00
Luke Wilde
707f12f927
LibJS: Remove extra property check from Instant#toZonedDateTimeISO
...
This is a normative change in the Temporal spec.
See: 7dfbd80
2022-10-16 13:40:21 +02:00
Luke Wilde
f7bb79d6d1
LibJS: Fast-path ToTemporalTimeZone when the argument is a TimeZone
...
This is a normative change in the Temporal spec.
See: 54cea53
2022-10-16 13:40:21 +02:00