aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-16 14:39:10 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-16 14:39:38 +0000
commit9bbc9fb8a4666e7c084f56916e993cb07ea4dabd (patch)
treea9dbe1af76ab00821c6a9972effdec9492c087ba /src/main/java
parentfeeb048fe9ab2e2d9f748a6028a8ca05d8a8eacf (diff)
Add mark for GC objects
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioCodeGenGc.java16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioCodeGenGc.java b/src/main/java/org/shedlang/compiler/patio/PatioCodeGenGc.java
index 4178510f..78f19a19 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioCodeGenGc.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioCodeGenGc.java
@@ -1,9 +1,6 @@
package org.shedlang.compiler.patio;
-import org.shedlang.compiler.patio.ast.types.PatioDataLayout;
-import org.shedlang.compiler.patio.ast.types.PatioDataLayouts;
-import org.shedlang.compiler.patio.ast.types.PatioDataValue;
-import org.shedlang.compiler.patio.ast.types.PatioDataValues;
+import org.shedlang.compiler.patio.ast.types.*;
import org.shedlang.compiler.util.Lists;
import java.util.List;
@@ -14,7 +11,10 @@ public class PatioCodeGenGc {
public static PatioDataLayout gcObjectDataLayout(PatioDataLayout valueLayout) {
return PatioDataLayouts.struct(List.of(
- PatioDataLayouts.DATA_POINTER,
+ PatioDataLayouts.struct(List.of(
+ PatioDataLayouts.DATA_POINTER, // next
+ PatioDataLayouts.INT // mark
+ )),
valueLayout
));
}
@@ -29,7 +29,11 @@ public class PatioCodeGenGc {
*/
public static PatioDataValue gcObjectStaticDataValue(PatioDataValue value) {
return PatioDataValues.struct(List.of(
- PatioDataValues.int_(0),
+ PatioDataValues.struct(List.of(
+ PatioDataValues.int_(0),
+ // Static values are always marked: see gc.c
+ PatioDataValues.int_(0b110)
+ )),
value
));
}