diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-09-23 17:04:31 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-09-26 20:01:32 +0100 |
| commit | 537aefec06307139899e3f2f2cd74842a3af6345 (patch) | |
| tree | 3af4c0729cf61225b4d4da10109a8eda497b83d3 /src/main/java | |
| parent | ac51f8470a58caeb611a4c55bb19c1c2281c4960 (diff) | |
Generate code for zero-element tuple without alloc
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/patio/PatioCodeGenTuples.java | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioCodeGenTuples.java b/src/main/java/org/shedlang/compiler/patio/PatioCodeGenTuples.java index b7198683..c3e1c964 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioCodeGenTuples.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioCodeGenTuples.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.patio; import org.shedlang.compiler.patio.ast.instructions.*; +import org.shedlang.compiler.patio.ast.operands.PatioInt; import org.shedlang.compiler.patio.ast.operands.PatioLocalRef; import org.shedlang.compiler.patio.ast.operands.PatioOperand; import org.shedlang.compiler.patio.ast.types.PatioDataLayout; @@ -20,6 +21,23 @@ public class PatioCodeGenTuples { Source source, PatioCodeGenContext context ) { + var tupleResult = context.allocateVal( + PatioCodeGenLocalSpace.TUPLE, + PatioCodeGenTypes.VALUE_TYPE + ); + var tuple = tupleResult.value(); + context = tupleResult.context(); + + if (elements.size() == 0) { + context = context.addInstruction(new PatioLocalStore( + tuple, + new PatioInt(0), + source + )); + + return context.toResult(tuple); + } + var tuplePointerResult = context.allocateVal( PatioCodeGenLocalSpace.TUPLE_POINTER, PatioTypes.DATA_POINTER @@ -47,13 +65,6 @@ public class PatioCodeGenTuples { )); } - var tupleResult = context.allocateVal( - PatioCodeGenLocalSpace.TUPLE, - PatioCodeGenTypes.VALUE_TYPE - ); - var tuple = tupleResult.value(); - context = tupleResult.context(); - context = context.addInstruction(new PatioDataPtrToInt( tuple, tuplePointer, |
