Commit b66385e2 authored by Juho Snellman's avatar Juho Snellman
Browse files

0.9.16.38:

        Rewrite the single-stepper to solve the compilation/run-time
        performance and type-inference inaccuracy problems with the old
        approach. Also make some UI improvements to the stepper.

        * The IR1 stage no longer instruments the code. Instead it
          only detects function call forms which should (according to
          the policy) be steppable, and records a string
          representation of those forms in the matching combination
          nodes (to be stored in the debug-info).
        * Modify the function call vops to emit some instrumentation just
          before the actual call happens. This will check either the
          symbol-value of *STEPPING* (unithreaded) or the new STEPPING
          slot of threads (multithreaded) and trap if it's true. The
          trap handler will replace the closure / fdefn that was about
          to be called with a wrapper, which will signal a stepper
          condition and then call the original function.
        * Emit a similar bit of instrumentation before any call that
          got optimized to a simple VOP. The difference is that the
          only thing that the trap handler will do is to directly
          signal the condition.
        * The necessary VOP / runtime changes have only been done on
          x86, x86-64 and ppc so far. Alpha, Mips and Sparc should
          still compile, but the stepper won't work there.
        * Remove the old single-stepper REPL, and instead integrate the
          stepper into the debugger.
        * Add STEP-OUT functionality (stop stepping temporarily,
          resuming it once the current function returns).
parent d2f5999e
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment