mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-26 09:59:43 +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 | ||