Fix a couple of silence operator issues
commitd7a9f2f1bf335ca954c2085d49318620e5752a03
authorMark Williams <mwilliams@fb.com>
Thu, 24 Aug 2017 14:45:07 +0000 (24 07:45 -0700)
committerHhvm Bot <hhvm-bot@users.noreply.github.com>
Thu, 24 Aug 2017 14:58:46 +0000 (24 07:58 -0700)
tree87cfc1d062a57839e8d8a22028124a60f46ad2c7
parent31b24ed42bbd02ebef8ae7724aa271601c910990
Fix a couple of silence operator issues

Summary:
If a fatal was thrown from within a silenced region, and the
error_handler was called, there was nothing to reset the silence
state, and code running in the error_handler would be silenced.

If the verifier encountered a Fatal opcode with any silencers active,
it would fail verification. Instead, we should just clear the silencer
state (reflecting the change in the runtime to do just that).

Reviewed By: alexeyt

Differential Revision: D5693809

fbshipit-source-id: ea25abecad69b188287cdd27e3733ccc580bfc93
hphp/runtime/base/execution-context.cpp
hphp/runtime/vm/verifier/check-func.cpp
hphp/test/slow/silence_operator/fatal_and_no_op.php [new file with mode: 0644]
hphp/test/slow/silence_operator/fatal_and_no_op.php.expectf [new file with mode: 0644]
hphp/test/slow/silence_operator/fatal_and_no_op.php.opts [new file with mode: 0644]