ladybird/Userland/Libraries/LibJS/Bytecode
Timothy Flynn 66264f7c2a LibJS: Change ExecutionContext's arguments list to a MarkedValueList
The test262 tests under RegExp/property-escapes/generated will invoke
Reflect.apply with up to 10,000 arguments at a time. In LibJS, when the
call stack reached VM::call_internal, we transfer those arguments from
a MarkedValueList to the execution context's arguments Vector.

Because these types differ (MarkedValueList is a Vector<Value, 32>), the
arguments are copied rather than moved. By changing the arguments vector
to a MarkedValueList, we can properly move the passed arguments over.

This shaves about 2 seconds off the following test262 test (from 15sec):
  RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js
2021-08-10 23:07:50 +02:00
..
Pass LibJS: Remove unused header includes 2021-08-01 08:10:16 +02:00
ASTCodegen.cpp LibJS: Add support for binding patterns in catch clauses 2021-07-11 21:41:54 +01:00
BasicBlock.cpp LibJS: Add a basic pass manager and add some basic passes 2021-06-15 22:06:33 +04:30
BasicBlock.h LibJS: Make basic block size customizable 2021-06-15 22:06:33 +04:30
Generator.cpp LibJS: Remove unused header includes 2021-08-01 08:10:16 +02:00
Generator.h LibJS: Implement generator functions (only in bytecode mode) 2021-06-11 00:30:09 +02:00
Instruction.cpp LibJS: Move Instruction::length() to the Op.h header 2021-06-09 09:24:32 +02:00
Instruction.h LibJS: NewClass bytecode instruction 2021-07-01 17:34:05 +02:00
Interpreter.cpp LibJS: Change ExecutionContext's arguments list to a MarkedValueList 2021-08-10 23:07:50 +02:00
Interpreter.h LibJS: Add a basic pass manager and add some basic passes 2021-06-15 22:06:33 +04:30
Label.h LibJS: Add a basic pass manager and add some basic passes 2021-06-15 22:06:33 +04:30
Op.cpp LibJS: Remove unused header includes 2021-08-01 08:10:16 +02:00
Op.h LibJS: NewClass bytecode instruction 2021-07-01 17:34:05 +02:00
PassManager.h LibJS: Add a basic pass manager and add some basic passes 2021-06-15 22:06:33 +04:30
Register.h LibJS: Always keep the global object in bytecode VM register $1 2021-06-10 21:59:49 +02:00
StringTable.cpp LibJS: Store strings in a string table 2021-06-09 17:42:52 +02:00
StringTable.h LibJS: Store strings in a string table 2021-06-09 17:42:52 +02:00