Nuclide xdebug async stepping (3/N) -- Major async stepping logic
Summary:
Currently, all debugger stepping logic(step-into, step-over, step-out) are crowded in phpDebuggerOpcodeHook() which is very easy to break each other and hard to change. I encapsulate the async stepping logic into AsyncFlowStepper class which is a state machine that sets internal breakpoint at the resume point.
In future I plan to do more major refactoring to make each individual stepping logic self-contain and not conflict with each other.
Here are the things not done but will be in future diffs:
1. Dealing async stepping with exceptions
2. Add unit tests
3. Refactor all stepping logic to be self-contained/clean
Reviewed By: alexmalyshev
Differential Revision:
D3423673
fbshipit-source-id:
a5fa8919b514d4bc9a50720c1b6a658c955f1bc3