Tags: gazzola/hhvm
Tags
Adding hhi definition for get_proxygen_headers Reviewed By: fredemmott Differential Revision: D27969757 fbshipit-source-id: bf80c437669ec9bd6f51b9e032f2751158c64856
Use a priority-based traversal in HotCFG region former Summary: This diff switches the HotCFG region formation algorithm to use a priority-based traversal of the TransCFG instead of a depth-first search (DFS). The DFS approach can lead to pathological behavior when the TransCFG is too large and the region is truncated due to the bytecode-size limit. The problem is that, if you go too deep on a path in the CFG without traversing many of the predecessors that can reach the blocks in that path, and then truncate the region before getting a chance to visit those predecessors, regionizeFunc will then have to create other large region that duplicate that long, deep path because one region cannot jump into the middle of another. This diff addresses that problem by inserting blocks in the region giving priority to blocks that already had all their predecessors visited. To avoid issues with loops, backedge sources are not included in the set or predecessors that needs to be visited prior to visiting a block. Among all the blocks that are eligible to be visited (i.e. considered for inclusion in the region), we give priority to blocks with higher profile counts. One other potential issue with this approach is that blocks may no be included in the region if they have very low weights and, yet, we don't want them to prevent their successors from being included in the region. This is addressed by visiting even blocks that will not be inserted in the region. Reviewed By: paulbiss Differential Revision: D28401526 fbshipit-source-id: 6fd833b89d069684670ca686f776b0d3060ed190
Use a priority-based traversal in HotCFG region former Summary: This diff switches the HotCFG region formation algorithm to use a priority-based traversal of the TransCFG instead of a depth-first search (DFS). The DFS approach can lead to pathological behavior when the TransCFG is too large and the region is truncated due to the bytecode-size limit. The problem is that, if you go too deep on a path in the CFG without traversing many of the predecessors that can reach the blocks in that path, and then truncate the region before getting a chance to visit those predecessors, regionizeFunc will then have to create other large region that duplicate that long, deep path because one region cannot jump into the middle of another. This diff addresses that problem by inserting blocks in the region giving priority to blocks that already had all their predecessors visited. To avoid issues with loops, backedge sources are not included in the set or predecessors that needs to be visited prior to visiting a block. Among all the blocks that are eligible to be visited (i.e. considered for inclusion in the region), we give priority to blocks with higher profile counts. One other potential issue with this approach is that blocks may no be included in the region if they have very low weights and, yet, we don't want them to prevent their successors from being included in the region. This is addressed by visiting even blocks that will not be inserted in the region. Reviewed By: paulbiss Differential Revision: D28401526 fbshipit-source-id: 6fd833b89d069684670ca686f776b0d3060ed190
Compute flags for internal compiler with macros Summary: When adding a new parser/hhbc flag, there are quite a few spots you need to change in the same way. Hackc has a mapping from these flags to bits that needs to match the mapping in hhvm land. - This diff consolidates two of them and is easier to maintain - Also updates a couple sites where there are inconsistencies Reviewed By: shiqicao Differential Revision: D28436337 fbshipit-source-id: 26017e0ccbb14307e36de7da14164752eb4c60d4
Improve the error message on empty method bodies Summary: When the body of a non-abstract method is empty, the current error message is either unclear or redundant. To improve it, the message is replaced by a constant string "A method must have a body or be marked `abstract`". Reviewed By: Wilfred Differential Revision: D28355460 fbshipit-source-id: 80fea0c7d1bad20a3e7040a5ef7e25a47a9b9644
Autocomplete shape keys for literals in function calls
Summary:
If the user is writing a shape literal in a function call position, offer shape field names.
```
takes_shape_2nd_arg("foo", shape("AUTO332"));
```
With this code, we know the type of `takes_shape_2nd_arg`, so we can offer the shape field names in code completion.
Reviewed By: ljw1004
Differential Revision: D26093599
fbshipit-source-id: 894ddc89eb9a08f028d7adbc8fb61ad4ffc8c456
hhconfig_version and rollout_flags in more places Differential Revision: D28325508 fbshipit-source-id: 4def1af773bda3479b3ee62b3b7ecb3033b05800
Add HH\Readonly\as_mut as a special builtin to HackC Summary: This diff adds a special builtin function HH\\Readonly\\as_mut, which converts a value type like int to mutable from readonly. Only readonly integers and other value types should be able to be passed into this function, but we haven't built the support for that yet. That will come in a diff on top of that for the typechecker. Reviewed By: oulgen Differential Revision: D28073468 fbshipit-source-id: 00995cb1086f62e0c1169b45118387ee475f108a
PreviousNext