ふと確認したくなったので
~/tmp[0] % cat test.c #include <ruby.h> VALUE f() { return INT2FIX(1); } ~/tmp[0] % gcc -I/usr/include/ruby-1.9.0/ -I/usr/include/ruby-1.9.0/i486-linux/ test.c -c ~/tmp[0] % objdump -S test.o test.o: file format elf32-i386 Disassembly of section .text: 00000000 <f>: 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: b8 03 00 00 00 mov $0x3,%eax 8: 5d pop %ebp 9: c3 ret
ですよねー。「INT2FIX(1)とかはコンパイル時にコンパイラさんが頑張って即値にしてくれるよね? ああ、してくれるねやっぱり」という話です。