There are over 10 patches and I plan to split them up and do a PR.
Link to patch collection: master...dearblue:mruby:mruby-vm
When all patches are applied, I show how the object code size and stack size used by mrb_vm_exec() changes on several CPU architectures.
The comparison is the result of simply running the compiler from the command line and compiling src/vm.c.
The commit hashes to be compared are ac8846d and 873b8bb.
The filename of the object code is represented by #{revision}-#{gcc-name}-vm.o.
script and compilers
-
result of size ac8846d*.o 873b8bb*.o | sort -st- -k2
text data bss dec hex filename
36243 0 0 36243 0x8d93 ac8846d-aarch64-unknown-freebsd14.0-gcc-12.3.0-vm.o
36554 0 0 36554 0x8eca 873b8bb-aarch64-unknown-freebsd14.0-gcc-12.3.0-vm.o
36503 0 0 36503 0x8e97 ac8846d-arm-none-eabi-gcc-11.3.0-vm.o
35978 0 0 35978 0x8c8a 873b8bb-arm-none-eabi-gcc-11.3.0-vm.o
33879 0 0 33879 0x8457 ac8846d-armv6-gnueabi-freebsd14.0-gcc-12.3.0-vm.o
32546 0 0 32546 0x7f22 873b8bb-armv6-gnueabi-freebsd14.0-gcc-12.3.0-vm.o
33695 0 0 33695 0x839f ac8846d-armv7-gnueabi-freebsd14.0-gcc-12.3.0-vm.o
32362 0 0 32362 0x7e6a 873b8bb-armv7-gnueabi-freebsd14.0-gcc-12.3.0-vm.o
51606 0 0 51606 0xc996 ac8846d-avr-gcc-14.1.0-vm.o
51474 0 0 51474 0xc912 873b8bb-avr-gcc-14.1.0-vm.o
31754 0 0 31754 0x7c0a ac8846d-i386-unknown-freebsd14.0-gcc-12.3.0-vm.o
28735 0 0 28735 0x703f 873b8bb-i386-unknown-freebsd14.0-gcc-12.3.0-vm.o
45592 424 0 46016 0xb3c0 ac8846d-mips-unknown-freebsd14.0-gcc-9.5.0-vm.o
45920 424 0 46344 0xb508 873b8bb-mips-unknown-freebsd14.0-gcc-9.5.0-vm.o
45392 848 0 46240 0xb4a0 ac8846d-mips64-unknown-freebsd14.0-gcc-9.5.0-vm.o
45920 848 0 46768 0xb6b0 873b8bb-mips64-unknown-freebsd14.0-gcc-9.5.0-vm.o
33947 0 0 33947 0x849b ac8846d-powerpc-unknown-freebsd14.0-gcc-12.3.0-vm.o
35006 0 0 35006 0x88be 873b8bb-powerpc-unknown-freebsd14.0-gcc-12.3.0-vm.o
35639 40 0 35679 0x8b5f ac8846d-powerpc64-unknown-freebsd14.0-gcc-12.3.0-vm.o
36594 40 0 36634 0x8f1a 873b8bb-powerpc64-unknown-freebsd14.0-gcc-12.3.0-vm.o
29306 0 0 29306 0x727a ac8846d-riscv32-unknown-elf-gcc-11.3.0-vm.o
30382 0 0 30382 0x76ae 873b8bb-riscv32-unknown-elf-gcc-11.3.0-vm.o
31492 0 0 31492 0x7b04 ac8846d-riscv64-unknown-freebsd14.0-gcc-12.3.0-vm.o
32640 0 0 32640 0x7f80 873b8bb-riscv64-unknown-freebsd14.0-gcc-12.3.0-vm.o
40306 0 0 40306 0x9d72 ac8846d-sparc64-unknown-freebsd14.0-gcc-9.5.0-vm.o
40226 0 0 40226 0x9d22 873b8bb-sparc64-unknown-freebsd14.0-gcc-9.5.0-vm.o
43734 0 0 43734 0xaad6 ac8846d-x86_64-unknown-freebsd14.0-gcc-12.3.0-vm.o
38968 0 0 38968 0x9838 873b8bb-x86_64-unknown-freebsd14.0-gcc-12.3.0-vm.o
26361 0 0 26361 0x66f9 ac8846d-xtensa-esp32-elf-gcc-5.2.0-vm.o
26216 0 0 26216 0x6668 873b8bb-xtensa-esp32-elf-gcc-5.2.0-vm.o
-
result of grep -w mrb_vm_exec ac8846d-*.su 873b8bb-*.su | sort -st- -k2 | awk '{ printf "%3d %-15s %s\n", $2, $3, $1 }'
400 static ac8846d-aarch64-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
384 static 873b8bb-aarch64-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
248 static ac8846d-arm-none-eabi-gcc-11.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
216 static 873b8bb-arm-none-eabi-gcc-11.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
216 static ac8846d-armv6-gnueabi-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
200 static 873b8bb-armv6-gnueabi-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
216 static ac8846d-armv7-gnueabi-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
200 static 873b8bb-armv7-gnueabi-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
456 dynamic,bounded ac8846d-avr-gcc-14.1.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
474 dynamic,bounded 873b8bb-avr-gcc-14.1.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
576 dynamic,bounded ac8846d-i386-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
624 dynamic,bounded 873b8bb-i386-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
352 static ac8846d-mips-unknown-freebsd14.0-gcc-9.5.0-vm.su:vm.c:1396:1:mrb_vm_exec
368 static 873b8bb-mips-unknown-freebsd14.0-gcc-9.5.0-vm.su:vm.c:1405:1:mrb_vm_exec
576 static ac8846d-mips64-unknown-freebsd14.0-gcc-9.5.0-vm.su:vm.c:1396:1:mrb_vm_exec
560 static 873b8bb-mips64-unknown-freebsd14.0-gcc-9.5.0-vm.su:vm.c:1405:1:mrb_vm_exec
368 static ac8846d-powerpc-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
352 static 873b8bb-powerpc-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
656 static ac8846d-powerpc64-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
592 static 873b8bb-powerpc64-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
288 static ac8846d-riscv32-unknown-elf-gcc-11.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
272 static 873b8bb-riscv32-unknown-elf-gcc-11.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
528 static ac8846d-riscv64-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
528 static 873b8bb-riscv64-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
832 static ac8846d-sparc64-unknown-freebsd14.0-gcc-9.5.0-vm.su:vm.c:1396:1:mrb_vm_exec
800 static 873b8bb-sparc64-unknown-freebsd14.0-gcc-9.5.0-vm.su:vm.c:1405:1:mrb_vm_exec
576 dynamic,bounded ac8846d-x86_64-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1396:1:mrb_vm_exec
656 dynamic,bounded 873b8bb-x86_64-unknown-freebsd14.0-gcc-12.3.0-vm.su:src/vm.c:1405:1:mrb_vm_exec
240 static ac8846d-xtensa-esp32-elf-gcc-5.2.0-vm.su:vm.c:1396:1:mrb_vm_exec
240 static 873b8bb-xtensa-esp32-elf-gcc-5.2.0-vm.su:vm.c:1405:1:mrb_vm_exec
There are over 10 patches and I plan to split them up and do a PR.
Link to patch collection: master...dearblue:mruby:mruby-vm
When all patches are applied, I show how the object code size and stack size used by
mrb_vm_exec()changes on several CPU architectures.The comparison is the result of simply running the compiler from the command line and compiling
src/vm.c.The commit hashes to be compared are ac8846d and 873b8bb.
The filename of the object code is represented by
#{revision}-#{gcc-name}-vm.o.script and compilers
script
list of compilers on my FreeBSD 14.1/amd64
result of
size ac8846d*.o 873b8bb*.o | sort -st- -k2result of
grep -w mrb_vm_exec ac8846d-*.su 873b8bb-*.su | sort -st- -k2 | awk '{ printf "%3d %-15s %s\n", $2, $3, $1 }'