mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-05 18:01:34 +00:00
27ceb62ebd
The 'prototype' prop of a source function is, by default, an empty object with a 'constructor' prop pointing back to the function. Currently, every source function is created in this fashion, which makes it a circular reference and thus prevents it from being freed until the Garbage Collector kicks in. The performance impact comes from the function keeping a ref to the enclosing scope, and since the scope is being held by it, the engine will detach the scope, believing it to be used for the time being (until the GC cleans it). This can cause substantial performance issues for such a common case. The FFXIV Launcher, for example, leaks a large amount of such short-lived functions and the enclosing scopes. Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com> |
||
---|---|---|
.. | ||
tests | ||
activex.c | ||
array.c | ||
bool.c | ||
cc_parser.y | ||
compile.c | ||
date.c | ||
decode.c | ||
dispex.c | ||
engine.c | ||
engine.h | ||
enumerator.c | ||
error.c | ||
function.c | ||
global.c | ||
jscript.c | ||
jscript.h | ||
jscript.rc | ||
jscript.rgs | ||
jscript.spec | ||
jscript_classes.idl | ||
jscript_main.c | ||
jsglobal.idl | ||
jsglobal_dispid.h | ||
json.c | ||
jsregexp.c | ||
jsstr.c | ||
jsstr.h | ||
jsutils.c | ||
jsval.h | ||
lex.c | ||
Makefile.in | ||
math.c | ||
number.c | ||
object.c | ||
parser.h | ||
parser.y | ||
regexp.c | ||
regexp.h | ||
resource.h | ||
set.c | ||
string.c | ||
vbarray.c |