slight optimization
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 18 Jul 2020 17:05:00 +0000 (12:05 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 18 Jul 2020 17:05:00 +0000 (12:05 -0500)
onyx
progs/arrays.onyx
progs/print_funcs.onyx
src/onyxwasm.c

diff --git a/onyx b/onyx
index 0dd2270d77c0ac22e81e5a8033b1d8390916c712..c54562e335a7617c2e847d83a3e31385ae978865 100755 (executable)
Binary files a/onyx and b/onyx differ
index d0d56b65bf813735a532743103cd5f6c7cc29045..ed01b7219e9089ffa60b5179648abfdc8e6d443d 100644 (file)
@@ -39,14 +39,6 @@ sort :: proc (src: ^i32, len: i32) {
     }
 }
 
-printarr :: proc (arr: ^i32, len: i32) {
-    i := 0;
-    while i < len {
-        print(arr[i]);
-        i += 1;
-    }
-}
-
 // Don't need to bind this function to a symbol
 proc #export "main" {
     print(min(10.0, 12.0));
@@ -60,11 +52,10 @@ proc #export "main" {
         i += 1;
     }
 
-    printarr(global_arr, len);
+    print(global_arr, len);
 
     sort(global_arr, len);
 
     print(1234567);
-    printarr(global_arr, len);
+    print(global_arr, len);
 }
-
index ac1e750ecf22a0b45305e222b798d1717e2c1490..5bffff335b3c9ef4f830c3ab33007a1ef85966f2 100644 (file)
@@ -4,10 +4,47 @@ print_f32  :: proc #foreign "host" "print" (value: f32) ---
 print_i64  :: proc #foreign "host" "print" (value: i64) ---
 print_f64  :: proc #foreign "host" "print" (value: f64) ---
 
+print_i32arr :: proc (arr: ^i32, len: i32) {
+    i := 0;
+    while i < len {
+        print(arr[i]);
+        i += 1;
+    }
+}
+
+print_i64arr :: proc (arr: ^i64, len: i32) {
+    i := 0;
+    while i < len {
+        print(arr[i]);
+        i += 1;
+    }
+}
+
+print_f32arr :: proc (arr: ^f32, len: i32) {
+    i := 0;
+    while i < len {
+        print(arr[i]);
+        i += 1;
+    }
+}
+
+print_f64arr :: proc (arr: ^f64, len: i32) {
+    i := 0;
+    while i < len {
+        print(arr[i]);
+        i += 1;
+    }
+}
+
 print :: proc #overloaded {
     print_bool,
     print_i32,
     print_f32,
     print_i64,
-    print_f64
+    print_f64,
+
+    print_i32arr,
+    print_i64arr,
+    print_f32arr,
+    print_f64arr,
 }
index 9ac75cedd9f3a646218da0cc60edf17749410798..fcb145435af24c05f06788350c27abedd609d2b6 100644 (file)
@@ -326,9 +326,11 @@ COMPILE_FUNC(assignment, AstBinaryOp* assign) {
 
     } else if (lval->kind == Ast_Kind_Array_Access) {
         AstArrayAccess* aa = (AstArrayAccess *) lval;
-        WID(WI_I32_CONST, aa->elem_size);
         compile_expression(mod, &code, aa->expr);
-        WI(WI_I32_MUL);
+        if (aa->elem_size != 1) {
+            WID(WI_I32_CONST, aa->elem_size);
+            WI(WI_I32_MUL);
+        }
         compile_expression(mod, &code, aa->addr);
         WI(WI_I32_ADD);