diff options
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 )); } |
