From 670fcf59d8c8cb97f8aa1e113a9614564f377bb3 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Thu, 4 Nov 2021 20:35:13 +0100 Subject: [PATCH] linux: reduce binary size in the common case This commit changes the runtime.putchar implementation to directly call the `write` system call. This reduces the binary size by around 2.7kB. --- src/runtime/runtime_unix.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/runtime/runtime_unix.go b/src/runtime/runtime_unix.go index e53ff357..684063b4 100644 --- a/src/runtime/runtime_unix.go +++ b/src/runtime/runtime_unix.go @@ -7,8 +7,8 @@ import ( "unsafe" ) -//export putchar -func _putchar(c int) int +//export write +func libc_write(fd int32, buf unsafe.Pointer, count uint) int //export usleep func usleep(usec uint) int @@ -145,7 +145,8 @@ func syscall_runtime_envs() []string { } func putchar(c byte) { - _putchar(int(c)) + buf := [1]byte{c} + libc_write(1, unsafe.Pointer(&buf[0]), 1) } func ticksToNanoseconds(ticks timeUnit) int64 {