• Tobias Tebbi's avatar
    [torque] add references to HeapObject fields. · a9a1a3bb
    Tobias Tebbi authored
    This adds references to HeapObject fields to Torque.
    The syntax is based on Rust (which is essentially C pointer syntax).
    
    The type &T is a reference to T (which must be a scalar type for now).
    We can create references from field access expressions, using the
    addressof(&) operator:
      &obj.fieldname
    To read or assign a reference, we use the dereference(*) operator:
      *someref = *otherref
    
    This CL also uses references internally normal class field accesses,
    but only if there is no overload for field accessor functions.
    This allows to have overloaded field accessors for a subtype like
    FastJSArray. However, there is a change in behavior in that an
    operator ".fieldname" will stop reference creation and will therefore
    also stop write access to a class field of the same name. That's why
    this CL had to add a write overload ".length=" for FastJSArray.
    
    References desugar to a pair of a tagged HeapObject pointer and an
    untagged offset into this HeapObject. On the CSA-side, they are
    represented by the C++ struct
    
    struct TorqueReference {
      TNode<HeapObject> object;
      TNode<IntPtrT> offset;
    };
    
    Bug: v8:7793
    Change-Id: Ica6468d47847bd68fb6b85f731cf8fbe142fa401
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1557151
    Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#60780}
    a9a1a3bb
Name
Last commit
Last update
..
ls Loading commit data...
ast.h Loading commit data...
cfg.cc Loading commit data...
cfg.h Loading commit data...
contextual.h Loading commit data...
csa-generator.cc Loading commit data...
csa-generator.h Loading commit data...
declarable.cc Loading commit data...
declarable.h Loading commit data...
declaration-visitor.cc Loading commit data...
declaration-visitor.h Loading commit data...
declarations.cc Loading commit data...
declarations.h Loading commit data...
earley-parser.cc Loading commit data...
earley-parser.h Loading commit data...
file-visitor.cc Loading commit data...
file-visitor.h Loading commit data...
global-context.h Loading commit data...
implementation-visitor.cc Loading commit data...
implementation-visitor.h Loading commit data...
instructions.cc Loading commit data...
instructions.h Loading commit data...
parameter-difference.h Loading commit data...
server-data.cc Loading commit data...
server-data.h Loading commit data...
source-positions.cc Loading commit data...
source-positions.h Loading commit data...
torque-compiler.cc Loading commit data...
torque-compiler.h Loading commit data...
torque-parser.cc Loading commit data...
torque-parser.h Loading commit data...
torque.cc Loading commit data...
type-oracle.cc Loading commit data...
type-oracle.h Loading commit data...
types.cc Loading commit data...
types.h Loading commit data...
utils.cc Loading commit data...
utils.h Loading commit data...