mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-23 03:22:54 +00:00
If a function has the following properties: - uses only local variables and registers - does not use `this` - does not use `new.target` - does not use `super` - does not use direct eval() calls then it is possible to entirely skip function environment allocation because it will never be used This change adds gathering of information whether a function needs to access `this` from environment and updates `prepare_for_ordinary_call()` to skip allocation when possible. For now, this optimisation is too aggressively blocked; e.g. if `this` is used in a function scope, then all functions in outer scopes have to allocate an environment. It could be improved in the future, although this implementation already allows skipping >80% of environment allocations on Discord, GitHub and Twitter. |
||
---|---|---|
.. | ||
Capabilities.cpp | ||
Capabilities.h | ||
Client.cpp | ||
Client.h | ||
Contexts.cpp | ||
Contexts.h | ||
ElementLocationStrategies.cpp | ||
ElementLocationStrategies.h | ||
Error.cpp | ||
Error.h | ||
ExecuteScript.cpp | ||
ExecuteScript.h | ||
Response.cpp | ||
Response.h | ||
Screenshot.cpp | ||
Screenshot.h | ||
TimeoutsConfiguration.cpp | ||
TimeoutsConfiguration.h |