1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-24 01:05:08 +00:00
Commit graph

3794 commits

Author SHA1 Message Date
Linus Groh
d74ce90e74 LibJS: Add spec comments to exp{,_double}() 2022-12-10 11:23:23 +00:00
Linus Groh
eb4ea557f1 LibJS: Add spec comments to mod() 2022-12-10 11:23:23 +00:00
Linus Groh
dc747b3dd4 LibJS: Add spec comments to div() 2022-12-10 11:23:23 +00:00
Linus Groh
f0f476079b LibJS: Add spec comments to mul() 2022-12-10 11:23:23 +00:00
Linus Groh
51cdf2cdef LibJS: Add spec comments to sub() 2022-12-10 11:23:23 +00:00
Linus Groh
d5359164b1 LibJS: Add spec comments to add() 2022-12-10 11:23:23 +00:00
Linus Groh
e27ef63217 LibJS: Add spec comments to unsigned_right_shift() 2022-12-10 11:23:23 +00:00
Linus Groh
b66f9a8718 LibJS: Add spec comments to right_shift() 2022-12-10 11:23:23 +00:00
Linus Groh
8aa19a8a60 LibJS: Add spec comments to left_shift() 2022-12-10 11:23:23 +00:00
Linus Groh
08f6be1715 LibJS: Add spec comments to unary_minus() 2022-12-10 11:23:23 +00:00
Linus Groh
4458b7bf19 LibJS: Add spec comments to unary_plus() 2022-12-10 11:23:23 +00:00
Linus Groh
c23d8c7486 LibJS: Add spec comments to bitwise_not() 2022-12-10 11:23:23 +00:00
Linus Groh
f0f2dd5850 LibJS: Add spec comments to bitwise_xor() 2022-12-10 11:23:23 +00:00
Linus Groh
07f9ae908c LibJS: Add spec comments to bitwise_or() 2022-12-10 11:23:23 +00:00
Linus Groh
9d3d4a760f LibJS: Add spec comments to bitwise_and() 2022-12-10 11:23:23 +00:00
Linus Groh
3a8c704d19 LibJS: Add spec comments to less_than_equals() 2022-12-10 11:23:23 +00:00
Linus Groh
e53c8ae593 LibJS: Add spec comments to less_than() 2022-12-10 11:23:23 +00:00
Linus Groh
27ed1f6d5e LibJS: Add spec comments to greater_than_equals() 2022-12-10 11:23:23 +00:00
Linus Groh
444ba191af LibJS: Add spec comments to greater_than() 2022-12-10 11:23:23 +00:00
Linus Groh
058a247c61 LibJS: Add spec comments to Value::to_integer_or_infinity() 2022-12-10 11:23:23 +00:00
Linus Groh
72ee346f64 LibJS: Add spec comments to Value::to_index() 2022-12-10 11:23:23 +00:00
Linus Groh
d1b2ac41fd LibJS: Add spec comments to Value::to_length() 2022-12-10 11:23:23 +00:00
Linus Groh
34e372cbff LibJS: Add spec comments to Value::to_u8_clamp() 2022-12-10 11:23:23 +00:00
Linus Groh
fff5fe44c1 LibJS: Add spec comments to Value::to_u8() 2022-12-10 11:23:23 +00:00
Linus Groh
2a3f150ab8 LibJS: Add spec comments to Value::to_i8() 2022-12-10 11:23:23 +00:00
Linus Groh
42eac3b7d3 LibJS: Add spec comments to Value::to_u16() 2022-12-10 11:23:23 +00:00
Linus Groh
b8ae9ca206 LibJS: Add spec comments to Value::to_i16() 2022-12-10 11:23:23 +00:00
Linus Groh
1ef2b43e4c LibJS: Add spec comments to Value::to_u32() 2022-12-10 11:23:23 +00:00
Linus Groh
f958b19b19 LibJS: Add spec comments to Value::to_i32{,_slow_case}() 2022-12-10 11:23:23 +00:00
Linus Groh
c2d33ec48a LibJS: Add spec comments to Value::to_property_key() 2022-12-10 11:23:23 +00:00
Linus Groh
7abd9efe33 LibJS: Add spec comments to Value::to_bigint_uint64() 2022-12-10 11:23:23 +00:00
Linus Groh
fb5256b225 LibJS: Add spec comments to Value::to_bigint_int64() 2022-12-10 11:23:23 +00:00
Linus Groh
0d4b798932 LibJS: Add spec comments to Value::to_bigint() 2022-12-10 11:23:23 +00:00
Linus Groh
b97cdfc36c LibJS: Add spec comments to Value::to_number() 2022-12-10 11:23:23 +00:00
Linus Groh
9a406ccba6 LibJS: Add spec comments to Value::to_numeric() 2022-12-10 11:23:23 +00:00
Linus Groh
63f6099cc3 LibJS: Add spec comments to Value::to_object() 2022-12-10 11:23:23 +00:00
Linus Groh
9c10624278 LibJS: Add spec comments to Value::to_primitive() 2022-12-10 11:23:23 +00:00
Linus Groh
e3c8e1362f LibJS: Add spec comments to Value::to_boolean() 2022-12-10 11:23:23 +00:00
Linus Groh
596b30df5f LibJS: Add spec comments to Value::to_string() 2022-12-10 11:23:23 +00:00
Linus Groh
9a961af0b0 LibJS: Add spec comments to Value::typeof() 2022-12-10 11:23:23 +00:00
Linus Groh
1fe7984160 LibJS: Add spec comments to Value::is_regexp() 2022-12-10 11:23:23 +00:00
Linus Groh
b11135cbc2 LibJS: Add spec comments to Value::is_function() 2022-12-10 11:23:23 +00:00
Linus Groh
aaa4fe8c34 LibJS: Add spec comments to Value::is_array() 2022-12-10 11:23:23 +00:00
Linus Groh
5ee1758f46 LibJS: Use ToPropertyKey AO for computed member expression value
This ensures the value goes through the regular ToPrimitive mechanism,
which PropertyKey::from_value() bypasses. This is relevant for objects
with a @@toPrimitive method, for example.
Also enables one skipped test in delete-basic.js, which now passes.
2022-12-10 01:08:34 +00:00
Linus Groh
4cdfe684b8 LibJS: Remove redundant starts_with()s from is_less_than() string branch
This is not in the spec and does pointless work:
- If either of them is true, we would determine the same result with the
  manual code point iteration and comparison
