• Jon Kunkee's avatar
    Move ARM64 Assembler::nop definition from header to source file · 7803fa68
    Jon Kunkee authored
    When Assembler::nop is in the header, it is considered an inline
    function. With GN arg is_component_build=true, the V8_EXPORT_PRIVATE
    mark on the class causes it to be exported every time the header is
    included. This, in turn, produces a reference to
    Register::XRegFromCode.
    
    Register::XRegFromCode is only ever defined as an inlined function, so
    that reference is never fulfilled.
    
    Clang can avoid this using the /Fc:dllexportInlines- flag to suppress
    the export of Assembler::nop and so avoid generating the reference to
    Register::XRegFromCode.
    
    MSVC does not support this flag, so this change suppresses the export
    by moving Assembler::nop's definition to the .cc file. This also allows
    it to use the inline definition of Register::XRegFromCode.
    
    Bug: v8:8870
    Change-Id: I1cd33195677256c9dd06c7047fe84e1b912d3151
    Reviewed-on: https://chromium-review.googlesource.com/c/1478216Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Commit-Queue: Michael Achenbach <machenbach@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#59785}
    7803fa68
assembler-arm64.cc 166 KB