> - Es muy dificil hacer un serializador que sea rapido. Acá en mi lab están
> haciendo una implementación parecida a Parcels (de VW)

Fijate BOSS que esta refactorizado en la ultima version de VWNC.
Ahora el codigo se puede leer.  Tambien hay un preview de un formato
nuevo para 64 bits.

Ahhh, otro problema.  Si grabas objetos en imagenes de 32 bits y los
levantas en imagenes de 64 bits (o al reves), entonces te puede pasar
que un small integer pase a ser un large integer, o viceversa.

Y cual es el problema, no?  Al final, son integers igual.

Bueno, pero no, porque si a1 y a2 son small integers y b1 y b2 son
large integers, entonces si el codigo por un lado dice a1 == a2,
entonces con b1 == b2 se rompe.  Si tenias small integers en un
identity dictionary o identity set, ahora resulta que no los podes
encontrar.  Y si bajas small integers grandes de 64 bits a una imagen
de 32 bits, los tenes que convertir a large integers pero
preferentemente haciendo solamente una instancia de cada valor asi por
lo menos sigue valiendo el == y el identityHash.  Algo parecido pasa
con los small doubles.

Ah, y ademas, en versiones anteriores de VisualWorks se encodeaban
bytecodes con un small integer en el ultimo literal de los metodos
compilados de entre 4 y 6 bytecodes.  Pero si tenes un large integer
al final del metodo compilado en una imagen de 32 bits, y resulta que
ese large integer es un small integer en la imagen de 64 bits, ahora
resulta que el JIT falla (de manera mas o menos razonable, una especie
de DNU pero que se llama badBytecodeAt:) con los metodos compilados en
imagenes de 32 bits.  Resultado: no podias cargar parcels de 32 bits
en una imagen de 64 bits.

Que divertida la serializacion, no?  Sigh... no es facil!!! :)

Andres.

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]

http://www.clubSmalltalk.org

Responder a