ふと確認したくなったので
~/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)とかはコンパイル時にコンパイラさんが頑張って即値にしてくれるよね? ああ、してくれるねやっぱり」という話です。