Por que os programas usam pilhas de chamadas, se chamadas de função aninhadas podem ser incorporadas?

Por que não fazer o compilador executar um programa como este: function a(b) { return b^2 }; function c(b) { return a(b) + 5 }; e converta-o em um programa como este: function c(b) { return b^2 + 5 }; eliminando assim a necessidade do computador de lembrar o endereço de retorno de c...