Skip to content
Success

Changes

Summary

  1. More efficient management of code fragments (#9654) (commit: 08e58c8) (details)
Commit 08e58c836e5b2e8e1015e06ad0ab3df444d6197a by noreply
More efficient management of code fragments (#9654)

* Introducing codefrag: a new runtime module to work with code fragments

This module collects all the operations on code fragments performed in
various places of the runtime systems.  Applies both to bytecode and
to native code.

The implementation is based on skiplists, so that "lookup fragment by
PC" and "lookup fragment by number" are efficient (logarithmic in the
number of code fragments).  "Lookup fragment by digest" remains
linear-time.

The new module also improves the handling of digests: now it is
possible to mark a code fragment as "no digest" i.e. not marshal-able.

* Use the new "codefrag" runtime module for marshaling and for the
  debugger interface

Replace the previous handling of code fragments with calls to the
functions provided by the "codefrag" runtime module.
(commit: 08e58c8)
The file was addedruntime/caml/codefrag.h
The file was modifiedruntime/intern.c (diff)
The file was modifiedruntime/extern.c (diff)
The file was addedruntime/codefrag.c
The file was modifiedruntime/dynlink_nat.c (diff)
The file was modifiedruntime/startup_nat.c (diff)
The file was modifiedruntime/Makefile (diff)
The file was modifiedruntime/fix_code.c (diff)
The file was modifiedruntime/meta.c (diff)
The file was modifiedruntime/debugger.c (diff)
The file was modifiedruntime/misc.c (diff)
The file was modifiedruntime/caml/misc.h (diff)
The file was modifiedChanges (diff)