{"push_id":571106590,"size":1000,"distinct_size":1076,"ref":"refs/heads/master","head":"40d80f73b31da0e5142d84b401646d832fa8ce94","before":"89b1e8a2fbde02b3abfb37f5046b32d88659d6a3","commits":[{"sha":"2c934f7dea59b97c5a9e1ea2dbaca5d5a5524db3","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Flip DParam and DParamNRel, so NRel is the default\n\nSummary: Only LdLoc and LdStack need this.  The LdLocPseudoMain support didn't\nseem to be entirely working: when we gen'd new LdLocPseudoMains, we'd map their\ntype sources to whatever the current type source was, and LdLocPseudoMain would\nset its own dst as a type source.  Right now it's also setting types in\nlocalTypes which are incorrect without a new guard (this could cause problems\nfor any callers of localType, but I don't know if it can just be removed, so I\nmade a task).  So any constrainValue on a LdLocPseudoMain would constrain the\n/previous/ LdLocPseudoMain in the tracelet.  However, isGuardOp returns false\nfor these, so it can't have worked.  Also I don't understand why\nStLocPseudoMain was modifying type srcs, so just remove that too.\n\nReviewed By: @markw65\n\nDifferential Revision: D1687087\n\nSignature: t1:1687087:1416589588:d25561f895d2c6b994366485dc372493e0d6ff9e","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/2c934f7dea59b97c5a9e1ea2dbaca5d5a5524db3"},{"sha":"130324ee7c63bfb753b37cd35339b0874f661893","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Fix insertPhis calls to IRUnit::replace()\n\nSummary: It was trying to replace a jump but passing no destination block.  Due\nto a bug in IRInstruction::become this actually worked, because it left the old\nEdges in place.  It also seems really sketchy to iterate the predecessor\nEdgeList while you're modifying instructions that change it; I'm not sure if\nthat's ok (it probably could be if we guarantee not to move the Edge*'s if it\nalready had Edges, but that seems like a weird thing to rely on), so stop doing\nit.  The function does something pretty similar a few lines earlier while\nsplitting critical edges also, but this part is explicitly doing setTaken and\nsetNext calls without anything that could be changing the Edge*, which seems\nlike it /might/ work, so I'm going to leave that part alone for now.\n\nReviewed By: @bertmaher\n\nDifferential Revision: D1693126\n\nSignature: t1:1693126:1416451300:c4c3dafb5de2c6b92828fb4dd4ecc359e0fdb6cd","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/130324ee7c63bfb753b37cd35339b0874f661893"},{"sha":"8c0953baf84c73565b0565b20aff949807f62ca0","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Fix bugs relating to edges in IRInstruction::become\n\nSummary: It was keeping the edges from the old branch if you replace one branch\nwith another, if you replaced a non-branch with a branch, it would call\nsetNext/setTaken before changing m_op so they wouldn't do anything, and if it\nallocated edges it didn't set their instruction pointers.\n\nReviewed By: @edwinsmith\n\nDifferential Revision: D1689306\n\nSignature: t1:1689306:1416503105:5f54a7526d1fe128044c5831683a189ce24a3d1c","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/8c0953baf84c73565b0565b20aff949807f62ca0"},{"sha":"c262e98cb2612051d725263a88da8a6e9a13ab9c","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Remove IRInstruction::convertToJmp, and IRInstruction::convertToNop\n\nSummary: The comments about the simplifier (which doesn't even call these\nanymore) were pretty scary.  Now become() works for jumps, so we can just use\nit.  convertToMov was dead.  convertToNop seems common enough to have a special\nfunction (and it lets you do it without an IRUnit).\n\nReviewed By: @ottoni\n\nDifferential Revision: D1689348\n\nSignature: t1:1689348:1416595146:3806ebc30697603cb6a9fa7a7afea9518a84542b","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/c262e98cb2612051d725263a88da8a6e9a13ab9c"},{"sha":"6ce71efb83c05b7a12aa2a68c2561ef58eaa76e8","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Merging function for sparse_id_maps\n\nSummary: To use these to contain dataflow state you'll generally want to have\nsomething like this.  It turns out I have a better way for now, but this was\ntested and seems worth putting in.\n\nReviewed By: @edwinsmith\n\nDifferential Revision: D1690835\n\nSignature: t1:1690835:1416415333:1060c99a6e41c5ea9380d981e5bcc60d03ba62ce","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/6ce71efb83c05b7a12aa2a68c2561ef58eaa76e8"},{"sha":"f78fdc3e8186d7b1ac4e50ef51b13ac17a050d99","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Add a dataflow_worklist class to use instead of some std::sets\n\nReviewed By: @edwinsmith\n\nDifferential Revision: D1690949\n\nSignature: t1:1690949:1416418755:8d90adcc22f60684de46797112b9cf36c519463e","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/f78fdc3e8186d7b1ac4e50ef51b13ac17a050d99"},{"sha":"7655e662005c92f48a195ba49c7afd2a3d02ec70","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Load elimination pass\n\nSummary: This is still kinda a work in progress and doesn't do very much yet,\nbut it can eliminate some loads in trivial situations.  I think it's landable\nand we can iterate more in trunk.  (Teaching memory-effects more and doing\nthings like getting DecRefs that can re-enter out of the main lines of code may\nmake it more effective even without more improvements here, too.)\n\nReviewed By: @ottoni\n\nDifferential Revision: D1691662","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/7655e662005c92f48a195ba49c7afd2a3d02ec70"},{"sha":"9b54b1c8a34f4f8d3f7250649d1906d2c8bb698c","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Rename memelim to store-elim for now\n\nReviewed By: @alexmalyshev\n\nDifferential Revision: D1691700\n\nSignature: t1:1691700:1416430962:326925bd916f0c3dfff35034a3099c685b936215","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/9b54b1c8a34f4f8d3f7250649d1906d2c8bb698c"},{"sha":"be4fb0f43c2a36108a59b660c695f328cb91350b","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Revert \"Revert \"Add fixed-point analysis to FrameState\"\"\n\nSummary: This reverts commit 532e6ca9ce3aa88e8e006024ce4b76b25b8ab6a8, and\nturns the fixed point stuff on only if EvalHHIRBytecodeControlFlow is true\n(which will have refcountOptsDefault saying false).\n\nReviewed By: @alexmalyshev\n\nDifferential Revision: D1691934\n\nSignature: t1:1691934:1416434945:8acd6b40f5d08e8b8d7575048135e5a960f28e33","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/be4fb0f43c2a36108a59b660c695f328cb91350b"},{"sha":"06c4f0f933af57a07d773869217df100e1237b19","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Use dataflow_worklist in FrameState fixed point loop\n\nReviewed By: @edwinsmith\n\nDifferential Revision: D1691948\n\nSignature: t1:1691948:1416503211:d4375963841abfe3ab74f9704b16586881e0d176","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/06c4f0f933af57a07d773869217df100e1237b19"},{"sha":"7b91dbdf0732638d332e7b57adc54b78fdef9fc8","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Some FrameState refactoring and bug fixes\n\nSummary: Turn all the states into vectors, with the most current version being\nthe back().  This makes it easier to merge states for inlined calls and also\nsimplifies various snapshotting code (assignment operators).  Also it gets rid\nof the weird thing where the Snapshot structure had a sometimes-valid\ninlineSavedStates field.  This diff fixes the potential bugs from things like\nrefineLocalValue when you're in an inlined function with control flow, and\nfixes a bug in the fixed point version of frame-state where frameSpansCall\ncould randomly be set to true depending on which block you were previously\nvisiting.\n\nThis is an intermediate refactor, so things like the name 'Snapshot' will go\naway on a later diff.\n\nReviewed By: @bertmaher\n\nDifferential Revision: D1695209","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/7b91dbdf0732638d332e7b57adc54b78fdef9fc8"},{"sha":"a2b60f00e7d7112a373e5b9e8e70b3b5e33820b6","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Rename FrameState to FrameStateMgr\n\nSummary: I don't think we need this class at all, but for now it's too\nintertwined with everything to remove.  I want to s/Snapshot/FrameState/, so\ncall this FrameStateMgr: it really manages FrameStates for multiple blocks (in\naddition to understanding how to track effects and manage CSE table state).\n\nReviewed By: @ottoni\n\nDifferential Revision: D1695214\n\nSignature: t1:1695214:1416594843:e2fb6e9dd1d4310d03ef6d1f277ca4872c7de83f","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/a2b60f00e7d7112a373e5b9e8e70b3b5e33820b6"},{"sha":"f9a9f84a6ff29b551a7f314c07192b317d7214d1","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Rename Snapshot to FrameState\n\nSummary: The thing formerly known as Snapshot is the state for a given frame\nnow.\n\nReviewed By: @ottoni\n\nDifferential Revision: D1695220\n\nSignature: t1:1695220:1416594762:abc3b8a03cee7137d34f2a45ea432a0613725de8","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/f9a9f84a6ff29b551a7f314c07192b317d7214d1"},{"sha":"bcd3c53fc9e99936ae653f2ae743a9b359eca12f","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Rework frame state merging not to copy construct states as much\n\nSummary: Make merge_into overloads for various sub-portions of the state, and\nhave all of them return bools to indicate if anything changed.\n\nReviewed By: @alexmalyshev\n\nDifferential Revision: D1695223\n\nSignature: t1:1695223:1416614176:a4e7f79bc78a19cb1cf428e3054db3b94c083332","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/bcd3c53fc9e99936ae653f2ae743a9b359eca12f"},{"sha":"f1cea25c212dd0606cc208375df7f412b4b03e91","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Move CSE-related code out of FrameStateMgr\n\nSummary: IRBuilder is not a good final place for it either, but this gets it\nout of the way of some of the frame state stuff for now.  It's apparently\nsemi-broken during reoptimize (whether it finds values or not depends on the\nblock visitation order; e.g. you may cseKill values on some paths that you\ndon't really need to just because you visited blocks in an order that saw\nkilling-paths first).  I think LdCtx is the only important thing we CSE right\nnow though, and it'll always be available now.\n\nReviewed By: @alexmalyshev\n\nDifferential Revision: D1695435\n\nSignature: t1:1695435:1416613090:df2fc292516bb651d67f4c5c2e990feb028829cd","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/f1cea25c212dd0606cc208375df7f412b4b03e91"},{"sha":"34d38bfebf79fe556eabf134bd5da7d59f56f91d","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Make inlineIdx in walkAllInlinedLocals-related callbacks just an index\n\nSummary: It had a pretty unusual encoding scheme, which must have some\nhistorical reason.  At first I thought it was a bug, but there's only one use\nsite and it expected this.\n\nReviewed By: @ottoni\n\nDifferential Revision: D1695489\n\nSignature: t1:1695489:1416595757:eefbfdbe25a4606613d2ea34437805f9377aec97","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/34d38bfebf79fe556eabf134bd5da7d59f56f91d"},{"sha":"642946280f2d7e64c68e621ac2e90bcc529f487a","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Don't track incorrect types for locals in psuedomains\n\nSummary: Right now we have localType() returning things that aren't known to be\ntrue in psuedomains.  Rather than audit all callers (which will still let bugs\ncreep in later), let's generalize the predicted inner type for boxes to a\ngeneral predicted type, and use it for the only real type we track for locals\nin psuedomains.  Use this to decide what to guard on when we want to emit a\nLdLocPseudoMain.\n\nThis also fixes a bug where we were doing StLoc in psuedomains in the Silence\nopcode (needs to be illegal because it'll set a tracked local value right now).\n\nReviewed By: @alexmalyshev\n\nDifferential Revision: D1696464","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/642946280f2d7e64c68e621ac2e90bcc529f487a"},{"sha":"a00a3568685672c87e2d64ff414a5fb357a87769","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Rename ALocation to AliasClass, ALocationAnalysis to AliasAnalysis\n\nSummary: No one seemed to like the old name.  A few places really still seem to\nmake sense to call things \"locations\" (in AliasAnalysis's lists of tracked\nlocations---they are alias classes but small enough to at least possibly be\n\"one\" location), so there are some \"locations\" here and there still.  I guess\n\"(abstract) mem locations : AliasClass :: values : Type\" is the analogy.\n\nReviewed By: @edwinsmith\n\nDifferential Revision: D1696691","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/a00a3568685672c87e2d64ff414a5fb357a87769"},{"sha":"470cbdced911cf8318c10907379171a0060189ec","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Remove some optionally branching loads that I missed\n\nSummary: Some asserts I have in findDefiningBlock hit these when I changed\ncheckCfg to use it.  (Both of the non-\"safe\" versions probably should be using\nthe safe version and IR level control flow, but that's another issue.)\n\nReviewed By: @ottoni\n\nDifferential Revision: D1696782\n\nSignature: t1:1696782:1416594648:7e3b9d0c8db6082cf135dee45cc07dd55a8ac13f","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/470cbdced911cf8318c10907379171a0060189ec"},{"sha":"595bb71777ac7a939ff660f094e8649d87f42f73","author":{"email":"176254d9906391ef7c8860fce1cf7bb88afc21a7@fb.com","name":"Jordan DeLong"},"message":"Fix checkCfg's defined-tmp checks to be aware of edge-defined tmps\n\nSummary: E.g. for results of things like CheckType it was assuming it was\ndefined on both the taken and next, but it's only defined on next.\n\nReviewed By: @swtaarrs\n\nDifferential Revision: D1696789","distinct":true,"url":"https://api.github.com/repos/sathvikl/hiphop-php/commits/595bb71777ac7a939ff660f094e8649d87f42f73"}]}