From 9bbc9fb8a4666e7c084f56916e993cb07ea4dabd Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 16 Dec 2023 14:39:10 +0000 Subject: Add mark for GC objects --- .../java/org/shedlang/compiler/patio/PatioCodeGenGc.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/main/java') 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 )); } -- cgit v1.2.3