Introduce RecordArray
commit7cdfe4dbf6aaef989c393a699088ddc4475ddaf2
authorArnab De <arnabde@fb.com>
Fri, 16 Aug 2019 00:22:15 +0000 (15 17:22 -0700)
committerHhvm Bot <hhvm-bot@users.noreply.github.com>
Fri, 16 Aug 2019 00:24:38 +0000 (15 17:24 -0700)
tree0645a62107e0bd95de61f5bfcdc62b696e9d161d
parentb99b9f9991a7ef585c8fd54979c6879d542ba1c4
Introduce RecordArray

Summary:
This diff introduces `RecordArray`, a new `ArrayKind` which is backed by a `RecordData`-like storage. It also has a hash map  to contain arbitrary field-value pairs that are not declared in the corresponding `RecordDesc`.

This diff also introduces `NewRecordArray` bytecode to create such arrays and the `Release` method, but stubs out all other `ArrayData` methods.

Reviewed By: paulbiss

Differential Revision: D16381732

fbshipit-source-id: ed0c6e64a3becd1a61600bfa93d4413c0b737cb1
43 files changed:
hphp/doc/bytecode.specification
hphp/doc/ir.specification
hphp/hhbbc/dce.cpp
hphp/hhbbc/interp.cpp
hphp/runtime/base/array-data-inl.h
hphp/runtime/base/array-data.cpp
hphp/runtime/base/array-data.h
hphp/runtime/base/header-kind.h
hphp/runtime/base/heap-collect.cpp
hphp/runtime/base/heap-report.cpp
hphp/runtime/base/heap-scan.h
hphp/runtime/base/memory-manager-defs.h
hphp/runtime/base/memory-manager.cpp
hphp/runtime/base/perf-mem-event.cpp
hphp/runtime/base/record-array.cpp [new file with mode: 0644]
hphp/runtime/base/record-array.h [new file with mode: 0644]
hphp/runtime/base/record-common.cpp [copied from hphp/runtime/base/record-data.cpp with 58% similarity]
hphp/runtime/base/record-common.h [copied from hphp/runtime/base/record-data-inl.h with 56% similarity]
hphp/runtime/base/record-data-inl.h
hphp/runtime/base/record-data.cpp
hphp/runtime/base/record-data.h
hphp/runtime/base/runtime-option.h
hphp/runtime/base/unit-cache.cpp
hphp/runtime/ext/asio/ext_await-all-wait-handle.cpp
hphp/runtime/ext/objprof/ext_heapgraph.cpp
hphp/runtime/vm/as.cpp
hphp/runtime/vm/bytecode.cpp
hphp/runtime/vm/bytecode.h
hphp/runtime/vm/hhbc.h
hphp/runtime/vm/jit/check.cpp
hphp/runtime/vm/jit/dce.cpp
hphp/runtime/vm/jit/extra-data.h
hphp/runtime/vm/jit/ir-instruction.cpp
hphp/runtime/vm/jit/ir-opcode.cpp
hphp/runtime/vm/jit/irgen-create.cpp
hphp/runtime/vm/jit/irlower-array.cpp
hphp/runtime/vm/jit/memory-effects.cpp
hphp/runtime/vm/jit/translator.cpp
hphp/runtime/vm/verifier/check-func.cpp
hphp/test/quick/simple-recordarray.php [new file with mode: 0644]
hphp/test/quick/simple-recordarray.php.expect [new file with mode: 0644]
hphp/test/quick/simple-recordarray.php.hphp_opts [new file with mode: 0644]
hphp/test/quick/simple-recordarray.php.opts [new file with mode: 0644]