Several type system bug fixes, and improve inference on jmpType for IsTypeL
commit686b040e7081256e5594c6b63d9c33ad44e4ca84
authorJordan DeLong <jdelong@fb.com>
Sun, 15 Dec 2013 19:26:11 +0000 (15 11:26 -0800)
committerSara Golemon <sgolemon@fb.com>
Wed, 18 Dec 2013 19:41:29 +0000 (18 11:41 -0800)
tree2fc3690f4d7d4d372fe29d669fae7a0c8e267197
parentfe90718182b03bf950a9f0dfa124fc70faa46509
Several type system bug fixes, and improve inference on jmpType for IsTypeL

Several of the functions relating to option types were wrong
if the option type had data (e.g. types like ?SStr="foo").  It's
easier to get everything right after adding TOptC{Str,Arr} types,
although I don't think they should happen much, so I added those.
Also, update IsTypeL; Jmp cases to do as good as the CGetL; Jmp cases
do with optional object subtypes.

Reviewed By: @edwinsmith

Differential Revision: D1099593
hphp/compiler/compiler.cpp
hphp/hhbbc/abstract-interp.cpp
hphp/hhbbc/class-util.cpp
hphp/hhbbc/options.h
hphp/hhbbc/show.cpp
hphp/hhbbc/test/type-system.cpp
hphp/hhbbc/type-system.cpp
hphp/hhbbc/type-system.h
hphp/test/slow/hhbbc/jmp_type_003.php [new file with mode: 0644]
hphp/test/slow/hhbbc/jmp_type_003.php.expect [new file with mode: 0644]