rust/src/rt/boxed_region.h
Niko Matsakis 196d69beb2 make boxes self-describing (fixes #1493)" (take 2)
this will be used to generate a new snapshot.
2012-02-01 18:52:08 -08:00

40 lines
1013 B
C++

#ifndef BOXED_REGION_H
#define BOXED_REGION_H
#include <stdlib.h>
struct type_desc;
class memory_region;
struct rust_opaque_box;
/* Tracks the data allocated by a particular task in the '@' region.
* Currently still relies on the standard malloc as a backing allocator, but
* this could be improved someday if necessary. Every allocation must provide
* a type descr which describes the payload (what follows the header). */
class boxed_region {
private:
memory_region *backing_region;
rust_opaque_box *live_allocs;
size_t align_to(size_t v, size_t align) {
size_t alignm1 = align - 1;
v += alignm1;
v &= ~alignm1;
return v;
}
public:
boxed_region(memory_region *br)
: backing_region(br)
, live_allocs(NULL)
{}
rust_opaque_box *first_live_alloc() { return live_allocs; }
rust_opaque_box *malloc(type_desc *td);
rust_opaque_box *calloc(type_desc *td);
void free(rust_opaque_box *box);
};
#endif /* BOXED_REGION_H */