1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 04:48:14 +00:00
serenity/Userland/Libraries/LibJS
Andreas Kling 077406dc36 LibJS: Fix two issues with array (length > INT32_MAX)
1. Allow Value(size_t) and use it for array length properties.

If an array length can't fit in an Int32 value, we shouldn't go out of
or way to force it into one. Instead, for values above INT32_MAX,
we simply store them as Double values.

2. Switch to generic indexed property storage for large arrays.

Previously we would always allocate array storage eagerly when the
length property was set. This meant that "a.length = 0x80000000" would
trivially DOS the engine on 32-bit since we don't have that much VM.

We now switch to generic storage when changing the length moves us over
the 4M entry mark.

Fixes #5986.
2021-03-30 13:52:56 +02:00
..
Heap LibJS: Fix m_allocations_since_last_gc initialization value 2021-03-28 20:40:22 +02:00
Runtime LibJS: Fix two issues with array (length > INT32_MAX) 2021-03-30 13:52:56 +02:00
Tests LibJS: Fix two issues with array (length > INT32_MAX) 2021-03-30 13:52:56 +02:00
AST.cpp Only apply auto-naming of function expressions based on syntax 2021-03-22 12:44:07 +01:00
AST.h Only apply auto-naming of function expressions based on syntax 2021-03-22 12:44:07 +01:00
CMakeLists.txt LibSyntax+LibGUI+LibJS: Move JS syntax highlighter to LibJS 2021-02-07 16:56:02 +01:00
Console.cpp LibJS: Put console dbgln() logging behind #ifdef __serenity__ 2021-03-02 08:36:34 +01:00
Console.h LibJS: Print console.{debug,error,info,log,warn} to system debug log 2021-02-21 21:32:16 +01:00
Forward.h LibJS: Implement the GetMethod abstract operation 2021-03-02 19:20:29 +01:00
Interpreter.cpp LibJS: Don't track executing AST nodes in a Vector 2021-03-21 21:39:39 +01:00
Interpreter.h LibJS: Always inline some tiny Interpreter getters 2021-03-21 21:39:39 +01:00
Lexer.cpp LibJS: Keep track of file names, lines and columns inside the AST 2021-03-01 11:14:36 +01:00
Lexer.h LibJS: Keep track of file names, lines and columns inside the AST 2021-03-01 11:14:36 +01:00
MarkupGenerator.cpp Everywhere: Rename ASSERT => VERIFY 2021-02-23 20:56:54 +01:00
MarkupGenerator.h Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
Parser.cpp Only apply auto-naming of function expressions based on syntax 2021-03-22 12:44:07 +01:00
Parser.h LibJS: Keep track of file names, lines and columns inside the AST 2021-03-01 11:14:36 +01:00
SourceRange.h LibJS: Keep track of file names, lines and columns inside the AST 2021-03-01 11:14:36 +01:00
SyntaxHighlighter.cpp LibSyntax: Make rehighlight() take Gfx::Palette as by const-reference 2021-02-11 23:52:39 +01:00
SyntaxHighlighter.h LibSyntax: Make rehighlight() take Gfx::Palette as by const-reference 2021-02-11 23:52:39 +01:00
Token.cpp Everywhere: Rename ASSERT => VERIFY 2021-02-23 20:56:54 +01:00
Token.h LibJS: Keep track of file names, lines and columns inside the AST 2021-03-01 11:14:36 +01:00