Fix relaxation of specialized boxed types
commit810d3cccf28899a8cd0a528f0de60ece8beee0a8
authorBrett Simmers <bsimmers@fb.com>
Wed, 18 Jun 2014 11:45:12 +0000 (18 04:45 -0700)
committerfacebook-github-bot <githubbot@fb.com>
Thu, 19 Jun 2014 15:57:35 +0000 (19 08:57 -0700)
tree1e7ed970c514658a5dc3630bdd353cf7be63d265
parentcf0a0f55723957879dda9cd2f179efa1dccf8bf1
Fix relaxation of specialized boxed types

Summary: The main problem exposed by the new test was that the assert in
TypeConstraint::setDesiredClass was too restrictive. While I was fixing that I
noticed that relaxType was losing specialized inner types so I fixed that too
and added a gtest case to catch it.

Reviewed By: ottoni

Differential Revision: D1389525
hphp/runtime/vm/jit/guard-relaxation.cpp
hphp/runtime/vm/jit/test/type.cpp
hphp/runtime/vm/jit/type.h
hphp/test/slow/guard-relaxation/specialized-inner.php [new file with mode: 0644]
hphp/test/slow/guard-relaxation/specialized-inner.php.expect [new file with mode: 0644]