diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-16 14:39:10 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-16 14:39:38 +0000 |
| commit | 9bbc9fb8a4666e7c084f56916e993cb07ea4dabd (patch) | |
| tree | a9dbe1af76ab00821c6a9972effdec9492c087ba /src/main/java | |
| parent | feeb048fe9ab2e2d9f748a6028a8ca05d8a8eacf (diff) | |
Add mark for GC objects
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/patio/PatioCodeGenGc.java | 16 |
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 )); } |
