Fix several issues with type assert opcodes
Type assertions were allocating new DynLocations every time
we encountered them, which breaks getOutputUsage (it uses DynLocation
pointer equality to track the flow of values). When encountering
assertions, it also wasn't doing the optimization that we have in
applyInputMetaData to eliminate earlier predictions on the same
location. Finally, this diff finishes the support for optional object
types (fixes inlining and object property accesses in these
situations).
Reviewed By: @swtaarrs
Differential Revision:
D1128602