V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
v8::internal::LiveEdit Class Reference

#include <liveedit.h>

Inheritance diagram for v8::internal::LiveEdit:
v8::internal::AllStatic

Static Public Member Functions

static void InitializeThreadLocal (Debug *debug)
 
static bool RestartFrame (JavaScriptFrame *frame)
 
static void CompareStrings (Isolate *isolate, Handle< String > a, Handle< String > b, std::vector< SourceChangeRange > *diffs)
 
static int TranslatePosition (const std::vector< SourceChangeRange > &changed, int position)
 
static void PatchScript (Isolate *isolate, Handle< Script > script, Handle< String > source, bool preview, debug::LiveEditResult *result)
 

Static Public Attributes

static const bool kFrameDropperSupported
 

Detailed Description

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.

Definition at line 57 of file liveedit.h.


The documentation for this class was generated from the following files: