mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 01:35:08 +02:00
LibJS+LibWeb: Use InterpreterStack for all execution context allocation
Replace alloca-based execution context allocation with InterpreterStack bump allocation across all call sites: bytecode call instructions, AbstractOperations call/construct, script evaluation, module evaluation, and LibWeb module script evaluation. Also replace the native stack space check with an InterpreterStack exhaustion check, and remove the now-unused alloca macros from ExecutionContext.h.
This commit is contained in:
committed by
Andreas Kling
parent
0c5e4ebc18
commit
4e0e16e510
Notes:
github-actions[bot]
2026-03-04 17:54:33 +00:00
Author: https://github.com/awesomekling Commit: https://github.com/LadybirdBrowser/ladybird/commit/4e0e16e5108 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/8270
@@ -148,8 +148,12 @@ ThrowCompletionOr<GC::Ref<Promise>> SyntheticModule::evaluate(VM& vm)
|
||||
|
||||
// 1. Let moduleContext be a new ECMAScript code execution context.
|
||||
// 2. Set the Function of moduleContext to null.
|
||||
ExecutionContext* module_context = nullptr;
|
||||
ALLOCATE_EXECUTION_CONTEXT_ON_NATIVE_STACK(module_context, 0, 0, 0);
|
||||
auto& stack = vm.interpreter_stack();
|
||||
auto* stack_mark = stack.top();
|
||||
auto* module_context = stack.allocate(0, 0, 0);
|
||||
if (!module_context) [[unlikely]]
|
||||
return vm.throw_completion<InternalError>(ErrorType::CallStackSizeExceeded);
|
||||
ScopeGuard deallocate_guard = [&stack, stack_mark] { stack.deallocate(stack_mark); };
|
||||
|
||||
// 3. Set the Realm of moduleContext to module.[[Realm]].
|
||||
module_context->realm = &realm;
|
||||
|
||||
Reference in New Issue
Block a user