summaryrefslogtreecommitdiff
path: root/vere/pkg/noun/v4
diff options
context:
space:
mode:
Diffstat (limited to 'vere/pkg/noun/v4')
-rw-r--r--vere/pkg/noun/v4/manage.c30
-rw-r--r--vere/pkg/noun/v4/manage.h13
2 files changed, 43 insertions, 0 deletions
diff --git a/vere/pkg/noun/v4/manage.c b/vere/pkg/noun/v4/manage.c
new file mode 100644
index 0000000..0a3b723
--- /dev/null
+++ b/vere/pkg/noun/v4/manage.c
@@ -0,0 +1,30 @@
+/// @file
+
+#include "v4/manage.h"
+#include "stdio.h"
+#include "manage.h"
+#include "allocate.h"
+#include "vortex.h"
+#include "options.h"
+
+/* u3m_v4_migrate: perform loom migration if necessary.
+*/
+void
+u3m_v4_migrate(void)
+{
+ fprintf(stderr, "loom: bytecode alignment migration running...\r\n");
+
+ c3_w* mem_w = u3_Loom + u3a_walign;
+ c3_w siz_w = c3_wiseof(u3v_home);
+ c3_w len_w = u3C.wor_i - u3a_walign;
+ c3_w* mat_w = c3_align(mem_w + len_w - siz_w, u3a_balign, C3_ALGLO);
+
+ u3H = (void *)mat_w;
+ u3R = &u3H->rod_u;
+
+ u3m_reclaim();
+
+ u3H->ver_w = U3V_VER4;
+
+ fprintf(stderr, "loom: bytecode alignment migration done\r\n");
+}
diff --git a/vere/pkg/noun/v4/manage.h b/vere/pkg/noun/v4/manage.h
new file mode 100644
index 0000000..1059f12
--- /dev/null
+++ b/vere/pkg/noun/v4/manage.h
@@ -0,0 +1,13 @@
+/// @file
+
+#ifndef U3_MANAGE_V4_H
+#define U3_MANAGE_V4_H
+
+ /** System management.
+ **/
+ /* u3m_v3_migrate: perform memoization loom migration if necessary.
+ */
+ void
+ u3m_v4_migrate(void);
+
+#endif /* ifndef U3_MANAGE_V3_H */