Verifier support for CheckROCOW
commit74fab3522dbb780b0ab97adc7f41c202819feda4
authorKaty Voor <voork@fb.com>
Thu, 22 Apr 2021 16:49:43 +0000 (22 09:49 -0700)
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
Thu, 22 Apr 2021 16:51:53 +0000 (22 09:51 -0700)
tree5d16966e32eafe7cc32a30ac33c0dd52111b071e
parentfb5c1aed3a6d48262d93cc4e05610a3155ec4f17
Verifier support for CheckROCOW

Summary:
CheckROCOW must only appear on the last property access in a member op chain.

- `CheckROCOW` can only appear on prop-flavored dims + BaseSC
- `CheckROCOW` can only appear on the *last* prop-flavored dim

We'd like to also enforce that it *must* appear if there are bytecodes that support it in the member op chain. We can't add this check yet because HackC support isn't finished, so currently all the immediates are `ReadOnlyOp::Any`. Filed a task: T89353653

Reviewed By: ricklavoie

Differential Revision: D27905533

fbshipit-source-id: ab44eea180268fd95486cd0b84ca5892af5efb84
hphp/runtime/vm/member-key.cpp
hphp/runtime/vm/verifier/check-func.cpp
hphp/test/slow/readonly/cgets_check_rocow.hhas [new file with mode: 0644]
hphp/test/slow/readonly/cgets_check_rocow.hhas.expectf [new file with mode: 0644]
hphp/test/slow/readonly/cgets_check_rocow.hhas.verify [new file with mode: 0644]
hphp/test/slow/readonly/dup_check_rocow.hhas [new file with mode: 0644]
hphp/test/slow/readonly/dup_check_rocow.hhas.expectf [new file with mode: 0644]
hphp/test/slow/readonly/dup_check_rocow.hhas.verify [new file with mode: 0644]