• Ross McIlroy's avatar
    [SFI] Add support for flushing old Bytecode from SharedFunctionInfos. · a55803a1
    Ross McIlroy authored
    This change makes the SFI to bytecode link pseudo-weak. The marking visitors
    check whether the bytecode is old, and if so, don't mark it and instead
    push the SFI onto a bytecode_flushing_candidates worklist. Once marking
    is complete, this list is walked, and for any of the candidates who's bytecode
    has not been marked (i.e., is only referenced by the shared function info),
    the bytecode is flushed and the SFI has the function data replaced with
    an UncompiledData (which overwrites the flushed bytecode array).
    
    Since we don't track JSFunctions, these can still think the underlying
    function is compiled, and so calling them will invoke
    InterpreterEntryTrampoline. As such, logic is added to
    InterpreterEntryTrampoline to detect flushed functions, and enter
    CompileLazy instead.
    
    BUG=v8:8395
    
    Change-Id: I4afba79f814ca9a92dec45d59485935845a6669d
    Reviewed-on: https://chromium-review.googlesource.com/c/1348433
    Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#58158}
    a55803a1
mark-compact.h 35.8 KB