- If neither of them is true, we iterate from the start again and repeat
  the work that was just done

Instead, only have the manual loop from the spec and do a length
comparison at the end.

Removing it brings the following microbenchmark from ~5.5s down to ~3.5s
on my machine:

```js
const a = "x".repeat(100_000_000) + "a";
const b = "x".repeat(100_000_000) + "b";
a < b
```
2022-12-10 00:40:52 +00:00
Luke Wilde
4db2efaecb LibJS/Bytecode: Implement yield* 2022-12-10 00:21:10 +00:00
Luke Wilde
758a4cb1a6 LibJS/Bytecode: Implement var/lexical binding destructuring in for/of 2022-12-10 00:21:10 +00:00
Andreas Kling
fbf9cb3387 WebContent+LibWeb+LibJS: Simplify injection of JS console globals
Instead of creating a new global object and proxying everything through
it, we now evaluate console inputs inside a `with` environment.

This seems to match the behavior of WebKit and Gecko in my basic
testing, and removes the ConsoleGlobalObject which has been a source of
confusion and invalid downcasts.

The globals now live in a class called ConsoleGlobalObjectExtensions
(renamed from ConsoleGlobalObject since it's no longer a global object).

To make this possible, I had to add a way to override the initial
lexical environment when calling JS::Interpreter::run(). This is plumbed
via Web::HTML::ClassicScript::run().
2022-12-09 18:51:03 +00:00
Moustafa Raafat
ae2abcebbb Everywhere: Use C++ concepts instead of requires clauses 2022-12-09 11:25:30 +00:00
Andreas Kling
9721da2e6a LibJS: Call shrink_to_fit() on various Vectors created during parse
Vectors that stick around in the AST were wasting a fair bit of memory
due to the growth padding we keep by default. This patch goes after some
of these vectors with the shrink_to_fit() stick to reduce waste.

Since the AST can stay around for a long time, it is worth making an
effort to shrink it down when we have a chance.
2022-12-08 23:36:17 +00:00