summaryrefslogtreecommitdiff
path: root/byterun/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'byterun/array.c')
-rw-r--r--byterun/array.c62
1 files changed, 0 insertions, 62 deletions
diff --git a/byterun/array.c b/byterun/array.c
deleted file mode 100644
index 304cc545e6..0000000000
--- a/byterun/array.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Operations on arrays */
-
-#include "alloc.h"
-#include "fail.h"
-#include "memory.h"
-#include "misc.h"
-#include "mlvalues.h"
-
-value array_get(array, index) /* ML */
- value array, index;
-{
- long idx = Long_val(index);
- if (idx < 0 || idx >= Wosize_val(array)) invalid_argument("Array.get");
- return Field(array, idx);
-}
-
-value array_set(array, index, newval) /* ML */
- value array, index, newval;
-{
- long idx = Long_val(index);
- if (idx < 0 || idx >= Wosize_val(array)) invalid_argument("Array.set");
- Modify(&Field(array, idx), newval);
- return Val_unit;
-}
-
-value make_vect(len, init) /* ML */
- value len, init;
-{
- value res;
- mlsize_t size, i;
- Push_roots(root, 1);
-
- size = Long_val(len);
- if (size > Max_wosize) {
- Pop_roots();
- invalid_argument("Array.new");
- }
- if (size == 0) {
- res = Atom(0);
- }
- else if (size < Max_young_wosize) {
- root[0] = init;
- res = alloc(size, 0);
- init = root[0];
- for (i = 0; i < size; i++) Field(res, i) = init;
- }
- else if (Is_block(init) && Is_young(init)) {
- root[0] = init;
- minor_collection();
- res = alloc_shr(size, 0);
- init = root[0];
- for (i = 0; i < size; i++) Field(res, i) = init;
- }
- else {
- root[0] = init;
- res = alloc_shr(size, 0);
- init = root[0];
- for (i = 0; i < size; i++) initialize(&Field(res, i), init);
- }
- Pop_roots();
- return res;
-}