mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 01:35:08 +02:00
LibJS: Allocate ExecutionContext memory using alloca() when possible
This should be faster than heap allocation. However, heap allocation is still necessary in some cases, such as with generators and async functions.
This commit is contained in:
committed by
Andreas Kling
parent
5a92929282
commit
a329868c1b
Notes:
github-actions[bot]
2025-04-24 08:32:11 +00:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/LadybirdBrowser/ladybird/commit/a329868c1bf Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4434 Reviewed-by: https://github.com/alimpfard
@@ -501,7 +501,9 @@ ThrowCompletionOr<Value> ECMAScriptFunctionObject::internal_call(Value this_argu
|
||||
}
|
||||
|
||||
u32 arguments_count = max(arguments_list.size(), formal_parameters().size());
|
||||
auto callee_context = ExecutionContext::create(m_bytecode_executable->number_of_registers + m_bytecode_executable->constants.size() + m_bytecode_executable->local_variable_names.size(), arguments_count);
|
||||
auto registers_and_constants_and_locals_count = m_bytecode_executable->number_of_registers + m_bytecode_executable->constants.size() + m_bytecode_executable->local_variable_names.size();
|
||||
ExecutionContext* callee_context = nullptr;
|
||||
ALLOCATE_EXECUTION_CONTEXT_ON_NATIVE_STACK(callee_context, registers_and_constants_and_locals_count, arguments_count);
|
||||
|
||||
// Non-standard
|
||||
auto arguments = callee_context->arguments();
|
||||
@@ -571,7 +573,9 @@ ThrowCompletionOr<GC::Ref<Object>> ECMAScriptFunctionObject::internal_construct(
|
||||
}
|
||||
|
||||
u32 arguments_count = max(arguments_list.size(), formal_parameters().size());
|
||||
auto callee_context = ExecutionContext::create(m_bytecode_executable->number_of_registers + m_bytecode_executable->constants.size() + m_bytecode_executable->local_variable_names.size(), arguments_count);
|
||||
auto registers_and_constants_and_locals_count = m_bytecode_executable->number_of_registers + m_bytecode_executable->constants.size() + m_bytecode_executable->local_variable_names.size();
|
||||
ExecutionContext* callee_context = nullptr;
|
||||
ALLOCATE_EXECUTION_CONTEXT_ON_NATIVE_STACK(callee_context, registers_and_constants_and_locals_count, arguments_count);
|
||||
|
||||
// Non-standard
|
||||
auto arguments = callee_context->arguments();
|
||||
|
||||
Reference in New Issue
Block a user