• 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
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...