Compatible with facebook HHVM 3.1

This patch to make HTML5 compatible with HHVM contains also workaround to avoid this https://github.com/facebook/hhvm/issues/2962
Was this meant to be private or should it be protected?