• Alexey Kozyatinskiy's avatar
    [debug] liveedit in native · 3dfaf826
    Alexey Kozyatinskiy authored
    Liveedit step-by-step:
    1. calculate diff between old source and new source,
    2. map function literals from old source to new source,
    3. create new script for new_source,
    4. mark literals with changed code as changed, all others as unchanged,
    5. check that for changed literals there are no:
      - running generators in the heap,
      - non droppable frames (e.g. running generator) above them on stack.
    6. mark the bottom most frame with changed function as scheduled for
       restart if any.
    7. for unchanged functions:
      - deoptimize,
      - remove from cache,
      - update source positions,
      - move to new script,
      - reset feedback information and preparsed scope information if any,
      - replace any sfi in constant pool with changed one if any.
    8. for changed functions:
      - deoptimize
      - remove from cache,
      - reset feedback information,
      - update all links from js functions to old shared with new one.
    9. swap scripts.
    
    TBR=ulan@chromium.org
    
    Bug: v8:7862,v8:5713
    Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
    Change-Id: I8f6f6156318cc82d6f36d7ebc1c9f7d5f3aa1461
    Reviewed-on: https://chromium-review.googlesource.com/1105493Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
    Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#54146}
    3dfaf826
factory.cc 162 KB