Zero

Zero
Zero

04 diciembre 2007

Pool de objetos primitivos en Zero

Hasta ahora, cada objeto primitivo que se empleaba, era creado y destruido al efecto.
Así, una instrucción como:


x = x.sum( 1 );


Que se traduciria como:


INT 1
MSG x sum __acc
ASG x


Provocaría con INT 1 la creación de ese valor numérico entero, y después del mensaje, al pasar a valer __acc (el acumulador), el nuevo valor de x, su destrucción.

Así, con los nuevos pool's de objetos para enteros, flotantes, y cadenas, se crean en el arranque una serie de objetos primitivos predefinidos (en el caso de los enteros y flotantes, del 0 al 20), que son empleados en el lugar de uno nuevo original en caso de que se produzca una situación como la anterior. Ésto hace que no sólo no se cree el objeto en este caso, sino que tampoco se destruya tras ejecutar el opcode MSG, ganando en rendimiento para aquellos casos más habituales (con diferencia, el cero y el uno).