diff options
Diffstat (limited to 'src/main/java/org/shedlang/compiler/backends')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java index aa687d63..60af8c99 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java @@ -293,7 +293,16 @@ public class WasmPatioCodeGen { case PatioDataLayoutArray patioDataLayoutArray -> sizeOf(patioDataLayoutArray.element()) * patioDataLayoutArray.size(); - case PatioDataLayoutScalar patioDataLayoutScalar -> + case PatioDataLayoutBool patioDataLayoutBool -> + 1; + + case PatioDataLayoutByte patioDataLayoutByte -> + 1; + + case PatioDataLayoutFunctionPointer patioDataLayoutFunctionPointer -> + 4; + + case PatioDataLayoutInt patioDataLayoutInt -> 4; case PatioDataLayoutStruct patioDataLayoutStruct -> @@ -315,8 +324,17 @@ public class WasmPatioCodeGen { wasmOffset += sizeOf(patioDataLayoutArray.element()) * patioOffset; patioDataLayout = patioDataLayoutArray.element(); } - case PatioDataLayoutScalar patioDataLayoutScalar -> { - throw new RuntimeException("offset not allowed for scalars"); + case PatioDataLayoutBool patioDataLayoutBool -> { + throw new RuntimeException("offset not allowed for bools"); + } + case PatioDataLayoutByte patioDataLayoutByte -> { + throw new RuntimeException("offset not allowed for bytes"); + } + case PatioDataLayoutFunctionPointer patioDataLayoutFunctionPointer -> { + throw new RuntimeException("offset not allowed for function ptrs"); + } + case PatioDataLayoutInt patioDataLayoutInt -> { + throw new RuntimeException("offset not allowed for ints"); } case PatioDataLayoutStruct patioDataLayoutStruct -> { for (var i = 0; i < patioOffset; i++) { |
