• franzih's avatar
    Collect type profile for DevTools · 947a0437
    franzih authored
    Collect type information for JavaScript variables and display it
    in Chrome DevTools.
    Design Doc: https://docs.google.com/a/google.com/document/d/1O1uepXZXBI6IwiawTrYC3ohhiNgzkyTdjn3R8ysbYgk/edit?usp=sharing
    
    When debugging JavaScript, it’s helpful to know the type of
    a variable, parameter, and return values. JavaScript is
    dynamically typed, and for complex
    source code it’s often hard to infer types. With type profiling, we
    can provide type information to JavaScript developers.
    
    This CL is a proof of concept. It collects type profile for
    assignments and simply prints the types to stdout.
    
    The output looks something like this:
    
    #my_var1
      #Object
      #number
      #string
      #number
      #undefined
      #string
      #Object
      #Object
    
    We use an extra slot in the feedback vector of assignments to
    carry the list of types for that assignment. The extra slot is
    only added when the flag --type-profile is given.
    
    Missing work:
    * Collect data for parameters and return values (currently only assignments).
    * Remove duplicates from the list of collected types and use a common base class.
    * Add line numbers or source position instead of the variable name.
    
    For now, has a test that compares the stdout of --type-profile in test/message. We
    will remove this test when --type-profile is fully integrated in
    the debugger protocol. Adding
    the test in test/inspector does not work, because the inspector
    test itself consists of JavaScript code that would convolute the
    output and be non-deterministic under stress.
    
    BUG=v8:5935
    
    Review-Url: https://codereview.chromium.org/2707873002
    Cr-Commit-Position: refs/heads/master@{#43866}
    947a0437
ast.cc 37.1 KB