• 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
..
compiler Loading commit data...
heap Loading commit data...
interpreter Loading commit data...
libplatform Loading commit data...
libsampler Loading commit data...
parsing Loading commit data...
torque Loading commit data...
wasm Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
assembler-helper-arm.cc Loading commit data...
assembler-helper-arm.h Loading commit data...
cctest.cc Loading commit data...
cctest.h Loading commit data...
cctest.status Loading commit data...
expression-type-collector-macros.h Loading commit data...
gay-fixed.cc Loading commit data...
gay-fixed.h Loading commit data...
gay-precision.cc Loading commit data...
gay-precision.h Loading commit data...
gay-shortest.cc Loading commit data...
gay-shortest.h Loading commit data...
log-eq-of-logging-and-traversal.js Loading commit data...
print-extension.cc Loading commit data...
print-extension.h Loading commit data...
profiler-extension.cc Loading commit data...
profiler-extension.h Loading commit data...
scope-test-helper.h Loading commit data...
setup-isolate-for-tests.cc Loading commit data...
setup-isolate-for-tests.h Loading commit data...
test-access-checks.cc Loading commit data...
test-accessor-assembler.cc Loading commit data...
test-accessors.cc Loading commit data...
test-allocation.cc Loading commit data...
test-api-accessors.cc Loading commit data...
test-api-interceptors.cc Loading commit data...
test-api.cc Loading commit data...
test-api.h Loading commit data...
test-array-list.cc Loading commit data...
test-assembler-arm.cc Loading commit data...
test-assembler-arm64.cc Loading commit data...
test-assembler-ia32.cc Loading commit data...
test-assembler-mips.cc Loading commit data...
test-assembler-mips64.cc Loading commit data...
test-assembler-ppc.cc Loading commit data...
test-assembler-s390.cc Loading commit data...
test-assembler-x64.cc Loading commit data...
test-atomicops.cc Loading commit data...
test-bignum-dtoa.cc Loading commit data...
test-bignum.cc Loading commit data...
test-bit-vector.cc Loading commit data...
test-circular-queue.cc Loading commit data...
test-code-layout.cc Loading commit data...
test-code-stub-assembler.cc Loading commit data...
test-compiler.cc Loading commit data...
test-constantpool.cc Loading commit data...
test-conversions.cc Loading commit data...
test-cpu-profiler.cc Loading commit data...
test-date.cc Loading commit data...
test-debug.cc Loading commit data...
test-decls.cc Loading commit data...
test-deoptimization.cc Loading commit data...
test-dictionary.cc Loading commit data...
test-disasm-arm.cc Loading commit data...
test-disasm-arm64.cc Loading commit data...
test-disasm-ia32.cc Loading commit data...
test-disasm-mips.cc Loading commit data...
test-disasm-mips64.cc Loading commit data...
test-disasm-ppc.cc Loading commit data...
test-disasm-s390.cc Loading commit data...
test-disasm-x64.cc Loading commit data...
test-diy-fp.cc Loading commit data...
test-double.cc Loading commit data...
test-dtoa.cc Loading commit data...
test-elements-kind.cc Loading commit data...
test-extra.js Loading commit data...
test-factory.cc Loading commit data...
test-fast-dtoa.cc Loading commit data...
test-feedback-vector.cc Loading commit data...
test-feedback-vector.h Loading commit data...
test-field-type-tracking.cc Loading commit data...
test-fixed-dtoa.cc Loading commit data...
test-flags.cc Loading commit data...
test-func-name-inference.cc Loading commit data...
test-fuzz-arm64.cc Loading commit data...
test-global-handles.cc Loading commit data...
test-global-object.cc Loading commit data...
test-hashcode.cc Loading commit data...
test-hashmap.cc Loading commit data...
test-heap-profiler.cc Loading commit data...
test-icache.cc Loading commit data...
test-identity-map.cc Loading commit data...
test-inobject-slack-tracking.cc Loading commit data...
test-inspector.cc Loading commit data...
test-intl.cc Loading commit data...
test-javascript-arm64.cc Loading commit data...
test-js-arm64-variables.cc Loading commit data...
test-js-weak-refs.cc Loading commit data...
test-liveedit.cc Loading commit data...
test-lockers.cc Loading commit data...
test-log-stack-tracer.cc Loading commit data...
test-log.cc Loading commit data...
test-macro-assembler-arm.cc Loading commit data...
test-macro-assembler-mips.cc Loading commit data...
test-macro-assembler-mips64.cc Loading commit data...
test-macro-assembler-x64.cc Loading commit data...
test-managed.cc Loading commit data...
test-mementos.cc Loading commit data...
test-modules.cc Loading commit data...
test-object.cc Loading commit data...
test-orderedhashtable.cc Loading commit data...
test-parsing.cc Loading commit data...
test-platform.cc Loading commit data...
test-poison-disasm-arm.cc Loading commit data...
test-profile-generator.cc Loading commit data...
test-random-number-generator.cc Loading commit data...
test-regexp.cc Loading commit data...
test-representation.cc Loading commit data...
test-roots.cc Loading commit data...
test-sampler-api.cc Loading commit data...
test-serialize.cc Loading commit data...
test-smi-lexicographic-compare.cc Loading commit data...
test-stack-unwinding-x64.cc Loading commit data...
test-strings.cc Loading commit data...
test-strtod.cc Loading commit data...
test-symbols.cc Loading commit data...
test-sync-primitives-arm.cc Loading commit data...
test-sync-primitives-arm64.cc Loading commit data...
test-thread-termination.cc Loading commit data...
test-threads.cc Loading commit data...
test-trace-event.cc Loading commit data...
test-traced-value.cc Loading commit data...
test-transitions.cc Loading commit data...
test-transitions.h Loading commit data...
test-typedarrays.cc Loading commit data...
test-types.cc Loading commit data...
test-unboxed-doubles.cc Loading commit data...
test-unscopables-hidden-prototype.cc Loading commit data...
test-unwinder.cc Loading commit data...
test-usecounters.cc Loading commit data...
test-utils-arm64.cc Loading commit data...
test-utils-arm64.h Loading commit data...
test-utils.cc Loading commit data...
test-version.cc Loading commit data...
test-weakmaps.cc Loading commit data...
test-weaksets.cc Loading commit data...
testcfg.py Loading commit data...
trace-extension.cc Loading commit data...
trace-extension.h Loading commit data...
unicode-helpers.cc Loading commit data...
unicode-helpers.h Loading commit data...