• Daniel Clifford's avatar
    [torque]: Add constexpr keyword/types for compile-time evaluation · aeb86d57
    Daniel Clifford authored
    Torque expressions of type constexpr are evaluated at compile-time
    rather than runtime. They are backed by C++ types rather than
    TNode<X> types, so the macro functions that are called by generated
    C++ code expect values to be computed when the snapshot is generated
    rather than by TurboFan-generated code.
    
    Specifically, "if" statements can have a constexpr modifier. With this
    modifier, a type of "constexpr bool" is expected rather than "bool",
    and in that case instead of generating a CSA BranchIf, it generates
    a C++ "if (<bool expression>)" that generates code for only the true or
    false path based on the bool value at torque-execution (compile time)
    rather than generating both paths (including inserting phi nodes
    for variables modified on either branch at the re-merge at the end
    of the if) and dynamically dispatching to the true or false path
    during d8/Chrome/node.js execution (runtime) using a CSA BranchIf.
    
    Change-Id: I8238e25aaadbfc618847e04556e96a3949ea5a8d
    Reviewed-on: https://chromium-review.googlesource.com/1042085
    Commit-Queue: Daniel Clifford <danno@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#53001}
    aeb86d57
ast-generator.cc 25.9 KB