Fix object serialization in arrprov modenightly-2020.09.12
commit6e0377deadf03b8d8f24c7d95661c69a8cc97c67
authorShaunak Kishore <[email protected]>
Sat, 12 Sep 2020 01:10:27 +0000 (11 18:10 -0700)
committerFacebook GitHub Bot <[email protected]>
Sat, 12 Sep 2020 01:12:50 +0000 (11 18:12 -0700)
treea907571238676e63a872d1f48cfd19afff32ed3a
parent582eccc5436ad2409049e2a94bf27a06a5c2ea5f
Fix object serialization in arrprov mode

Summary: Objects are serialized by constructing an internal props array, but we don't deserialize these arrays via the generic array code, so we don't handle provenance in them. The right thing to do is to avoid ever serializing "provenance" for this internal array. We can achieve that by converting it (in place) to a dict.

Reviewed By: dneiter

Differential Revision: D23641509

fbshipit-source-id: 9f5090f342192270962fd0be91be8a0e267536f3
14 files changed:
hphp/runtime/base/runtime-option.cpp
hphp/runtime/base/variable-serializer.cpp
hphp/runtime/base/variable-serializer.h
hphp/runtime/base/variable-unserializer.h
hphp/runtime/ext/std/ext_std_intrinsics.cpp
hphp/runtime/ext/std/ext_std_intrinsics.php
hphp/test/slow/array_provenance/object-serialization.php [new file with mode: 0644]
hphp/test/slow/array_provenance/object-serialization.php.expectf [new file with mode: 0644]
hphp/test/slow/array_provenance/object-serialization.php.hphp_opts [new file with mode: 0644]
hphp/test/slow/array_provenance/object-serialization.php.opts [new file with mode: 0644]
hphp/test/slow/hack_arr_compat/json-encode.php.expectf
hphp/test/slow/hack_arr_compat/serialize2.php.expectf
hphp/test/slow/serialization/object-serialization.php [new file with mode: 0644]
hphp/test/slow/serialization/object-serialization.php.expect [new file with mode: 0644]