• Tobias Tebbi's avatar
    [torque] generate implicit_cast according to VisitResult types · 46952216
    Tobias Tebbi authored
    In the generated CSA, we called overloaded macros while relying on CSA
    subtyping of TNodes. This doesn't work well with overloads, because
    for C++ any TNode subtyping is treated as an implicit conversion, which
    makes these calls ambiguous for C++.
    As a solution, we insert implicit_cast conversions for arguments
    according to the type predicted by Torque. This way, a CSA overload is always
    called with exactly the signature declared in base.tq.
    This has the additional benefit that it validates the signatures declared in
    base.tq, which could previously be too permissive.
    Also, this triggered a bug in structs, where VisitResult's were
    carrying the wrong type.
    
    Bug: v8:7793
    TBR: danno@chromium.org
    Change-Id: I8ed4bfd04793c8a8805a4a3dd5cf2a85c20ce786
    Reviewed-on: https://chromium-review.googlesource.com/1165237
    Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#54948}
    46952216
implementation-visitor.cc 70.9 KB