Skip to content

Follow up work once lightweight isolates are enabled by-default. #46752

@mkustermann

Description

@mkustermann

After the lightweight isolate support is enabled (see #36097) there are a few tasks we might want to do as follow-up work:

Experiment with more data sharing

  • Enable sending more object kinds (tracked Issue 46623)
  • Explore language-level support for constructing immutable objects.
  • Explore runtime based freezing of object graphs
  • Explore runtime based immutability by-construction

Performance

  • Investigate whether there is lock contention, and if so, find ways to avoid it (already done for symbol lock, ...)
  • Investigate whether we would benefit by preventing multiple mutators compiling unopt code for same function at same time
  • Investigate installing code without stopping mutators
  • Investigate wether we an utilize isolate death as a signal for GC
  • Explore making send-and-exit O(1) - transferring receive port ownership as well
  • Add pre-emptive scheduler (parallel mutator count is limited, exceeding it relies on cooperative scheduling)
  • Avoid doing 2 calls to Dart in eventloop (lookupHandler() & invokeMessageHandler())
  • Avoid using OOB messages for hot-reload, instead piggy-back on safepoint level mechanism
  • Optimize isolate startup performance (avoid doing many calls to Dart to setup corelibs, possibly bundle them)

Testing

  • Investigate instrumenting non-atomic loads/stores in generated code with TSAN to detect races

/cc @aam

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.library-isolate

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions