定数畳み込み、定数伝播を実装しました
マイクロベンチマークにおいては、定数畳み込みや定数伝播があっても効果が無いケースがほとんどなので放置してましたが、今回新しい機能を入れるために取り掛かりました。
a: 10 + 20 + 30; b: 4 + 5; (a+b).p;
というコードは、69.p; と同じバイトコードが生成されます。
a: 100; b: 200; (((a + b < a * b) ? "true" : "false") ~ "!!!").p;
というコードは、"true!!!".p; と同じバイトコードが生成されます。
DEBUG: true; if(DEBUG){ "BOO!".p; }
というコードは、"BOO!".p; と同じバイトコードが生成されます。
DEBUG: true; if(!DEBUG){ "BOO!".p; }
というコードは、何のバイトコードも生成されません。