From c3b8e1cd3ca7c78bbcd0a2be8e24914b59ee9645 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 2 Jul 2021 14:29:59 -0500 Subject: [PATCH] bugfix and added pretty printing --- bin/onyx | Bin 409160 -> 409160 bytes core/conv.onyx | 60 ++++++++++-- core/stdio.onyx | 4 +- modules/wasm_utils/parser.onyx | 165 +++++++++++++++++++++++++++++++++ src/onyxchecker.c | 1 + 5 files changed, 219 insertions(+), 11 deletions(-) create mode 100644 modules/wasm_utils/parser.onyx diff --git a/bin/onyx b/bin/onyx index 592017b57df7b408a5510425bbbf8403a581c85e..077a57cb477594c03c49e70e4f1cd9148fd6c960 100755 GIT binary patch delta 67381 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 z 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 z z0P5*R>Ul8b{+#U_I4K~3l;1Qe?MewNXjGqCMNn1FH44fjpb~R;*8;Le28A>Us5TFP zf~KAb>9qNmP str { output := Output.{ buffer.data, 0, buffer.count }; Format :: struct { + pretty_printing := false; digits_after_decimal := cast(u32) 4; + + indentation := cast(u32) 0; } vararg_index := 0; @@ -289,6 +292,11 @@ str_format_va :: (format: str, buffer: [] u8, va: [] any) -> str { formatting.digits_after_decimal = digits; } + case #char "p" { + i += 1; + formatting.pretty_printing = true; + } + case #default do break break; } } @@ -387,14 +395,31 @@ str_format_va :: (format: str, buffer: [] u8, va: [] any) -> str { if s.name.count > 0 do output->write(s.name); output->write(" { "); - - for ^member: s.members { - if member != s.members.data do output->write(", "); - output->write(member.name); - output->write(" = "); + { + format := formatting; + if format.pretty_printing { + format.indentation += 4; + } + + for ^member: s.members { + if member != s.members.data do output->write(", "); + + if formatting.pretty_printing { + output->write(#char "\n"); + for i: format.indentation do output->write(#char " "); + } + + output->write(member.name); + output->write(" = "); - print_any(output, formatting, .{ ~~(cast(^u8) v.data + member.offset), member.type }); + print_any(output, format, .{ ~~(cast(^u8) v.data + member.offset), member.type }); + } + } + + if formatting.pretty_printing { + output->write(#char "\n"); + for i: formatting.indentation - 1 do output->write(#char " "); } output->write(" }"); @@ -429,13 +454,30 @@ str_format_va :: (format: str, buffer: [] u8, va: [] any) -> str { data := arr.data; count := arr.count; + format := formatting; + if format.pretty_printing do format.indentation += 2; + for i: count { if i != 0 do output->write(", "); - print_any(output, formatting, .{ ~~(cast(^u8) data + get_type_info(a.of).size * i), a.of }); + if formatting.pretty_printing { + output->write("\n"); + for _: format.indentation do output->write(#char " "); + } + + print_any(output, format, .{ ~~(cast(^u8) data + get_type_info(a.of).size * i), a.of }); + } + + + if formatting.pretty_printing { + format.indentation -= 2; + output->write("\n"); + for _: format.indentation do output->write(#char " "); + output->write(#char "]"); + + } else { + output->write(" ]"); } - - output->write(" ]"); } if info.kind == .Array { diff --git a/core/stdio.onyx b/core/stdio.onyx index 51c9adea..a28e4735 100644 --- a/core/stdio.onyx +++ b/core/stdio.onyx @@ -30,8 +30,8 @@ println :: (x: $T) { } printf :: (format: str, va: ..any) { - buffer: [2048] u8; - print(conv.str_format_va(format, buffer[0 .. 2048], ~~va)); + buffer: [8196] u8; + print(conv.str_format_va(format, ~~buffer, ~~va)); } // This works on both slices and arrays diff --git a/modules/wasm_utils/parser.onyx b/modules/wasm_utils/parser.onyx new file mode 100644 index 00000000..006b4156 --- /dev/null +++ b/modules/wasm_utils/parser.onyx @@ -0,0 +1,165 @@ +// +// Sections that still need to be parse-able +// - Function +// - Table +// - Memory +// - Global +// - Start +// - Element +// - Code +// - Data +// - DataCount + + +package wasm_utils + +// The allocator to be used for all allocations in the parser. This is set when +// calling any of the top-level parsing functions. Because this is here, it is +// unsafe to use this library in a multi-threaded context, if Wasm ever officially +// supports that. +#private_file wasm_allocator : Allocator + +parse_type_section :: (use bin: ^WasmBinary, allocator := context.allocator) -> [] WasmFuncType { + if !map.has(^sections, .Type) do return .{ null, 0 }; + wasm_allocator = allocator; + + @Cleanup @WasmStream // These are going to be needed in many places + stream := io.string_stream_make(data); + reader := io.reader_make(^stream); + + io.stream_seek(^stream, map.get(^sections, .Type).offset, .Start); + + return parse_vector(^reader, bin, read_func_type); + + read_func_type :: (reader: ^io.Reader, binary: ^WasmBinary) -> WasmFuncType { + _, pos := io.stream_tell(reader.stream); + + assert(io.read_byte(reader) == ~~0x60, "function type expected 0x60 as first byte"); + + params := parse_vector(reader, binary, read_val_type); + results := parse_vector(reader, binary, read_val_type); + + _, after_pos := io.stream_tell(reader.stream); + + return .{ + params = params, + results = results, + reference = binary.data.data[pos .. ~~(after_pos - pos)], + }; + } +} + +parse_import_section :: (use bin: ^WasmBinary, allocator := context.allocator) -> [] WasmImport { + if !map.has(^sections, .Import) do return .{ null, 0 }; + + wasm_allocator = allocator; + + @Cleanup @WasmStream // These are going to be needed in many places + stream := io.string_stream_make(data); + reader := io.reader_make(^stream); + + io.stream_seek(^stream, map.get(^sections, .Import).offset, .Start); + + return parse_vector(^reader, bin, read_import); + + read_import :: (reader: ^io.Reader, binary: ^WasmBinary) -> WasmImport { + module_name := parse_name(reader, binary); + import_name := parse_name(reader, binary); + + kind := io.read_byte(reader); + index := read_uleb128(reader); + + return .{ module_name, import_name, ~~kind, ~~index }; + } +} + +parse_export_section :: (use bin: ^WasmBinary, allocator := context.allocator) -> [] WasmExport { + if !map.has(^sections, .Export) do return .{ null, 0 }; + + wasm_allocator = allocator; + + @Cleanup @WasmStream // These are going to be needed in many places + stream := io.string_stream_make(data); + reader := io.reader_make(^stream); + + io.stream_seek(^stream, map.get(^sections, .Export).offset, .Start); + + return parse_vector(^reader, bin, read_export); + + read_export :: (reader: ^io.Reader, binary: ^WasmBinary) -> WasmExport { + name := parse_name(reader, binary); + + kind := io.read_byte(reader); + index := read_uleb128(reader); + + return .{ name, ~~kind, ~~index }; + } +} + +parse_function_section :: (use bin: ^WasmBinary, allocator := context.allocator) -> [] WasmFunction { + if !map.has(^sections, .Function) do return .{ null, 0 }; + + wasm_allocator = allocator; + + @Cleanup @WasmStream // These are going to be needed in many places + stream := io.string_stream_make(data); + reader := io.reader_make(^stream); + + io.stream_seek(^stream, map.get(^sections, .Function).offset, .Start); + + return parse_vector(^reader, bin, read_function); + + read_function :: (reader: ^io.Reader, binary: ^WasmBinary) -> WasmFunction { + return .{ ~~read_uleb128(reader) }; + } +} + +parse_start_section :: (use bin: ^WasmBinary, allocator := context.allocator) -> i32 { + if !map.has(^sections, .Start) do return -1; + + @Cleanup @WasmStream // These are going to be needed in many places + stream := io.string_stream_make(data); + reader := io.reader_make(^stream); + + io.stream_seek(^stream, map.get(^sections, .Function).offset, .Start); + + return ~~read_uleb128(^reader); +} + +#private +parse_vector :: (reader: ^io.Reader, bin: ^WasmBinary, + read: (^io.Reader, ^WasmBinary) -> $T) -> [] T { + + n := cast(u32) read_uleb128(reader); + result := memory.make_slice(T, n, allocator=wasm_allocator); + + for i: n { + result[i] = read(reader, bin); + } + + return result; +} + +#private +parse_name :: (reader: ^io.Reader, bin: ^WasmBinary) -> [] u8 { + return parse_vector(reader, bin, read_byte); + + read_byte :: (reader: ^io.Reader, bin: ^WasmBinary) -> u8 { + return io.read_byte(reader); + } +} + +#private +read_val_type :: (reader: ^io.Reader, binary: ^WasmBinary) -> WasmValueType { + byte := io.read_byte(reader); + switch byte { + case 127 do return .I32; + case 126 do return .I64; + case 125 do return .F32; + case 124 do return .F64; + case 123 do return .V128; + case #default do assert(false, "Bad wasm value type"); + } + + return ~~0; +} diff --git a/src/onyxchecker.c b/src/onyxchecker.c index b01fcbda..d5ee2837 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -1601,6 +1601,7 @@ CheckStatus check_expression(AstTyped** pexpr) { // break; // } // } + if (expr->type == NULL) return Check_Yield_Macro; expr->flags |= Ast_Flag_Function_Used; break; -- 2.25.1