Tags: jano/hhvm
Tags
Remove __toString from Stringish Summary: Now that we have StringishObject which has `__toString`, `__toString` on Stringish serves no purpose other than to be dangerous to invoke. Remove it. Reviewed By: mofarrell Differential Revision: D29518793 fbshipit-source-id: d26f0ab6dcfe4f71bf379e7c326b92fd7aa29f5b
Kill make_varray and make_darray Summary: delestar Differential Revision: D29238148 fbshipit-source-id: 0565864a573bee2eee22bc92a60702372d77a4c9
add decl provider in extern-compiler Reviewed By: shayne-fletcher Differential Revision: D28705627 fbshipit-source-id: 6d684160be153812c6e4c2ec669540a9d185c9c1
add decl provider in extern-compiler Reviewed By: shayne-fletcher Differential Revision: D28705627 fbshipit-source-id: 6d684160be153812c6e4c2ec669540a9d185c9c1
Newly passing tests. Summary: Also ran "hphp/facebook/hacknative/utils/bin/update_tests.py" to remove references to some deleted tests. Reviewed By: aorenste Differential Revision: D29526185 fbshipit-source-id: 7decbbd4563e445bb22935f20702e5636ca72ce2
Avoid sending empty file list to hulk Summary: As titled Reviewed By: bobrenjc93 Differential Revision: D29504099 fbshipit-source-id: 554cd827afb00f677aa6ff8d83cb4017953fe157
Update srcs for a store even for srcs that admitSingleVal()
Summary:
In store-elim, when moving stores between blocks, we first check if a store is *available* at a certain point; ie it has happened on all paths to this point, and there is no interference between those stores and this point. In this example, a store is available In to B113. When we try to sink the store to B113, we skip updating the sources with the dest of the phi of B1888 and B1967 because both of the stores have sources that admit the same single val. This is incorrect because we end up with temps that necessarily do not strictly dominate their uses.
```
-------------------------------Assertion Message--------------------------------
src 't1537:InitNull' in '(8804) StStk<IRSPOff -28> t1:StkPtr, t1537:InitNull' came from '(8317) t1537:InitNull = DefLabel', which is not a DefConst and is not defined at this use site
-------------------------------Assertion Failure--------------------------------
hphp/runtime/vm/jit/check.cpp:214: bool HPHP::jit::checkCfg(const HPHP::jit::IRUnit&): assertion `locally_defined || strictly_dominates' failed.
-------------------------------------IRUnit-------------------------------------
```
```
B113: [profCount=118] (preds B1967 B1888)
--- bc ReadStateLogger::genLogEvents(id 1711356672)3671, fp 0, spOff 7 [profTrans=1666077]
AssertRATStk 0 ?Int
t1538:InitNull = phi t1537:InitNull@B1967, t1532:InitNull@B1888 <--- the phi dest
t1540:Dict=StructDict<"vpv_id","image_loading_state","mf_story_key","recent_vpvs_graphql_filter"> = phi t1191:Dict=StructDict<"vpv_id","image_loading_state","mf_story_key","recent_vpvs_graphql_filter">B1967, t1158:Dict=StructDict<"vpv_id","image_loading_state","mf_story_key","recent_vpvs_graphql_filter">B1888
(8318) t1538:InitNull, t1540:Dict=StructDict<"vpv_id","image_loading_state","mf_story_key","recent_vpvs_graphql_filter"> = DefLabel
(8319) t1539:InitNull = CheckType<InitNull> t1538:InitNull -> B114
...
B114: [profCount=35] (preds B113)
--- bc ReadStateLogger::genLogEvents(id 1711356672)3671, fp 0, spOff 8 [profTrans=1729573]
AssertRATStk 0 ?Int
(8321) t1541:Bottom = CheckType<Int> t1538:InitNull -> B2051<Unlikely>
...
B2051<Unlikely>: [profCount=35]<Unlikely> (preds B114)
...
--- bc ReadStateLogger::genLogEvents(id 1711356672)3656, fp 0, spOff 6 [profTrans=858136]
FCallClsMethodD <SkipRepack> 2 1 "" - "" "FeedTrackingUtils" "FeedTrackingUtils" "getIntIfNotNull"
(8804) StStk<IRSPOff -28> t1:StkPtr, t1537:InitNull <-- the store
```
{F628088917}
Reviewed By: mofarrell
Differential Revision: D29406550
fbshipit-source-id: 5dfed79e2752cbbcfffc9776e5be0dbade45ef63
Skipping built-in functions for now. Summary: In D28114085, losvald introduced few more HH built-in functions, which broke the cross verification testing. We are bypassing these built-in functions for now. Will come back to handle these functions later. Reviewed By: jamesjwu Differential Revision: D29445957 fbshipit-source-id: 9e74c37ebb8814fea92a0e7f04d9792a12ae68d0
Cache the folly::dynamic used to compute RepoOptions Summary: When hhvm calls into hackc to compile bytecode we pass a JSON blob for the RepoOptions associated with the request. For some reason JSON parsing in rust is horrendously slow, and so an LRU cache was added (as these options seldom change) to avoid completely wrecking frontend performance. Unfortunately the JSON blob is constructed from a folly::dynamic which is built on the fly for each new parse, and the hash map backing folly::dynamic has non-deterministic ordering in debug builds (but the order does not change once its constructed). So while parse time was fixed by caching in our prod builds debug builds continued to suffer. This diff caches the folly::dynamic when the (already cached) RepoOptions are constructed, thus allowing us to hit in the cache. Reviewed By: mofarrell Differential Revision: D29410266 fbshipit-source-id: 6fdf230aa0a4ed6e3dd148380f5c58e08d21e915
PreviousNext