• jgruber's avatar
    Remove isolate parameter from RecordWrite builtin · 62766423
    jgruber authored
    The isolate can be efficiently loaded through other means: either as a
    root-relative load (if embedded builtins are enabled), or as an embedded
    external reference (i.e. the absolute pointer is included in the
    instruction stream) otherwise.
    
    The generated code should be at least as fast as previously. On x64
    (with embedded builtins):
    
    Before:
     // Register moves in prologue:
     0x7f47a6b4860a     a  488955e0       REX.W movq [rbp-0x20],rdx
     // And the load from a stack slot at each use-site.
     0x7f47a6b486f2    f2  488b7de0       REX.W movq rdi,[rbp-0x20]
    
    After:
     // Each use-site just loads a root-relative offset.
     0x7f1645fcc6ce    ee  498dbd38ffffff REX.W leaq rdi,[r13-0xc8]
    
    On ia32 (no embedded builtins), before:
     0x5c608930    10  8955f0         mov [ebp-0x10],edx
     0x5c6089fb    db  891424         mov [esp],edx
    
    After:
     0x41d0898d    8d  b80033b156     mov eax,0x56b13300
    
    Removal reduces register pressure, and frees up ebx as the root register
    on ia32.
    
    Note that the set of allocatable registers was only reduced on ia32 to
    exclude the root register.
    
    Bug: v8:6666
    Change-Id: I14e401e2823c82042c76acae10c3c935b9982993
    Reviewed-on: https://chromium-review.googlesource.com/1201586
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#55587}
    62766423
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...
.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...