moved generic_array.hpp functions to vm

db4
Phil Dawes 2009-08-17 21:37:10 +01:00
parent b1189dc4f1
commit 625380c25c
2 changed files with 15 additions and 3 deletions

View File

@ -19,18 +19,28 @@ template <typename T> cell array_size(T *array)
return array_size<T>(array_capacity(array)); return array_size<T>(array_capacity(array));
} }
template <typename T> T *allot_array_internal(cell capacity) template <typename T> T *factorvm::allot_array_internal(cell capacity)
{ {
T *array = allot<T>(array_size<T>(capacity)); T *array = allot<T>(array_size<T>(capacity));
array->capacity = tag_fixnum(capacity); array->capacity = tag_fixnum(capacity);
return array; return array;
} }
template <typename T> bool reallot_array_in_place_p(T *array, cell capacity) template <typename T> T *allot_array_internal(cell capacity)
{
return vm->allot_array_internal<T>(capacity);
}
template <typename T> bool factorvm::reallot_array_in_place_p(T *array, cell capacity)
{ {
return in_zone(&nursery,array) && capacity <= array_capacity(array); return in_zone(&nursery,array) && capacity <= array_capacity(array);
} }
template <typename T> bool reallot_array_in_place_p(T *array, cell capacity)
{
return vm->reallot_array_in_place_p<T>(array,capacity);
}
template <typename TYPE> TYPE *factorvm::reallot_array(TYPE *array_, cell capacity) template <typename TYPE> TYPE *factorvm::reallot_array(TYPE *array_, cell capacity)
{ {
gc_root<TYPE> array(array_,this); gc_root<TYPE> array(array_,this);

View File

@ -166,7 +166,6 @@ struct factorvm {
inline card *addr_to_allot_marker(object *a); inline card *addr_to_allot_marker(object *a);
inline void write_barrier(object *obj); inline void write_barrier(object *obj);
inline void allot_barrier(object *address); inline void allot_barrier(object *address);
// next method here:
//data_gc //data_gc
@ -211,7 +210,10 @@ struct factorvm {
std::vector<cell> gc_bignums; std::vector<cell> gc_bignums;
// generic arrays // generic arrays
template <typename T> T *allot_array_internal(cell capacity);
template <typename T> bool reallot_array_in_place_p(T *array, cell capacity);
template <typename TYPE> TYPE *reallot_array(TYPE *array_, cell capacity); template <typename TYPE> TYPE *reallot_array(TYPE *array_, cell capacity);
// next method here:
//debug //debug
void print_chars(string* str); void print_chars(string* str);