• Benedikt Meurer's avatar
    [debug] Instantiate accessors only once. · e9873bf1
    Benedikt Meurer authored
    When retrieving an API accessor function (i.e. either the getter or the
    setter) for which the lazy accessor mechanism is used (i.e. where the
    actual JSFunction is created lazily and only the FunctionTemplateInfo)
    is around, we thus far created a fresh JSFunction every time the
    accessor function is requested, but that's observably wrong behavior,
    since the accessors are JavaScript objects with identity. We currently
    rely on the instantiation cache to guarantee identity, but there's no
    reason why we couldn't instead just put the instantiated JSFunction into
    the AccessorPair.
    
    Fixing this to only instantiate the lazy accessor pair only once, upon
    first time it's requested, coincidentally also simplifies (and fixes)
    the API accessor breakpoint machinery. This was previously lacking
    support for walking dictionary prototype objects and forcibly
    instantiating the lazy accessor pairs with break points. However, all
    this magic in the debugger is no longer necessary when we ensure that
    the lazy accessor pair component is generally only instantiated once.
    
    Bug: v8:178, v8:7596, chromium:986063, chromium:496666
    Change-Id: I41d28378010716c96c8ecf7c3f1247765f8bc669
    Fixed: chromium:1163547
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2731527Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#73163}
    e9873bf1
Name
Last commit
Last update
..
api Loading commit data...
asmjs Loading commit data...
ast Loading commit data...
base Loading commit data...
baseline Loading commit data...
builtins Loading commit data...
codegen Loading commit data...
common Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
d8 Loading commit data...
date Loading commit data...
debug Loading commit data...
deoptimizer Loading commit data...
diagnostics Loading commit data...
execution Loading commit data...
extensions Loading commit data...
flags Loading commit data...
handles Loading commit data...
heap Loading commit data...
ic Loading commit data...
init Loading commit data...
inspector Loading commit data...
interpreter Loading commit data...
json Loading commit data...
libplatform Loading commit data...
libsampler Loading commit data...
logging Loading commit data...
numbers Loading commit data...
objects Loading commit data...
parsing Loading commit data...
profiler Loading commit data...
protobuf Loading commit data...
regexp Loading commit data...
roots Loading commit data...
runtime Loading commit data...
sanitizer Loading commit data...
snapshot Loading commit data...
strings Loading commit data...
tasks Loading commit data...
third_party Loading commit data...
torque Loading commit data...
tracing Loading commit data...
trap-handler Loading commit data...
utils Loading commit data...
wasm Loading commit data...
zone Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
OWNERS Loading commit data...