summaryrefslogtreecommitdiffstats
path: root/asmrun/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'asmrun/array.c')
-rw-r--r--asmrun/array.c102
1 files changed, 0 insertions, 102 deletions
diff --git a/asmrun/array.c b/asmrun/array.c
deleted file mode 100644
index 6218039f8..000000000
--- a/asmrun/array.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/***********************************************************************/
-/* */
-/* Objective Caml */
-/* */
-/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */
-/* */
-/* Copyright 1996 Institut National de Recherche en Informatique et */
-/* Automatique. Distributed only by permission. */
-/* */
-/***********************************************************************/
-
-/* $Id$ */
-
-/* Operations on arrays */
-
-#include "alloc.h"
-#include "fail.h"
-#include "memory.h"
-#include "misc.h"
-#include "mlvalues.h"
-
-value make_vect(value len, value init)
-{
- value res;
- mlsize_t size, wsize, i;
- double d;
-
- size = Long_val(len);
- if (size == 0) {
- res = Atom(0);
- }
- else if (Is_block(init) && Tag_val(init) == Double_tag) {
- d = Double_val(init);
- wsize = size * Double_wosize;
- if (wsize > Max_wosize) invalid_argument("Array.new");
- if (wsize < Max_young_wosize) {
- res = alloc(wsize, Double_array_tag);
- } else {
- res = alloc_shr(wsize, Double_array_tag);
- res = check_urgent_gc (res);
- }
- for (i = 0; i < size; i++) {
- Store_double_field(res, i, d);
- }
- } else {
- if (size > Max_wosize) invalid_argument("Array.new");
- Begin_root(init);
- if (size < Max_young_wosize) {
- res = alloc(size, 0);
- for (i = 0; i < size; i++) Field(res, i) = init;
- }
- else if (Is_block(init) && Is_young(init)) {
- minor_collection();
- res = alloc_shr(size, 0);
- for (i = 0; i < size; i++) Field(res, i) = init;
- res = check_urgent_gc (res);
- }
- else {
- res = alloc_shr(size, 0);
- for (i = 0; i < size; i++) initialize(&Field(res, i), init);
- res = check_urgent_gc (res);
- }
- End_roots();
- }
- return res;
-}
-
-value make_array(value init)
-{
- mlsize_t wsize, size, i;
- value v, res;
-
- size = Wosize_val(init);
- if (size == 0) {
- return init;
- } else {
- v = Field(init, 0);
- if (Is_long(v) || Tag_val(v) != Double_tag) {
- return init;
- } else {
- wsize = size * Double_wosize;
- if (wsize > Max_wosize) invalid_argument("Array.new");
- Begin_root(init);
- if (wsize < Max_young_wosize) {
- res = alloc(wsize, Double_array_tag);
- } else {
- res = alloc_shr(wsize, Double_array_tag);
- res = check_urgent_gc (res);
- }
- for (i = 0; i < size; i++) {
- Store_double_field(res, i, Double_val(Field(init, i)));
- }
- End_roots();
- return res;
- }
- }
-}
-
-void array_bound_error(void)
-{
- fatal_error("Fatal error: out-of-bound access in array or string\n");
-}