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));
}
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));
array->capacity = tag_fixnum(capacity);
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);
}
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)
{
gc_root<TYPE> array(array_,this);

View File

@ -166,7 +166,6 @@ struct factorvm {
inline card *addr_to_allot_marker(object *a);
inline void write_barrier(object *obj);
inline void allot_barrier(object *address);
// next method here:
//data_gc
@ -211,7 +210,10 @@ struct factorvm {
std::vector<cell> gc_bignums;
// 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);
// next method here:
//debug
void print_chars(string* str);