From 83a73b9083c2b1386e51e4f73a04cd196b927c64 Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Mon, 17 Aug 2009 21:37:10 +0100 Subject: [PATCH] moved generic_array.hpp functions to vm --- vm/generic_arrays.hpp | 14 ++++++++++++-- vm/vm.hpp | 4 +++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/vm/generic_arrays.hpp b/vm/generic_arrays.hpp index 3c997708e5..e134b1a2ad 100644 --- a/vm/generic_arrays.hpp +++ b/vm/generic_arrays.hpp @@ -19,18 +19,28 @@ template cell array_size(T *array) return array_size(array_capacity(array)); } -template T *allot_array_internal(cell capacity) +template T *factorvm::allot_array_internal(cell capacity) { T *array = allot(array_size(capacity)); array->capacity = tag_fixnum(capacity); return array; } -template bool reallot_array_in_place_p(T *array, cell capacity) +template T *allot_array_internal(cell capacity) +{ + return vm->allot_array_internal(capacity); +} + +template bool factorvm::reallot_array_in_place_p(T *array, cell capacity) { return in_zone(&nursery,array) && capacity <= array_capacity(array); } +template bool reallot_array_in_place_p(T *array, cell capacity) +{ + return vm->reallot_array_in_place_p(array,capacity); +} + template TYPE *factorvm::reallot_array(TYPE *array_, cell capacity) { gc_root array(array_,this); diff --git a/vm/vm.hpp b/vm/vm.hpp index ffdf42aff9..7c657ff9e4 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -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 gc_bignums; // generic arrays + template T *allot_array_internal(cell capacity); + template bool reallot_array_in_place_p(T *array, cell capacity); template TYPE *reallot_array(TYPE *array_, cell capacity); + // next method here: //debug void print_chars(string* str);