mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-18 18:40:22 +02:00
Separate tagging from collector
The collector now has an abstract interface onto the embedder. The embedder has to supply some functionality, such as tracing and forwarding. This is a pretty big change in terms of lines but it's supposed to have no functional or performance change.
This commit is contained in:
parent
cacc28b577
commit
fb71c4c363
20 changed files with 452 additions and 306 deletions
|
@ -8,7 +8,7 @@
|
|||
|
||||
#include "assert.h"
|
||||
#include "debug.h"
|
||||
#include "inline.h"
|
||||
#include "gc-inline.h"
|
||||
#include "spin.h"
|
||||
|
||||
// The Chase-Lev work-stealing deque, as initially described in "Dynamic
|
||||
|
@ -448,10 +448,10 @@ static void tracer_release(struct heap *heap) {
|
|||
}
|
||||
|
||||
struct gcobj;
|
||||
static inline void tracer_visit(struct gc_edge edge, void *trace_data) ALWAYS_INLINE;
|
||||
static inline void trace_one(struct gcobj *obj, void *trace_data) ALWAYS_INLINE;
|
||||
static inline void tracer_visit(struct gc_edge edge, void *trace_data) GC_ALWAYS_INLINE;
|
||||
static inline void trace_one(struct gcobj *obj, void *trace_data) GC_ALWAYS_INLINE;
|
||||
static inline int trace_edge(struct heap *heap,
|
||||
struct gc_edge edge) ALWAYS_INLINE;
|
||||
struct gc_edge edge) GC_ALWAYS_INLINE;
|
||||
|
||||
static inline void
|
||||
tracer_share(struct local_tracer *trace) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue