• Daniel Clifford's avatar
    [torque] Implement implicit parameters · 9958694f
    Daniel Clifford authored
    The implicit parameter syntax adds a second parameter list
    before the explicit parameter list when declaring macros, builtins and
    runtime functions:
    
      extern macro MyMacro(implicit a: Smi)(b: Oddball);
    
    when calling the macro, only the formal parameters can be provided
    at the call site. The implicit parameters are implicitly looked-up
    by name in the scope of the call and prepended to the explicit parameter
    list. The values that are found by name for each implicit parameter must
    be castable the corresponding implicit parameter type:
    
      MyMacro(Null);  // Error, a is not defined
      ...
      const a: Smi = 0;
      MyMacro(Null);  // OK
      ...
      const a: Object = 0;
      MyMacro(Null);  // Error, a has wrong type
    
    For external macros, builtins and runtime functions, the formal
    parameter list expected on the C++ side is the concatenation of the
    implicit and explicit parameter lists.
    
    As a drive-by: fix the formatting of typeswitch statements in the
    the presence of deferred-marked blocks and funky white space.
    
    Bug: v8:7793
    Change-Id: I40da8405c706d7cdeca35367c9c954d0b33f6bf4
    Reviewed-on: https://chromium-review.googlesource.com/c/1270996
    Commit-Queue: Daniel Clifford <danno@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#56555}
    9958694f
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps 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...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes 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...